From 32dbb2438ba567abc613f28861fd4aa4e18ff058 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:38:08 -0700 Subject: [PATCH] Handle simple searches with frontend query param parsing --- src-ui/src/app/utils/query-params.spec.ts | 46 +++++++++++++++++++++++ src-ui/src/app/utils/query-params.ts | 27 ++++++++++++- 2 files changed, 71 insertions(+), 2 deletions(-) diff --git a/src-ui/src/app/utils/query-params.spec.ts b/src-ui/src/app/utils/query-params.spec.ts index c22c90d11..cc957382b 100644 --- a/src-ui/src/app/utils/query-params.spec.ts +++ b/src-ui/src/app/utils/query-params.spec.ts @@ -8,6 +8,8 @@ import { FILTER_HAS_CUSTOM_FIELDS_ALL, FILTER_HAS_CUSTOM_FIELDS_ANY, FILTER_HAS_TAGS_ALL, + FILTER_TITLE, + FILTER_TITLE_CONTENT, NEGATIVE_NULL_FILTER_VALUE, } from '../data/filter-rule-type' import { @@ -128,6 +130,26 @@ describe('QueryParams Utils', () => { is_tagged: 0, }) + params = queryParamsFromFilterRules([ + { + rule_type: FILTER_TITLE_CONTENT, + value: 'bank statement', + }, + ]) + expect(params).toEqual({ + text: 'bank statement', + }) + + params = queryParamsFromFilterRules([ + { + rule_type: FILTER_TITLE, + value: 'invoice', + }, + ]) + expect(params).toEqual({ + title_search: 'invoice', + }) + params = queryParamsFromFilterRules([ { rule_type: FILTER_HAS_TAGS_ALL, @@ -148,6 +170,30 @@ describe('QueryParams Utils', () => { it('should convert filter rules to query params', () => { let rules = filterRulesFromQueryParams( + convertToParamMap({ + text: 'bank statement', + }) + ) + expect(rules).toEqual([ + { + rule_type: FILTER_TITLE_CONTENT, + value: 'bank statement', + }, + ]) + + rules = filterRulesFromQueryParams( + convertToParamMap({ + title_search: 'invoice', + }) + ) + expect(rules).toEqual([ + { + rule_type: FILTER_TITLE, + value: 'invoice', + }, + ]) + + rules = filterRulesFromQueryParams( convertToParamMap({ tags__id__all, }) diff --git a/src-ui/src/app/utils/query-params.ts b/src-ui/src/app/utils/query-params.ts index 27716cc2d..89bda2b72 100644 --- a/src-ui/src/app/utils/query-params.ts +++ b/src-ui/src/app/utils/query-params.ts @@ -9,6 +9,8 @@ import { FILTER_HAS_CUSTOM_FIELDS_ALL, FILTER_HAS_CUSTOM_FIELDS_ANY, FILTER_RULE_TYPES, + FILTER_TITLE, + FILTER_TITLE_CONTENT, FilterRuleType, NEGATIVE_NULL_FILTER_VALUE, } from '../data/filter-rule-type' @@ -17,6 +19,8 @@ import { ListViewState } from '../services/document-list-view.service' const SORT_FIELD_PARAMETER = 'sort' const SORT_REVERSE_PARAMETER = 'reverse' const PAGE_PARAMETER = 'page' +const SIMPLE_TEXT_PARAMETER = 'text' +const SIMPLE_TITLE_PARAMETER = 'title_search' export function paramsFromViewState( viewState: ListViewState, @@ -97,6 +101,22 @@ export function transformLegacyFilterRules( export function filterRulesFromQueryParams( queryParams: ParamMap ): FilterRule[] { + let filterRulesFromQueryParams: FilterRule[] = [] + + if (queryParams.has(SIMPLE_TEXT_PARAMETER)) { + filterRulesFromQueryParams.push({ + rule_type: FILTER_TITLE_CONTENT, + value: queryParams.get(SIMPLE_TEXT_PARAMETER), + }) + } + + if (queryParams.has(SIMPLE_TITLE_PARAMETER)) { + filterRulesFromQueryParams.push({ + rule_type: FILTER_TITLE, + value: queryParams.get(SIMPLE_TITLE_PARAMETER), + }) + } + const allFilterRuleQueryParams: string[] = FILTER_RULE_TYPES.map( (rt) => rt.filtervar ) @@ -104,7 +124,6 @@ export function filterRulesFromQueryParams( .filter((rt) => rt !== undefined) // transform query params to filter rules - let filterRulesFromQueryParams: FilterRule[] = [] allFilterRuleQueryParams .filter((frqp) => queryParams.has(frqp)) .forEach((filterQueryParamName) => { @@ -146,7 +165,11 @@ export function queryParamsFromFilterRules(filterRules: FilterRule[]): Params { let params = {} for (let rule of filterRules) { let ruleType = FILTER_RULE_TYPES.find((t) => t.id == rule.rule_type) - if (ruleType.isnull_filtervar && rule.value == null) { + if (rule.rule_type === FILTER_TITLE_CONTENT) { + params[SIMPLE_TEXT_PARAMETER] = rule.value + } else if (rule.rule_type === FILTER_TITLE) { + params[SIMPLE_TITLE_PARAMETER] = rule.value + } else if (ruleType.isnull_filtervar && rule.value == null) { params[ruleType.isnull_filtervar] = 1 } else if ( ruleType.isnull_filtervar &&