From 4b8963a79460564c5d7288ef0ca350d7616acecf Mon Sep 17 00:00:00 2001 From: Yongtae Park Date: Thu, 23 Jan 2025 21:52:34 +0900 Subject: [PATCH] chore(data-table): solve data-table project-group filter bug Signed-off-by: samuel.park --- .../_components/WidgetFormDataTableCardAddForm.vue | 4 ++-- .../_components/WidgetFormDataTableCardFilters.vue | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardAddForm.vue b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardAddForm.vue index e1ed29db6b..3a32284605 100644 --- a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardAddForm.vue +++ b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardAddForm.vue @@ -155,8 +155,8 @@ const assetFilterState = reactive({ metricItems: computed(() => assetFilterState.refinedLabelKeys.map((d) => ({ name: d.key, label: d.name }))), metricFilterItems: computed(() => { const _refinedLabelKeys = cloneDeep(assetFilterState.refinedLabelKeys); - const projectLabelInfoIndex = _refinedLabelKeys.find((d) => d.key === 'project_id'); - if (projectLabelInfoIndex) { + const projectLabelInfoIndex = _refinedLabelKeys.findIndex((d) => d.key === 'project_id'); + if (projectLabelInfoIndex > -1) { _refinedLabelKeys.splice(projectLabelInfoIndex, 0, PROJECT_GROUP_LABEL_INFO); } return _refinedLabelKeys.map((d) => ({ diff --git a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardFilters.vue b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardFilters.vue index c308441cb0..e203e76762 100644 --- a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardFilters.vue +++ b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardFilters.vue @@ -5,6 +5,7 @@ import { } from 'vue'; import { + cloneDeep, debounce, isArray, isEmpty, unset, @@ -47,6 +48,7 @@ import { useWidgetGenerateStore } from '@/common/modules/widgets/_store/widget-g import type { DataTableQueryFilterForDropdown } from '@/common/modules/widgets/types/widget-data-table-type'; import type { DataTableSourceType, DataTableQueryFilter } from '@/common/modules/widgets/types/widget-model'; +import { PROJECT_GROUP_LABEL_INFO } from '@/services/asset-inventory-v1/constants/asset-analysis-constant'; import { GROUP_BY } from '@/services/cost-explorer/constants/cost-explorer-constant'; @@ -119,10 +121,15 @@ const state = reactive({ const assetFilterState = reactive({ refinedLabelKeys: computed(() => { const metricLabelsInfo = storeState.metrics[props.sourceId ?? ''].data.labels_info; - return metricLabelsInfo ? metricLabelsInfo.filter((labelInfo) => { + const _refinedLabelKeys = cloneDeep(metricLabelsInfo || []); + const projectLabelInfoIndex = _refinedLabelKeys.findIndex((d) => d.key === 'project_id'); + if (projectLabelInfoIndex > -1) { + _refinedLabelKeys.splice(projectLabelInfoIndex, 0, PROJECT_GROUP_LABEL_INFO); + } + return _refinedLabelKeys.filter((labelInfo) => { if (storeState.isAdminMode) return true; return labelInfo.key !== 'workspace_id'; - }) : []; + }); }), });