Orderable.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace Dcat\Admin\Grid\Displayers;
  3. use Dcat\Admin\Admin;
  4. use Dcat\Admin\Grid;
  5. use Dcat\Admin\Grid\Column;
  6. class Orderable extends AbstractDisplayer
  7. {
  8. public function __construct($value, Grid $grid, Column $column, $row)
  9. {
  10. parent::__construct($value, $grid, $column, $row);
  11. if (! trait_exists('\Spatie\EloquentSortable\SortableTrait')) {
  12. throw new \Exception('To use orderable grid, please install package [spatie/eloquent-sortable] first.');
  13. }
  14. }
  15. public function display()
  16. {
  17. Admin::script($this->script());
  18. return <<<EOT
  19. <div class="">
  20. <a href="javascript:void(0)" class=" font-14 {$this->grid->getGridRowName()}-orderable" data-id="{$this->getKey()}" data-direction="1">
  21. <i class="fa fa-hand-o-up fa-fw"></i>
  22. </a>
  23. <a href="javascript:void(0)" class=" font-14 {$this->grid->getGridRowName()}-orderable" data-id="{$this->getKey()}" data-direction="0">
  24. <i class="fa fa-hand-o-down fa-fw"></i>
  25. </a>
  26. </div>
  27. EOT;
  28. }
  29. protected function script()
  30. {
  31. return <<<JS
  32. $('.{$this->grid->getGridRowName()}-orderable').on('click', function() {
  33. var key = $(this).data('id');
  34. var direction = $(this).data('direction');
  35. $.post('{$this->getResource()}/' + key, {_method:'PUT', _token:LA.token, _orderable:direction}, function(data){
  36. if (data.status) {
  37. LA.reload();
  38. LA.success(data.message);
  39. }
  40. });
  41. });
  42. JS;
  43. }
  44. }