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" /> +