Browse Source

增加异步表格配置是否启用简化模式功能

jqh 4 years ago
parent
commit
fa31224843

+ 13 - 0
resources/assets/dcat/extra/grid-extend.js

@@ -307,6 +307,9 @@
                 return;
             }
 
+            // 缓存当前请求地址
+            box.attr('data-current', url);
+
             box.loading({background: 'transparent!important'});
 
             Dcat.helpers.asyncRender(url, function (html) {
@@ -334,6 +337,16 @@
             });
 
             box.find('.filter-box .reset').on('click', loadLink);
+
+            Dcat.ready(function () {
+                setTimeout(function () {
+                    box.find('.grid-refresh').off('click').on('click', function () {
+                        load(box.data('current'), box);
+
+                        return false;
+                    })
+                }, 10)
+            })
         }
 
         $(options.container).on('table:load', load);

File diff suppressed because it is too large
+ 0 - 0
resources/dist/dcat/extra/grid-extend.js


File diff suppressed because it is too large
+ 0 - 0
resources/dist/dcat/extra/grid-extend.js.map


+ 1 - 0
src/Controllers/RenderableController.php

@@ -19,6 +19,7 @@ class RenderableController
         $renderable = $this->newRenderable($request);
 
         $renderable::collectAssets();
+
         $this->addScript();
 
         $this->forgetDefaultAssets();

+ 58 - 9
src/Grid/LazyRenderable.php

@@ -7,34 +7,83 @@ use Dcat\Admin\Support\LazyRenderable as Renderable;
 
 abstract class LazyRenderable extends Renderable
 {
+    /**
+     * 是否启用简化模式.
+     *
+     * @var bool
+     */
+    protected $simple = false;
+
+    /**
+     * 创建表格.
+     *
+     * @return Grid
+     */
     abstract public function grid(): Grid;
 
+    /**
+     * {@inheritDoc}
+     */
     public function render()
     {
         return $this->prepare($this->grid())->render();
     }
 
+    /**
+     * 是否启用简化模式.
+     *
+     * @param bool $value
+     *
+     * @return $this
+     */
+    public function simple(bool $value = true)
+    {
+        return $this->with('_simple_', $value);
+    }
+
+    /**
+     * @param Grid $grid
+     *
+     * @return Grid
+     */
     protected function prepare(Grid $grid)
     {
         if (! $grid->getName()) {
             $grid->setName($this->getDefaultName());
         }
 
-        $grid->disableCreateButton();
-        $grid->disableActions();
-        $grid->disablePerPages();
-        $grid->disableBatchActions();
-        $grid->disableRefreshButton();
+        if ($this->allowSimpleMode()) {
+            $grid->disableCreateButton();
+            $grid->disableActions();
+            $grid->disablePerPages();
+            $grid->disableBatchActions();
+            $grid->disableRefreshButton();
 
-        $grid->filter()
-            ->panel()
-            ->view('admin::filter.tile-container');
+            $grid->filter()
+                ->panel()
+                ->view('admin::filter.tile-container');
 
-        $grid->rowSelector()->click();
+            $grid->rowSelector()->click();
+        }
 
         return $grid;
     }
 
+    /**
+     * 判断是否启用简化模式.
+     *
+     * @return bool
+     */
+    public function allowSimpleMode()
+    {
+        return $this->simple || $this->_simple_;
+    }
+
+    /**
+     * 获取默认名称.
+     *
+     * @return string
+     */
     protected function getDefaultName()
     {
         return strtolower(str_replace('\\', '-', static::class));

+ 41 - 2
src/Widgets/AsyncTable.php

@@ -14,15 +14,32 @@ class AsyncTable extends Widget
         '@grid-extension',
     ];
 
+    /**
+     * 设置是否自动加载.
+     *
+     * @var bool
+     */
     protected $load = true;
 
-    public function __construct(LazyRenderable $renderable = null, bool $load = true)
+    /**
+     * 设置是否启用表格简化模式.
+     *
+     * @var bool
+     */
+    protected $simple;
+
+    /**
+     * AsyncTable constructor.
+     *
+     * @param LazyRenderable $renderable
+     * @param bool $load
+     */
+    public function __construct(LazyRenderable $renderable, bool $load = true)
     {
         $this->setRenderable($renderable);
         $this->load($load);
 
         $this->id('table-card-'.Str::random(8));
-        $this->class('table-card');
     }
 
     /**
@@ -39,6 +56,24 @@ class AsyncTable extends Widget
         return $this;
     }
 
+    /**
+     * 设置是否启用表格简化模式.
+     *
+     * @param bool $value
+     *
+     * @return $this
+     */
+    public function simple(bool $value = true)
+    {
+        $this->simple = $value;
+
+        if ($value) {
+            $this->class('table-card', true);
+        }
+
+        return $this;
+    }
+
     /**
      * 监听异步渲染完成事件.
      *
@@ -84,6 +119,10 @@ JS;
 
     public function render()
     {
+        if ($this->simple !== null) {
+            $this->renderable->simple();
+        }
+
         $this->addScript();
 
         return parent::render();

+ 1 - 1
src/Widgets/TableModal.php

@@ -84,7 +84,7 @@ class TableModal extends Widget
             return $this;
         }
 
-        $this->table = AsyncTable::make($renderable, false);
+        $this->table = AsyncTable::make($renderable, false)->simple();
 
         $this->modal->body($this->table);
 

Some files were not shown because too many files changed in this diff