From e12cecf04254bc06f521c12838d883e4e2384eca Mon Sep 17 00:00:00 2001 From: Arlen Johnson Date: Mon, 12 Jan 2026 14:24:44 -0500 Subject: [PATCH] Enable Jobs filters in the UI and improve some filter elements (CFM-252) --- app/src/Lib/Traits/SearchFilterTrait.php | 8 ++-- app/src/Model/Table/JobsTable.php | 42 +++++++++++++++++++ app/templates/element/filter/filter.php | 12 +++--- .../element/filter/footerButtons.php | 4 +- 4 files changed, 55 insertions(+), 11 deletions(-) diff --git a/app/src/Lib/Traits/SearchFilterTrait.php b/app/src/Lib/Traits/SearchFilterTrait.php index b6ba84e60..ce34d271b 100644 --- a/app/src/Lib/Traits/SearchFilterTrait.php +++ b/app/src/Lib/Traits/SearchFilterTrait.php @@ -299,15 +299,15 @@ public function getSearchableAttributes(string $controller, ViewBuilder $viewBui // Include meta fields that are defined in the configuration // FORCE USAGE - $filterMetadatFielsList = $this->filterMetadataFields(); + $filterMetadatFieldsList = $this->filterMetadataFields(); foreach ($filterKeys as $key) { - if (isset($filterMetadatFielsList['meta'][$key])) { - $filterMetadatFielsList[$key] = $filterMetadatFielsList['meta'][$key]; + if (isset($filterMetadatFieldsList['meta'][$key])) { + $filterMetadatFieldsList[$key] = $filterMetadatFieldsList['meta'][$key]; } } - foreach ($filterMetadatFielsList as $column => $type) { + foreach ($filterMetadatFieldsList as $column => $type) { // If the column is an array, then we are accessing the Metadata fields. Skip if(\is_array($type)) { continue; diff --git a/app/src/Model/Table/JobsTable.php b/app/src/Model/Table/JobsTable.php index e7b9cb998..150c31e3c 100644 --- a/app/src/Model/Table/JobsTable.php +++ b/app/src/Model/Table/JobsTable.php @@ -49,6 +49,7 @@ class JobsTable extends Table { use \App\Lib\Traits\QueryModificationTrait; use \App\Lib\Traits\TableMetaTrait; use \App\Lib\Traits\ValidationTrait; + use \App\Lib\Traits\SearchFilterTrait; /** * Perform Cake Model initialization. @@ -96,6 +97,47 @@ public function initialize(array $config): void { 'class' => 'JobStatusEnum' ] ]); + + // Hide the following fields from filters by default; + // their 'active' state is set to false. + $this->setFilterConfig([ + 'requeued_from_job_id' => [ + 'type' => 'field', + 'model' => 'Jobs', + 'active' => false, + 'order' => 1 + ], + 'retry_interval' => [ + 'type' => 'field', + 'model' => 'Jobs', + 'active' => false, + 'order' => 99 + ], + 'requeue_interval' => [ + 'type' => 'field', + 'model' => 'Jobs', + 'active' => false, + 'order' => 99 + ], + 'max_retry' => [ + 'type' => 'field', + 'model' => 'Jobs', + 'active' => false, + 'order' => 99 + ], + 'retry_count' => [ + 'type' => 'field', + 'model' => 'Jobs', + 'active' => false, + 'order' => 99 + ], + 'percent_complete' => [ + 'type' => 'field', + 'model' => 'Jobs', + 'active' => false, + 'order' => 99 + ], + ]); $this->setViewContains([ 'RequeuedFromJobs' diff --git a/app/templates/element/filter/filter.php b/app/templates/element/filter/filter.php index 7259b98cd..908678a8d 100644 --- a/app/templates/element/filter/filter.php +++ b/app/templates/element/filter/filter.php @@ -111,13 +111,15 @@ -
- element('filter/datetimeGroup', compact('field_datetime_columns')) - ?> -
+ +
+ element('filter/datetimeGroup', compact('field_datetime_columns')) ?> +
+ - element('filter/footerButtons', compact('field_booleans_columns')) + element('filter/footerButtons', + compact('field_booleans_columns','field_datetime_columns')) ?> diff --git a/app/templates/element/filter/footerButtons.php b/app/templates/element/filter/footerButtons.php index e00b86376..03cec7afb 100644 --- a/app/templates/element/filter/footerButtons.php +++ b/app/templates/element/filter/footerButtons.php @@ -35,8 +35,8 @@ $classes = ''; if ($vv_active_search_filters_count % 2 === 1 - && - empty($field_booleans_columns) + && empty($field_booleans_columns) + && empty($field_datetime_columns) ) { $classes .= ' class="tss-rebalance"'; }