Bring in the new filter type to frontend

This commit is contained in:
shamoon
2026-04-01 11:23:04 -07:00
parent a3da9fd8e0
commit 650a5327ef
4 changed files with 33 additions and 21 deletions

View File

@@ -47,6 +47,8 @@ export const FILTER_MODIFIED_BEFORE = 15
export const FILTER_MODIFIED_AFTER = 16
export const FILTER_TITLE_CONTENT = 19
export const FILTER_SIMPLE_TITLE = 48
export const FILTER_SIMPLE_TEXT = 49
export const FILTER_FULLTEXT_QUERY = 20
export const FILTER_FULLTEXT_MORELIKE = 21
@@ -68,12 +70,20 @@ export const FILTER_MIME_TYPE = 47
export const FILTER_RULE_TYPES: FilterRuleType[] = [
{
// Deprecated. UI now uses Tantivy-backed `title_search` filtervar, keep for now for existing saved views
id: FILTER_TITLE,
filtervar: 'title__icontains',
datatype: 'string',
multi: false,
default: '',
},
{
id: FILTER_SIMPLE_TITLE,
filtervar: 'title_search',
datatype: 'string',
multi: false,
default: '',
},
{
id: FILTER_CONTENT,
filtervar: 'content__icontains',
@@ -280,6 +290,12 @@ export const FILTER_RULE_TYPES: FilterRuleType[] = [
datatype: 'string',
multi: false,
},
{
id: FILTER_SIMPLE_TEXT,
filtervar: 'text',
datatype: 'string',
multi: false,
},
{
id: FILTER_FULLTEXT_QUERY,
filtervar: 'query',

View File

@@ -10,7 +10,7 @@ import {
DOCUMENT_SORT_FIELDS,
DOCUMENT_SORT_FIELDS_FULLTEXT,
} from 'src/app/data/document'
import { FILTER_TITLE } from 'src/app/data/filter-rule-type'
import { FILTER_SIMPLE_TITLE } from 'src/app/data/filter-rule-type'
import { SETTINGS_KEYS } from 'src/app/data/ui-settings'
import { environment } from 'src/environments/environment'
import { PermissionsService } from '../permissions.service'
@@ -138,13 +138,13 @@ describe(`DocumentService`, () => {
subscription = service
.listAllFilteredIds([
{
rule_type: FILTER_TITLE,
rule_type: FILTER_SIMPLE_TITLE,
value: 'apple',
},
])
.subscribe()
const req = httpTestingController.expectOne(
`${environment.apiBaseUrl}${endpoint}/?page=1&page_size=100000&fields=id&title__icontains=apple`
`${environment.apiBaseUrl}${endpoint}/?page=1&page_size=100000&fields=id&title_search=apple`
)
expect(req.request.method).toEqual('GET')
})

View File

@@ -8,6 +8,8 @@ import {
FILTER_HAS_CUSTOM_FIELDS_ALL,
FILTER_HAS_CUSTOM_FIELDS_ANY,
FILTER_HAS_TAGS_ALL,
FILTER_SIMPLE_TEXT,
FILTER_SIMPLE_TITLE,
FILTER_TITLE,
FILTER_TITLE_CONTENT,
NEGATIVE_NULL_FILTER_VALUE,
@@ -176,7 +178,7 @@ describe('QueryParams Utils', () => {
)
expect(rules).toEqual([
{
rule_type: FILTER_TITLE_CONTENT,
rule_type: FILTER_SIMPLE_TEXT,
value: 'bank statement',
},
])
@@ -188,7 +190,7 @@ describe('QueryParams Utils', () => {
)
expect(rules).toEqual([
{
rule_type: FILTER_TITLE,
rule_type: FILTER_SIMPLE_TITLE,
value: 'invoice',
},
])

View File

@@ -9,6 +9,8 @@ import {
FILTER_HAS_CUSTOM_FIELDS_ALL,
FILTER_HAS_CUSTOM_FIELDS_ANY,
FILTER_RULE_TYPES,
FILTER_SIMPLE_TEXT,
FILTER_SIMPLE_TITLE,
FILTER_TITLE,
FILTER_TITLE_CONTENT,
FilterRuleType,
@@ -103,20 +105,6 @@ export function filterRulesFromQueryParams(
): 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
)
@@ -165,9 +153,15 @@ 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 (rule.rule_type === FILTER_TITLE_CONTENT) {
if (
rule.rule_type === FILTER_TITLE_CONTENT ||
rule.rule_type === FILTER_SIMPLE_TEXT
) {
params[SIMPLE_TEXT_PARAMETER] = rule.value
} else if (rule.rule_type === FILTER_TITLE) {
} else if (
rule.rule_type === FILTER_TITLE ||
rule.rule_type === FILTER_SIMPLE_TITLE
) {
params[SIMPLE_TITLE_PARAMETER] = rule.value
} else if (ruleType.isnull_filtervar && rule.value == null) {
params[ruleType.isnull_filtervar] = 1