Merge pull request #5895 from dataease/pr@dev@refactor_panel-linkage

refactor(仪表板): 当源视图多个个字段匹配目标视图一个字段的时,默认仅保留当前点击的维度值匹配 #5769
This commit is contained in:
王嘉豪 2023-08-14 14:05:47 +08:00 committed by GitHub
commit 13a67bb05d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -363,10 +363,16 @@ const data = {
// 添加联动 下钻 等过滤组件
addViewTrackFilter(state, data) {
const dimensionSort = deepCopy(data.dimensionList)
const viewId = data.viewId
let trackInfo
if (data.option === 'linkage') {
trackInfo = state.nowPanelTrackInfo
// 兼容情况,当源视图多个个字段匹配目标视图一个字段的时候,默认只保留当前点击的维度,将改维度排序到组件结尾,去重时即可保留
const activeDimensionIndex = data.dimensionList.findIndex(dimension =>dimension.id === data.name)
const dimensionLast = dimensionSort[dimensionSort.length-1]
dimensionSort[dimensionSort.length-1] = dimensionSort[activeDimensionIndex]
dimensionSort[activeDimensionIndex] = dimensionLast
} else {
trackInfo = state.nowPanelJumpInfoTargetPanel
}
@ -379,7 +385,7 @@ const data = {
const currentFilters = element.linkageFilters || [] // 当前联动filter
data.dimensionList.forEach(dimension => {
dimensionSort.forEach(dimension => {
const sourceInfo = viewId + '#' + dimension.id
// 获取所有目标联动信息
const targetInfoList = trackInfo[sourceInfo] || []
@ -394,7 +400,7 @@ const data = {
while (j--) {
const filter = currentFilters[j]
// 兼容性准备 viewIds 只会存放一个值
if (targetFieldId === filter.fieldId && filter.viewIds.includes(targetViewId)) {
if (targetFieldId === filter.fieldId && filter.viewIds.includes(targetViewId) && filter.value[0] !== data.value) {
currentFilters.splice(j, 1)
}
}
@ -414,7 +420,7 @@ const data = {
// 联动的视图情况历史条件
// const currentFilters = []
data.dimensionList.forEach(dimension => {
dimensionSort.forEach(dimension => {
const sourceInfo = viewId + '#' + dimension.id
// 获取所有目标联动信息
const targetInfoList = trackInfo[sourceInfo] || []