Merge pull request #6492 from dataease/pr@dev-v2@fix_tooltip

Pr@dev v2@fix tooltip
This commit is contained in:
wisonic-s 2023-11-01 17:04:38 +08:00 committed by GitHub
commit 3b6df22e0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 31 deletions

View File

@ -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

View File

@ -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)"
>
<el-option
v-for="item in AGGREGATION_TYPE"
v-for="item in aggregationList"
:label="item.name"
:value="item.value"
:key="item.value"

View File

@ -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 => {