mirror of
https://github.com/Icinga/icingadb-web.git
synced 2026-05-28 04:36:06 -04:00
Enhance global search (#756)
* Controllers: Remove not required method call `handleSearchRequest()` These controller do not support global search * Models: Add `display_name` to default search columns * Controller: Add ´$additionaColumns` param to method handleSearchRequest() and prepareSearchFilter() * TacticalController: Remove superfluous override of method `prepareSearchFilter()`
This commit is contained in:
parent
8e512152c9
commit
f675d539f2
14 changed files with 25 additions and 30 deletions
|
|
@ -36,8 +36,6 @@ class CommentsController extends Controller
|
|||
'service.state'
|
||||
]);
|
||||
|
||||
$this->handleSearchRequest($comments);
|
||||
|
||||
$limitControl = $this->createLimitControl();
|
||||
$paginationControl = $this->createPaginationControl($comments);
|
||||
$sortControl = $this->createSortControl(
|
||||
|
|
|
|||
|
|
@ -36,8 +36,6 @@ class DowntimesController extends Controller
|
|||
'service.state'
|
||||
]);
|
||||
|
||||
$this->handleSearchRequest($downtimes);
|
||||
|
||||
$limitControl = $this->createLimitControl();
|
||||
$paginationControl = $this->createPaginationControl($downtimes);
|
||||
$sortControl = $this->createSortControl(
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ class HostsController extends Controller
|
|||
$hosts->getWith()['host.state']->setJoinType('INNER');
|
||||
$hosts->setResultSetClass(VolatileStateResults::class);
|
||||
|
||||
$this->handleSearchRequest($hosts);
|
||||
$this->handleSearchRequest($hosts, ['address', 'address6']);
|
||||
|
||||
$summary = null;
|
||||
if (! $compact) {
|
||||
|
|
|
|||
|
|
@ -411,12 +411,14 @@ class ServicesController extends Controller
|
|||
return new FeatureStatus('service', $summary->first());
|
||||
}
|
||||
|
||||
protected function prepareSearchFilter(Query $query, string $search, Filter\Any $filter)
|
||||
protected function prepareSearchFilter(Query $query, string $search, Filter\Any $filter, array $additionalColumns)
|
||||
{
|
||||
if ($this->params->shift('_hostFilterOnly', false)) {
|
||||
$filter->add(Filter::like('host.name_ci', "*$search*"));
|
||||
foreach (['host.name_ci', 'host.display_name', 'host.address', 'host.address6'] as $column) {
|
||||
$filter->add(Filter::like($column, "*$search*"));
|
||||
}
|
||||
} else {
|
||||
parent::prepareSearchFilter($query, $search, $filter);
|
||||
parent::prepareSearchFilter($query, $search, $filter, $additionalColumns);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,12 @@ class TacticalController extends Controller
|
|||
$hoststateSummary = HoststateSummary::on($db);
|
||||
$servicestateSummary = ServicestateSummary::on($db);
|
||||
|
||||
$this->handleSearchRequest($servicestateSummary);
|
||||
$this->handleSearchRequest($servicestateSummary, [
|
||||
'host.name_ci',
|
||||
'host.display_name',
|
||||
'host.address',
|
||||
'host.address6'
|
||||
]);
|
||||
|
||||
$searchBar = $this->createSearchBar($servicestateSummary);
|
||||
if ($searchBar->hasBeenSent() && ! $searchBar->isValid()) {
|
||||
|
|
@ -86,11 +91,4 @@ class TacticalController extends Controller
|
|||
$this->getDocument()->add($editor);
|
||||
$this->setTitle(t('Adjust Filter'));
|
||||
}
|
||||
|
||||
protected function prepareSearchFilter(Query $query, string $search, Filter\Any $filter)
|
||||
{
|
||||
parent::prepareSearchFilter($query, $search, $filter);
|
||||
|
||||
$filter->add(Filter::like('host.name_ci', "*$search*"));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,8 +30,6 @@ class UsergroupsController extends Controller
|
|||
|
||||
$usergroups = Usergroup::on($db);
|
||||
|
||||
$this->handleSearchRequest($usergroups);
|
||||
|
||||
$limitControl = $this->createLimitControl();
|
||||
$paginationControl = $this->createPaginationControl($usergroups);
|
||||
$sortControl = $this->createSortControl(
|
||||
|
|
|
|||
|
|
@ -30,8 +30,6 @@ class UsersController extends Controller
|
|||
|
||||
$users = User::on($db);
|
||||
|
||||
$this->handleSearchRequest($users);
|
||||
|
||||
$limitControl = $this->createLimitControl();
|
||||
$paginationControl = $this->createPaginationControl($users);
|
||||
$sortControl = $this->createSortControl(
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ class Host extends Model
|
|||
|
||||
public function getSearchColumns()
|
||||
{
|
||||
return ['name_ci'];
|
||||
return ['name_ci', 'display_name'];
|
||||
}
|
||||
|
||||
public function getDefaultSort()
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ class Hostgroup extends Model
|
|||
|
||||
public function getSearchColumns()
|
||||
{
|
||||
return ['name_ci'];
|
||||
return ['name_ci', 'display_name'];
|
||||
}
|
||||
|
||||
public function getDefaultSort()
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ class Service extends Model
|
|||
|
||||
public function getSearchColumns()
|
||||
{
|
||||
return ['name_ci'];
|
||||
return ['name_ci', 'display_name'];
|
||||
}
|
||||
|
||||
public function getDefaultSort()
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ class Servicegroup extends Model
|
|||
|
||||
public function getSearchColumns()
|
||||
{
|
||||
return ['name_ci'];
|
||||
return ['name_ci', 'display_name'];
|
||||
}
|
||||
|
||||
public function getDefaultSort()
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ class User extends Model
|
|||
|
||||
public function getSearchColumns()
|
||||
{
|
||||
return ['name_ci'];
|
||||
return ['name_ci', 'display_name'];
|
||||
}
|
||||
|
||||
public function getDefaultSort()
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ class Usergroup extends Model
|
|||
|
||||
public function getSearchColumns()
|
||||
{
|
||||
return ['name_ci'];
|
||||
return ['name_ci', 'display_name'];
|
||||
}
|
||||
|
||||
public function getDefaultSort()
|
||||
|
|
|
|||
|
|
@ -299,10 +299,11 @@ class Controller extends CompatController
|
|||
* Process a search request
|
||||
*
|
||||
* @param Query $query
|
||||
* @param array $additionalColumns
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handleSearchRequest(Query $query)
|
||||
public function handleSearchRequest(Query $query, array $additionalColumns = [])
|
||||
{
|
||||
$q = trim($this->params->shift('q', ''), ' *');
|
||||
if (! $q) {
|
||||
|
|
@ -310,7 +311,7 @@ class Controller extends CompatController
|
|||
}
|
||||
|
||||
$filter = Filter::any();
|
||||
$this->prepareSearchFilter($query, $q, $filter);
|
||||
$this->prepareSearchFilter($query, $q, $filter, $additionalColumns);
|
||||
|
||||
$redirectUrl = Url::fromRequest();
|
||||
$redirectUrl->setQueryString(QueryString::render($filter));
|
||||
|
|
@ -327,12 +328,14 @@ class Controller extends CompatController
|
|||
* @param Query $query
|
||||
* @param string $search
|
||||
* @param Filter\Any $filter
|
||||
* @param array $additionalColumns
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function prepareSearchFilter(Query $query, string $search, Filter\Any $filter)
|
||||
protected function prepareSearchFilter(Query $query, string $search, Filter\Any $filter, array $additionalColumns)
|
||||
{
|
||||
foreach ($query->getModel()->getSearchColumns() as $column) {
|
||||
$columns = array_merge($query->getModel()->getSearchColumns(), $additionalColumns);
|
||||
foreach ($columns as $column) {
|
||||
$filter->add(Filter::like(
|
||||
$query->getResolver()->qualifyColumn($column, $query->getModel()->getTableName()),
|
||||
"*$search*"
|
||||
|
|
|
|||
Loading…
Reference in a new issue