Browse Source

Grid::action方法调整

jqh 5 years ago
parent
commit
e457f908de

+ 4 - 4
src/Actions/ActionHandler.php

@@ -75,7 +75,7 @@ trait ActionHandler
         $parameters = json_encode($this->parameters());
 
         $resolveScript = <<<JS
-target.data('working', 1);
+target.attr('working', 1);
 Object.assign(data, {$parameters});
 {$this->buildActionPromise()}
 {$this->handleActionPromise()}
@@ -85,7 +85,7 @@ JS;
 $('{$this->selector($this->selectorPrefix)}').off('{$this->event}').on('{$this->event}', function() {
     var data = $(this).data(),
         target = $(this);
-    if (target.data('working')) {
+    if (target.attr('working') > 0) {
         return;
     }
     {$this->actionScript()}
@@ -139,12 +139,12 @@ var process = new Promise(function (resolve,reject) {
         url: '{$this->getHandleRoute()}',
         data: data,
         success: function (data) {
-            target.data('working', 0);
+            target.attr('working', 0);
             LA.NP.done();
             resolve([data, target]);
         },
         error:function(request){
-            target.data('working', 0);
+            target.attr('working', 0);
             LA.NP.done();
             reject([request, target]);
         }

+ 5 - 6
src/Controllers/LogController.php

@@ -33,12 +33,6 @@ class LogController extends Controller
     {
         $grid = new Grid(new OperationLog());
 
-        $grid->disableCreateButton();
-        $grid->disableQuickEditButton();
-        $grid->disableQuickCreateButton();
-
-        $grid->model()->with('user')->orderBy('id', 'DESC');
-
         $grid->id('ID')->bold()->sortable();
         $grid->user(trans('admin.user'))->get('name')->responsive();
         $grid->method(trans('admin.method'))->responsive()->display(function ($method) {
@@ -62,6 +56,11 @@ class LogController extends Controller
 
         $grid->created_at(trans('admin.created_at'))->responsive();
 
+        $grid->model()->with('user')->orderBy('id', 'DESC');
+
+        $grid->disableCreateButton();
+        $grid->disableQuickEditButton();
+        $grid->disableQuickCreateButton();
         $grid->disableEditButton();
         $grid->disableViewButton();
 

+ 18 - 3
src/Grid/Concerns/HasActions.php

@@ -4,6 +4,7 @@ namespace Dcat\Admin\Grid\Concerns;
 
 use Closure;
 use Dcat\Admin\Grid;
+use Illuminate\Contracts\Support\Renderable;
 
 trait HasActions
 {
@@ -54,14 +55,28 @@ trait HasActions
     }
 
     /**
-     * Set grid action callback.
+     * Set grid action callback or add actions.
      *
-     * @param Closure $callback
+     * @param Closure|array|string|Renderable|Grid\RowAction $callback
      *
      * @return $this
      */
-    public function actions(Closure $callback)
+    public function actions($callback)
     {
+        if (! $callback instanceof Closure) {
+            $action = $callback;
+
+            $callback = function (Grid\Displayers\Actions $actions) use (&$action) {
+                if (! is_array($action)) {
+                    $action = [$action];
+                }
+
+                foreach ($action as $v) {
+                    $actions->append($v);
+                }
+            };
+        }
+
         $this->actionsCallback[] = $callback;
 
         return $this;

+ 5 - 2
src/Grid/Displayers/Actions.php

@@ -2,9 +2,12 @@
 
 namespace Dcat\Admin\Grid\Displayers;
 
+use Dcat\Admin\Actions\Action;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid\RowAction;
 use Dcat\Admin\Support\Helper;
+use Illuminate\Contracts\Support\Htmlable;
+use Illuminate\Contracts\Support\Renderable;
 
 class Actions extends AbstractDisplayer
 {
@@ -35,7 +38,7 @@ class Actions extends AbstractDisplayer
     /**
      * Append a action.
      *
-     * @param $action
+     * @param string|Renderable|Action|Htmlable $action
      *
      * @return $this
      */
@@ -53,7 +56,7 @@ class Actions extends AbstractDisplayer
     /**
      * Prepend a action.
      *
-     * @param $action
+     * @param string|Renderable|Action|Htmlable $action
      *
      * @return $this
      */