member_archive.blade.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622
  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" style="text-align: center">Cognome</th>
  154. <th scope="col">Nome</th>
  155. <th scope="col">Telefono</th>
  156. <th scope="col" style="text-align: center">Età</th>
  157. <th scope="col" style="text-align: center">Anno</th>
  158. <th scope="col">Tesseramento</th>
  159. <th scope="col">Certificato</th>
  160. <th scope="col">...</th>
  161. </tr>
  162. </thead>
  163. <tbody id="checkall-target"></tbody>
  164. </table>
  165. </section>
  166. </div>
  167. </div>
  168. @push('scripts')
  169. <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
  170. <style>
  171. table.tableHead thead
  172. {
  173. position: sticky;
  174. z-index: 100;
  175. top: 0;
  176. }
  177. .select2-container--default .select2-selection--single
  178. {
  179. background-color: #E9F0F5;
  180. border: 0.0625rem solid #DFE5EB;
  181. font-size: 0.75rem;
  182. }
  183. .select2-selection
  184. {
  185. height: 38px !important;
  186. }
  187. .select2-selection__rendered
  188. {
  189. padding-top:3px;
  190. }
  191. .select2
  192. {
  193. width:100% !important;
  194. }
  195. a.notSelected
  196. {
  197. display: flex;
  198. margin-right:10px;
  199. float:left;
  200. height: 2.5rem !important;
  201. width:50px;
  202. align-items: center;
  203. justify-content: center;
  204. color: var(--color-blu);
  205. background-color: #d3dce1 !important;
  206. padding: 0 1.25rem;
  207. font-size: 0.875rem;
  208. font-family: greycliff-cf, sans-serif;
  209. border-radius: 1.875rem !important;
  210. -webkit-border-radius: 1.875rem !important;
  211. -moz-border-radius: 1.875rem !important;
  212. -webkit-transition: all 0.3s ease-in-out;
  213. -moz-transition: all 0.3s ease-in-out;
  214. -o-transition: all 0.3s ease-in-out;
  215. transition: all 0.3s ease-in-out;
  216. border: none;
  217. }
  218. a.selected
  219. {
  220. display: flex;
  221. margin-right:10px;
  222. float:left;
  223. height: 2.5rem !important;
  224. width:50px;
  225. align-items: center;
  226. justify-content: center;
  227. color: #fff;
  228. background-color: var(--color-blu) !important;
  229. padding: 0 1.25rem;
  230. font-size: 0.875rem;
  231. font-family: greycliff-cf, sans-serif;
  232. border-radius: 1.875rem !important;
  233. -webkit-border-radius: 1.875rem !important;
  234. -moz-border-radius: 1.875rem !important;
  235. -webkit-transition: all 0.3s ease-in-out;
  236. -moz-transition: all 0.3s ease-in-out;
  237. -o-transition: all 0.3s ease-in-out;
  238. transition: all 0.3s ease-in-out;
  239. border: none;
  240. }
  241. div.day
  242. {
  243. margin-top:20px;
  244. color: var(--color-blu);
  245. background-color: #ffffff !important;
  246. padding: 20px;
  247. border-radius: 1.875rem !important;
  248. -webkit-border-radius: 1.875rem !important;
  249. -moz-border-radius: 1.875rem !important;
  250. -webkit-transition: all 0.3s ease-in-out;
  251. -moz-transition: all 0.3s ease-in-out;
  252. -o-transition: all 0.3s ease-in-out;
  253. transition: all 0.3s ease-in-out;
  254. border: 2px solid #d3dce1;
  255. }
  256. .btn--ui.lightGrey, .btn--ui.extraLightGrey
  257. {
  258. -webkit-border-radius: 0.5rem !important;
  259. background-color:#ffffff !important;
  260. border: 1px solid grey;
  261. color: black;
  262. font-weight:normal;
  263. }
  264. .persistent-invalid
  265. {
  266. border-color: #dc3545 !important;
  267. padding-right: calc(1.5em + 0.75rem) !important;
  268. 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;
  269. background-repeat: no-repeat !important;
  270. background-position: right calc(0.375em + 0.1875rem) center !important;
  271. background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) !important;
  272. }
  273. </style>
  274. <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
  275. <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
  276. @endpush
  277. @push('scripts')
  278. <link href="/css/datatables.css" rel="stylesheet" />
  279. <script src="/assets/js/datatables.js"></script>
  280. <script src="https://cdn.datatables.net/buttons/3.0.2/js/buttons.dataTables.js"></script>
  281. <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
  282. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script>
  283. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script>
  284. @endpush
  285. @push('scripts')
  286. <script>
  287. function restoreData(id)
  288. {
  289. if (confirm('Sei sicuro? L\'utente verrà ripristinato.'))
  290. @this.restore(id);
  291. }
  292. function archiveData(id)
  293. {
  294. if (confirm('Sei sicuro? Tutti i dati relativi a questo utente verranno archiviati e non saranno più visibili.'))
  295. @this.archive(id);
  296. }
  297. var isFilter = false;
  298. $(document).ready(function() {
  299. $(document).on("click",".showHideFilter",function() {
  300. if (isFilter)
  301. {
  302. isFilter = false;
  303. $(".showFilter").hide();
  304. }
  305. else
  306. {
  307. isFilter = true;
  308. $(".showFilter").show();
  309. }
  310. });
  311. } );
  312. $(document).ready(function() {
  313. loadFilters();
  314. loadDataTable();
  315. } );
  316. function destroyDataTable()
  317. {
  318. $('#tablesaw-350').DataTable().destroy();
  319. }
  320. $('.filterCards').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  321. $('.filterStatus').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  322. $('.filterScadenza').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  323. $('.filterCertificateType').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  324. $('.filterCategories').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  325. function loadFilters() {
  326. let show = false;
  327. var filterStatus = localStorage.getItem("filterStatusMember");
  328. if (filterStatus != null && filterStatus != "null" && filterStatus != "undefined" && filterStatus)
  329. {
  330. $('.filterStatus').val(filterStatus).trigger('change');
  331. show = true;
  332. }
  333. var filterCards = localStorage.getItem("filterCardsMember");
  334. if (filterCards != null && filterCards != "null" && filterCards != "undefined" && filterCards)
  335. {
  336. $('.filterCards').val(filterCards).trigger('change');
  337. show = true;
  338. }
  339. var filterScadenza = localStorage.getItem("filterScadenzaMember");
  340. if (filterScadenza != null && filterScadenza != "null" && filterScadenza != "undefined" && filterScadenza)
  341. {
  342. $('.filterScadenza').val(filterScadenza).trigger('change');
  343. show = true;
  344. }
  345. var filterCertificateType = localStorage.getItem("filterCertificateTypeMember");
  346. if (filterCertificateType != null && filterCertificateType != "null" && filterCertificateType != "undefined" && filterCertificateType)
  347. {
  348. $('.filterCertificateType').val(filterCertificateType).trigger('change');
  349. show = true;
  350. }
  351. var filterCategories = localStorage.getItem("filterCategoriesMember");
  352. if (filterCategories != null && filterCategories != "null" && filterCategories != "undefined" && filterCategories)
  353. {
  354. $('.filterCategories').val(filterCategories).trigger('change');
  355. show = true;
  356. }
  357. var fromYear = localStorage.getItem("fromYearMember");
  358. if (fromYear != null && fromYear != "null" && fromYear != "undefined" && fromYear)
  359. {
  360. $('input[name="txtFromYear"]').val(fromYear);
  361. show = true;
  362. }
  363. var toYear = localStorage.getItem("toYearMember");
  364. if (toYear != null && toYear != "null" && toYear != "undefined" && toYear)
  365. {
  366. $('input[name="txtToYear"]').val(toYear);
  367. show = true;
  368. }
  369. var fromYearYear = localStorage.getItem("fromYearYearMember");
  370. if (fromYearYear != null && fromYearYear != "null" && fromYearYear != "undefined" && fromYearYear)
  371. {
  372. $('input[name="txtFromYearYear"]').val(fromYearYear);
  373. show = true;
  374. }
  375. var toYearYear = localStorage.getItem("toYearYearMember");
  376. if (toYearYear != null && toYearYear != "null" && toYearYear != "undefined" && toYearYear)
  377. {
  378. $('input[name="txtToYearYear"]').val(toYearYear);
  379. show = true;
  380. }
  381. if (show) {
  382. $('.showHideFilter').trigger('click');
  383. }
  384. }
  385. $(document).on("keypress", $('.filterCategories'), function (e) {
  386. setTimeout(() => {
  387. $(".select2-results__option").each(function(){
  388. var txt = $(this).html();
  389. var count = (txt.match(/-/g) || []).length;
  390. $(this).addClass('paddingLeftSelect' + count);
  391. });
  392. }, 100);
  393. });
  394. $('.filterCategories').on('select2:open', function (e) {
  395. setTimeout(() => {
  396. $(".select2-results__option").each(function(){
  397. var txt = $(this).html();
  398. var count = (txt.match(/-/g) || []).length;
  399. $(this).addClass('paddingLeftSelect' + count);
  400. });
  401. }, 100);
  402. });
  403. function reset()
  404. {
  405. $('.filterCards').val('').trigger('change');
  406. $('.filterStatus').val('').trigger('change');
  407. $('.filterScadenza').val('-1').trigger('change');
  408. $('.filterCertificateType').val('-1').trigger('change');
  409. $('.filterCategories').val('-1').trigger('change');
  410. $('input[name="txtFromYear"]').val('');
  411. $('input[name="txtToYear"]').val('');
  412. $('input[name="txtFromYearYear"]').val('');
  413. $('input[name="txtToYearYear"]').val('');
  414. loadDataTable();
  415. }
  416. function loadDataTable() {
  417. let date = new Date();
  418. let date_export = `${date.getFullYear()}${date.getMonth()}${date.getDate()}_`;
  419. 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";
  420. localStorage.setItem("filterCardsMember", $('.filterCards').val());
  421. localStorage.setItem("filterCategoriesMember", $('.filterCategories').val());
  422. localStorage.setItem("filterCertificateTypeMember", $('.filterCertificateType').val());
  423. localStorage.setItem("filterScadenzaMember", $('.filterScadenza').val());
  424. localStorage.setItem("filterStatusMember", $('.filterStatus').val());
  425. localStorage.setItem("fromYearMember", $('input[name="txtFromYear"]').val());
  426. localStorage.setItem("toYearMember", $('input[name="txtToYear"]').val());
  427. localStorage.setItem("fromYearYearMember", $('input[name="txtFromYearYear"]').val());
  428. localStorage.setItem("toYearYearMember", $('input[name="txtToYearYear"]').val());
  429. if ($.fn.dataTable.isDataTable('#tablesaw-350')) {
  430. $('#tablesaw-350').DataTable().destroy();
  431. }
  432. const pageLength = 10;
  433. const dataTable = $('#tablesaw-350').DataTable({
  434. serverSide: true,
  435. processing: true,
  436. ajax: url,
  437. columns: [
  438. {
  439. data: "last_name",
  440. render: function (data){
  441. const d = data.split("|");
  442. var ret = d[0];
  443. return ret;
  444. }
  445. },
  446. {
  447. data: "first_name",
  448. render: function (data){
  449. const d = data.split("|");
  450. var ret = d[0];
  451. return ret;
  452. }
  453. },
  454. { data: "phone"},
  455. { data: "age", "type": "num", className:"dt-type-numeric"},
  456. { data: "year", className:"dt-type-numeric"},
  457. {
  458. data: "status",
  459. render: function (data){
  460. const d = data.split("|");
  461. var ret = '<span class="tablesaw-cell-content"><span class="badge tessera-badge ' + d[0] + '">' + d[1] + '</span></span>';
  462. return ret;
  463. }
  464. },
  465. {
  466. data: "certificate",
  467. render: function (data){
  468. var ret = '';
  469. if (data != "") {
  470. const d = data.split("|");
  471. ret += '<span class="tablesaw-cell-content d-flex align-items-center">';
  472. if (d[0] == "0") {
  473. ret += '<i class="ico--ui check suspended me-2"></i>';
  474. ret += 'Scaduto : ';
  475. }
  476. if (d[0] == "1") {
  477. ret += '<i class="ico--ui check due me-2"></i>';
  478. ret += 'In scadenza : ';
  479. }
  480. if (d[0] == "2") {
  481. ret += '<i class="ico--ui check active me-2"></i>';
  482. ret += 'Scadenza : ';
  483. }
  484. ret += d[1];
  485. ret += '</span>';
  486. }
  487. if(data == ""){
  488. ret += '<span class="tablesaw-cell-content d-flex align-items-center">';
  489. ret += '<i class="ico--ui check absent me-2"></i>';
  490. ret += 'Non consegnato';
  491. ret += '</span>';
  492. }
  493. return ret;
  494. }
  495. },
  496. {
  497. data: "action",
  498. render: function (data) {
  499. 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;';
  500. 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>';
  501. return ret;
  502. }
  503. },
  504. ],
  505. fixedHeader: false,
  506. thead: {
  507. 'th': {'background-color': 'blue'}
  508. },
  509. layout: {
  510. topStart : null,
  511. topEnd : null,
  512. top1A: {
  513. // buttons: [
  514. // {
  515. // extend: 'collection',
  516. // text: 'ESPORTA',
  517. buttons: [
  518. {
  519. extend: 'excelHtml5',
  520. text: '<i class="fa-solid fa-file-excel"></i>',
  521. action: newexportaction,
  522. title: date_export + 'Utenti archiviati',
  523. exportOptions: {
  524. columns: ":not(':last')",
  525. page: 'all'
  526. }
  527. },
  528. {
  529. extend: 'pdfHtml5',
  530. text: '<i class="fa-solid fa-file-pdf"></i>',
  531. action: newexportaction,
  532. title: date_export + 'Utenti archiviati',
  533. exportOptions: {
  534. columns: ":not(':last')"
  535. },
  536. customize: function(doc) {
  537. doc.styles.tableHeader.alignment = 'left';
  538. }
  539. },
  540. {
  541. extend: 'print',
  542. action: newexportaction,
  543. text: '<i class="fa-solid fa-print"></i>',
  544. title: date_export + 'Utenti archiviati',
  545. exportOptions: {
  546. columns: ":not(':last')"
  547. }
  548. }
  549. ],
  550. // dropup: true
  551. // }
  552. // ]
  553. },
  554. top1B : {
  555. pageLength: {
  556. menu: [[10, 25, 50, 100, 100000], [10, 25, 50, 100, "Tutti"]]
  557. }
  558. },
  559. top1C :'search',
  560. bottomEnd: {
  561. paging: {
  562. boundaryNumbers: false
  563. }
  564. }
  565. },
  566. pagingType: 'first_last_numbers',
  567. language: {
  568. "url": "/assets/js/Italian.json",
  569. paginate: {
  570. first: '<i class="fa-solid fa-angles-left"></i>',
  571. last: '<i class="fa-solid fa-angles-right"></i>',
  572. }
  573. },
  574. "fnInitComplete": function (oSettings, json) {
  575. var html = '&nbsp;<a style="cursor:pointer" class="showHideFilter btn--ui"><i class="fa-solid fa-sliders"></i></a>';
  576. html += '&nbsp;<a style="cursor:pointer" class="addData btn--ui"><i class="fa-solid fa-plus"></i></a>';
  577. $(".dt-search").append(html);
  578. loadFilters();
  579. }
  580. });
  581. $('#tablesaw-350 thead tr th').addClass('col');
  582. $('#tablesaw-350 thead tr th').css("background-color", "#f6f8fa");
  583. $('#tablesaw-350').on('draw.dt', function() {
  584. $('[data-bs-toggle="popover"]').popover()
  585. });
  586. }
  587. Livewire.on('reload', (x) =>
  588. {
  589. location.reload();
  590. });
  591. </script>
  592. @endpush