show filtered channels, locales and customer groups by name
This commit is contained in:
parent
c4ecf0b29b
commit
8dec3cdd14
|
|
@ -16,7 +16,7 @@
|
|||
"cross-env": "^5.1",
|
||||
"jquery": "^3.2",
|
||||
"laravel-mix": "^5.0.1",
|
||||
"lodash": "^4.17.4",
|
||||
"lodash": "^4.17.19",
|
||||
"popper.js": "^1.12",
|
||||
"resolve-url-loader": "^3.1.0",
|
||||
"sass": "^1.24.5",
|
||||
|
|
|
|||
|
|
@ -15,6 +15,12 @@ class CartRuleDataGrid extends DataGrid
|
|||
|
||||
protected $channel = 'all';
|
||||
|
||||
/** @var string[] contains the keys for which extra filters to show */
|
||||
protected $extraFilters = [
|
||||
'channels',
|
||||
'customer_groups',
|
||||
];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
|
|
|||
|
|
@ -17,6 +17,12 @@ class ProductDataGrid extends DataGrid
|
|||
|
||||
protected $channel = 'all';
|
||||
|
||||
/** @var string[] contains the keys for which extra filters to render */
|
||||
protected $extraFilters = [
|
||||
'channels',
|
||||
'locales',
|
||||
];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
|
@ -44,15 +50,11 @@ class ProductDataGrid extends DataGrid
|
|||
);
|
||||
|
||||
if ($this->locale !== 'all') {
|
||||
$queryBuilder->where('locale', $this->locale);
|
||||
$queryBuilder->where('product_flat.locale', $this->locale);
|
||||
}
|
||||
|
||||
if ($this->channel !== 'all') {
|
||||
$queryBuilder->where('channel', $this->channel);
|
||||
}
|
||||
|
||||
if ($currentLocale = app()->getLocale()) {
|
||||
$queryBuilder->where('product_flat.locale', $currentLocale);
|
||||
$queryBuilder->where('product_flat.channel', $this->channel);
|
||||
}
|
||||
|
||||
$queryBuilder->groupBy('product_flat.product_id');
|
||||
|
|
|
|||
|
|
@ -15,6 +15,12 @@ class SliderDataGrid extends DataGrid
|
|||
|
||||
protected $channel = 'all';
|
||||
|
||||
/** @var string[] contains the keys for which extra filters to render */
|
||||
protected $extraFilters = [
|
||||
'channels',
|
||||
'locales',
|
||||
];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
|
|
|||
|
|
@ -11,39 +11,6 @@
|
|||
<div class="page-header">
|
||||
<div class="page-title">
|
||||
<h1>{{ __('admin::app.catalog.products.title') }}</h1>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="channel-switcher" name="channel" onchange="reloadPage('channel', this.value)" >
|
||||
<option value="all" {{ ! isset($channel) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-channels') }}
|
||||
</option>
|
||||
|
||||
@foreach (core()->getAllChannels() as $channelModel)
|
||||
<option
|
||||
value="{{ $channelModel->code }}" {{ (isset($channel) && ($channelModel->code) == $channel) ? 'selected' : '' }}>
|
||||
{{ $channelModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="locale-switcher" name="locale" onchange="reloadPage('locale', this.value)" >
|
||||
<option value="all" {{ ! isset($locale) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-locales') }}
|
||||
</option>
|
||||
|
||||
@foreach (core()->getAllLocales() as $localeModel)
|
||||
|
||||
<option
|
||||
value="{{ $localeModel->code }}" {{ (isset($locale) && ($localeModel->code) == $locale) ? 'selected' : '' }}>
|
||||
{{ $localeModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="page-action">
|
||||
|
|
|
|||
|
|
@ -14,38 +14,6 @@
|
|||
</div>
|
||||
|
||||
<div class="page-action">
|
||||
<div class="control-group">
|
||||
<select class="control" id="channel-switcher" name="channel" onchange="reloadPage('channel', this.value)" >
|
||||
<option value="all" {{ ! isset($channel) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-channels') }}
|
||||
</option>
|
||||
|
||||
@foreach (core()->getAllChannels() as $channelModel)
|
||||
<option
|
||||
value="{{ $channelModel->id }}" {{ (isset($channel) && ($channelModel->id) == $channel) ? 'selected' : '' }}>
|
||||
{{ $channelModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="customer-group-switcher" name="customer_group" onchange="reloadPage('customer_group', this.value)" >
|
||||
<option value="all" {{ ! isset($locale) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-customer-groups') }}
|
||||
</option>
|
||||
|
||||
@foreach (core()->getAllCustomerGroups() as $customerGroupModel)
|
||||
<option
|
||||
value="{{ $customerGroupModel->id }}" {{ (isset($customerGroupModel) && ($customerGroupModel->id) == $customer_group) ? 'selected' : '' }}>
|
||||
{{ $customerGroupModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<a href="{{ route('admin.cart-rules.create') }}" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.promotions.cart-rules.add-title') }}
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -14,41 +14,6 @@
|
|||
<div class="page-header">
|
||||
<div class="page-title">
|
||||
<h1>{{ __('admin::app.settings.sliders.title') }}</h1>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="channel-switcher" name="channel" onchange="reloadPage('channel', this.value)" >
|
||||
<option value="all" {{ ! isset($channel) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-channels') }}
|
||||
</option>
|
||||
|
||||
@foreach (core()->getAllChannels() as $channelModel)
|
||||
|
||||
<option
|
||||
value="{{ $channelModel->code }}" {{ (isset($channel) && ($channelModel->code) == $channel) ? 'selected' : '' }}>
|
||||
{{ $channelModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="locale-switcher" name="locale" onchange="reloadPage('locale', this.value)" >
|
||||
<option value="all" {{ ! isset($locale) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-locales') }}
|
||||
</option>
|
||||
|
||||
@foreach (core()->getAllLocales() as $localeModel)
|
||||
|
||||
<option
|
||||
value="{{ $localeModel->code }}" {{ (isset($locale) && ($localeModel->code) == $locale) ? 'selected' : '' }}>
|
||||
{{ $localeModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="page-action">
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ abstract class DataGrid
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $index = null;
|
||||
protected $index;
|
||||
|
||||
/**
|
||||
* Default sort order of datagrid
|
||||
|
|
@ -164,6 +164,9 @@ abstract class DataGrid
|
|||
10 => "lock",
|
||||
];
|
||||
|
||||
/** @var string[] contains the keys for which extra filters to show */
|
||||
protected $extraFilters = [];
|
||||
|
||||
abstract public function prepareQueryBuilder();
|
||||
|
||||
abstract public function addColumns();
|
||||
|
|
@ -230,7 +233,7 @@ abstract class DataGrid
|
|||
{
|
||||
$this->fireEvent('add.column.before.' . $column['index']);
|
||||
|
||||
array_push($this->columns, $column);
|
||||
$this->columns[] = $column;
|
||||
|
||||
$this->setCompleteColumnDetails($column);
|
||||
|
||||
|
|
@ -244,7 +247,7 @@ abstract class DataGrid
|
|||
*/
|
||||
public function setCompleteColumnDetails($column)
|
||||
{
|
||||
array_push($this->completeColumnDetails, $column);
|
||||
$this->completeColumnDetails[] = $column;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -298,7 +301,7 @@ abstract class DataGrid
|
|||
|
||||
$this->fireEvent('mass.action.before.' . $eventName);
|
||||
|
||||
array_push($this->massActions, $massAction);
|
||||
$this->massActions[] = $massAction;
|
||||
|
||||
$this->enableMassAction = true;
|
||||
|
||||
|
|
@ -313,7 +316,7 @@ abstract class DataGrid
|
|||
$parsedUrl = $this->parseUrl();
|
||||
|
||||
foreach ($parsedUrl as $key => $value) {
|
||||
if ($key == 'locale') {
|
||||
if ($key === 'locale') {
|
||||
if (! is_array($value)) {
|
||||
unset($parsedUrl[$key]);
|
||||
}
|
||||
|
|
@ -376,7 +379,7 @@ abstract class DataGrid
|
|||
$columnType = $this->findColumnType($key)[0] ?? null;
|
||||
$columnName = $this->findColumnType($key)[1] ?? null;
|
||||
|
||||
if ($key == "sort") {
|
||||
if ($key === "sort") {
|
||||
$count_keys = count(array_keys($info));
|
||||
|
||||
if ($count_keys > 1) {
|
||||
|
|
@ -389,7 +392,7 @@ abstract class DataGrid
|
|||
$columnName[1],
|
||||
array_values($info)[0]
|
||||
);
|
||||
} elseif ($key == "search") {
|
||||
} elseif ($key === "search") {
|
||||
$count_keys = count(array_keys($info));
|
||||
|
||||
if ($count_keys > 1) {
|
||||
|
|
@ -544,6 +547,17 @@ abstract class DataGrid
|
|||
|
||||
$this->prepareQueryBuilder();
|
||||
|
||||
$necessaryExtraFilters = [];
|
||||
if (in_array('channels', $this->extraFilters)) {
|
||||
$necessaryExtraFilters['channels'] = core()->getAllChannels();
|
||||
}
|
||||
if (in_array('locales', $this->extraFilters)) {
|
||||
$necessaryExtraFilters['locales'] = core()->getAllLocales();
|
||||
}
|
||||
if (in_array('customer_groups', $this->extraFilters)) {
|
||||
$necessaryExtraFilters['customer_groups'] = core()->getAllCustomerGroups();
|
||||
}
|
||||
|
||||
return view('ui::datagrid.table')->with('results', [
|
||||
'records' => $this->getCollection(),
|
||||
'columns' => $this->completeColumnDetails,
|
||||
|
|
@ -553,7 +567,8 @@ abstract class DataGrid
|
|||
'enableMassActions' => $this->enableMassAction,
|
||||
'enableActions' => $this->enableAction,
|
||||
'paginated' => $this->paginate,
|
||||
'norecords' => trans('ui::app.datagrid.no-records'),
|
||||
'norecords' => __('ui::app.datagrid.no-records'),
|
||||
'extraFilters' => $necessaryExtraFilters
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,65 @@
|
|||
</div>
|
||||
|
||||
<div class="filter-right">
|
||||
@if (isset($results['extraFilters']['channels']))
|
||||
<div class="dropdown-filters per-page">
|
||||
<div class="control-group">
|
||||
<select class="control" id="channel-switcher" name="channel"
|
||||
onchange="reloadPage('channel', this.value)">
|
||||
<option value="all" {{ ! isset($channel) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-channels') }}
|
||||
</option>
|
||||
@foreach ($results['extraFilters']['channels'] as $channelModel)
|
||||
<option
|
||||
value="{{ $channelModel->code }}"
|
||||
{{ (isset($channel) && ($channelModel->code) == $channel) ? 'selected' : '' }}>
|
||||
{{ $channelModel->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (isset($results['extraFilters']['locales']))
|
||||
<div class="dropdown-filters per-page">
|
||||
<div class="control-group">
|
||||
<select class="control" id="locale-switcher" name="locale"
|
||||
onchange="reloadPage('locale', this.value)">
|
||||
<option value="all" {{ ! isset($locale) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-locales') }}
|
||||
</option>
|
||||
@foreach ($results['extraFilters']['locales'] as $localeModel)
|
||||
<option
|
||||
value="{{ $localeModel->code }}" {{ (isset($locale) && ($localeModel->code) == $locale) ? 'selected' : '' }}>
|
||||
{{ $localeModel->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (isset($results['extraFilters']['customer_groups']))
|
||||
<div class="dropdown-filters per-page">
|
||||
<div class="control-group">
|
||||
<select class="control" id="customer-group-switcher" name="customer_group"
|
||||
onchange="reloadPage('customer_group', this.value)">
|
||||
<option value="all" {{ ! isset($customer_group) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-customer-groups') }}
|
||||
</option>
|
||||
@foreach ($results['extraFilters']['customer_groups'] as $customerGroupModel)
|
||||
<option
|
||||
value="{{ $customerGroupModel->id }}"
|
||||
{{ (isset($customer_group) && ($customerGroupModel->id) == $customer_group) ? 'selected' : '' }}>
|
||||
{{ $customerGroupModel->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="dropdown-filters per-page">
|
||||
<div class="control-group">
|
||||
<label class="per-page-label" for="perPage">
|
||||
|
|
@ -170,12 +229,14 @@
|
|||
<div class="filtered-tags">
|
||||
<span class="filter-tag" v-if="filters.length > 0" v-for="filter in filters"
|
||||
style="text-transform: capitalize;">
|
||||
<span v-if="filter.column == 'sort'">@{{ filter.label }}</span>
|
||||
<span v-else-if="filter.column == 'search'">Search</span>
|
||||
<span v-else-if="filter.column == 'perPage'">perPage</span>
|
||||
<span v-if="filter.column == 'perPage'">perPage</span>
|
||||
<span v-else>@{{ filter.label }}</span>
|
||||
|
||||
<span class="wrapper">
|
||||
<span class="wrapper" v-if="filter.prettyValue">
|
||||
@{{ filter.prettyValue }}
|
||||
<span class="icon cross-icon" v-on:click="removeFilter(filter)"></span>
|
||||
</span>
|
||||
<span class="wrapper" v-else>
|
||||
@{{ decodeURIComponent(filter.val) }}
|
||||
<span class="icon cross-icon" v-on:click="removeFilter(filter)"></span>
|
||||
</span>
|
||||
|
|
@ -237,6 +298,7 @@
|
|||
numberConditionSelect: false,
|
||||
datetimeConditionSelect: false,
|
||||
perPage: 10,
|
||||
extraFilters: @json($results['extraFilters']),
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -332,7 +394,7 @@
|
|||
|
||||
if (this.type === 'string' && this.stringValue !== null) {
|
||||
this.formURL(this.columnOrAlias, this.stringCondition, encodeURIComponent(this.stringValue), label)
|
||||
} else if (this.type == 'number') {
|
||||
} else if (this.type === 'number') {
|
||||
indexConditions = true;
|
||||
|
||||
if (this.filterIndex === this.columnOrAlias
|
||||
|
|
@ -636,12 +698,21 @@
|
|||
break;
|
||||
case "channel":
|
||||
obj.label = "Channel";
|
||||
if ('channels' in this.extraFilters) {
|
||||
obj.prettyValue = this.extraFilters['channels'].find(channel => channel.code === obj.val).name
|
||||
}
|
||||
break;
|
||||
case "locale":
|
||||
obj.label = "Locale";
|
||||
if ('locales' in this.extraFilters) {
|
||||
obj.prettyValue = this.extraFilters['locales'].find(locale => locale.code === obj.val).name
|
||||
}
|
||||
break;
|
||||
case "customer_group":
|
||||
obj.label = "Customer Group";
|
||||
if ('customer_groups' in this.extraFilters) {
|
||||
obj.prettyValue = this.extraFilters['customer_groups'].find(customer_group => customer_group.id === parseInt(obj.val, 10)).name
|
||||
}
|
||||
break;
|
||||
case "sort":
|
||||
for (let colIndex in this.columns) {
|
||||
|
|
@ -657,7 +728,7 @@
|
|||
obj.label = this.columns[colIndex].label;
|
||||
|
||||
if (this.columns[colIndex].type === 'boolean') {
|
||||
console.log('obj.val',obj.val);
|
||||
console.log('obj.val', obj.val);
|
||||
if (obj.val === '1') {
|
||||
obj.val = '{{ __('ui::app.datagrid.true') }}';
|
||||
} else {
|
||||
|
|
@ -671,6 +742,7 @@
|
|||
|
||||
if (obj.column !== undefined && obj.val !== undefined) {
|
||||
this.filters.push(obj);
|
||||
console.log('pushed');
|
||||
}
|
||||
|
||||
obj = {};
|
||||
|
|
|
|||
Loading…
Reference in New Issue