From 529e0ecd3b3cf3e5ddd24f07b23bc01ee4737f3a Mon Sep 17 00:00:00 2001 From: prashant-webkul Date: Fri, 7 Dec 2018 18:54:58 +0530 Subject: [PATCH] date operations in datagrid implemented in order grid filters --- .../Admin/src/DataGrids/OrderDataGrid.php | 2 +- packages/Webkul/Ui/src/DataGrid/DataGrid.php | 40 +++++++++++++++---- .../src/Resources/assets/sass/components.scss | 4 +- .../views/datagrid/filters.blade.php | 4 +- 4 files changed, 37 insertions(+), 13 deletions(-) diff --git a/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php index bf66bd20b..8f07c0f75 100644 --- a/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php @@ -131,7 +131,7 @@ class OrderDataGrid ], [ 'column' => 'or.created_at', 'alias' => 'createdat', - 'type' => 'string', + 'type' => 'datetime', 'label' => 'Order Date', ], ], diff --git a/packages/Webkul/Ui/src/DataGrid/DataGrid.php b/packages/Webkul/Ui/src/DataGrid/DataGrid.php index 53ba56939..e47e1e551 100644 --- a/packages/Webkul/Ui/src/DataGrid/DataGrid.php +++ b/packages/Webkul/Ui/src/DataGrid/DataGrid.php @@ -481,6 +481,21 @@ class DataGrid } } + /** + * To find the alias + * of the column and + * by taking the column + * name. + * @return string + */ + public function findType($column_alias) { + foreach($this->columns as $column) { + if($column->alias == $column_alias) { + return $column->type; + } + } + } + /** * Parse the URL * and get it ready @@ -546,7 +561,6 @@ class DataGrid * * @return QueryBuilder object */ - private function getQueryWithFilters() { $parsed = $this->parse(); @@ -560,7 +574,7 @@ class DataGrid //case that don't need any resolving $count_keys = count(array_keys($value)); - if ($count_keys==1) { + if ($count_keys == 1) { $this->query->orderBy( str_replace('_', '.', array_keys($value)[0]), array_values($value)[0] @@ -568,7 +582,7 @@ class DataGrid } else { throw new \Exception('Multiple Sort keys Found, Please Resolve the URL Manually'); } - } elseif ($key=="search") { + } elseif ($key == "search") { $count_keys = count(array_keys($value)); if($count_keys==1) @@ -631,6 +645,8 @@ class DataGrid } else { // $column_name = $key; $column_name = $this->findAlias($key); + $column_type = $this->findType($key); + if (array_keys($value)[0]=="like" || array_keys($value)[0]=="nlike") { foreach ($value as $condition => $filter_value) { $this->query->where( @@ -641,11 +657,19 @@ class DataGrid } } else { foreach ($value as $condition => $filter_value) { - $this->query->where( - $column_name, - $this->operators[$condition], - $filter_value - ); + if($column_type == 'datetime') { + $this->query->whereDate( + $column_name, + $this->operators[$condition], + $filter_value + ); + } else { + $this->query->where( + $column_name, + $this->operators[$condition], + $filter_value + ); + } } } } diff --git a/packages/Webkul/Ui/src/Resources/assets/sass/components.scss b/packages/Webkul/Ui/src/Resources/assets/sass/components.scss index 90dc1aa9a..0e8d05174 100644 --- a/packages/Webkul/Ui/src/Resources/assets/sass/components.scss +++ b/packages/Webkul/Ui/src/Resources/assets/sass/components.scss @@ -106,7 +106,7 @@ border: 2px solid $control-border-color; border-radius: 3px; height: 36px; - max-width: 100%; + width: 100%; display: inline-block; vertical-align: middle; -webkit-transition: 0.2s @@ -124,7 +124,7 @@ border: 2px solid #c7c7c7; border-radius: 3px; height: 36px; - max-width: 100%; + width: 100%; display: inline-block; vertical-align: middle; -webkit-transition: 0.2s diff --git a/packages/Webkul/Ui/src/Resources/views/datagrid/filters.blade.php b/packages/Webkul/Ui/src/Resources/views/datagrid/filters.blade.php index db00c9e43..1fae47ebb 100644 --- a/packages/Webkul/Ui/src/Resources/views/datagrid/filters.blade.php +++ b/packages/Webkul/Ui/src/Resources/views/datagrid/filters.blade.php @@ -94,8 +94,8 @@