From a52a5ca3384e5d782108ddb7c4709dda02d28667 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Fri, 20 Nov 2015 11:40:06 +0100 Subject: [PATCH] GCodeViewer: Even if off screen render 100% view on PrintDone event Otherwise the GCODE Viewer will get stuck "half way through" if "sync with progress" is enabled but the tab/browser tab loses focus during printing and only regains it after the print has finished. --- .../static/js/app/viewmodels/gcode.js | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/octoprint/static/js/app/viewmodels/gcode.js b/src/octoprint/static/js/app/viewmodels/gcode.js index d82c0801..4f82f6f5 100644 --- a/src/octoprint/static/js/app/viewmodels/gcode.js +++ b/src/octoprint/static/js/app/viewmodels/gcode.js @@ -342,6 +342,21 @@ $(function() { self._processData(data); }; + self._renderPercentage = function(percentage) { + var cmdIndex = GCODE.gCodeReader.getCmdIndexForPercentage(percentage); + if (!cmdIndex) return; + + GCODE.renderer.render(cmdIndex.layer, 0, cmdIndex.cmd); + GCODE.ui.updateLayerInfo(cmdIndex.layer); + + if (self.layerSlider != undefined) { + self.layerSlider.slider("setValue", cmdIndex.layer); + } + if (self.layerCommandSlider != undefined) { + self.layerCommandSlider.slider("setValue", [0, cmdIndex.cmd]); + } + }; + self._processData = function(data) { if (!data.job.file || !data.job.file.name && (self.loadedFilename || self.loadedFileDate)) { self.waitForApproval(false); @@ -362,18 +377,7 @@ $(function() { && self.loadedFilename == data.job.file.name && self.loadedFileDate == data.job.file.date) { if (self.tabTracking.browserTabVisible && self.tabActive && self.currentlyPrinting && self.renderer_syncProgress() && !self.waitForApproval()) { - var cmdIndex = GCODE.gCodeReader.getCmdIndexForPercentage(data.progress.completion); - if(cmdIndex){ - GCODE.renderer.render(cmdIndex.layer, 0, cmdIndex.cmd); - GCODE.ui.updateLayerInfo(cmdIndex.layer); - - if (self.layerSlider != undefined) { - self.layerSlider.slider("setValue", cmdIndex.layer); - } - if (self.layerCommandSlider != undefined) { - self.layerCommandSlider.slider("setValue", [0, cmdIndex.cmd]); - } - } + self._renderPercentage(data.progress.completion); } self.errorCount = 0 } else { @@ -397,6 +401,12 @@ $(function() { } }; + self.onEventPrintDone = function() { + if (self.renderer_syncProgress() && !self.waitForApproval()) { + self._renderPercentage(100.0); + } + }; + self.approveLargeFile = function() { self.waitForApproval(false); self.loadFile(self.selectedFile.name(), self.selectedFile.date());