From e906b1d632fd7222ca2ec68fed54b8930bc5e268 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Fri, 24 Oct 2025 11:35:23 +0200 Subject: [PATCH] ObjectSuggestions: Allow to use a fixed set of columns --- .../Control/SearchBar/ObjectSuggestions.php | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/library/Icingadb/Web/Control/SearchBar/ObjectSuggestions.php b/library/Icingadb/Web/Control/SearchBar/ObjectSuggestions.php index bf47df1b..8a8fef25 100644 --- a/library/Icingadb/Web/Control/SearchBar/ObjectSuggestions.php +++ b/library/Icingadb/Web/Control/SearchBar/ObjectSuggestions.php @@ -43,6 +43,9 @@ class ObjectSuggestions extends Suggestions /** @var array */ protected $customVarSources; + /** @var ?array */ + protected ?array $fixedColumns = null; + public function __construct() { $this->customVarSources = [ @@ -154,7 +157,7 @@ class ObjectSuggestions extends Suggestions if (strpos($column, ' ') !== false) { // $column may be a label list($path, $_) = Seq::find( - self::collectFilterColumns($query->getModel(), $query->getResolver()), + $this->fixedColumns ?? self::collectFilterColumns($query->getModel(), $query->getResolver()), $column, false ); @@ -269,7 +272,8 @@ class ObjectSuggestions extends Suggestions // Ordinary columns comes after exact matches, // or if there ar no exact matches they come first $titleAdded = false; - foreach (self::collectFilterColumns($model, $query->getResolver()) as $columnName => $columnMeta) { + $columns = $this->fixedColumns ?? self::collectFilterColumns($query->getModel(), $query->getResolver()); + foreach ($columns as $columnName => $columnMeta) { if ($this->matchSuggestion($columnName, $columnMeta, $searchTerm)) { if ($titleAdded === false) { $this->addHtml(HtmlElement::create( @@ -518,4 +522,18 @@ class ObjectSuggestions extends Suggestions return $this; } + + /** + * Provide suggestions based on a fixed set of columns + * + * @param array $columns + * + * @return $this + */ + public function withFixedColumns(array $columns): static + { + $this->fixedColumns = $columns; + + return $this; + } }