Tree.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace Dcat\Admin\Grid\Displayers;
  3. use Dcat\Admin\Admin;
  4. class Tree extends AbstractDisplayer
  5. {
  6. protected static $js = [
  7. 'vendor/dcat-admin/dcat-admin/grid-extend.min.js',
  8. ];
  9. protected function setupScript()
  10. {
  11. $tableId = $this->grid->tableId();
  12. $model = $this->grid->model();
  13. // 是否显示下一页按钮
  14. $pageName = $model->getChildrenPageName(':key');
  15. $showNextPage = $model->showAllChildrenNodes() ? 'false' : 'true';
  16. $script = <<<JS
  17. LA.grid.tree({
  18. button: '.{$tableId}-grid-load-children',
  19. table: '#{$tableId}',
  20. url: '{$model->generateTreeUrl()}',
  21. perPage: '{$model->getPerPage()}',
  22. showNextPage: {$showNextPage},
  23. pageQueryName: '{$pageName}',
  24. parentIdQueryName: '{$model->getParentIdQueryName()}',
  25. levelQueryName: '{$model->getLevelQueryName()}',
  26. });
  27. JS;
  28. Admin::script($script);
  29. }
  30. public function display()
  31. {
  32. $this->setupScript();
  33. $key = $this->key();
  34. $tableId = $this->grid->tableId();
  35. $level = $this->grid->model()->getLevelFromRequest();
  36. $indents = str_repeat(' &nbsp; &nbsp; &nbsp; &nbsp; ', $level);
  37. return <<<EOT
  38. <a href="javascript:void(0)" class="{$tableId}-grid-load-children" data-level="{$level}" data-inserted="0" data-key="{$key}">
  39. {$indents}<i class="fa fa-angle-right"></i> &nbsp; {$this->value}
  40. </a>
  41. EOT;
  42. }
  43. protected function showNextPage()
  44. {
  45. $model = $this->grid->model();
  46. $showNextPage = $this->grid->allowPagination();
  47. if (! $model->showAllChildrenNodes() && $showNextPage) {
  48. $showNextPage =
  49. $model->getCurrentChildrenPage() < $model->paginator()->lastPage()
  50. && $model->buildData()->count() == $model->getPerPage();
  51. }
  52. return $showNextPage;
  53. }
  54. }