From 669e800fa3540f547bf2a3a5fc1b320724c0d304 Mon Sep 17 00:00:00 2001 From: wisonic-s Date: Wed, 1 Nov 2023 17:02:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E6=8F=90=E7=A4=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/TooltipSelector.vue | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/core/core-frontend/src/views/chart/components/editor/editor-style/components/TooltipSelector.vue b/core/core-frontend/src/views/chart/components/editor/editor-style/components/TooltipSelector.vue index 2b74219b3b..a515875ab4 100644 --- a/core/core-frontend/src/views/chart/components/editor/editor-style/components/TooltipSelector.vue +++ b/core/core-frontend/src/views/chart/components/editor/editor-style/components/TooltipSelector.vue @@ -69,7 +69,7 @@ const initSeriesTooltip = () => { ...next, seriesId: next.seriesId ?? next.id, show: index <= quotaAxis.value.length - 1, - summary: 'sum' + summary: COUNT_DE_TYPE.includes(next.deType) ? 'count' : 'sum' } as SeriesFormatter if (seriesAxisMap[tmp.seriesId]) { tmp = { @@ -136,6 +136,18 @@ const AGGREGATION_TYPE = [ { name: t('chart.count'), value: 'count' }, { name: t('chart.count_distinct'), value: 'count_distinct' } ] +const COUNT_AGGREGATION_TYPE = [ + { name: t('chart.count'), value: 'count' }, + { name: t('chart.count_distinct'), value: 'count_distinct' } +] +const COUNT_DE_TYPE = [0, 1, 5] + +const aggregationList = computed(() => { + if (COUNT_DE_TYPE.includes(curSeriesFormatter.value?.deType)) { + return COUNT_AGGREGATION_TYPE + } + return AGGREGATION_TYPE +}) watch( [() => props.chart.customAttr.tooltip, () => props.chart.customAttr.tooltip.show], () => { @@ -188,10 +200,8 @@ const init = () => { formatterSelector.value?.blur() // 新增视图 const formatter = state.tooltipForm.seriesTooltipFormatter - if (!quotaAxis.value?.length) { - if (!formatter.length) { - quotaData.value?.forEach(i => formatter.push({ ...i, seriesId: i.id, show: false })) - } + if (!formatter.length) { + quotaData.value?.forEach(i => formatter.push({ ...i, seriesId: i.id, show: false })) curSeriesFormatter.value = {} return } @@ -209,7 +219,13 @@ const init = () => { } } -const showProperty = prop => props.propertyInner?.includes(prop) +const showProperty = prop => { + const instance = chartViewManager.getChartView(props.chart.render, props.chart.type) + if (instance) { + return instance.propertyInner['tooltip-selector'].includes(prop) + } + return props.propertyInner?.includes(prop) +} const updateSeriesTooltipFormatter = (form: AxisEditForm) => { const { axisType, editType } = form if ( @@ -575,7 +591,7 @@ onMounted(() => { @change="changeTooltipAttr('seriesTooltipFormatter', true)" > Date: Wed, 1 Nov 2023 17:03:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E5=88=87=E6=8D=A2=E8=A7=86=E5=9B=BE?= =?UTF-8?q?=E6=97=B6=E6=95=B0=E6=8D=AE=E9=9B=86=E5=8A=A0=E8=BD=BD=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/dataset-select/DatasetSelect.vue | 23 ----------------- .../views/chart/components/editor/index.vue | 25 ++++++++++++++++++- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/core/core-frontend/src/views/chart/components/editor/dataset-select/DatasetSelect.vue b/core/core-frontend/src/views/chart/components/editor/dataset-select/DatasetSelect.vue index 1cfc8131a2..379f34814f 100644 --- a/core/core-frontend/src/views/chart/components/editor/dataset-select/DatasetSelect.vue +++ b/core/core-frontend/src/views/chart/components/editor/dataset-select/DatasetSelect.vue @@ -173,33 +173,10 @@ const dsClick = (data: Tree) => { } //选中赋值 _modelValue.value = data.id - getFields(data.id, props.viewId) //关闭弹窗 datasetSelectorPopover.value?.hide() } } -const getFields = (id, chartId) => { - if (id && chartId) { - getFieldByDQ(id, chartId) - .then(res => { - state.value.dimension = (res.dimensionList as unknown as Field[]) || [] - state.value.quota = (res.quotaList as unknown as Field[]) || [] - state.value.dimensionData = JSON.parse(JSON.stringify(state.value.dimension)) - state.value.quotaData = JSON.parse(JSON.stringify(state.value.quota)) - }) - .catch(() => { - state.value.dimension = [] - state.value.quota = [] - state.value.dimensionData = [] - state.value.quotaData = [] - }) - } else { - state.value.dimension = [] - state.value.quota = [] - state.value.dimensionData = [] - state.value.quotaData = [] - } -} const _popoverShow = ref(false) function onPopoverShow() { _popoverShow.value = true diff --git a/core/core-frontend/src/views/chart/components/editor/index.vue b/core/core-frontend/src/views/chart/components/editor/index.vue index f578dc4317..693f9c8c09 100644 --- a/core/core-frontend/src/views/chart/components/editor/index.vue +++ b/core/core-frontend/src/views/chart/components/editor/index.vue @@ -49,6 +49,7 @@ import chartViewManager from '@/views/chart/components/js/panel' import DatasetSelect from '@/views/chart/components/editor/dataset-select/DatasetSelect.vue' import { useDraggable } from '@vueuse/core' import { set, concat, keys } from 'lodash-es' +import { Field, getFieldByDQ } from '@/api/chart' const snapshotStore = snapshotStoreWithOut() const dvMainStore = dvMainStoreWithOut() @@ -146,6 +147,7 @@ const state = reactive({ watch( [() => view.value['tableId']], () => { + getFields(props.view.tableId, props.view.id) const nodeId = view.value['tableId'] if (!!nodeId) { cacheId = nodeId as unknown as string @@ -157,7 +159,28 @@ watch( }, { deep: true } ) - +const getFields = (id, chartId) => { + if (id && chartId) { + getFieldByDQ(id, chartId) + .then(res => { + state.dimension = (res.dimensionList as unknown as Field[]) || [] + state.quota = (res.quotaList as unknown as Field[]) || [] + state.dimensionData = JSON.parse(JSON.stringify(state.dimension)) + state.quotaData = JSON.parse(JSON.stringify(state.quota)) + }) + .catch(() => { + state.dimension = [] + state.quota = [] + state.dimensionData = [] + state.quotaData = [] + }) + } else { + state.dimension = [] + state.quota = [] + state.dimensionData = [] + state.quotaData = [] + } +} watch( [() => state.searchField], newVal => {