refs search filter files..
This commit is contained in:
		| @@ -30,12 +30,13 @@ class SearchString extends Component | ||||
|     { | ||||
|         $searc_string = config('search-string'); | ||||
|  | ||||
|         $this->filters = false; | ||||
|         $this->filters = []; | ||||
|  | ||||
|         if (!empty($searc_string[$this->model])) { | ||||
|             $columns = $searc_string[$this->model]['columns']; | ||||
|  | ||||
|             foreach ($columns as $column => $options) { | ||||
|                 // This column skip for filter | ||||
|                 if (!empty($options['searchable'])) { | ||||
|                     continue; | ||||
|                 } | ||||
| @@ -43,13 +44,13 @@ class SearchString extends Component | ||||
|                 if (!is_array($options)) { | ||||
|                     $column = $options; | ||||
|                 } | ||||
|  | ||||
|                 $name = $this->getFilterName($column); | ||||
|      | ||||
|                 $this->filters[] = [ | ||||
|                     'key' => $column, | ||||
|                     'value' => $name, | ||||
|                     'url' => !empty($options['route']) ? route($options['route'][0], $options['route'][1]) : '' | ||||
|                     'key' => $this->getFilterKey($column, $options), | ||||
|                     'value' => $this->getFilterName($column), | ||||
|                     'type' => $this->getFilterType($options), | ||||
|                     'url' => $this->getFilterUrl($column, $options), | ||||
|                     'values' => $this->getFilterValues($options), | ||||
|                 ]; | ||||
|             } | ||||
|         } | ||||
| @@ -57,6 +58,15 @@ class SearchString extends Component | ||||
|         return view('components.search-string'); | ||||
|     } | ||||
|  | ||||
|     protected function getFilterKey($column, $options) | ||||
|     { | ||||
|         if (isset($options['relationship'])) { | ||||
|             $column .= '.id'; | ||||
|         } | ||||
|  | ||||
|         return $column; | ||||
|     } | ||||
|  | ||||
|     protected function getFilterName($column) | ||||
|     { | ||||
|         if (strpos($column, '_id') !== false) { | ||||
| @@ -79,4 +89,68 @@ class SearchString extends Component | ||||
|  | ||||
|         return $name; | ||||
|     } | ||||
|  | ||||
|     protected function getFilterType($options)  | ||||
|     { | ||||
|         $type = 'select'; | ||||
|  | ||||
|         if (isset($options['boolean'])) { | ||||
|             $type = 'boolean'; | ||||
|         } | ||||
|  | ||||
|         return $type; | ||||
|     } | ||||
|  | ||||
|     protected function getFilterUrl($column, $options)  | ||||
|     { | ||||
|         $url = ''; | ||||
|  | ||||
|         if (isset($options['boolean'])) { | ||||
|             return $url; | ||||
|         } | ||||
|  | ||||
|         if (!empty($options['route'])) { | ||||
|             if (is_array($options['route'])) { | ||||
|                 $url = route($options['route'][0], $options['route'][1]); | ||||
|             } else { | ||||
|                 $url = route($options['route']); | ||||
|             } | ||||
|         } else { | ||||
|             if (strpos($this->model, 'Modules') !== false) { | ||||
|                 $module_class = explode('\\', $this->model); | ||||
|  | ||||
|                 $url .= Str::slug($module_class[1], '-') . '::'; | ||||
|             } | ||||
|              | ||||
|             if (strpos($column, '_id') !== false) { | ||||
|                 $column = str_replace('_id', '', $column); | ||||
|             } | ||||
|      | ||||
|             $plural = Str::plural($column, 2); | ||||
|  | ||||
|             $url = route($url . $plural . '.index'); | ||||
|         } | ||||
|  | ||||
|         return $url; | ||||
|     } | ||||
|  | ||||
|     protected function getFilterValues($options)  | ||||
|     { | ||||
|         $values = []; | ||||
|  | ||||
|         if (isset($options['boolean'])) { | ||||
|             $values = [ | ||||
|                 [ | ||||
|                     'key' => 0, | ||||
|                     'value' => trans('general.no'), | ||||
|                 ], | ||||
|                 [ | ||||
|                     'key' => 1, | ||||
|                     'value' => trans('general.yes'), | ||||
|                 ], | ||||
|             ]; | ||||
|         } | ||||
|  | ||||
|         return $values; | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user