From 0796a7f245253bc7c1362ed313c15b92392ced25 Mon Sep 17 00:00:00 2001
From: wangjiahao <1522128093@qq.com>
Date: Sat, 11 May 2024 15:30:27 +0800
Subject: [PATCH] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E5=A4=A7=E5=B1=8F):=20?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=A7=E5=B1=8F=E6=94=AF=E6=8C=81=E5=89=8D?=
=?UTF-8?q?=E7=AB=AF=E7=BC=93=E5=AD=98=EF=BC=8C=E5=BC=82=E5=B8=B8=E9=80=80?=
=?UTF-8?q?=E5=87=BA=E5=8F=AF=E6=81=A2=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../data-visualization/DvToolbar.vue | 4 ++
.../modules/data-visualization/snapshot.ts | 4 +-
.../src/views/dashboard/index.vue | 2 +-
.../src/views/data-visualization/index.vue | 72 ++++++++++++++-----
4 files changed, 61 insertions(+), 21 deletions(-)
diff --git a/core/core-frontend/src/components/data-visualization/DvToolbar.vue b/core/core-frontend/src/components/data-visualization/DvToolbar.vue
index f9d08e8d65..6fe0577cf9 100644
--- a/core/core-frontend/src/components/data-visualization/DvToolbar.vue
+++ b/core/core-frontend/src/components/data-visualization/DvToolbar.vue
@@ -17,6 +17,7 @@ import { canvasSave } from '@/utils/canvasUtils'
import { changeSizeWithScale } from '@/utils/changeComponentsSizeWithScale'
import MoreComGroup from '@/custom-component/component-group/MoreComGroup.vue'
import { XpackComponent } from '@/components/plugin'
+import { useCache } from '@/hooks/web/useCache'
let nameEdit = ref(false)
let inputName = ref('')
let nameInput = ref(null)
@@ -27,6 +28,7 @@ const resourceGroupOpt = ref(null)
const dvToolbarMain = ref(null)
const { canvasStyleData, dvInfo, editMode } = storeToRefs(dvMainStore)
let scaleEdit = 100
+const { wsCache } = useCache('localStorage')
const closeEditCanvasName = () => {
nameEdit.value = false
@@ -87,6 +89,7 @@ const saveCanvasWithCheck = () => {
}
const saveResource = () => {
+ wsCache.delete('DE-DV-CATCH-' + dvInfo.value.id)
if (styleChangeTimes.value > 0) {
snapshotStore.resetStyleChangeTimes()
canvasSave(() => {
@@ -140,6 +143,7 @@ const backHandler = (url: string) => {
openHandler.value.invokeMethod(pm)
return
}
+ wsCache.delete('DE-DV-CATCH-' + dvInfo.value.id)
window.open(url, '_self')
}
const openHandler = ref(null)
diff --git a/core/core-frontend/src/store/modules/data-visualization/snapshot.ts b/core/core-frontend/src/store/modules/data-visualization/snapshot.ts
index cbfec71bff..24c2ee548c 100644
--- a/core/core-frontend/src/store/modules/data-visualization/snapshot.ts
+++ b/core/core-frontend/src/store/modules/data-visualization/snapshot.ts
@@ -86,8 +86,8 @@ export const snapshotStore = defineStore('snapshot', {
dvMainStore.setComponentData(snapshotInfo.componentData)
dvMainStore.setCanvasStyle(snapshotInfo.canvasStyleData)
dvMainStore.setCanvasViewInfo(snapshotInfo.canvasViewInfo)
- dvMainStore.setNowPanelJumpInfoInner(snapshotInfo.nowPanelTrackInfo)
- dvMainStore.setNowPanelJumpInfo(snapshotInfo.nowPanelJumpInfo)
+ dvMainStore.setNowPanelJumpInfoInner(snapshotInfo.nowPanelJumpInfo)
+ dvMainStore.setNowPanelTrackInfo(snapshotInfo.nowPanelTrackInfo)
dvMainStore.updateCurDvInfo(snapshotInfo.dvInfo)
const curCacheViewIdInfo = deepCopy(this.cacheViewIdInfo)
this.cacheViewIdInfo = snapshotInfo.cacheViewIdInfo
diff --git a/core/core-frontend/src/views/dashboard/index.vue b/core/core-frontend/src/views/dashboard/index.vue
index 75b02f10d4..7ffcdc009c 100644
--- a/core/core-frontend/src/views/dashboard/index.vue
+++ b/core/core-frontend/src/views/dashboard/index.vue
@@ -120,8 +120,8 @@ const doUseCache = flag => {
}, 1500)
} else {
initLocalCanvasData()
+ wsCache.delete('DE-DV-CATCH-' + state.resourceId)
}
- wsCache.delete('DE-DV-CATCH-' + state.resourceId)
}
const initLocalCanvasData = () => {
diff --git a/core/core-frontend/src/views/data-visualization/index.vue b/core/core-frontend/src/views/data-visualization/index.vue
index bed63af1da..36cd3f5919 100644
--- a/core/core-frontend/src/views/data-visualization/index.vue
+++ b/core/core-frontend/src/views/data-visualization/index.vue
@@ -36,6 +36,8 @@ import { interactiveStoreWithOut } from '@/store/modules/interactive'
import { watermarkFind } from '@/api/watermark'
import { XpackComponent } from '@/components/plugin'
import { Base64 } from 'js-base64'
+import CanvasCacheDialog from '@/components/visualization/CanvasCacheDialog.vue'
+import { deepCopy } from '@/utils/utils'
const interactiveStore = interactiveStoreWithOut()
const embeddedStore = useEmbedded()
const { wsCache } = useCache()
@@ -58,6 +60,8 @@ const dvMainStore = dvMainStoreWithOut()
const snapshotStore = snapshotStoreWithOut()
const contextmenuStore = contextmenuStoreWithOut()
const composeStore = composeStoreWithOut()
+const canvasCacheOutRef = ref(null)
+
const {
componentData,
curComponent,
@@ -77,7 +81,10 @@ const state = reactive({
datasetTree: [],
scaleHistory: 100,
canvasId: 'canvas-main',
- canvasInitStatus: false
+ canvasInitStatus: false,
+ sourcePid: null,
+ resourceId: null,
+ opt: null
})
const contentStyle = computed(() => {
@@ -177,6 +184,42 @@ const initScroll = () => {
canvasOut.value.scrollTo(scrollX, scrollY)
})
}
+const doUseCache = flag => {
+ const canvasCache = wsCache.get('DE-DV-CATCH-' + state.resourceId)
+ if (flag && canvasCache) {
+ const canvasCacheSeries = deepCopy(canvasCache)
+ snapshotStore.snapshotPublish(canvasCacheSeries)
+ state.canvasInitStatus = true
+ nextTick(() => {
+ dvMainStore.setDataPrepareState(true)
+ snapshotStore.recordSnapshotCache('renderChart')
+ })
+ } else {
+ initLocalCanvasData()
+ wsCache.delete('DE-DV-CATCH-' + state.resourceId)
+ }
+}
+
+const initLocalCanvasData = () => {
+ const { opt, sourcePid, resourceId } = state
+ const busiFlg = opt === 'copy' ? 'dataV-copy' : 'dataV'
+ initCanvasData(resourceId, busiFlg, function () {
+ state.canvasInitStatus = true
+ // afterInit
+ nextTick(() => {
+ dvMainStore.setDataPrepareState(true)
+ snapshotStore.recordSnapshotCache('renderChart')
+ if (dvInfo.value && opt === 'copy') {
+ dvInfo.value.dataState = 'prepare'
+ dvInfo.value.optType = 'copy'
+ dvInfo.value.pid = sourcePid
+ setTimeout(() => {
+ snapshotStore.recordSnapshotCache('renderChart')
+ }, 1500)
+ }
+ })
+ })
+}
const previewScaleChange = () => {
state.scaleHistory = canvasStyleData.value.scale
@@ -229,25 +272,17 @@ onMounted(async () => {
return
}
initDataset()
+ state.resourceId = dvId
+ state.sourcePid = pid
+ state.opt = opt
if (dvId) {
state.canvasInitStatus = false
- const busiFlg = opt === 'copy' ? 'dataV-copy' : 'dataV'
- initCanvasData(dvId, busiFlg, function () {
- state.canvasInitStatus = true
- // afterInit
- nextTick(() => {
- dvMainStore.setDataPrepareState(true)
- snapshotStore.recordSnapshotCache('renderChart')
- if (dvInfo.value && opt === 'copy') {
- dvInfo.value.dataState = 'prepare'
- dvInfo.value.optType = 'copy'
- dvInfo.value.pid = pid
- setTimeout(() => {
- snapshotStore.recordSnapshotCache('renderChart')
- }, 1500)
- }
- })
- })
+ const canvasCache = wsCache.get('DE-DV-CATCH-' + dvId)
+ if (canvasCache) {
+ canvasCacheOutRef.value?.dialogInit({ canvasType: 'dataV', resourceId: dvId })
+ } else {
+ initLocalCanvasData()
+ }
} else if (opt && opt === 'create') {
state.canvasInitStatus = false
let watermarkBaseInfo
@@ -404,6 +439,7 @@ eventBus.on('handleNew', handleNew)
@loaded="XpackLoaded"
@load-fail="XpackLoaded"
/>
+