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
No known key found for this signature in database
GPG Key ID: 5D3A5823133D2246
5 changed files with 25 additions and 4 deletions

View File

@ -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)
}
}

View File

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

View File

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

View File

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

View File

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