fix: recover gcode viewer after switching tabs
Signed-off-by: Stefan Dej <meteyou@gmail.com>
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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)
|
||||||
},
|
},
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
@@ -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)
|
||||||
},
|
},
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
export interface GcodeviewerState {
|
export interface GcodeviewerState {
|
||||||
|
viewerBackup: any
|
||||||
canvasBackup: any
|
canvasBackup: any
|
||||||
loadedFileBackup: string | null
|
loadedFileBackup: string | null
|
||||||
}
|
}
|
Reference in New Issue
Block a user