Browse Source

Merge remote-tracking branch 'origin/2.0' into 2.0

jiangqh 3 years ago
parent
commit
0ce3120ce2

+ 4 - 3
resources/views/helpers/scaffold.blade.php

@@ -302,8 +302,9 @@
             $fieldsBody = $('#table-fields tbody'),
             tpl = $('#table-field-tpl').html(),
             modelNamespace = 'App\\Models\\',
-            repositoryNamespace = '{{ $namespaceBase }}\\Repositories\\',
-            controllerNamespace = '{{ $namespaceBase }}\\Controllers\\',
+            namespaceBase = '{{ str_replace( '\\', '\\\\', $namespaceBase ) }}',
+            repositoryNamespace = namespaceBase + '\\Repositories\\',
+            controllerNamespace = namespaceBase + '\\Controllers\\',
             dataTypeMap = {!! json_encode($dataTypeMap) !!},
             helpers = Dcat.helpers;
 
@@ -535,4 +536,4 @@
             });
         }
     });
-</script>
+</script>

+ 3 - 0
src/Grid/Filter.php

@@ -13,6 +13,7 @@ use Dcat\Admin\Grid\Filter\Date;
 use Dcat\Admin\Grid\Filter\Day;
 use Dcat\Admin\Grid\Filter\EndWith;
 use Dcat\Admin\Grid\Filter\Equal;
+use Dcat\Admin\Grid\Filter\FindInSet;
 use Dcat\Admin\Grid\Filter\Group;
 use Dcat\Admin\Grid\Filter\Gt;
 use Dcat\Admin\Grid\Filter\Hidden;
@@ -66,6 +67,7 @@ use Illuminate\Support\Traits\Macroable;
  * @method Hidden hidden($name, $value)
  * @method Group group($column, $builder = null, $label = '')
  * @method Newline newline()
+ * @method FindInSet findInSet($column, $label = '')
  */
 class Filter implements Renderable
 {
@@ -107,6 +109,7 @@ class Filter implements Renderable
         'year'         => Year::class,
         'hidden'       => Hidden::class,
         'newline'      => Newline::class,
+        'findInSet'    => FindInSet::class,
     ];
 
     /**

+ 38 - 0
src/Grid/Filter/FindInSet.php

@@ -0,0 +1,38 @@
+<?php
+
+namespace Dcat\Admin\Grid\Filter;
+
+use Illuminate\Support\Arr;
+
+class FindInSet extends AbstractFilter
+{
+    /**
+     * Input value from presenter.
+     *
+     * @var mixed
+     */
+    public $input;
+
+    /**
+     * Get condition of this filter.
+     *
+     * @param  array  $inputs
+     * @return array|mixed|void
+     */
+    public function condition($inputs)
+    {
+        $value = Arr::get($inputs, $this->column);
+
+        if ($value === null) {
+            return;
+        }
+
+        $this->input = $this->value = $value;
+
+        $query = function ($query) {
+            $query->whereRaw("FIND_IN_SET(?, $this->column)", $this->value);
+        };
+
+        return $this->buildCondition($query->bindTo($this));
+    }
+}

+ 17 - 0
src/Show/Field.php

@@ -755,4 +755,21 @@ HTML;
     {
         return static::$extendedFields;
     }
+
+    /**
+     * set file size.
+     *
+     * @param  int  $dec
+     * @return Field
+     */
+    public function filesize($dec = 0)
+    {
+        return $this->unescape()->as(function ($value) use ($dec) {
+            if (empty($value)) {
+                return $this;
+            }
+
+            return format_byte($value, $dec);
+        });
+    }
 }

+ 22 - 0
src/Support/helpers.php

@@ -571,3 +571,25 @@ if (! function_exists('admin_redirect')) {
         return Helper::redirect($to, $statusCode, $request);
     }
 }
+
+if (! function_exists('format_byte')) {
+    /**
+     * 文件单位换算.
+     *
+     * @param $input
+     * @param  int  $dec
+     * @return string
+     */
+    function format_byte($input, $dec = 0)
+    {
+        $prefix_arr = ['B', 'KB', 'MB', 'GB', 'TB'];
+        $value = round($input, $dec);
+        $i = 0;
+        while ($value > 1024) {
+            $value /= 1024;
+            $i++;
+        }
+
+        return round($value, $dec).$prefix_arr[$i];
+    }
+}