From 44c5453caccea53c9a62786ad8c5340a7f6021c3 Mon Sep 17 00:00:00 2001 From: andrewwallacespeckle Date: Thu, 11 Sep 2025 16:26:59 +0100 Subject: [PATCH 1/6] feat(fe): boolean filter. Improve KVP --- .../components/viewer/filters/Panel.vue | 7 +- .../components/viewer/filters/filter/Card.vue | 12 +- .../viewer/filters/filter/Header.vue | 8 +- .../viewer/filters/filter/boolean/Boolean.vue | 38 +++++ .../filters/property-selection/Item.vue | 6 +- .../viewer/selection/KeyValuePair.vue | 26 +++- .../components/viewer/selection/Object.vue | 18 ++- .../viewer/composables/filtering/dataStore.ts | 23 ++- .../viewer/composables/filtering/filtering.ts | 96 ++++++++++-- .../lib/viewer/helpers/filters/constants.ts | 10 +- .../lib/viewer/helpers/filters/types.ts | 27 +++- .../lib/viewer/helpers/filters/utils.ts | 138 ++++++++++++++---- 12 files changed, 353 insertions(+), 56 deletions(-) create mode 100644 packages/frontend-2/components/viewer/filters/filter/boolean/Boolean.vue diff --git a/packages/frontend-2/components/viewer/filters/Panel.vue b/packages/frontend-2/components/viewer/filters/Panel.vue index 81453ea67..90d8b56f0 100644 --- a/packages/frontend-2/components/viewer/filters/Panel.vue +++ b/packages/frontend-2/components/viewer/filters/Panel.vue @@ -145,7 +145,12 @@ const propertySelectOptions = computed((): PropertySelectOption[] => { value: filter.key, label: propertyName, parentPath, - type: filter.type === 'number' ? FilterType.Numeric : FilterType.String, + type: + filter.type === 'number' + ? FilterType.Numeric + : filter.type === 'boolean' + ? FilterType.Boolean + : FilterType.String, hasParent: lastDotIndex !== -1 } }) diff --git a/packages/frontend-2/components/viewer/filters/filter/Card.vue b/packages/frontend-2/components/viewer/filters/filter/Card.vue index 633b38b8b..880645d63 100644 --- a/packages/frontend-2/components/viewer/filters/filter/Card.vue +++ b/packages/frontend-2/components/viewer/filters/filter/Card.vue @@ -1,6 +1,9 @@ + + diff --git a/packages/frontend-2/components/viewer/filters/property-selection/Item.vue b/packages/frontend-2/components/viewer/filters/property-selection/Item.vue index 8ad148fd3..49a4dbe4d 100644 --- a/packages/frontend-2/components/viewer/filters/property-selection/Item.vue +++ b/packages/frontend-2/components/viewer/filters/property-selection/Item.vue @@ -10,6 +10,10 @@ v-if="property.type === FilterType.Numeric" class="h-3 w-3 stroke-emerald-700 dark:stroke-emerald-500" /> +
From e482f7fe0a584ca933a70db53d6e748ffcb7a015 Mon Sep 17 00:00:00 2001 From: andrewwallacespeckle Date: Thu, 11 Sep 2025 18:18:34 +0100 Subject: [PATCH 3/6] fix build --- packages/frontend-2/components/viewer/filters/Panel.vue | 4 ++-- packages/frontend-2/lib/viewer/helpers/filters/types.ts | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/frontend-2/components/viewer/filters/Panel.vue b/packages/frontend-2/components/viewer/filters/Panel.vue index 90d8b56f0..df96326e3 100644 --- a/packages/frontend-2/components/viewer/filters/Panel.vue +++ b/packages/frontend-2/components/viewer/filters/Panel.vue @@ -148,7 +148,7 @@ const propertySelectOptions = computed((): PropertySelectOption[] => { type: filter.type === 'number' ? FilterType.Numeric - : filter.type === 'boolean' + : (filter as { type: string }).type === 'boolean' ? FilterType.Boolean : FilterType.String, hasParent: lastDotIndex !== -1 @@ -222,7 +222,7 @@ const selectProperty = async (propertyKey: string) => { } // Check if this property has too many unique values - const { isLarge, count } = isLargeProperty(propertyKey) + const { isLarge, count } = isLargeProperty(property.key) if (isLarge) { // Store the pending property and show warning diff --git a/packages/frontend-2/lib/viewer/helpers/filters/types.ts b/packages/frontend-2/lib/viewer/helpers/filters/types.ts index f37ebc6bc..ff1499a02 100644 --- a/packages/frontend-2/lib/viewer/helpers/filters/types.ts +++ b/packages/frontend-2/lib/viewer/helpers/filters/types.ts @@ -77,10 +77,8 @@ export type StringFilterData = BaseFilterData & { isDefaultAllSelected?: boolean } -export type BooleanPropertyInfo = { - key: string +export type BooleanPropertyInfo = PropertyInfo & { type: 'boolean' - objectCount: number valueGroups: { value: boolean; ids: string[] }[] } From 4f938cc4ab8d2d30649bcfd66bbfdfda901567a6 Mon Sep 17 00:00:00 2001 From: andrewwallacespeckle Date: Fri, 12 Sep 2025 12:55:33 +0100 Subject: [PATCH 4/6] fix build --- .../frontend-2/lib/viewer/composables/filtering/filtering.ts | 2 +- packages/frontend-2/lib/viewer/helpers/filters/types.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend-2/lib/viewer/composables/filtering/filtering.ts b/packages/frontend-2/lib/viewer/composables/filtering/filtering.ts index 1bd885510..a03b25d9f 100644 --- a/packages/frontend-2/lib/viewer/composables/filtering/filtering.ts +++ b/packages/frontend-2/lib/viewer/composables/filtering/filtering.ts @@ -275,7 +275,7 @@ export function useFilterUtilities( const isBooleanPropertyInfo = ( prop: PropertyInfo | BooleanPropertyInfo ): prop is BooleanPropertyInfo => { - return 'type' in prop && (prop as BooleanPropertyInfo).type === 'boolean' + return prop.type === 'boolean' } const createFilterData = (params: CreateFilterParams): FilterData => { diff --git a/packages/frontend-2/lib/viewer/helpers/filters/types.ts b/packages/frontend-2/lib/viewer/helpers/filters/types.ts index ff1499a02..11e907c2b 100644 --- a/packages/frontend-2/lib/viewer/helpers/filters/types.ts +++ b/packages/frontend-2/lib/viewer/helpers/filters/types.ts @@ -77,7 +77,7 @@ export type StringFilterData = BaseFilterData & { isDefaultAllSelected?: boolean } -export type BooleanPropertyInfo = PropertyInfo & { +export type BooleanPropertyInfo = Omit & { type: 'boolean' valueGroups: { value: boolean; ids: string[] }[] } From eb2fe4f7897bdf461fe304e610375bb650dee132 Mon Sep 17 00:00:00 2001 From: andrewwallacespeckle Date: Fri, 12 Sep 2025 13:17:57 +0100 Subject: [PATCH 5/6] Fix types --- .../components/viewer/filters/Panel.vue | 14 ++++-- .../viewer/selection/KeyValuePair.vue | 12 +++-- .../viewer/composables/filtering/filtering.ts | 47 ++++++++++--------- .../lib/viewer/helpers/filters/types.ts | 16 +++++-- .../lib/viewer/helpers/filters/utils.ts | 40 +++++++++------- .../lib/viewer/helpers/sceneExplorer.ts | 6 +-- 6 files changed, 80 insertions(+), 55 deletions(-) diff --git a/packages/frontend-2/components/viewer/filters/Panel.vue b/packages/frontend-2/components/viewer/filters/Panel.vue index df96326e3..34d5b8fd5 100644 --- a/packages/frontend-2/components/viewer/filters/Panel.vue +++ b/packages/frontend-2/components/viewer/filters/Panel.vue @@ -87,9 +87,11 @@