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: { i18n_map: {
drill: t('visualization.drill'), drill: t('visualization.drill'),
linkage: t('visualization.linkage'), linkage: t('visualization.linkage'),
linkageAndDrill: t('visualization.linkage_and_drill'),
jump: t('visualization.jump') jump: t('visualization.jump')
} }
}) })
@ -58,10 +59,6 @@ defineExpose({
font-size: 12px; font-size: 12px;
} }
:deep(ul) {
width: 80px;
}
:deep(.ed-dropdown__popper) { :deep(.ed-dropdown__popper) {
position: static !important; position: static !important;
} }

View File

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

View File

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

View File

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

View File

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