course_list.blade.php 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783
  1. <div class="col">
  2. <div class="row h-100">
  3. <div class="col card--ui" id="card--dashboard">
  4. <header id="title--section" style="display:none !important" class="d-flex align-items-center justify-content-between">
  5. <div class="title--section_name d-flex align-items-center justify-content-between">
  6. <i class="ico--ui title_section utenti me-2"></i>
  7. <h2 class="primary">Pagamento corsi</h2>
  8. </div>
  9. </header>
  10. <div class="showFilter" style="display:none" wire:ignore.self>
  11. <hr size="1">
  12. <div class="row g-3">
  13. <div class="col-md-2">
  14. <div class="row">
  15. <div class="col-md-12" style="margin-bottom:10px;">
  16. <b>Corso</b>
  17. </div>
  18. <div class="col-12" >
  19. <select class="form-select filterCourse" multiple="multiple">
  20. @foreach($courses as $c)
  21. <option value="{{$c}}">{{$c}}
  22. @endforeach
  23. </select>
  24. </div>
  25. </div>
  26. </div>
  27. <div class="col-md-2">
  28. <div class="row">
  29. <div class="col-md-12" style="margin-bottom:10px;">
  30. <b>Livello</b>
  31. </div>
  32. <div class="col-12">
  33. <select class="form-select filterLevel" multiple="multiple">
  34. @foreach($course_levels as $c)
  35. <option value="{{$c->id}}">{{$c->name}}
  36. @endforeach
  37. </select>
  38. </div>
  39. </div>
  40. </div>
  41. <div class="col-md-2">
  42. <div class="row">
  43. <div class="col-md-12" style="margin-bottom:10px;">
  44. <b>Frequenza</b>
  45. </div>
  46. <div class="col-12">
  47. <select class="form-select filterFrequency" multiple="multiple">
  48. @foreach($course_frequencies as $c)
  49. <option value="{{$c->id}}">{{$c->name}}
  50. @endforeach
  51. </select>
  52. </div>
  53. </div>
  54. </div>
  55. <div class="col-md-2">
  56. <div class="row">
  57. <div class="col-md-12" style="margin-bottom:10px;">
  58. <b>Tipologia</b>
  59. </div>
  60. <div class="col-12">
  61. <select class="form-select filterType" multiple="multiple">
  62. @foreach($course_types as $c)
  63. <option value="{{$c->id}}">{{$c->name}}
  64. @endforeach
  65. </select>
  66. </div>
  67. </div>
  68. </div>
  69. <div class="col-md-2">
  70. <div class="row">
  71. <div class="col-md-12" style="margin-bottom:10px;">
  72. <b>Durata</b>
  73. </div>
  74. <div class="col-12">
  75. <select class="form-select filterDuration" multiple="multiple">
  76. @foreach($course_durations as $c)
  77. <option value="{{$c->id}}">{{$c->name}}
  78. @endforeach
  79. </select>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. <div class="row g-3" style="margin-top:20px;">
  85. <div class="col-md-12" style="text-align:right">
  86. <button class="btn--ui_outline light" wire:click.prevent="disableSearch()" onclick="destroyDataTable()">CANCELLA</button>
  87. <button class="btn--ui" onclick="loadDataTable()">FILTRA</button>
  88. </div>
  89. </div>
  90. <hr size="1">
  91. </div>
  92. <section id="resume-table">
  93. <div class="compare--chart_wrapper d-none"></div>
  94. <table class="table tablesaw tablesaw-stack pagamento--corsi" id="tablesaw-350">
  95. <thead>
  96. <tr>
  97. <th scope="col">Cognome</th>
  98. <th scope="col">Nome</th>
  99. <th scope="col">Iscrizione</th>
  100. @foreach($months as $m)
  101. <th scope="col">&nbsp;&nbsp;&nbsp;&nbsp;{{$m}}</th>
  102. @endforeach
  103. </tr>
  104. </thead>
  105. <tbody id="checkall-target">
  106. @if(false)
  107. @foreach($records as $record)
  108. <tr>
  109. @php
  110. list($id, $first_name, $last_name) = explode("§", $record[0]);
  111. @endphp
  112. <td><a href="/members?member_detail={{$id}}">{{$last_name}}</a></td>
  113. <td><a href="/members?member_detail={{$id}}">{{$first_name}}</a></td>
  114. @php
  115. list($subscribed, $subPrice) = explode("§", $record[15]);
  116. @endphp
  117. <td><a class="{{$subscribed ? 'green' : 'orange'}} sub_{{$record[14]}}" onclick="setSubscription({{$record[13]}}, {{$id}}, {{$record[14]}})" style="cursor: pointer;"><small>{{formatPrice($subPrice)}}</small></a></td>
  118. @for($x=1; $x<=12; $x++)
  119. <td>
  120. @php
  121. list($color, $price) = explode("§", $record[$x]);
  122. @endphp
  123. @if($color == 'orange')
  124. <a class="{{$color}} lnk_{{$record[14]}}" id="lnk_{{$record[13]}}_{{$x}}_{{$id}}" onclick="setPayMonth({{$record[13]}}, {{$x}}, {{$id}}, {{$record[14]}})" style="cursor: pointer;"><small>{{formatPrice($price)}}</small></a>
  125. @else
  126. @if($color != 'grey')
  127. <a class="{{$color}}"><small>{{formatPrice($price)}}</small></a>
  128. @else
  129. &nbsp;
  130. @endif
  131. @endif
  132. </td>
  133. @endfor
  134. </tr>
  135. @endforeach
  136. @endif
  137. </tbody>
  138. <tfoot id="checkall-target">
  139. <tr>
  140. <th colspan="2"></th>
  141. <th></th>
  142. <th></th>
  143. <th></th>
  144. <th></th>
  145. <th></th>
  146. <th></th>
  147. <th></th>
  148. <th></th>
  149. <th></th>
  150. <th></th>
  151. <th></th>
  152. <th></th>
  153. <th></th>
  154. </tr>
  155. </tfoot>
  156. </table>
  157. <button style="display:none" class="btn--ui btNewPayment" onclick="newPayment()">NUOVO PAGAMENTO</button>
  158. </section>
  159. </div>
  160. @push('scripts')
  161. @endpush
  162. @push('scripts')
  163. <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
  164. <style>
  165. .select2-container--default .select2-selection--single{
  166. background-color: #E9F0F5;
  167. border: 0.0625rem solid #DFE5EB;
  168. font-size: 0.75rem;
  169. }
  170. .select2-selection
  171. {
  172. height: 38px !important;
  173. }
  174. .select2-selection__rendered
  175. {
  176. padding-top:3px;
  177. }
  178. .select2 {
  179. width:100% !important;
  180. }
  181. </style>
  182. <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
  183. <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
  184. @endpush
  185. @push('scripts')
  186. <link href="/css/datatables.css" rel="stylesheet" />
  187. <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
  188. <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
  189. <style>
  190. .select2-container--default .select2-selection--single{
  191. background-color: #E9F0F5;
  192. border: 0.0625rem solid #DFE5EB;
  193. font-size: 0.75rem;
  194. }
  195. .select2-selection
  196. {
  197. height: 38px !important;
  198. }
  199. .select2-selection__rendered
  200. {
  201. padding-top:3px;
  202. }
  203. .select2 {
  204. width:100% !important;
  205. }
  206. .select2-selection--multiple{
  207. overflow: hidden !important;
  208. height: auto !important;
  209. }
  210. .select2-container {
  211. box-sizing: border-box;
  212. display: inline-block;
  213. margin: 0;
  214. position: relative;
  215. vertical-align: middle;
  216. }
  217. .select2-container .select2-selection--single {
  218. box-sizing: border-box;
  219. cursor: pointer;
  220. display: block;
  221. height: 38px;
  222. user-select: none;
  223. -webkit-user-select: none;
  224. }
  225. .select2-container .select2-selection--single .select2-selection__rendered {
  226. display: block;
  227. padding-left: 8px;
  228. padding-right: 20px;
  229. overflow: hidden;
  230. text-overflow: ellipsis;
  231. white-space: nowrap;
  232. }
  233. .select2-selection__choice__display{
  234. color:#000000 !important;
  235. }
  236. </style>
  237. <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
  238. <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
  239. <script src="/assets/js/datatables.js"></script>
  240. <script src="https://cdn.datatables.net/buttons/3.0.2/js/buttons.dataTables.js"></script>
  241. <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
  242. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script>
  243. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script>
  244. @endpush
  245. @push('scripts')
  246. <script>
  247. var totals = '';
  248. $(document).ready(function() {
  249. loadDataTable();
  250. } );
  251. $('.filterCourse').select2();
  252. /*$('.filterCourse').on('change', function (e) {
  253. var data = $('.filterCourse').select2("val");
  254. if (data == null) data = [];
  255. @this.set('filterCourse', data);
  256. //@this.search();
  257. });*/
  258. $('.filterLevel').select2();
  259. /*$('.filterLevel').on('change', function (e) {
  260. var data = $('.filterLevel').select2("val");
  261. if (data == null) data = [];
  262. //@this.set('filterLevel', data);
  263. //@this.search();
  264. });*/
  265. $('.filterFrequency').select2();
  266. /*$('.filterFrequency').on('change', function (e) {
  267. var data = $('.filterFrequency').select2("val");
  268. if (data == null) data = [];
  269. @this.set('filterFrequency', data);
  270. //@this.search();
  271. });*/
  272. $('.filterType').select2();
  273. /*$('.filterType').on('change', function (e) {
  274. var data = $('.filterType').select2("val");
  275. if (data == null) data = [];
  276. @this.set('filterType', data);
  277. //@this.search();
  278. });*/
  279. $('.filterDuration').select2();
  280. /*$('.filterDuration').on('change', function (e) {
  281. var data = $('.filterDuration').select2("val");
  282. if (data == null) data = [];
  283. // @this.set('filterDuration', data);
  284. //@this.search();
  285. });*/
  286. Livewire.on('load-data-table', () => {
  287. $('.filterCourse').select2();
  288. $('.filterLevel').select2();
  289. $('.filterFrequency').select2();
  290. $('.filterType').select2();
  291. $('.filterDuration').select2();
  292. loadDataTable();
  293. });
  294. Livewire.on('destroy-data-table', () => {
  295. $('#tablesaw-350').DataTable().destroy();
  296. });
  297. function destroyDataTable()
  298. {
  299. $('#tablesaw-350').DataTable().destroy();
  300. }
  301. var isFilter = false;
  302. $(document).ready(function() {
  303. $(document).on("click",".showHideFilter",function() {
  304. if (isFilter)
  305. {
  306. isFilter = false;
  307. $(".showFilter").hide();
  308. }
  309. else
  310. {
  311. isFilter = true;
  312. $(".showFilter").show();
  313. }
  314. });
  315. } );
  316. function searchAction()
  317. {
  318. //destroyDataTable();
  319. //@this.search();
  320. }
  321. function loadDataTable(){
  322. if ( $.fn.DataTable.isDataTable('#tablesaw-350') ) {
  323. $('#tablesaw-350').DataTable().destroy();
  324. }
  325. var filterCourse = $('.filterCourse').val();
  326. var filterLevel = $('.filterLevel').val();
  327. var filterDuration = $('.filterDuration').val();
  328. var filterFrequency = $('.filterFrequency').val();
  329. var filterType = $('.filterType').val();
  330. $('#tablesaw-350').DataTable({
  331. //scrollX: true,
  332. serverSide: true,
  333. ajax: {
  334. url : '/get_course_list?filterCourse=' + filterCourse + '&filterDuration=' + filterDuration + '&filterLevel=' + filterLevel + '&filterType=' + filterType + '&filterFrequency=' + filterFrequency,
  335. dataSrc: function (json){
  336. if(json.totals){
  337. totals = json.totals;
  338. }
  339. return json.data;
  340. }
  341. },
  342. fixedHeader: true,
  343. thead: {
  344. 'th': {'background-color': 'blue'}
  345. },
  346. columns: [
  347. {
  348. data: 'column_0',
  349. render: function (data, type, row){
  350. var ret = '<a href="/members?member_detail=' + row["column_17"] + '">' + data + '</a>';
  351. return ret;
  352. }
  353. },
  354. {
  355. data: 'column_1',
  356. render: function (data, type, row){
  357. const x = data.split("§");
  358. var ret = '<a href="/members?member_detail=' + row["column_17"] + '">' + data + '</a>';
  359. return ret;
  360. }
  361. },
  362. {
  363. data: 'column_2',
  364. render: function (data, type, row){
  365. const x = data.split("§");
  366. var ret = '<a class="' + (x[0] == 1 ? 'green' : 'orange') + ' sub_' + row["column_16"] + '" onclick="setSubscription(' + row["column_15"] + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  367. return ret;
  368. }
  369. },
  370. {
  371. data: 'column_3',
  372. render: function (data, type, row, meta){
  373. const x = data.split("§");
  374. var ret = '';
  375. if (x[0] == 'orange')
  376. {
  377. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  378. }
  379. else
  380. {
  381. if (x[0] != 'grey')
  382. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  383. }
  384. return ret;
  385. }
  386. },
  387. {
  388. data: 'column_4',
  389. render: function (data, type, row, meta){
  390. const x = data.split("§");
  391. var ret = '';
  392. if (x[0] == 'orange')
  393. {
  394. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  395. }
  396. else
  397. {
  398. if (x[0] != 'grey')
  399. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  400. }
  401. return ret;
  402. }
  403. },
  404. {
  405. data: 'column_5',
  406. render: function (data, type, row, meta){
  407. const x = data.split("§");
  408. var ret = '';
  409. if (x[0] == 'orange')
  410. {
  411. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  412. }
  413. else
  414. {
  415. if (x[0] != 'grey')
  416. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  417. }
  418. return ret;
  419. }
  420. },
  421. {
  422. data: 'column_6',
  423. render: function (data, type, row, meta){
  424. const x = data.split("§");
  425. var ret = '';
  426. if (x[0] == 'orange')
  427. {
  428. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  429. }
  430. else
  431. {
  432. if (x[0] != 'grey')
  433. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  434. }
  435. return ret;
  436. }
  437. },
  438. {
  439. data: 'column_7',
  440. render: function (data, type, row, meta){
  441. const x = data.split("§");
  442. var ret = '';
  443. if (x[0] == 'orange')
  444. {
  445. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  446. }
  447. else
  448. {
  449. if (x[0] != 'grey')
  450. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  451. }
  452. return ret;
  453. }
  454. },
  455. {
  456. data: 'column_8',
  457. render: function (data, type, row, meta){
  458. const x = data.split("§");
  459. var ret = '';
  460. if (x[0] == 'orange')
  461. {
  462. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  463. }
  464. else
  465. {
  466. if (x[0] != 'grey')
  467. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  468. }
  469. return ret;
  470. }
  471. },
  472. {
  473. data: 'column_9',
  474. render: function (data, type, row, meta){
  475. const x = data.split("§");
  476. var ret = '';
  477. if (x[0] == 'orange')
  478. {
  479. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  480. }
  481. else
  482. {
  483. if (x[0] != 'grey')
  484. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  485. }
  486. return ret;
  487. }
  488. },
  489. {
  490. data: 'column_10',
  491. render: function (data, type, row, meta){
  492. const x = data.split("§");
  493. var ret = '';
  494. if (x[0] == 'orange')
  495. {
  496. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  497. }
  498. else
  499. {
  500. if (x[0] != 'grey')
  501. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  502. }
  503. return ret;
  504. }
  505. },
  506. {
  507. data: 'column_11',
  508. render: function (data, type, row, meta){
  509. const x = data.split("§");
  510. var ret = '';
  511. if (x[0] == 'orange')
  512. {
  513. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  514. }
  515. else
  516. {
  517. if (x[0] != 'grey')
  518. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  519. }
  520. return ret;
  521. }
  522. },
  523. {
  524. data: 'column_12',
  525. render: function (data, type, row, meta){
  526. const x = data.split("§");
  527. var ret = '';
  528. if (x[0] == 'orange')
  529. {
  530. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  531. }
  532. else
  533. {
  534. if (x[0] != 'grey')
  535. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  536. }
  537. return ret;
  538. }
  539. },
  540. {
  541. data: 'column_13',
  542. render: function (data, type, row, meta){
  543. const x = data.split("§");
  544. var ret = '';
  545. if (x[0] == 'orange')
  546. {
  547. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  548. }
  549. else
  550. {
  551. if (x[0] != 'grey')
  552. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  553. }
  554. return ret;
  555. }
  556. },
  557. {
  558. data: 'column_14',
  559. render: function (data, type, row, meta){
  560. const x = data.split("§");
  561. var ret = '';
  562. if (x[0] == 'orange')
  563. {
  564. ret = '<a class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_' + meta.row + '_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', ' + meta.row + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  565. }
  566. else
  567. {
  568. if (x[0] != 'grey')
  569. ret = '<a class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  570. }
  571. return ret;
  572. }
  573. }
  574. ],
  575. layout: {
  576. topStart : null,
  577. topEnd : null,
  578. top1A: {
  579. buttons: [
  580. {
  581. extend: 'collection',
  582. text: 'Esporta',
  583. buttons: [
  584. {
  585. extend: 'excelHtml5',
  586. title: 'Pagamento corsi',
  587. exportOptions: {
  588. columns: ":not(':last')"
  589. }
  590. },
  591. {
  592. extend: 'pdfHtml5',
  593. title: 'Pagamento corsi',
  594. exportOptions: {
  595. columns: ":not(':last')"
  596. }
  597. },
  598. {
  599. extend: 'print',
  600. text: 'Stampa',
  601. title: 'Pagamento corsi',
  602. exportOptions: {
  603. columns: ":not(':last')"
  604. }
  605. }
  606. ],
  607. dropup: true
  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. order: [[0, 'asc'], [1, 'asc']],
  619. pagingType: 'numbers',
  620. "language": {
  621. "url": "/assets/js/Italian.json"
  622. },
  623. "fnInitComplete": function (oSettings, json) {
  624. var html = '&nbsp;<a href="#" class="showHideFilter btn--ui"><i class="fa-solid fa-sliders"></i></a>';
  625. $(".dt-search").append(html);
  626. },
  627. "footerCallback": function (row, data, start, end, display) {
  628. let api = this.api();
  629. api.column(0).footer().innerHTML = '';
  630. for(var i=1; i<=14; i++)
  631. {
  632. api.column(i).footer().innerHTML = '';
  633. }
  634. if (totals != '')
  635. {
  636. totals.split("_").forEach(function (item)
  637. {
  638. var x = item.split("§");
  639. console.log(x);
  640. if (x[1] != undefined)
  641. api.column(x[0]).footer().innerHTML = x[1];
  642. else
  643. api.column(x[0]).footer().innerHTML = '';
  644. });
  645. }
  646. }
  647. });
  648. $('#tablesaw-350 thead tr th').addClass('col');
  649. $('#tablesaw-350 thead tr th').css("background-color", "#f6f8fa");
  650. jQuery.fn.dataTable.Api.register( 'sum()', function ( ) {
  651. return this.flatten().reduce( function ( a, b ) {
  652. if ( typeof a === 'string') {
  653. start = a.indexOf("€");
  654. a = a.substr(start + 2).replace("</small></a>", "").replace(",",".") * 1;
  655. }
  656. if ( typeof b === 'string' && b.indexOf('green') > 0) {
  657. start = b.indexOf("€");
  658. b = b.substr(start + 2).replace("</small></a>", "").replace(",",".") * 1;
  659. }
  660. else
  661. {
  662. b = 0;
  663. }
  664. return a + b;
  665. }, 0 );
  666. } );
  667. }
  668. Livewire.on('setTotals', (tot) =>
  669. {
  670. totals = tot;
  671. console.log(totals);
  672. });
  673. var subscription = false;
  674. var months = [];
  675. var selectedCourseId = 0;
  676. var selectedMemberId = 0;
  677. var selectedMemberCourseId = 0;
  678. function setPayMonth(course_id, month, member_id, id)
  679. {
  680. if (selectedMemberCourseId != id)
  681. {
  682. $(".lnk_" + selectedMemberCourseId).addClass("orange").removeClass("blue").removeClass("selected");
  683. }
  684. selectedCourseId = course_id;
  685. selectedMemberId = member_id;
  686. selectedMemberCourseId = id;
  687. if(!months.includes(month))
  688. {
  689. months.push(month);
  690. $("#lnk_" + course_id + "_" + month + "_" + member_id).addClass("blue").addClass("selected").removeClass("orange");
  691. }
  692. else
  693. {
  694. months.splice(months.indexOf(months), 1);
  695. $("#lnk_" + course_id + "_" + month + "_" + member_id).addClass("orange").removeClass("blue").removeClass("selected");
  696. }
  697. if (months.length > 0)
  698. {
  699. $(".btNewPayment").show();
  700. }
  701. else
  702. {
  703. $(".btNewPayment").hide();
  704. }
  705. }
  706. function setSubscription(course_id, member_id, id)
  707. {
  708. if (selectedMemberCourseId != id)
  709. {
  710. $(".sub_" + selectedMemberCourseId).addClass("orange").removeClass("blue").removeClass("selected");
  711. $(".lnk_" + selectedMemberCourseId).addClass("orange").removeClass("blue").removeClass("selected");
  712. subscription = false;
  713. }
  714. selectedCourseId = course_id;
  715. selectedMemberId = member_id;
  716. selectedMemberCourseId = id;
  717. if (subscription)
  718. {
  719. $(".sub_" + selectedMemberCourseId).addClass("orange").removeClass("blue").removeClass("selected");
  720. subscription = false;
  721. }
  722. else
  723. {
  724. $(".sub_" + selectedMemberCourseId).addClass("blue").addClass("selected").removeClass("orange");
  725. subscription = true;
  726. }
  727. }
  728. function newPayment()
  729. {
  730. @this.newPayment(selectedCourseId, months.toString(), selectedMemberId, selectedMemberCourseId, subscription);
  731. }
  732. </script>
  733. @endpush