Advertisement
vitareinforce

Group

Feb 25th, 2021
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.98 KB | None | 0 0
  1. @extends('layouts.master')
  2.  
  3. @section('css')
  4. <style>
  5. .swal-modal {
  6. background-color: #FE9508;
  7. }
  8.  
  9. .swal-title {
  10. color: #ffffff;
  11. }
  12.  
  13. .swal-button--confirm {
  14. background-color: #064A25;
  15. }
  16.  
  17. .swal-button--cancel {
  18. background-color: #ff0000;
  19. color: #ffffff;
  20.  
  21. }
  22.  
  23. .swal-footer {
  24. text-align: center;
  25. }
  26.  
  27. </style>
  28.  
  29. @endsection
  30.  
  31. @section('title')
  32. Daftar Group
  33. @endsection
  34.  
  35. @section('content')
  36.  
  37. <!-- Konten Tampilan disini -->
  38. <div class="row">
  39. <div class="col-lg-12 margin-tb mt-3 mb-3">
  40.  
  41. <div class="text-left mb-3">
  42. {{-- <a class="btn btn-success btn-sm" href="{{ route('group.create') }}">+</a> --}}
  43. <a class="btn btn-success btn-sm float-left" href="/group/create" role="button">Tambah Grup</a>
  44. </div>
  45. </div>
  46.  
  47. @if ($message = Session::get('success'))
  48. <div class="alert alert-success alert-dismissible fade show" role="alert">
  49. <strong>
  50. <p>{{ $message }}</p>
  51. </strong>
  52. <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  53. <span aria-hidden="true">&times;</span>
  54. </button>
  55. </div>
  56. @endif
  57. <div class="col-lg-12 margin-tb mt-3 mb-3">
  58. <button onclick="exportExcel()" class="btn btn-outline-success my-2 my-sm-0 float-right aksi"><i
  59. class="fas fa-file-export"></i></button>
  60. <br><br>
  61. <table id="table" data-url="group/api" data-pagination="true" data-pagination-h-align="left"
  62. data-pagination-detail-h-align="right" data-search="true" data-show-search-button="true"
  63. data-show-fullscreen="true" data-show-export="true" data-filter-control="true"
  64. data-page-list="[10, 20, 50, 100, all]" class="col-lg-12 table table-hover">
  65. <thead>
  66. <tr>
  67. <th data-sortable="false" data-field="index" data-formatter="formatUrutan">No</th>
  68. <th data-formatter="action">&nbsp;</th>
  69. <th data-sortable="true" data-field="nama" data-formatter="detail">Nama Group</th>
  70. <th data-sortable="true" data-field="jumlah_karyawan" data-formatter="formatJumlahKaryawan">Jumlah
  71. </th>
  72. <th data-sortable="true" data-field="jadwals" data-formatter="formatJadwal">Jadwal</th>
  73. <th data-sortable="true" data-field="keterangan">Keterangan</th>
  74. </tr>
  75. </thead>
  76. </table>
  77. </div>
  78. </div>
  79.  
  80.  
  81. @endsection
  82.  
  83. @section('js')
  84. <script>
  85. function exportExcel() {
  86. let table_html = $('#table').bootstrapTable()[0].outerHTML;
  87. // convert ke json
  88. let table_json = HtmlTableToJson.parse(table_html).results[0];
  89. JSONToCSVConvertor(table_json, "Judul", 1);
  90. }
  91.  
  92. function JSONToCSVConvertor(JSONData, ReportTitle, ShowLabel) {
  93.  
  94. //If JSONData is not an object then JSON.parse will parse the JSON string in an Object
  95. var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
  96. var CSV = '';
  97. //This condition will generate the Label/Header
  98. if (ShowLabel) {
  99. var row = "";
  100.  
  101. //This loop will extract the label from 1st index of on array
  102. for (var index in arrData[0]) {
  103. //Now convert each value to string and comma-seprated
  104. row += index + ',';
  105. }
  106. row = row.slice(0, -1);
  107. //append Label row with line break
  108. CSV += row + '\r\n';
  109. }
  110.  
  111. //1st loop is to extract each row
  112. for (var i = 0; i < arrData.length; i++) {
  113. var row = "";
  114. //2nd loop will extract each column and convert it in string comma-seprated
  115. for (var index in arrData[i]) {
  116. row += '"' + arrData[i][index] + '",';
  117. }
  118. row.slice(0, row.length - 1);
  119. //add a line break after each row
  120. CSV += row + '\r\n';
  121. }
  122.  
  123. if (CSV == '') {
  124. alert("Invalid data");
  125. return;
  126. }
  127.  
  128. //this trick will generate a temp "a" tag
  129. var link = document.createElement("a");
  130. link.id = "lnkDwnldLnk";
  131.  
  132. //this part will append the anchor tag and remove it after automatic click
  133. document.body.appendChild(link);
  134.  
  135. var csv = CSV;
  136. blob = new Blob([csv], { type: 'text/csv' });
  137. var csvUrl = window.webkitURL.createObjectURL(blob);
  138. var filename = (ReportTitle || 'UserExport') + '.csv';
  139. $("#lnkDwnldLnk")
  140. .attr({
  141. 'download': filename,
  142. 'href': csvUrl
  143. });
  144.  
  145. $('#lnkDwnldLnk')[0].click();
  146. document.body.removeChild(link);
  147. }
  148.  
  149. $('#table').bootstrapTable();
  150. $('.delete-confirm').on('click', function(event) {
  151. event.preventDefault();
  152. const url = $(this).attr('href');
  153. swal({
  154. title: 'Apakah Anda Yakin menghapus grup?',
  155. text: "",
  156. type: 'warning',
  157. icon: 'warning',
  158. buttons: {
  159. confirm: {
  160. text: 'Ya, hapus!',
  161. className: 'btn btn-success'
  162. },
  163. cancel: {
  164. visible: true,
  165. text: 'Tidak',
  166. className: 'btn outline-success'
  167. }
  168. },
  169. }).then(function(value) {
  170. if (value) {
  171. window.location.href = url;
  172. }
  173. });
  174. });
  175.  
  176. function detail(value, row) {
  177. var html = `<a href="/group/:id">` + row.nama + `</a>`;
  178. html = html.replace(':id', row.id);
  179. return html;
  180. }
  181.  
  182. function formatUrutan(value, row, index) {
  183. return index + 1;
  184. }
  185.  
  186. function action(value, row) {
  187. var html = `<div class="btn-group">
  188. <button class="btn btn-info btn-sm aksi" type="button">
  189. Aksi
  190. </button>
  191. <button type="button" class="btn btn-sm btn-success dropdown-toggle dropdown-toggle-split aksi" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  192. <span class="sr-only"></span>
  193. </button>
  194. <ul class="dropdown-menu">
  195. <center>
  196. <li>
  197. <a href="/group/:id_edit/edit" class="btn btn-success btn-sm margin mb-1">Tambah</a>
  198. </li>
  199. <li>
  200. <a href="/group/:id_keluar/keluargrup" class="btn btn-warning btn-sm margin mb-1">Kurang</a>
  201. </li>
  202. <li>
  203. <a href="/group/:id_rolling/rolling" class="btn btn-primary btn-sm margin mb-1">Rolling Jadwal</a>
  204. </li>
  205. <li>
  206. <button class="btn btn-danger btn-sm mb-1" onclick="deleteConfirmation(:id_del)">Hapus</button>
  207. </li>
  208. </center>
  209. </ul>
  210. </div>`;
  211. html = html.replace(':id_edit', row.id).replace(':id_keluar', row.id).replace(':id_del', row.id).replace(
  212. ':id_rolling', row.id);
  213. return html;
  214. }
  215.  
  216. function deleteConfirmation(id) {
  217. let deleteUri = '{{ route('group.delete', ':id') }}'
  218. deleteUri = deleteUri.replace(':id', id);
  219. swal({
  220. title: 'Apakah Anda Yakin Menghapus Group?',
  221. text: '',
  222. icon: 'warning',
  223. buttons: {
  224. confirm: {
  225. text: 'Ya, hapus!',
  226. className: 'btn btn-success'
  227. },
  228. cancel: {
  229. visible: true,
  230. text: 'Tidak',
  231. className: 'btn outline-success'
  232. }
  233. },
  234. }).then(function(value) {
  235. if (value === true) {
  236. window.location.href = deleteUri;
  237. }
  238. });
  239. }
  240.  
  241. function formatJumlahKaryawan(value, row) {
  242. let jumlahkaryawan = 0;
  243. for (let i = 0; i < row.karyawans.length; i++) {
  244. if ((row.karyawans[i].status_karyawan != 'nonaktif')) {
  245. jumlahkaryawan++;
  246. }
  247. }
  248. return jumlahkaryawan;
  249. }
  250.  
  251. function formatJadwal(value, row) {
  252. let jadwal = '';
  253. for (let i = 0; i < row.jadwals.length; i++) {
  254. jadwal = `<a href="/jadwal/${row.jadwals[i].id}">${row.jadwals[i].nama_jadwal}</a>`;
  255. }
  256. return jadwal;
  257. }
  258.  
  259. </script>
  260. @endsection
  261.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement