async-table.blade.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. @if($grid->isAsyncRequest())
  2. {!! $grid->renderHeader() !!}
  3. <div class="{!! $grid->formatTableParentClass() !!}">
  4. <table class="{{ $grid->formatTableClass() }}" id="{{ $tableId }}" >
  5. <thead>
  6. @if ($headers = $grid->getVisibleComplexHeaders())
  7. <tr>
  8. @foreach($headers as $header)
  9. {!! $header->render() !!}
  10. @endforeach
  11. </tr>
  12. @endif
  13. <tr>
  14. @foreach($grid->getVisibleColumns() as $column)
  15. <th {!! $column->formatTitleAttributes() !!}>{!! $column->getLabel() !!}{!! $column->renderHeader() !!}</th>
  16. @endforeach
  17. </tr>
  18. </thead>
  19. @if ($grid->hasQuickCreate())
  20. {!! $grid->renderQuickCreate() !!}
  21. @endif
  22. <tbody>
  23. @foreach($grid->rows() as $row)
  24. <tr {!! $row->rowAttributes() !!}>
  25. @foreach($grid->getVisibleColumnNames() as $name)
  26. <td {!! $row->columnAttributes($name) !!}>
  27. {!! $row->column($name) !!}
  28. </td>
  29. @endforeach
  30. </tr>
  31. @endforeach
  32. @if ($grid->rows()->isEmpty())
  33. <tr>
  34. <td colspan="{!! count($grid->getVisibleColumnNames()) !!}">
  35. <div style="margin:5px 0 0 10px;"><span class="help-block" style="margin-bottom:0"><i class="feather icon-alert-circle"></i>&nbsp;{{ trans('admin.no_data') }}</span></div>
  36. </td>
  37. </tr>
  38. @endif
  39. </tbody>
  40. </table>
  41. </div>
  42. {!! $grid->renderFooter() !!}
  43. {!! $grid->renderPagination() !!}
  44. @else
  45. <div class="dcat-box async-{{ $tableId }}">
  46. <div class="d-block pb-0">
  47. @include('admin::grid.table-toolbar')
  48. </div>
  49. {!! $grid->renderFilter() !!}
  50. <div class="async-body">
  51. <div class="{!! $grid->formatTableParentClass() !!}">
  52. <table class="{{ $grid->formatTableClass() }}" id="{{ $tableId }}" >
  53. <thead>
  54. @if ($headers = $grid->getVisibleComplexHeaders())
  55. <tr>
  56. @foreach($headers as $header)
  57. {!! $header->render() !!}
  58. @endforeach
  59. </tr>
  60. @endif
  61. <tr>
  62. @foreach($grid->getVisibleColumns() as $column)
  63. <th {!! $column->formatTitleAttributes() !!}>{!! $column->getLabel() !!}{!! $column->renderHeader() !!}</th>
  64. @endforeach
  65. </tr>
  66. </thead>
  67. <tbody>
  68. <tr>
  69. <td colspan="{!! count($grid->getVisibleColumnNames()) !!}">
  70. &nbsp;
  71. </td>
  72. </tr>
  73. </tbody>
  74. </table>
  75. </div>
  76. </div>
  77. <script>
  78. Dcat.ready(function () {
  79. var reqName = '{!! Dcat\Admin\Grid::ASYNC_NAME !!}',
  80. $box = $('.async-{{ $tableId }}'),
  81. $body = $box.find('.async-body'),
  82. url = '{!! $asyncUrl !!}',
  83. loading = false;
  84. function render(url) {
  85. if (loading || url.indexOf('javascript:') !== -1) {
  86. return;
  87. }
  88. loading = true;
  89. $body.find('table').loading({style:'height:250px', background:'transparent'});
  90. if (url.indexOf('?') === -1) {
  91. url += '?';
  92. }
  93. if (url.indexOf(reqName) === -1) {
  94. url += '&'+reqName+'=1'
  95. }
  96. history.pushState({}, '', url.replace(reqName+'=1', ''));
  97. $box.data('current', url);
  98. Dcat.helpers.asyncRender(url, function (html) {
  99. loading = false;
  100. $body.html(html);
  101. $box.find('.grid-refresh').off('click').on('click', function () {
  102. render($box.data('current'));
  103. return false;
  104. });
  105. $box.find('.pagination .page-link').on('click', loadLink);
  106. $box.find('.per-pages-selector .dropdown-item a').on('click', loadLink);
  107. $box.find('.grid-column-header a').on('click', loadLink);
  108. $box.find('form').off('submit').on('submit', function () {
  109. var action = $(this).attr('action');
  110. if (action.indexOf('?') === -1) {
  111. action += '?';
  112. }
  113. render(action+'&'+$(this).serialize());
  114. return false;
  115. });
  116. $box.find('.filter-box .reset').on('click', loadLink);
  117. $box.find('.grid-selector a').on('click', loadLink);
  118. });
  119. }
  120. function loadLink() {
  121. render($(this).attr('href'));
  122. return false;
  123. }
  124. // $table.on('grid:render', render);
  125. render(url);
  126. });
  127. </script>
  128. @endif