diff --git a/config/datagrid.php b/config/datagrid.php index c9b1ddc6c..d47cd7540 100644 --- a/config/datagrid.php +++ b/config/datagrid.php @@ -13,8 +13,9 @@ return [ * * Accepted Values = Array */ 'order' => [ - 'column' => 'id', - 'direction' => 'desc' + 'default' => 'descending', + 'descending' => 'desc', + 'ascending' => 'asc' ], /** @@ -84,6 +85,6 @@ return [ 7 => "orders", 8 => "limit", 9 => "offset", - 10 => "lock", + 10 => "lock" ] ]; \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/AttributeDataGrid.php b/packages/Webkul/Admin/src/DataGrids/AttributeDataGrid.php index 51d1238c8..287197ecf 100755 --- a/packages/Webkul/Admin/src/DataGrids/AttributeDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/AttributeDataGrid.php @@ -15,6 +15,10 @@ class AttributeDataGrid extends DataGrid { public $allColumns = []; + public function __construct() { + $this->itemsPerPage = 5; + } + public function prepareQueryBuilder() { $queryBuilder = DB::table('attributes')->select('id')->addSelect('id', 'code', 'admin_name', 'type', 'is_required', 'is_unique', 'value_per_locale', 'value_per_channel'); @@ -22,7 +26,8 @@ class AttributeDataGrid extends DataGrid $this->setQueryBuilder($queryBuilder); } - public function setIndex() { + public function setIndex() + { $this->index = 'id'; //the column that needs to be treated as index column } diff --git a/packages/Webkul/Ui/src/DataGrid/DataGrid.php b/packages/Webkul/Ui/src/DataGrid/DataGrid.php index feaeab4e5..1145f6821 100644 --- a/packages/Webkul/Ui/src/DataGrid/DataGrid.php +++ b/packages/Webkul/Ui/src/DataGrid/DataGrid.php @@ -3,6 +3,7 @@ namespace Webkul\Ui\DataGrid; use Illuminate\Http\Request; + /** * Product Data Grid class * @@ -21,7 +22,7 @@ abstract class DataGrid protected $request; protected $parse; protected $enableMassAction = false; - // protected $gridName = null; + protected $itemsPerPage = 0; abstract public function prepareMassActions(); abstract public function prepareActions(); @@ -32,19 +33,19 @@ abstract class DataGrid /** * Parse the URL and get it ready to be used. */ - private function parse() + private function parseUrl() { - $parsed = []; + $parsedUrl = []; $unparsed = url()->full(); if (count(explode('?', $unparsed)) > 1) { $to_be_parsed = explode('?', $unparsed)[1]; - parse_str($to_be_parsed, $parsed); - unset($parsed['page']); + parse_str($to_be_parsed, $parsedUrl); + unset($parsedUrl['page']); } - return $parsed; + return $parsedUrl; } public function addColumn($column) @@ -72,35 +73,31 @@ abstract class DataGrid public function addMassAction($massAction) { array_push($this->massActions, $massAction); + + $this->enableMassAction = true; } public function getCollection() { - $p = $this->parse(); + $parsedUrl = $this->parseUrl(); - if(count($p)) { - $filteredOrSortedCollection = $this->sortOrFilterCollection($this->collection = $this->queryBuilder, $p); + if(count($parsedUrl)) { + $filteredOrSortedCollection = $this->sortOrFilterCollection($this->collection = $this->queryBuilder, $parsedUrl); - // return $filteredOrSortedCollection->get(); - - if (config()->has('datagrid.pagination')) { - return $filteredOrSortedCollection->paginate(config('datagrid.pagination')); + if($this->itemsPerPage > 0) { + return $filteredOrSortedCollection->paginate($this->itemsPerPage); } else { return $filteredOrSortedCollection->get(); } } - if (config()->has('datagrid.pagination')) { - $this->collection = $this->queryBuilder->paginate(config('datagrid.pagination')); + if ($this->itemsPerPage > 0) { + $this->collection = $this->queryBuilder->paginate($this->itemsPerPage); } else { $this->collection = $this->queryBuilder->get(); } - if ($this->collection) { - return $this->collection; - } else { - dd('no records found'); - } + return $this->collection; } /** @@ -108,7 +105,8 @@ abstract class DataGrid * * @return string */ - public function findColumnType($columnAlias) { + public function findColumnType($columnAlias) + { foreach($this->allColumns as $column) { if($column['alias'] == $columnAlias) { return [$column['type'], $column['index']]; @@ -116,8 +114,8 @@ abstract class DataGrid } } - public function sortOrFilterCollection($collection, $parseInfo) { - + public function sortOrFilterCollection($collection, $parseInfo) + { foreach($parseInfo as $key => $info) { $columnType = $this->findColumnType($key)[0]; $columnName = $this->findColumnType($key)[1]; @@ -192,6 +190,6 @@ abstract class DataGrid $this->prepareQueryBuilder(); - return view('ui::datagrid.table')->with('results', ['records' => $this->getCollection(), 'columns' => $this->allColumns, 'actions' => $this->actions, 'massactions' => $this->massActions, 'index' => $this->index]); + return view('ui::datagrid.table')->with('results', ['records' => $this->getCollection(), 'columns' => $this->allColumns, 'actions' => $this->actions, 'massactions' => $this->massActions, 'index' => $this->index, 'enableMassActions' => $this->enableMassAction, 'norecords' => trans('ui::datagrid.no-records')]); } } \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/lang/en/app.php b/packages/Webkul/Ui/src/Resources/lang/en/app.php index a0c6a07fc..bbd4c7b89 100755 --- a/packages/Webkul/Ui/src/Resources/lang/en/app.php +++ b/packages/Webkul/Ui/src/Resources/lang/en/app.php @@ -2,12 +2,14 @@ return [ 'datagrid' => [ 'actions' => 'Actions', + 'massaction' => [ 'mass-delete-confirm' => 'Do you really want to delete these selected :resource?', 'mass-update-status' => 'Do you really want to update status of these selected :resource?', 'delete' => 'Do you really want to delete this :resource?', 'edit' => 'Do you really want to edit this :resource?', ], + 'no-records' => 'No Records Found', 'filter-fields-missing' => 'Some of the required field is null, please check column, condition and value properly' ] diff --git a/packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php b/packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php index c21495022..7c20ee2be 100644 --- a/packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php +++ b/packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php @@ -1,29 +1,31 @@ @foreach($records as $key => $record) - - - + @if($enableMassAction) + + + - - - + + + + @endif @foreach($columns as $column) @php - $tableIndex = explode('.', $column['index']); + $columnIndex = explode('.', $column['index']); - $tableIndex = end($tableIndex); + $columnIndex = end($columnIndex); @endphp @if(isset($column['wrapper'])) @if(isset($column['closure']) && $column['closure'] == true) - {!! $column['wrapper']($record->{$tableIndex}) !!} + {!! $column['wrapper']($record->{$columnIndex}) !!} @else - {{ $column['wrapper']($record->{$tableIndex}) }} + {{ $column['wrapper']($record->{$columnIndex}) }} @endif @else - {{ $record->{$tableIndex} }} + {{ $record->{$columnIndex} }} @endif @endforeach diff --git a/packages/Webkul/Ui/src/Resources/views/datagrid/table.blade.php b/packages/Webkul/Ui/src/Resources/views/datagrid/table.blade.php index 987904c93..07f7c2e1d 100644 --- a/packages/Webkul/Ui/src/Resources/views/datagrid/table.blade.php +++ b/packages/Webkul/Ui/src/Resources/views/datagrid/table.blade.php @@ -2,7 +2,7 @@ @if(config('datagrid.pagination')) - @include('ui::testgrid.pagination', ['results' => $results['records']]) + @include('ui::datagrid.pagination', ['results' => $results['records']]) @endif @push('scripts') @@ -185,13 +185,15 @@ - - - + @if($results['enableMassActions']) + + + - - - + + + + @endif @foreach($results['columns'] as $key => $column) @@ -205,7 +207,7 @@ - @include('ui::datagrid.body', ['records' => $results['records'], 'actions' => $results['actions'], 'index' => $results['index'], 'columns' => $results['columns']]) + @include('ui::datagrid.body', ['records' => $results['records'], 'actions' => $results['actions'], 'index' => $results['index'], 'columns' => $results['columns'],'enableMassAction' => $results['enableMassActions']])