Skip to content

Commit

Permalink
GridView::getSummaryParams
Browse files Browse the repository at this point in the history
  • Loading branch information
davidhirtz committed Mar 1, 2024
1 parent 14c3650 commit 60194ac
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 27 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
- Added additional field types to auto-generated fields in `ActiveFormTrait`
- Added `padding-block: 0` to `.form-control` to fix the padding issues with date inputs
- Changed return type of `StatusGridViewTrait::getStatusIcon()` and `TypeGridViewTrait::getTypeIcon()` to `string`
- Renamed `GridView::$searchFormOptions` to `GridView::$searchInputOptions`

## 2.2.0 (Feb 29, 2024)

Expand Down
63 changes: 36 additions & 27 deletions src/modules/admin/widgets/grids/GridView.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ class GridView extends \yii\grid\GridView
public string $searchParamName = 'q';

/**
* @var array search form option.
* @var array containing the search input options.
*/
public array $searchFormOptions = [];
public array $searchInputOptions = [];

/**
* @var string|null the default route used for search.
Expand Down Expand Up @@ -113,6 +113,8 @@ public function init(): void
$this->selectionButtonLabel ??= Yii::t('skeleton', 'Update Selected');
$this->tableOptions['id'] ??= $this->getTableId();

$this->search ??= Yii::$app->request->get($this->searchParamName);

parent::init();
}

Expand Down Expand Up @@ -144,7 +146,9 @@ public function renderItems(): string

protected function renderSelectionForm(string $items): string
{
return Html::beginForm($this->selectionRoute, 'post', ['id' => $this->getSelectionFormId()]) . $items . Html::endForm();
return Html::beginForm($this->selectionRoute, 'post', ['id' => $this->getSelectionFormId()])
. $items
. Html::endForm();
}

public function renderTableBody(): string
Expand All @@ -169,20 +173,7 @@ public function renderSummary(): string
$summary = $this->summary;
$totalCount = $this->dataProvider->getTotalCount();
$count = $this->dataProvider->getCount();
$pagination = $this->dataProvider->getPagination();

$params = [
'search' => $this->search,
'totalCount' => $totalCount,
];

if ($pagination !== false) {
$params['page'] = $pagination->getPage() + 1;
$params['pageCount'] = $pagination->pageCount;
$params['begin'] = $pagination->getPage() * $pagination->pageSize + 1;
$params['end'] = $params['begin'] + $count - 1;
$params['begin'] = min($params['begin'], $params['end']);
}
$params = $this->getSummaryParams();

if (!$summary) {
if ($this->search) {
Expand Down Expand Up @@ -212,6 +203,26 @@ public function renderSummary(): string
return Html::alert($summary, $summaryOptions);
}

protected function getSummaryParams(): array
{
$params = [
'search' => $this->search,
'totalCount' => $this->dataProvider->getTotalCount(),
];

$pagination = $this->dataProvider->getPagination();

if ($pagination !== false) {
$params['page'] = $pagination->getPage() + 1;
$params['pageCount'] = $pagination->pageCount;
$params['begin'] = $pagination->getPage() * $pagination->pageSize + 1;
$params['end'] = $params['begin'] + $this->dataProvider->getCount() - 1;
$params['begin'] = min($params['begin'], $params['end']);
}

return $params;
}

protected function initHeader(): void
{
}
Expand Down Expand Up @@ -278,23 +289,21 @@ public function renderSection($name): string|false

public function getSearchInput(): string
{
if ($this->searchUrl === null) {
$this->searchUrl = Url::current([$this->searchParamName => null]);
}
$search = $this->search ? trim($this->search) : null;
$searchUrl = $this->searchUrl ?? Url::current([$this->searchParamName => null]);

if ($this->search === null) {
$this->search = ($search = Yii::$app->getRequest()->get($this->searchParamName)) ? trim((string)$search) : null;
}
$icon = ArrayHelper::remove($this->searchInputOptions, 'icon', 'search');

$options = [
'class' => 'form-control',
'prepend' => Html::submitButton(Icon::tag(ArrayHelper::remove($this->searchFormOptions, 'icon', 'search'), ['class' => 'fa-fw']), ['class' => 'btn-transparent']),
'prepend' => Html::submitButton(Icon::tag($icon, ['class' => 'fa-fw']), ['class' => 'btn-transparent']),
'placeholder' => Yii::t('skeleton', 'Search ...'),
...$this->searchInputOptions
];

return Html::beginForm($this->searchUrl, 'get') .
Html::input('search', $this->searchParamName, $this->search, [...$options, ...$this->searchFormOptions]) .
Html::endForm();
return Html::beginForm($searchUrl, 'get')
. Html::input('search', $this->searchParamName, $search, $options)
. Html::endForm();
}

public function getSelectionButton(): string
Expand Down

0 comments on commit 60194ac

Please sign in to comment.