Merge pull request #9084 from dataease/pr@dev-v2@refactor_drill

refactor(仪表板): 调整下钻和联动同时触发时,弹出框的显示逻辑 #8701
This commit is contained in:
王嘉豪 2024-04-12 18:39:04 +08:00 committed by GitHub
commit fada7d3514
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 43 additions and 29 deletions

View File

@ -34,6 +34,7 @@ const state = reactive({
i18n_map: {
drill: t('visualization.drill'),
linkage: t('visualization.linkage'),
linkageAndDrill: t('visualization.linkage_and_drill'),
jump: t('visualization.jump')
}
})
@ -58,10 +59,6 @@ defineExpose({
font-size: 12px;
}
:deep(ul) {
width: 80px;
}
:deep(.ed-dropdown__popper) {
position: static !important;
}

View File

@ -2041,6 +2041,7 @@ export default {
save: '保存',
drill: '下钻',
linkage: '联动',
linkage_and_drill: '联动和下钻',
jump: '跳转',
cancel_linkage: '取消联动',
switch_picture: '更换图片',

View File

@ -200,12 +200,6 @@ const action = param => {
if (trackMenu.value.length < 2) {
//
trackClick(trackMenu.value[0])
} else if (
props.element.actionSelection.linkageActive === 'auto' &&
trackMenu.value.length === 2 &&
!trackMenu.value.includes('jump')
) {
trackClickPre('linkage')
} else {
//
state.trackBarStyle.left = param.x - 50 + 'px'
@ -213,20 +207,6 @@ const action = param => {
viewTrack.value.trackButtonClick()
}
}
const trackClickPre = trackAction => {
if (
props.element.actionSelection.linkageActive === 'auto' &&
trackMenu.value.length === 2 &&
trackAction === 'linkage' &&
!trackMenu.value.includes('jump')
) {
trackMenu.value.forEach(action => {
trackClick(action)
})
} else {
trackClick(trackAction)
}
}
const trackClick = trackAction => {
const param = state.pointParam
@ -256,6 +236,10 @@ const trackClick = trackAction => {
}
switch (trackAction) {
case 'linkageAndDrill':
dvMainStore.addViewTrackFilter(linkageParam)
emit('onChartClick', param)
break
case 'drill':
emit('onChartClick', param)
break
@ -272,7 +256,7 @@ const trackClick = trackAction => {
}
const trackMenu = computed(() => {
const trackMenuInfo = []
let trackMenuInfo = []
//
if (!['multiplexing', 'viewDialog'].includes(showPosition.value)) {
let linkageCount = 0
@ -293,6 +277,16 @@ const trackMenu = computed(() => {
trackMenuInfo.push('jump')
linkageCount && view.value?.linkageActive && trackMenuInfo.push('linkage')
view.value.drillFields.length && trackMenuInfo.push('drill')
// jump linkage drill '' ''
if (trackMenuInfo.length === 3 && props.element.actionSelection.linkageActive === 'auto') {
trackMenuInfo = ['jump', 'linkageAndDrill']
} else if (
trackMenuInfo.length === 2 &&
props.element.actionSelection.linkageActive === 'auto' &&
!trackMenuInfo.includes('jump')
) {
trackMenuInfo = ['linkageAndDrill']
}
}
return trackMenuInfo
})
@ -340,7 +334,7 @@ onBeforeUnmount(() => {
:track-menu="trackMenu"
class="track-bar"
:style="state.trackBarStyle"
@trackClick="trackClickPre"
@trackClick="trackClick"
/>
<div v-if="!isError" ref="chartContainer" class="canvas-content" :id="containerId"></div>
<chart-error v-else :err-msg="errMsg" />

View File

@ -32,6 +32,14 @@ const { nowPanelTrackInfo, nowPanelJumpInfo, mobileInPc } = storeToRefs(dvMainSt
const { emitter } = useEmitt()
const props = defineProps({
element: {
type: Object,
default() {
return {
propValue: null
}
}
},
view: {
type: Object as PropType<ChartObj>,
default() {
@ -269,6 +277,10 @@ const trackClick = trackAction => {
sourceType: state.pointParam.data.sourceType
}
switch (trackAction) {
case 'linkageAndDrill':
dvMainStore.addViewTrackFilter(linkageParam)
emit('onChartClick', param)
break
case 'drill':
emit('onChartClick', param)
break
@ -285,7 +297,7 @@ const trackClick = trackAction => {
}
const trackMenu = computed(() => {
const trackMenuInfo = []
let trackMenuInfo = []
if (showPosition.value === 'viewDialog') {
return trackMenuInfo
}
@ -307,6 +319,16 @@ const trackMenu = computed(() => {
trackMenuInfo.push('jump')
linkageCount && view.value?.linkageActive && trackMenuInfo.push('linkage')
view.value.drillFields.length && trackMenuInfo.push('drill')
// jump linkage drill '' ''
if (trackMenuInfo.length === 3 && props.element.actionSelection.linkageActive === 'auto') {
trackMenuInfo = ['jump', 'linkageAndDrill']
} else if (
trackMenuInfo.length === 2 &&
props.element.actionSelection.linkageActive === 'auto' &&
!trackMenuInfo.includes('jump')
) {
trackMenuInfo = ['linkageAndDrill']
}
return trackMenuInfo
})

View File

@ -153,13 +153,13 @@ const trackMenu = computed<Array<string>>(() => {
})
const hasLinkIcon = computed(() => {
return trackMenu.value.indexOf('linkage') > -1
return trackMenu.value.indexOf('linkage') > -1 || trackMenu.value.indexOf('linkageAndDrill')
})
const hasJumpIcon = computed(() => {
return trackMenu.value.indexOf('jump') > -1 && !mobileInPc.value
})
const hasDrillIcon = computed(() => {
return trackMenu.value.indexOf('drill') > -1
return trackMenu.value.indexOf('drill') > -1 || trackMenu.value.indexOf('linkageAndDrill')
})
const loading = ref(false)