From f2a33a8e483a072246ab0a0789ae3dcb8f14b35d Mon Sep 17 00:00:00 2001 From: Stefan Dej Date: Fri, 24 Dec 2021 00:35:04 +0100 Subject: [PATCH] fix: recover gcode viewer after switching tabs Signed-off-by: Stefan Dej --- src/components/gcodeviewer/Viewer.vue | 19 +++++++++++++++---- src/store/gcodeviewer/actions.ts | 4 ++++ src/store/gcodeviewer/index.ts | 1 + src/store/gcodeviewer/mutations.ts | 4 ++++ src/store/gcodeviewer/types.ts | 1 + 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/components/gcodeviewer/Viewer.vue b/src/components/gcodeviewer/Viewer.vue index b9d7de50..df0c1007 100644 --- a/src/components/gcodeviewer/Viewer.vue +++ b/src/components/gcodeviewer/Viewer.vue @@ -234,6 +234,7 @@ export default class Viewer extends Mixins(BaseMixin) { async mounted() { this.loadedFile = this.$store.state.gcodeviewer?.loadedFileBackup ?? null + viewer = this.$store.state.gcodeviewer?.viewerBackup ?? null await this.init() @@ -244,6 +245,7 @@ export default class Viewer extends Mixins(BaseMixin) { if (viewer) { viewer.gcodeProcessor.loadingProgressCallback = null this.$store.dispatch('gcodeviewer/setLoadedFileBackup', this.loadedFile) + this.$store.dispatch('gcodeviewer/setViewerBackup', viewer) } window.removeEventListener('resize', this.eventListenerResize) @@ -258,7 +260,7 @@ export default class Viewer extends Mixins(BaseMixin) { } get sdCardFilePath() { - return this.$store.state.printer.print_stats.filename ?? '' + return this.$store.state.printer.print_stats?.filename ?? '' } get currentPosition() { @@ -285,7 +287,14 @@ export default class Viewer extends Mixins(BaseMixin) { canvasElement.className = 'viewer' this.$refs.viewerCanvasContainer.appendChild(canvasElement) await this.$store.dispatch('gcodeviewer/setCanvasBackup', canvasElement) - } else this.$refs.viewerCanvasContainer.appendChild(canvasElement) + } else { + this.$refs.viewerCanvasContainer.appendChild(canvasElement) + window.console.log('init else') + if (viewer?.gcodeProcessor) { + window.console.log('view.gcodeprocessor exists', viewer, viewer?.gcodeProcessor) + viewer.gcodeProcessor.updateFilePosition(viewer?.fileSize) + } + } if (viewer === null) { await this.viewerInit(canvasElement) @@ -373,7 +382,6 @@ export default class Viewer extends Mixins(BaseMixin) { this.zSlider = this.maxZSlider this.loading = false viewer.setCursorVisiblity(this.showCursor) - viewer.gcodeProcessor.updateFilePosition(viewer.fileSize) if (this.loadedFile === this.sdCardFilePath && this.printing_objects.length) { let objects: any = [] @@ -393,6 +401,9 @@ export default class Viewer extends Mixins(BaseMixin) { viewer.buildObjects.loadObjectBoundaries(objects) viewer.buildObjects.showObjectSelection(this.showObjectSelection) } + + window.console.log('finishLoad', viewer.fileSize) + viewer.gcodeProcessor.updateFilePosition(viewer.fileSize) } async fileSelected(e: any) { @@ -521,7 +532,7 @@ export default class Viewer extends Mixins(BaseMixin) { if (newVal > 0 && this.printerIsPrinting && this.tracking && newVal > offset) { viewer.gcodeProcessor.updateFilePosition(newVal - offset) } else { - viewer.gcodeProcessor.updateFilePosition(0) + viewer.gcodeProcessor.updateFilePosition(viewer.fileSize) } } diff --git a/src/store/gcodeviewer/actions.ts b/src/store/gcodeviewer/actions.ts index 1345253b..928a6c4b 100644 --- a/src/store/gcodeviewer/actions.ts +++ b/src/store/gcodeviewer/actions.ts @@ -7,6 +7,10 @@ export const actions: ActionTree = { commit('reset') }, + setViewerBackup({ commit }, backup) { + commit('setViewerBackup', backup) + }, + setCanvasBackup({ commit }, backup) { commit('setCanvasBackup', backup) }, diff --git a/src/store/gcodeviewer/index.ts b/src/store/gcodeviewer/index.ts index bce62414..49deb77d 100644 --- a/src/store/gcodeviewer/index.ts +++ b/src/store/gcodeviewer/index.ts @@ -6,6 +6,7 @@ import { getters } from '@/store/gcodeviewer/getters' export const getDefaultState = (): GcodeviewerState => { return { + viewerBackup: null, canvasBackup: null, loadedFileBackup: null } diff --git a/src/store/gcodeviewer/mutations.ts b/src/store/gcodeviewer/mutations.ts index 69b7359a..a4b1cac6 100644 --- a/src/store/gcodeviewer/mutations.ts +++ b/src/store/gcodeviewer/mutations.ts @@ -8,6 +8,10 @@ export const mutations: MutationTree = { Object.assign(state, getDefaultState()) }, + setViewerBackup(state, backup) { + Vue.set(state, 'viewerBackup', backup) + }, + setCanvasBackup(state, backup) { Vue.set(state, 'canvasBackup', backup) }, diff --git a/src/store/gcodeviewer/types.ts b/src/store/gcodeviewer/types.ts index 6a7b7500..a99e1b35 100644 --- a/src/store/gcodeviewer/types.ts +++ b/src/store/gcodeviewer/types.ts @@ -1,4 +1,5 @@ export interface GcodeviewerState { + viewerBackup: any canvasBackup: any loadedFileBackup: string | null } \ No newline at end of file