fix: recover gcode viewer after switching tabs

Signed-off-by: Stefan Dej <meteyou@gmail.com>
This commit is contained in:
Stefan Dej
2021-12-24 00:35:04 +01:00
parent 9df182f44a
commit f2a33a8e48
5 changed files with 25 additions and 4 deletions

View File

@@ -234,6 +234,7 @@ export default class Viewer extends Mixins(BaseMixin) {
async mounted() { async mounted() {
this.loadedFile = this.$store.state.gcodeviewer?.loadedFileBackup ?? null this.loadedFile = this.$store.state.gcodeviewer?.loadedFileBackup ?? null
viewer = this.$store.state.gcodeviewer?.viewerBackup ?? null
await this.init() await this.init()
@@ -244,6 +245,7 @@ export default class Viewer extends Mixins(BaseMixin) {
if (viewer) { if (viewer) {
viewer.gcodeProcessor.loadingProgressCallback = null viewer.gcodeProcessor.loadingProgressCallback = null
this.$store.dispatch('gcodeviewer/setLoadedFileBackup', this.loadedFile) this.$store.dispatch('gcodeviewer/setLoadedFileBackup', this.loadedFile)
this.$store.dispatch('gcodeviewer/setViewerBackup', viewer)
} }
window.removeEventListener('resize', this.eventListenerResize) window.removeEventListener('resize', this.eventListenerResize)
@@ -258,7 +260,7 @@ export default class Viewer extends Mixins(BaseMixin) {
} }
get sdCardFilePath() { get sdCardFilePath() {
return this.$store.state.printer.print_stats.filename ?? '' return this.$store.state.printer.print_stats?.filename ?? ''
} }
get currentPosition() { get currentPosition() {
@@ -285,7 +287,14 @@ export default class Viewer extends Mixins(BaseMixin) {
canvasElement.className = 'viewer' canvasElement.className = 'viewer'
this.$refs.viewerCanvasContainer.appendChild(canvasElement) this.$refs.viewerCanvasContainer.appendChild(canvasElement)
await this.$store.dispatch('gcodeviewer/setCanvasBackup', 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) { if (viewer === null) {
await this.viewerInit(canvasElement) await this.viewerInit(canvasElement)
@@ -373,7 +382,6 @@ export default class Viewer extends Mixins(BaseMixin) {
this.zSlider = this.maxZSlider this.zSlider = this.maxZSlider
this.loading = false this.loading = false
viewer.setCursorVisiblity(this.showCursor) viewer.setCursorVisiblity(this.showCursor)
viewer.gcodeProcessor.updateFilePosition(viewer.fileSize)
if (this.loadedFile === this.sdCardFilePath && this.printing_objects.length) { if (this.loadedFile === this.sdCardFilePath && this.printing_objects.length) {
let objects: any = [] let objects: any = []
@@ -393,6 +401,9 @@ export default class Viewer extends Mixins(BaseMixin) {
viewer.buildObjects.loadObjectBoundaries(objects) viewer.buildObjects.loadObjectBoundaries(objects)
viewer.buildObjects.showObjectSelection(this.showObjectSelection) viewer.buildObjects.showObjectSelection(this.showObjectSelection)
} }
window.console.log('finishLoad', viewer.fileSize)
viewer.gcodeProcessor.updateFilePosition(viewer.fileSize)
} }
async fileSelected(e: any) { async fileSelected(e: any) {
@@ -521,7 +532,7 @@ export default class Viewer extends Mixins(BaseMixin) {
if (newVal > 0 && this.printerIsPrinting && this.tracking && newVal > offset) { if (newVal > 0 && this.printerIsPrinting && this.tracking && newVal > offset) {
viewer.gcodeProcessor.updateFilePosition(newVal - offset) viewer.gcodeProcessor.updateFilePosition(newVal - offset)
} else { } else {
viewer.gcodeProcessor.updateFilePosition(0) viewer.gcodeProcessor.updateFilePosition(viewer.fileSize)
} }
} }

View File

@@ -7,6 +7,10 @@ export const actions: ActionTree<GcodeviewerState, RootState> = {
commit('reset') commit('reset')
}, },
setViewerBackup({ commit }, backup) {
commit('setViewerBackup', backup)
},
setCanvasBackup({ commit }, backup) { setCanvasBackup({ commit }, backup) {
commit('setCanvasBackup', backup) commit('setCanvasBackup', backup)
}, },

View File

@@ -6,6 +6,7 @@ import { getters } from '@/store/gcodeviewer/getters'
export const getDefaultState = (): GcodeviewerState => { export const getDefaultState = (): GcodeviewerState => {
return { return {
viewerBackup: null,
canvasBackup: null, canvasBackup: null,
loadedFileBackup: null loadedFileBackup: null
} }

View File

@@ -8,6 +8,10 @@ export const mutations: MutationTree<GcodeviewerState> = {
Object.assign(state, getDefaultState()) Object.assign(state, getDefaultState())
}, },
setViewerBackup(state, backup) {
Vue.set(state, 'viewerBackup', backup)
},
setCanvasBackup(state, backup) { setCanvasBackup(state, backup) {
Vue.set(state, 'canvasBackup', backup) Vue.set(state, 'canvasBackup', backup)
}, },

View File

@@ -1,4 +1,5 @@
export interface GcodeviewerState { export interface GcodeviewerState {
viewerBackup: any
canvasBackup: any canvasBackup: any
loadedFileBackup: string | null loadedFileBackup: string | null
} }