diff --git a/frontend/src/components/Filter.vue b/frontend/src/components/Filter.vue index ac1c01f0..bb45fb5b 100644 --- a/frontend/src/components/Filter.vue +++ b/frontend/src/components/Filter.vue @@ -126,7 +126,7 @@
@@ -217,6 +217,19 @@ const filters = computed(() => { return convertFilters(filterableFields.data, allFilters) }) +const availableFilters = computed(() => { + if (!filterableFields.data) return [] + + const selectedFieldNames = new Set() + for (const filter of filters.value) { + selectedFieldNames.add(filter.fieldname) + } + + return filterableFields.data.filter( + (field) => !selectedFieldNames.has(field.fieldname), + ) +}) + function removeCommonFilters(commonFilters, allFilters) { for (const key in commonFilters) { if (commonFilters.hasOwnProperty(key) && allFilters.hasOwnProperty(key)) { diff --git a/frontend/src/components/ViewControls.vue b/frontend/src/components/ViewControls.vue index f8730f29..beaf8b99 100644 --- a/frontend/src/components/ViewControls.vue +++ b/frontend/src/components/ViewControls.vue @@ -752,6 +752,7 @@ const quickFilterOptions = computed(() => { let fields = getFields() if (!fields) return [] + let existingQuickFilters = newQuickFilters.value.map((f) => f.fieldname) let restrictedFieldtypes = [ 'Tab Break', 'Section Break', @@ -766,6 +767,7 @@ const quickFilterOptions = computed(() => { ] let options = fields .filter((f) => f.label && !restrictedFieldtypes.includes(f.fieldtype)) + .filter((f) => !existingQuickFilters.includes(f.fieldname)) .map((field) => ({ label: field.label, value: field.fieldname,