member_archive.blade.php 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706
  1. <div>
  2. <div class="col card--ui" id="card--dashboard">
  3. <header id="title--section" style="display:none !important" class="d-flex align-items-center justify-content-between" style="display:none !important">
  4. <div class="title--section_name d-flex align-items-center justify-content-between">
  5. <i class="ico--ui title_section utenti me-2 "></i>
  6. <h2 class="primary">Archivio utenti</h2>
  7. </div>
  8. </header>
  9. <section id="subheader" class="d-flex align-items-center justify-content-between">
  10. @if(false)
  11. <form action="" class="search--form d-flex align-items-center">
  12. <div class="input-group mb-3">
  13. <input type="text" class="form-control" placeholder="Cerca utente" aria-label="cerca utent" aria-describedby="button-addon2" wire:model="search">
  14. @if($showReset)
  15. <button class="btn--ui" type="button" id="button-addon2" onclick="reset()"><i class="ico--ui search"></i>Reset</button>
  16. @else
  17. <button class="btn--ui" type="button" id="button-addon2" wire:click="search()"><i class="ico--ui search"></i>Cerca</button>
  18. @endif
  19. </div>
  20. </form>
  21. @endif
  22. </section>
  23. <div class="showFilter" style="display:none">
  24. <hr size="1">
  25. <div class="row g-3">
  26. <div class="col-md-3">
  27. <div class="row">
  28. <div class="col-md-12" style="margin-bottom:10px;">
  29. <b>Età</b>
  30. </div>
  31. <div class="col-12">
  32. <div class="row mb-2">
  33. <div class="col-3"><label class="form-check-label ms-2" >Da</label></div>
  34. <div class="col-9"><input class="form-control " type="number" name="txtFromYear"></div>
  35. </div>
  36. </div>
  37. <div class="col-12">
  38. <div class="row">
  39. <div class="col-3"><label class="form-check-label ms-2" >A</label></div>
  40. <div class="col-9"><input class="form-control " type="number" name="txtToYear"></div>
  41. </div>
  42. </div>
  43. </div>
  44. </div>
  45. <div class="col-md-3">
  46. <div class="row">
  47. <div class="col-md-12" style="margin-bottom:10px;">
  48. <b>Tipologia di tesseramento</b>
  49. </div>
  50. <div class="col-12">
  51. <select name="filterCards" class="form-select filterCards">
  52. <option value="">Tutte
  53. @foreach(getCards() as $card)
  54. <option value="{{$card->id}}">{{$card->name}}
  55. @endforeach
  56. </select>
  57. </div>
  58. </div>
  59. </div>
  60. <div class="col-md-3">
  61. <div class="row">
  62. <div class="col-md-12" style="margin-bottom:10px;">
  63. <b>Stato tesseramento</b>
  64. </div>
  65. <div class="col-12">
  66. <select name="filterStatus" class="form-select filterStatus" multiple="multiple">
  67. <option value="2">Attivo
  68. <option value="1">Sospeso
  69. <option value="0">Non tesserato
  70. </select>
  71. </div>
  72. </div>
  73. </div>
  74. <div class="col-md-3">
  75. <div class="row">
  76. <div class="col-md-12" style="margin-bottom:10px;">
  77. <b>Gruppo di interesse</b>
  78. </div>
  79. <div class="col-12">
  80. <select name="filterCategories" class="form-select filterCategories" multiple="multiple">
  81. <option value="">Tutte</option>
  82. @foreach($categories as $category)
  83. <option value="{{$category["id"]}}">
  84. {!! str_repeat('&bull; ', $category["indentation"] ?? 0) !!}{{$category["name"]}}
  85. </option>
  86. @endforeach
  87. </select>
  88. </div>
  89. </div>
  90. </div>
  91. <div class="col-md-3">
  92. <div class="row">
  93. <div class="col-md-12" style="margin-bottom:10px;">
  94. <b>Anno di nascita</b>
  95. </div>
  96. <div class="col-12">
  97. <div class="row mb-2">
  98. <div class="col-3"><label class="form-check-label ms-2" >Da</label></div>
  99. <div class="col-9"><input class="form-control " type="number" name="txtFromYearYear"></div>
  100. </div>
  101. </div>
  102. <div class="col-12">
  103. <div class="row">
  104. <div class="col-3"><label class="form-check-label ms-2" >A</label></div>
  105. <div class="col-9"><input class="form-control " type="number" name="txtToYearYear"></div>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. <div class="col-md-3">
  111. <div class="row">
  112. <div class="col-md-12" style="margin-bottom:10px;">
  113. <b>Scadenza certificato medico</b>
  114. </div>
  115. <div class="col-12">
  116. <select name="filterScadenza" class="form-select filterScadenza" multiple="multiple">
  117. <option value="1">Scaduti
  118. <option value="2">In scadenza
  119. <option value="3">Non consegnato
  120. <option value="4">Validi
  121. </select>
  122. </div>
  123. </div>
  124. </div>
  125. <div class="col-md-3">
  126. <div class="row">
  127. <div class="col-md-12" style="margin-bottom:10px;">
  128. <b>Tipologia certificato medico</b>
  129. </div>
  130. <div class="col-12">
  131. <select name="filterCertificateType" class="form-select filterCertificateType" multiple="multiple">
  132. <option value="">Tutti
  133. <option value="N">Non agonistico
  134. <option value="A">Agonistico
  135. </select>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. <div class="row g-3">
  141. <div class="col-md-12" style="text-align:right">
  142. <button class="btn--ui lightGrey" onclick="reset()" onclick="destroyDataTable()">Reset</button>
  143. <button class="btn--ui" onclick="loadDataTable()">FILTRA</button>
  144. </div>
  145. </div>
  146. <hr size="1">
  147. </div>
  148. <section id="anagrafiche--utenti">
  149. <div class="compare--chart_wrapper d-none"></div>
  150. <table class="table tablesaw tableHead tablesaw-stack table--lista_utenti tableHead" width="100%" id="tablesaw-350" width="100%">
  151. <thead>
  152. <tr>
  153. <th scope="col"><input type="checkbox" name="chkAll" class="chkAll"></th>
  154. <th scope="col" style="text-align: center">Cognome</th>
  155. <th scope="col">Nome</th>
  156. <th scope="col">Telefono</th>
  157. <th scope="col" style="text-align: center">Età</th>
  158. <th scope="col" style="text-align: center">Anno</th>
  159. <th scope="col">Tesseramento</th>
  160. <th scope="col">Certificato</th>
  161. <th scope="col">...</th>
  162. </tr>
  163. </thead>
  164. <tbody id="checkall-target"></tbody>
  165. </table>
  166. </section>
  167. </div>
  168. </div>
  169. @push('scripts')
  170. <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
  171. <style>
  172. table.tableHead thead
  173. {
  174. position: sticky;
  175. z-index: 100;
  176. top: 0;
  177. }
  178. .select2-container--default .select2-selection--single
  179. {
  180. background-color: #E9F0F5;
  181. border: 0.0625rem solid #DFE5EB;
  182. font-size: 0.75rem;
  183. }
  184. .select2-selection
  185. {
  186. height: 38px !important;
  187. }
  188. .select2-selection__rendered
  189. {
  190. padding-top:3px;
  191. }
  192. .select2
  193. {
  194. width:100% !important;
  195. }
  196. a.notSelected
  197. {
  198. display: flex;
  199. margin-right:10px;
  200. float:left;
  201. height: 2.5rem !important;
  202. width:50px;
  203. align-items: center;
  204. justify-content: center;
  205. color: var(--color-blu);
  206. background-color: #d3dce1 !important;
  207. padding: 0 1.25rem;
  208. font-size: 0.875rem;
  209. font-family: greycliff-cf, sans-serif;
  210. border-radius: 1.875rem !important;
  211. -webkit-border-radius: 1.875rem !important;
  212. -moz-border-radius: 1.875rem !important;
  213. -webkit-transition: all 0.3s ease-in-out;
  214. -moz-transition: all 0.3s ease-in-out;
  215. -o-transition: all 0.3s ease-in-out;
  216. transition: all 0.3s ease-in-out;
  217. border: none;
  218. }
  219. a.selected
  220. {
  221. display: flex;
  222. margin-right:10px;
  223. float:left;
  224. height: 2.5rem !important;
  225. width:50px;
  226. align-items: center;
  227. justify-content: center;
  228. color: #fff;
  229. background-color: var(--color-blu) !important;
  230. padding: 0 1.25rem;
  231. font-size: 0.875rem;
  232. font-family: greycliff-cf, sans-serif;
  233. border-radius: 1.875rem !important;
  234. -webkit-border-radius: 1.875rem !important;
  235. -moz-border-radius: 1.875rem !important;
  236. -webkit-transition: all 0.3s ease-in-out;
  237. -moz-transition: all 0.3s ease-in-out;
  238. -o-transition: all 0.3s ease-in-out;
  239. transition: all 0.3s ease-in-out;
  240. border: none;
  241. }
  242. div.day
  243. {
  244. margin-top:20px;
  245. color: var(--color-blu);
  246. background-color: #ffffff !important;
  247. padding: 20px;
  248. border-radius: 1.875rem !important;
  249. -webkit-border-radius: 1.875rem !important;
  250. -moz-border-radius: 1.875rem !important;
  251. -webkit-transition: all 0.3s ease-in-out;
  252. -moz-transition: all 0.3s ease-in-out;
  253. -o-transition: all 0.3s ease-in-out;
  254. transition: all 0.3s ease-in-out;
  255. border: 2px solid #d3dce1;
  256. }
  257. .btn--ui.lightGrey, .btn--ui.extraLightGrey
  258. {
  259. -webkit-border-radius: 0.5rem !important;
  260. background-color:#ffffff !important;
  261. border: 1px solid grey;
  262. color: black;
  263. font-weight:normal;
  264. }
  265. .persistent-invalid
  266. {
  267. border-color: #dc3545 !important;
  268. padding-right: calc(1.5em + 0.75rem) !important;
  269. background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") !important;
  270. background-repeat: no-repeat !important;
  271. background-position: right calc(0.375em + 0.1875rem) center !important;
  272. background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) !important;
  273. }
  274. </style>
  275. <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
  276. <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
  277. @endpush
  278. @push('scripts')
  279. <link href="/css/datatables.css" rel="stylesheet" />
  280. <script src="/assets/js/datatables.js"></script>
  281. <script src="https://cdn.datatables.net/buttons/3.0.2/js/buttons.dataTables.js"></script>
  282. <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
  283. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script>
  284. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script>
  285. @endpush
  286. @push('scripts')
  287. <script>
  288. function restoreMultipleData()
  289. {
  290. var ids = [];
  291. $(".chkIds").each(function () {
  292. if (this.checked) ids.push($(this).val());
  293. });
  294. if (ids.length) {
  295. if (confirm('Sei sicuro? Gli utenti verranno ripristinati.'))
  296. @this.restoreMultiple(ids);
  297. }
  298. }
  299. function restoreData(id)
  300. {
  301. if (confirm('Sei sicuro? L\'utente verrà ripristinato.'))
  302. @this.restore(id);
  303. }
  304. function archiveMultipleData()
  305. {
  306. var ids = [];
  307. $(".chkIds").each(function () {
  308. if (this.checked) ids.push($(this).val());
  309. });
  310. if (ids.length) {
  311. if (confirm('Sei sicuro? Tutti i dati relativi a questi utenti verranno archiviati e non saranno più visibili.'))
  312. @this.archiveMultiple(ids);
  313. }
  314. }
  315. function archiveData(id)
  316. {
  317. if (confirm('Sei sicuro? Tutti i dati relativi a questo utente verranno archiviati e non saranno più visibili.'))
  318. @this.archive(id);
  319. }
  320. var isFilter = false;
  321. $(document).ready(function() {
  322. $(document).on("click",".showHideFilter",function() {
  323. if (isFilter)
  324. {
  325. isFilter = false;
  326. $(".showFilter").hide();
  327. }
  328. else
  329. {
  330. isFilter = true;
  331. $(".showFilter").show();
  332. }
  333. });
  334. } );
  335. $(document).ready(function() {
  336. loadFilters();
  337. loadDataTable();
  338. } );
  339. function destroyDataTable()
  340. {
  341. $('#tablesaw-350').DataTable().destroy();
  342. }
  343. $('.filterCards').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  344. $('.filterStatus').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  345. $('.filterScadenza').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  346. $('.filterCertificateType').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  347. $('.filterCategories').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  348. function loadFilters() {
  349. let show = false;
  350. var filterStatus = localStorage.getItem("filterStatusMember");
  351. if (filterStatus != null && filterStatus != "null" && filterStatus != "undefined" && filterStatus)
  352. {
  353. $('.filterStatus').val(filterStatus).trigger('change');
  354. show = true;
  355. }
  356. var filterCards = localStorage.getItem("filterCardsMember");
  357. if (filterCards != null && filterCards != "null" && filterCards != "undefined" && filterCards)
  358. {
  359. $('.filterCards').val(filterCards).trigger('change');
  360. show = true;
  361. }
  362. var filterScadenza = localStorage.getItem("filterScadenzaMember");
  363. if (filterScadenza != null && filterScadenza != "null" && filterScadenza != "undefined" && filterScadenza)
  364. {
  365. $('.filterScadenza').val(filterScadenza).trigger('change');
  366. show = true;
  367. }
  368. var filterCertificateType = localStorage.getItem("filterCertificateTypeMember");
  369. if (filterCertificateType != null && filterCertificateType != "null" && filterCertificateType != "undefined" && filterCertificateType)
  370. {
  371. $('.filterCertificateType').val(filterCertificateType).trigger('change');
  372. show = true;
  373. }
  374. var filterCategories = localStorage.getItem("filterCategoriesMember");
  375. if (filterCategories != null && filterCategories != "null" && filterCategories != "undefined" && filterCategories)
  376. {
  377. $('.filterCategories').val(filterCategories).trigger('change');
  378. show = true;
  379. }
  380. var fromYear = localStorage.getItem("fromYearMember");
  381. if (fromYear != null && fromYear != "null" && fromYear != "undefined" && fromYear)
  382. {
  383. $('input[name="txtFromYear"]').val(fromYear);
  384. show = true;
  385. }
  386. var toYear = localStorage.getItem("toYearMember");
  387. if (toYear != null && toYear != "null" && toYear != "undefined" && toYear)
  388. {
  389. $('input[name="txtToYear"]').val(toYear);
  390. show = true;
  391. }
  392. var fromYearYear = localStorage.getItem("fromYearYearMember");
  393. if (fromYearYear != null && fromYearYear != "null" && fromYearYear != "undefined" && fromYearYear)
  394. {
  395. $('input[name="txtFromYearYear"]').val(fromYearYear);
  396. show = true;
  397. }
  398. var toYearYear = localStorage.getItem("toYearYearMember");
  399. if (toYearYear != null && toYearYear != "null" && toYearYear != "undefined" && toYearYear)
  400. {
  401. $('input[name="txtToYearYear"]').val(toYearYear);
  402. show = true;
  403. }
  404. if (show) {
  405. $('.showHideFilter').trigger('click');
  406. }
  407. }
  408. $(document).on("keypress", $('.filterCategories'), function (e) {
  409. setTimeout(() => {
  410. $(".select2-results__option").each(function(){
  411. var txt = $(this).html();
  412. var count = (txt.match(/-/g) || []).length;
  413. $(this).addClass('paddingLeftSelect' + count);
  414. });
  415. }, 100);
  416. });
  417. $('.filterCategories').on('select2:open', function (e) {
  418. setTimeout(() => {
  419. $(".select2-results__option").each(function(){
  420. var txt = $(this).html();
  421. var count = (txt.match(/-/g) || []).length;
  422. $(this).addClass('paddingLeftSelect' + count);
  423. });
  424. }, 100);
  425. });
  426. function reset()
  427. {
  428. $('.filterCards').val('').trigger('change');
  429. $('.filterStatus').val('').trigger('change');
  430. $('.filterScadenza').val('-1').trigger('change');
  431. $('.filterCertificateType').val('-1').trigger('change');
  432. $('.filterCategories').val('-1').trigger('change');
  433. $('input[name="txtFromYear"]').val('');
  434. $('input[name="txtToYear"]').val('');
  435. $('input[name="txtFromYearYear"]').val('');
  436. $('input[name="txtToYearYear"]').val('');
  437. loadDataTable();
  438. }
  439. function loadDataTable() {
  440. let date = new Date();
  441. let date_export = `${date.getFullYear()}${date.getMonth()}${date.getDate()}_`;
  442. const url = '/get_members?cards=' + $('.filterCards').val() + "&filterCategories=" + $('.filterCategories').val() + "&filterCertificateType=" + $('.filterCertificateType').val() + "&filterScadenza=" + $('.filterScadenza').val() + "&filterStatus=" + $('.filterStatus').val() + "&fromYear=" + $('input[name="txtFromYear"]').val() + "&toYear=" + $('input[name="txtToYear"]').val() + "&fromYearYear=" + $('input[name="txtFromYearYear"]').val() + "&toYearYear=" + $('input[name="txtToYearYear"]').val() + "&archived=1";
  443. localStorage.setItem("filterCardsMember", $('.filterCards').val());
  444. localStorage.setItem("filterCategoriesMember", $('.filterCategories').val());
  445. localStorage.setItem("filterCertificateTypeMember", $('.filterCertificateType').val());
  446. localStorage.setItem("filterScadenzaMember", $('.filterScadenza').val());
  447. localStorage.setItem("filterStatusMember", $('.filterStatus').val());
  448. localStorage.setItem("fromYearMember", $('input[name="txtFromYear"]').val());
  449. localStorage.setItem("toYearMember", $('input[name="txtToYear"]').val());
  450. localStorage.setItem("fromYearYearMember", $('input[name="txtFromYearYear"]').val());
  451. localStorage.setItem("toYearYearMember", $('input[name="txtToYearYear"]').val());
  452. if ($.fn.dataTable.isDataTable('#tablesaw-350')) {
  453. $('#tablesaw-350').DataTable().destroy();
  454. }
  455. const pageLength = 10;
  456. const dataTable = $('#tablesaw-350').DataTable({
  457. serverSide: true,
  458. processing: true,
  459. ajax: url,
  460. columns: [
  461. {
  462. data: "member_id",
  463. orderable: false,
  464. render: function (data){
  465. var ret = '<input type="checkbox" name="chk'+data+'" value="'+data+'" class="chkIds" onchange="updateMultipleSelection()">';
  466. return ret;
  467. }
  468. },
  469. {
  470. data: "last_name",
  471. render: function (data){
  472. const d = data.split("|");
  473. var ret = d[0];
  474. return ret;
  475. }
  476. },
  477. {
  478. data: "first_name",
  479. render: function (data){
  480. const d = data.split("|");
  481. var ret = d[0];
  482. return ret;
  483. }
  484. },
  485. { data: "phone"},
  486. { data: "age", "type": "num", className:"dt-type-numeric"},
  487. { data: "year", className:"dt-type-numeric"},
  488. {
  489. data: "status",
  490. render: function (data){
  491. const d = data.split("|");
  492. var ret = '<span class="tablesaw-cell-content"><span class="badge tessera-badge ' + d[0] + '">' + d[1] + '</span></span>';
  493. return ret;
  494. }
  495. },
  496. {
  497. data: "certificate",
  498. render: function (data){
  499. var ret = '';
  500. if (data != "") {
  501. const d = data.split("|");
  502. ret += '<span class="tablesaw-cell-content d-flex align-items-center">';
  503. if (d[0] == "0") {
  504. ret += '<i class="ico--ui check suspended me-2"></i>';
  505. ret += 'Scaduto : ';
  506. }
  507. if (d[0] == "1") {
  508. ret += '<i class="ico--ui check due me-2"></i>';
  509. ret += 'In scadenza : ';
  510. }
  511. if (d[0] == "2") {
  512. ret += '<i class="ico--ui check active me-2"></i>';
  513. ret += 'Scadenza : ';
  514. }
  515. ret += d[1];
  516. ret += '</span>';
  517. }
  518. if(data == ""){
  519. ret += '<span class="tablesaw-cell-content d-flex align-items-center">';
  520. ret += '<i class="ico--ui check absent me-2"></i>';
  521. ret += 'Non consegnato';
  522. ret += '</span>';
  523. }
  524. return ret;
  525. }
  526. },
  527. {
  528. data: "action",
  529. render: function (data) {
  530. var ret = '<button type="button" class="btn" onclick="restoreData(' + data + ')" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-placement="bottom" data-bs-content="Ripristina"><i class="fa-solid fa-rotate-left"></i></button>&nbsp;';
  531. ret += '<button type="button" class="btn" onclick="archiveData(' + data + ')" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-placement="bottom" data-bs-content="Elimina"><i class="fa-regular fa-trash-can"></i></button>';
  532. return ret;
  533. }
  534. },
  535. ],
  536. fixedHeader: false,
  537. thead: {
  538. 'th': {'background-color': 'blue'}
  539. },
  540. layout: {
  541. topStart : null,
  542. topEnd : null,
  543. top1A: {
  544. buttons: [
  545. {
  546. extend: 'collection',
  547. text: 'ESPORTA',
  548. buttons: [
  549. {
  550. extend: 'excelHtml5',
  551. text: '<i class="fa-solid fa-file-excel"></i>',
  552. action: newexportaction,
  553. title: 'Utenti archiviati',
  554. exportOptions: {
  555. columns: ":not(':last')",
  556. page: 'all'
  557. }
  558. },
  559. {
  560. extend: 'pdfHtml5',
  561. text: '<i class="fa-solid fa-file-pdf"></i>',
  562. action: newexportaction,
  563. title: 'Utenti archiviati',
  564. exportOptions: {
  565. columns: ":not(':last')"
  566. },
  567. customize: function(doc) {
  568. doc.styles.tableHeader.alignment = 'left';
  569. }
  570. },
  571. {
  572. extend: 'print',
  573. action: newexportaction,
  574. text: '<i class="fa-solid fa-print"></i>',
  575. title: 'Utenti archiviati',
  576. exportOptions: {
  577. columns: ":not(':last')"
  578. }
  579. }
  580. ],
  581. dropup: true
  582. },
  583. {
  584. text: '<i class="fa-solid fa-rotate-left"></i>',
  585. attr: {
  586. id: 'btnRestore',
  587. style: 'display: none',
  588. onclick: 'restoreMultipleData()',
  589. class: 'btn archive-multiple-btn',
  590. "data-bs-toggle":"popover",
  591. "data-bs-trigger":"hover focus",
  592. "data-bs-placement":"bottom",
  593. "data-bs-content":"Ripristina",
  594. }
  595. },
  596. {
  597. text: '<i class="fa-regular fa-trash-can"></i>',
  598. attr: {
  599. id: 'btnArchive',
  600. style: 'display: none',
  601. onclick: 'archiveMultipleData()',
  602. class: 'btn archive-multiple-btn',
  603. "data-bs-toggle":"popover",
  604. "data-bs-trigger":"hover focus",
  605. "data-bs-placement":"bottom",
  606. "data-bs-content":"Archivia",
  607. }
  608. },
  609. ]
  610. },
  611. top1B : {
  612. pageLength: {
  613. menu: [[10, 25, 50, 100, 100000], [10, 25, 50, 100, "Tutti"]]
  614. }
  615. },
  616. top1C :'search',
  617. },
  618. pagingType: 'numbers',
  619. "language": {
  620. "url": "/assets/js/Italian.json"
  621. },
  622. "fnInitComplete": function (oSettings, json) {
  623. var html = '&nbsp;<a style="cursor:pointer" class="showHideFilter btn--ui"><i class="fa-solid fa-sliders"></i></a>';
  624. html += '&nbsp;<a style="cursor:pointer" class="addData btn--ui"><i class="fa-solid fa-plus"></i></a>';
  625. $(".dt-search").append(html);
  626. loadFilters();
  627. }
  628. });
  629. $('#tablesaw-350 thead tr th').addClass('col');
  630. $('#tablesaw-350 thead tr th').css("background-color", "#f6f8fa");
  631. $('#tablesaw-350').on('draw.dt', function() {
  632. $('[data-bs-toggle="popover"]').popover()
  633. });
  634. $(".chkAll").change(function () {
  635. var check = this.checked;
  636. var ok = false;
  637. $(".chkIds").each(function () {
  638. $(this).prop("checked", check);
  639. ok = true;
  640. });
  641. if (check && ok) {
  642. $("#btnRestore").show();
  643. $("#btnArchive").show();
  644. } else {
  645. $("#btnRestore").hide();
  646. $("#btnArchive").hide();
  647. }
  648. });
  649. }
  650. function updateMultipleSelection() {
  651. let checked = false;
  652. $(".chkIds").each(function () {
  653. if (this.checked) checked = true;
  654. });
  655. if (checked) {
  656. $("#btnRestore").show();
  657. $("#btnArchive").show();
  658. } else {
  659. $("#btnRestore").hide();
  660. $("#btnArchive").hide();
  661. $(".chkAll").prop("checked", false);
  662. }
  663. }
  664. Livewire.on('reload', (x) =>
  665. {
  666. location.reload();
  667. });
  668. </script>
  669. @endpush