From 16211e51d188d304b220a872b9be93881e05e5b3 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Fri, 10 Oct 2025 16:12:15 +0200 Subject: [PATCH 1/7] Make field filter-select match other filter-selects --- .../src/project/browse/SearchFilter.svelte | 27 ++---------- .../project/browse/filter/FieldSelect.svelte | 41 +++++++++++++++++++ 2 files changed, 45 insertions(+), 23 deletions(-) create mode 100644 frontend/viewer/src/project/browse/filter/FieldSelect.svelte diff --git a/frontend/viewer/src/project/browse/SearchFilter.svelte b/frontend/viewer/src/project/browse/SearchFilter.svelte index c0893e4af7..8cfe727f73 100644 --- a/frontend/viewer/src/project/browse/SearchFilter.svelte +++ b/frontend/viewer/src/project/browse/SearchFilter.svelte @@ -13,12 +13,11 @@ import {useCurrentView} from '$lib/views/view-service'; import {formatNumber} from '$lib/components/ui/format'; import ViewT from '$lib/views/ViewT.svelte'; - import Select from '$lib/components/field-editors/select.svelte'; import { Input } from '$lib/components/ui/input'; - import {watch} from 'runed'; import OpFilter, {type Op} from './filter/OpFilter.svelte'; import WsSelect from './filter/WsSelect.svelte'; import {useWritingSystemService} from '$lib/writing-system-service.svelte'; + import FieldSelect, {type SelectedField} from './filter/FieldSelect.svelte'; const stats = useProjectStats(); const currentView = useCurrentView(); @@ -36,19 +35,8 @@ let missingPartOfSpeech = $state(false); let missingSemanticDomains = $state(false); - let fields: Array<{id: string, label: string, ws: 'vernacular-no-audio' | 'analysis-no-audio'}> = $derived([ - { id: 'lexemeForm', label: pt($t`Lexeme Form`, $t`Word`, $currentView), ws: 'vernacular-no-audio' }, - { id: 'citationForm', label: pt($t`Citation Form`, $t`Display as`, $currentView), ws: 'vernacular-no-audio' }, - { id: 'senses.gloss', label: $t`Gloss`, ws: 'analysis-no-audio' }, - ]); - - // svelte-ignore state_referenced_locally - let selectedField = $state(fields[0]); + let selectedField = $state(null); let selectedWs = $state(wsService.vernacularNoAudio.map(ws => ws.wsId)); - watch(() => fields, fields => { - //updates selected field when selected view changes - selectedField = fields.find(f => f.id === selectedField.id) ?? fields[0]; - }); let fieldFilterValue = $state(''); let filterOp = $state('contains') @@ -128,16 +116,9 @@
- +
+ +
+
+ + + + +
+ +
+ + +
- - - - +
+ + + +
+
+ + +
diff --git a/frontend/viewer/src/project/browse/filter/MissingSelect.svelte b/frontend/viewer/src/project/browse/filter/MissingSelect.svelte new file mode 100644 index 0000000000..f7f066fae1 --- /dev/null +++ b/frontend/viewer/src/project/browse/filter/MissingSelect.svelte @@ -0,0 +1,32 @@ + + + + value?.id ?? null!, (newId) => value = missingOptions.find(f => f.id === newId) ?? null}> + + {value?.label ?? $t`Missing...`} + + + {#each missingOptions as option (option.id)} + + {option.label} + + {/each} + + diff --git a/frontend/viewer/src/project/browse/filter/SemanticDomainSelect.svelte b/frontend/viewer/src/project/browse/filter/SemanticDomainSelect.svelte new file mode 100644 index 0000000000..f65dd6f09c --- /dev/null +++ b/frontend/viewer/src/project/browse/filter/SemanticDomainSelect.svelte @@ -0,0 +1,26 @@ + + + + +