Просмотр исходного кода

:hammer: 增加列显示或隐藏缓存功能

jqh 4 лет назад
Родитель
Сommit
7261b36052

+ 33 - 3
src/Grid/Concerns/CanHidesColumns.php

@@ -4,6 +4,7 @@ namespace Dcat\Admin\Grid\Concerns;
 
 use Dcat\Admin\Grid;
 use Dcat\Admin\Grid\Tools\ColumnSelector;
+use Dcat\Admin\Support\Helper;
 use Illuminate\Support\Collection;
 
 trait CanHidesColumns
@@ -94,12 +95,17 @@ trait CanHidesColumns
             return $this->visibleColumnsFromQuery;
         }
 
-        $columns = explode(',', request($this->getColumnSelectorQueryName()));
+        $columns = $input = Helper::array($this->request->get($this->getColumnSelectorQueryName()));
 
-        return $this->visibleColumnsFromQuery = array_filter($columns) ?:
-            array_values(array_diff(
+        if (! $input && ! $this->hasColumnSelectorRequestInput()) {
+            $columns = $this->getVisibleColumnsFromStorage() ?: array_values(array_diff(
                 $this->getComplexHeaderNames() ?: $this->columnNames, $this->hiddenColumns
             ));
+        }
+
+        $this->storeVisibleColumns($input);
+
+        return $this->visibleColumnsFromQuery = $columns;
     }
 
     protected function formatWithComplexHeaders(array $columns)
@@ -198,4 +204,28 @@ trait CanHidesColumns
             )
         );
     }
+
+    protected function hasColumnSelectorRequestInput()
+    {
+        return $this->request->has($this->getColumnSelectorQueryName());
+    }
+
+    protected function storeVisibleColumns(array $input)
+    {
+        if (! $this->hasColumnSelectorRequestInput()) {
+            return;
+        }
+
+        session()->put($this->getVisibleColumnsKey(), $input);
+    }
+
+    protected function getVisibleColumnsFromStorage()
+    {
+        return session()->get($this->getVisibleColumnsKey());
+    }
+
+    protected function getVisibleColumnsKey()
+    {
+        return $this->getName().'/'.$this->request->path();
+    }
 }

+ 0 - 2
src/Http/Controllers/RoleController.php

@@ -28,10 +28,8 @@ class RoleController extends AdminController
             $grid->column('created_at');
             $grid->column('updated_at')->sortable();
 
-            $grid->disableBatchDelete();
             $grid->disableEditButton();
             $grid->showQuickEditButton();
-            $grid->disableFilterButton();
             $grid->quickSearch(['id', 'name', 'slug']);
             $grid->enableDialogCreate();
 

+ 0 - 1
src/Http/Controllers/UserController.php

@@ -55,7 +55,6 @@ class UserController extends AdminController
 
             $grid->quickSearch(['id', 'name', 'username']);
 
-            $grid->disableBatchDelete();
             $grid->showQuickEditButton();
             $grid->disableFilterButton();
             $grid->enableDialogCreate();