fix(views): make searching in view filters work

Partially resolves https://community.vikunja.io/t/improvement-filtering/2970
This commit is contained in:
kolaente 2025-01-21 18:03:14 +01:00
parent d3456b04d0
commit 6a63ffca28
No known key found for this signature in database
GPG Key ID: F40E70337AB24C9B
1 changed files with 26 additions and 10 deletions

View File

@ -29,24 +29,40 @@ const labelStore = useLabelStore()
const projectStore = useProjectStore()
onBeforeMount(() => {
const transformFilterToString = (filter: IFilter): string => {
if (filter.s !== '') {
return filter.s
}
return transformFilterStringFromApi(
filter.filter,
const transformFilterFromApi = (filterInput: IFilter): IFilter => {
const filterString = transformFilterStringFromApi(
filterInput.filter,
labelId => labelStore.getLabelById(labelId)?.title || null,
projectId => projectStore.projects[projectId]?.title || null,
)
const filter: IFilter = {
filter: '',
s: '',
}
if (hasFilterQuery(filterString)) {
filter.filter = filterString
} else {
filter.s = filterString
}
if (filter.s === '') {
filter.s = filterInput.s
}
if (filter.filter === '') {
filter.filter = filter.s
}
return filter
}
const transformed = {
...props.modelValue,
filter: transformFilterToString(props.modelValue.filter),
filter: transformFilterFromApi(props.modelValue.filter),
bucketConfiguration: props.modelValue.bucketConfiguration.map(bc => ({
title: bc.title,
filter: transformFilterToString(bc.filter),
filter: transformFilterFromApi(bc.filter),
})),
}
@ -158,7 +174,7 @@ function handleBubbleSave() {
</div>
<FilterInput
v-model="view.filter"
v-model="view.filter.filter"
:project-id="view.projectId"
:input-label="$t('project.views.filter')"
class="mb-1"