From d68e14f12e16c43452c7ebd356c8d800e93141ba Mon Sep 17 00:00:00 2001 From: Prashant Singh Date: Tue, 8 Jan 2019 13:00:20 +0530 Subject: [PATCH] datagrid refactoring completed to 80% --- packages/Webkul/Ui/src/DataGrid/AbsGrid.php | 38 ++-- .../Resources/views/datagrid/index.blade.php | 1 + .../Resources/views/testgrid/table.blade.php | 167 ++++++++++-------- 3 files changed, 116 insertions(+), 90 deletions(-) diff --git a/packages/Webkul/Ui/src/DataGrid/AbsGrid.php b/packages/Webkul/Ui/src/DataGrid/AbsGrid.php index e0c30c9cd..991b483b3 100644 --- a/packages/Webkul/Ui/src/DataGrid/AbsGrid.php +++ b/packages/Webkul/Ui/src/DataGrid/AbsGrid.php @@ -91,9 +91,23 @@ abstract class AbsGrid } } + /** + * To find the alias of the column and by taking the column name. + * + * @return string + */ + public function findColumnType($columnAlias) { + foreach($this->allColumns as $column) { + if($column['alias'] == $columnAlias) { + return [$column['type'], $column['column']]; + } + } + } + public function sortOrFilterCollection($collection, $parseInfo) { foreach($parseInfo as $key => $info) { - // dd($key); + $columnType = $this->findColumnType($key)[0]; + $columnName = $this->findColumnType($key)[1]; if($key == "sort") { //case that don't need any resolving @@ -117,28 +131,26 @@ abstract class AbsGrid throw new \Exception('Multiple Search keys Found, Please Resolve the URL Manually'); } } else { - $column_name = $this->findColumnAlias($key); - - if (array_keys($value)[0] == "like" || array_keys($value)[0] == "nlike") { - foreach ($value as $condition => $filter_value) { + if (array_keys($info)[0] == "like" || array_keys($info)[0] == "nlike") { + foreach ($info as $condition => $filter_value) { $collection->where( - $column_name, - $this->operators[$condition], + $columnName, + config("datagrid.operators.{$condition}"), '%'.$filter_value.'%' ); } } else { - foreach ($value as $condition => $filter_value) { - if($column_type == 'datetime') { + foreach ($info as $condition => $filter_value) { + if($columnType == 'datetime') { $collection->whereDate( - $column_name, - $this->operators[$condition], + $columnName, + config("datagrid.operators.{$condition}"), $filter_value ); } else { $collection->where( - $column_name, - $this->operators[$condition], + $columnName, + config("datagrid.operators.{$condition}"), $filter_value ); } diff --git a/packages/Webkul/Ui/src/Resources/views/datagrid/index.blade.php b/packages/Webkul/Ui/src/Resources/views/datagrid/index.blade.php index d02197093..9fc92fb6c 100644 --- a/packages/Webkul/Ui/src/Resources/views/datagrid/index.blade.php +++ b/packages/Webkul/Ui/src/Resources/views/datagrid/index.blade.php @@ -162,6 +162,7 @@ //remove the filter and from clicking on cross icon on tag $('.remove-filter').on('click', function() { var id = $(this).parents('.filter-one').attr('id'); + if(allFilters.length == 1) { allFilters.pop(); var uri = window.location.href.toString(); diff --git a/packages/Webkul/Ui/src/Resources/views/testgrid/table.blade.php b/packages/Webkul/Ui/src/Resources/views/testgrid/table.blade.php index 185867459..6f7fa41ec 100644 --- a/packages/Webkul/Ui/src/Resources/views/testgrid/table.blade.php +++ b/packages/Webkul/Ui/src/Resources/views/testgrid/table.blade.php @@ -32,7 +32,7 @@