calendar_remove.blade.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <div class="col card--ui" id="card--dashboard">
  2. <a class="btn--ui lightGrey" href="/calendar"><i class="fa-solid fa-arrow-left"></i></a><br>
  3. <header id="title--section" style="display:none !important" class="d-flex align-items-center justify-content-between">
  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">Lezioni da rimuovere</h2>
  7. </div>
  8. </header>
  9. <div class="row">
  10. <div class="col-12 mb-3">
  11. <div class="row">
  12. <div class="col">
  13. <h3 class="primary">Lezioni senza iscritti nel calendario</h3>
  14. </div>
  15. <div class="col-auto">
  16. <span id="deleting" style="display:none">Eliminazione in corso...</span>
  17. <input type="button" class="btDelete btn--ui" value="Elimina selezionati">
  18. </div>
  19. </div>
  20. </div>
  21. </div>
  22. @foreach ($data as $course => $days)
  23. <div class="row mb-4">
  24. <div class="col-12 mb-3">
  25. <h4 class="primary">{{$course}}</h4>
  26. </div>
  27. @foreach ($days as $day => $times)
  28. <div class="col-1"></div>
  29. <div class="col-11 mb-4">
  30. <h5 class="primary text-capitalize">{{Illuminate\Support\Carbon::create()->startOfWeek()->addDays($day - 1)->locale('it')->dayName}}</h5>
  31. <div class="lessons-hour-grid">
  32. @foreach ($times as $time)
  33. <a onclick="checkAll('{{$time['grp']}}', {{$time['calendar_id']}})" class="btn btn-light bt{{$time['calendar_id']}}">{{$time['hour']}}</a>
  34. @endforeach
  35. </div>
  36. @if ($loop->last)
  37. <hr>
  38. @endif
  39. </div>
  40. @endforeach
  41. {{-- <div class="col-12 mb-5">
  42. <div class="lessons-grid">
  43. @foreach($groups as $idx => $grp)
  44. <a onclick="checkAll('{{$grp}}', {{$idx}})" class="btn btn-light bt{{$idx}}">{{$grp}}</a>
  45. @endforeach
  46. </div>
  47. </div> --}}
  48. </div>
  49. @endforeach
  50. <div class="row">
  51. <div class="col"></div>
  52. <div class="col-auto">
  53. <input type="button" class="btn--ui" onclick="toggleSingleLessons()" value="Visualizza slot singoli">
  54. </div>
  55. </div>
  56. <div class="row" id="single-lessons" style="display: none">
  57. <div class="col-12 mb-3">
  58. <h3 class="primary">Slot singoli</h3>
  59. </div>
  60. <div class="col-12 mb-5">
  61. <table class="report-table" id="lessons-table">
  62. <thead>
  63. <tr>
  64. <td></td>
  65. <td>Data</td>
  66. <td>Ora</td>
  67. <td>Corso</td>
  68. <td></td>
  69. </tr>
  70. </thead>
  71. <tbody>
  72. @foreach($records as $record)
  73. <tr>
  74. <td><input type="checkbox" value="{{$record["id"]}}" class="chk when_{{$record["name"]}}_{{$record["day"]}}_{{str_replace(":", "", $record["hour"])}}"></td>
  75. <td>{{$record["date"]}}</td>
  76. <td>{{$record["hour"]}}</td>
  77. <td>{{$record["name"]}}</td>
  78. <td><a href="/presences?calendarId={{$record["id"]}}" target="_blank">Visualizza</a></td>
  79. </tr>
  80. @endforeach
  81. </tbody>
  82. </table>
  83. </div>
  84. </div>
  85. </div>
  86. @push('css')
  87. <link href="/css/presence_report.css" rel="stylesheet" />
  88. <style>
  89. .report-table {
  90. width: 100% !important;
  91. }
  92. </style>
  93. @endpush
  94. @push('scripts')
  95. <link href="/css/datatables.css" rel="stylesheet" />
  96. <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
  97. @endpush
  98. @push('scripts')
  99. <script>
  100. var ids = [];
  101. var xxx = [];
  102. $(document).ready(function() {
  103. $('.chk').change(function() {
  104. if(this.checked)
  105. {
  106. ids.push($(this).val());
  107. }
  108. else
  109. {
  110. var index = ids.indexOf($(this).val());
  111. if (index > -1)
  112. {
  113. ids.splice(index, 1);
  114. }
  115. }
  116. });
  117. $(".btDelete").click(function(){
  118. $("#deleting").show();
  119. //$(this).hide();
  120. @this.removeSelected(ids);
  121. });
  122. });
  123. function checkAll(x, idx)
  124. {
  125. var checked = true;
  126. if ($(".bt" + idx).hasClass("btn-primary"))
  127. {
  128. $(".bt" + idx).removeClass("btn-primary");
  129. $(".bt" + idx).addClass("btn-light");
  130. checked = false;
  131. }
  132. else
  133. {
  134. $(".bt" + idx).removeClass("btn-light");
  135. $(".bt" + idx).addClass("btn-primary");
  136. }
  137. /*var index = xxx.indexOf(x);
  138. if (index > -1)
  139. {
  140. xxx.splice(index, 1);
  141. checked = false;
  142. }*/
  143. x = x.replaceAll(" ", "_");
  144. x = x.replaceAll(":", "");
  145. console.log(x);
  146. var xxx = $(".when_" + x).map(function() {
  147. console.log("CIAO");
  148. var val = $(this).val();
  149. $(this).prop('checked', checked);
  150. if (checked)
  151. ids.push(val);
  152. else
  153. {
  154. var index = ids.indexOf(val);
  155. if (index > -1)
  156. {
  157. ids.splice(index, 1);
  158. }
  159. }
  160. //return this.innerHTML;
  161. }).get();
  162. }
  163. </script>
  164. @endpush
  165. @push('scripts')
  166. <script src="/assets/js/datatables.js"></script>
  167. <script src="https://cdn.datatables.net/buttons/3.0.2/js/buttons.dataTables.js"></script>
  168. <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
  169. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script>
  170. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script>
  171. <script>
  172. function toggleSingleLessons() {
  173. let lessons_wrapper = document.querySelector('#single-lessons');
  174. if (lessons_wrapper) {
  175. if (lessons_wrapper.style.display == 'none')
  176. lessons_wrapper.style.display = 'block';
  177. else
  178. lessons_wrapper.style.display = 'none';
  179. }
  180. }
  181. $(document).ready(function() {
  182. loadDataTable();
  183. });
  184. function loadDataTable(){
  185. if ( $.fn.DataTable.isDataTable('#lessons-table') ) {
  186. $('#lessons-table').DataTable().destroy();
  187. }
  188. $('#lessons-table').DataTable({
  189. fixedHeader: false,
  190. order: [
  191. [1, 'asc']
  192. ],
  193. layout: {
  194. topStart : null,
  195. topEnd : null,
  196. top1A: null,
  197. top1B : {
  198. pageLength: {
  199. menu: [[10, 25, 50, 100, 100000], [10, 25, 50, 100, "Tutti"]]
  200. }
  201. },
  202. top1C :'search',
  203. bottomEnd: {
  204. paging: {
  205. boundaryNumbers: false
  206. }
  207. }
  208. },
  209. pagingType: 'first_last_numbers',
  210. language: {
  211. "url": "/assets/js/Italian.json",
  212. paginate: {
  213. first: '<i class="fa-solid fa-angles-left"></i>',
  214. last: '<i class="fa-solid fa-angles-right"></i>',
  215. }
  216. },
  217. });
  218. }
  219. </script>
  220. @endpush