diff --git a/application/controllers/CommentsController.php b/application/controllers/CommentsController.php index b1995f63b..09ad62ff4 100644 --- a/application/controllers/CommentsController.php +++ b/application/controllers/CommentsController.php @@ -83,10 +83,11 @@ public function indexAction() $this->addControl($limitControl); $this->addControl($viewModeSwitcher); $this->addControl($searchBar); - $continueWith = $this->createContinueWith(Links::commentsDetails(), $searchBar); $results = $comments->execute(); + $continueWith = $this->createContinueWith(Links::commentsDetails(), $searchBar, $results->hasResult()); + $this->addContent( (new ObjectList($results)) ->setViewMode($viewModeSwitcher->getViewMode()) diff --git a/application/controllers/DowntimesController.php b/application/controllers/DowntimesController.php index 90a3eddd5..2e39a248b 100644 --- a/application/controllers/DowntimesController.php +++ b/application/controllers/DowntimesController.php @@ -89,10 +89,11 @@ public function indexAction() $this->addControl($limitControl); $this->addControl($viewModeSwitcher); $this->addControl($searchBar); - $continueWith = $this->createContinueWith(Links::downtimesDetails(), $searchBar); $results = $downtimes->execute(); + $continueWith = $this->createContinueWith(Links::downtimesDetails(), $searchBar, $results->hasResult()); + $this->addContent( (new ObjectList($results)) ->setViewMode($viewModeSwitcher->getViewMode()) diff --git a/application/controllers/HostController.php b/application/controllers/HostController.php index ec1ca0cd4..23b88e024 100644 --- a/application/controllers/HostController.php +++ b/application/controllers/HostController.php @@ -286,7 +286,9 @@ public function servicesAction(): Generator yield $this->export($services); - $serviceList = (new ObjectList($services)) + $results = $services->execute(); + + $serviceList = (new ObjectList($results)) ->setViewMode($viewModeSwitcher->getViewMode()) ->setEmptyStateMessage($paginationControl->getEmptyStateMessage()); @@ -297,7 +299,8 @@ public function servicesAction(): Generator $this->addControl($searchBar); $continueWith = $this->createContinueWith( Links::servicesDetails()->setFilter(Filter::equal('host.name', $this->host->name)), - $searchBar + $searchBar, + $results->hasResult() ); $this->addContent($serviceList); diff --git a/application/controllers/HostgroupController.php b/application/controllers/HostgroupController.php index 3967acc51..5d08c23d6 100644 --- a/application/controllers/HostgroupController.php +++ b/application/controllers/HostgroupController.php @@ -102,7 +102,9 @@ public function indexAction(): Generator yield $this->export($hosts); - $hostList = (new ObjectList($hosts)) + $results = $hosts->execute(); + + $hostList = (new ObjectList($results)) ->setViewMode($viewModeSwitcher->getViewMode()) ->setEmptyStateMessage($paginationControl->getEmptyStateMessage()); @@ -122,7 +124,8 @@ public function indexAction(): Generator $continueWith = $this->createContinueWith( Links::hostsDetails() ->setFilter(Filter::equal('hostgroup.name', $hostgroup->name)), - $searchBar + $searchBar, + $results->hasResult() ); $this->addContent($hostList); diff --git a/application/controllers/HostsController.php b/application/controllers/HostsController.php index 3dbe2688a..512e88349 100644 --- a/application/controllers/HostsController.php +++ b/application/controllers/HostsController.php @@ -97,10 +97,10 @@ public function indexAction() $this->addControl($limitControl); $this->addControl($viewModeSwitcher); $this->addControl($searchBar); - $continueWith = $this->createContinueWith(Links::hostsDetails(), $searchBar); $results = $hosts->execute(); + $continueWith = $this->createContinueWith(Links::hostsDetails(), $searchBar, $results->hasResult()); if ($viewModeSwitcher->getViewMode() === 'tabular') { $hostList = (new HostItemTable($results, HostItemTable::applyColumnMetaData($hosts, $columns))) ->setSort($sortControl->getSort()); diff --git a/application/controllers/ServicegroupController.php b/application/controllers/ServicegroupController.php index da887f890..e84d78eac 100644 --- a/application/controllers/ServicegroupController.php +++ b/application/controllers/ServicegroupController.php @@ -109,7 +109,9 @@ public function indexAction(): Generator yield $this->export($services); - $serviceList = (new ObjectList($services)) + $results = $services->execute(); + + $serviceList = (new ObjectList($results)) ->setViewMode($viewModeSwitcher->getViewMode()) ->setEmptyStateMessage($paginationControl->getEmptyStateMessage()); @@ -129,7 +131,8 @@ public function indexAction(): Generator $continueWith = $this->createContinueWith( Links::servicesDetails() ->setFilter(Filter::equal('servicegroup.name', $servicegroup->name)), - $searchBar + $searchBar, + $results->hasResult() ); $this->addContent($serviceList); diff --git a/application/controllers/ServicesController.php b/application/controllers/ServicesController.php index 743e7e712..15f3b668b 100644 --- a/application/controllers/ServicesController.php +++ b/application/controllers/ServicesController.php @@ -108,10 +108,11 @@ public function indexAction() $this->addControl($limitControl); $this->addControl($viewModeSwitcher); $this->addControl($searchBar); - $continueWith = $this->createContinueWith(Links::servicesDetails(), $searchBar); $results = $services->execute(); + $continueWith = $this->createContinueWith(Links::servicesDetails(), $searchBar, $results->hasResult()); + if ($viewModeSwitcher->getViewMode() === 'tabular') { $serviceList = (new ServiceItemTable($results, ServiceItemTable::applyColumnMetaData($services, $columns))) ->setSort($sortControl->getSort()); @@ -279,7 +280,6 @@ public function gridAction() $this->addControl($problemToggle); $this->addControl($sortControl); $this->addControl($searchBar); - $continueWith = $this->createContinueWith(Links::servicesDetails(), $searchBar); $pivotFilter = $problemToggle->isChecked() ? Filter::equal('service.state.is_problem', 'y') : null; @@ -316,6 +316,7 @@ public function gridAction() $this->view->pivotData = $pivotData; $this->view->pivotHeader = $pivotHeader; + $continueWith = $this->createContinueWith(Links::servicesDetails(), $searchBar, ! empty($pivotData)); /** Preserve filter and params in view links (the `BaseFilter` implementation for view scripts -.-) */ $this->view->baseUrl = Url::fromRequest() ->onlyWith([ diff --git a/library/Icingadb/Common/SearchControls.php b/library/Icingadb/Common/SearchControls.php index 7927da0a0..6cd1507d6 100644 --- a/library/Icingadb/Common/SearchControls.php +++ b/library/Icingadb/Common/SearchControls.php @@ -51,12 +51,13 @@ public function createSearchBar(Query $query, ...$params): SearchBar * * @param Url $detailsUrl * @param SearchBar $searchBar + * @param bool $hasResults Whether the current query has results * * @return ContinueWith */ - public function createContinueWith(Url $detailsUrl, SearchBar $searchBar): ContinueWith + public function createContinueWith(Url $detailsUrl, SearchBar $searchBar, bool $hasResults): ContinueWith { - $continueWith = new ContinueWith($detailsUrl, [$searchBar, 'getFilter']); + $continueWith = new ContinueWith($detailsUrl, [$searchBar, 'getFilter'], $hasResults); $continueWith->setTitle(t('Show bulk processing actions for all filtered results')); $continueWith->setBaseTarget('_next'); $continueWith->getAttributes()