diff --git a/octoprint/static/gcodeviewer/js/gCodeReader.js b/octoprint/static/gcodeviewer/js/gCodeReader.js index 1cb7210..9863671 100644 --- a/octoprint/static/gcodeviewer/js/gCodeReader.js +++ b/octoprint/static/gcodeviewer/js/gCodeReader.js @@ -23,6 +23,7 @@ GCODE.gCodeReader = (function(){ purgeEmptyLayers: true, analyzeModel: false }; + var linesCmdIndex = {}; var prepareGCode = function(){ if(!lines)return; @@ -60,6 +61,16 @@ GCODE.gCodeReader = (function(){ delete tmpModel; }; + var prepareLinesIndex = function(){ + linesCmdIndex = {}; + + for (var l in model){ + for (var i=0; i< model[l].length; i++){ + linesCmdIndex[model[l][i].gcodeLine] = {layer: l, cmd: i}; + } + } + } + var purgeLayers = function(){ var purge=true; if(!model){ @@ -120,6 +131,7 @@ GCODE.gCodeReader = (function(){ if(gCodeOptions["sortLayers"])sortLayers(); // console.log(model); if(gCodeOptions["purgeEmptyLayers"])purgeLayers(); + prepareLinesIndex(); // console.log(model); GCODE.renderer.doRender(model, 0); // GCODE.renderer3d.setModel(model); @@ -175,6 +187,9 @@ GCODE.gCodeReader = (function(){ var i=0; var result = {first: model[layer][fromSegments].gcodeLine, last: model[layer][toSegments].gcodeLine}; return result; + }, + getLinesCmdIndex: function(line){ + return linesCmdIndex[line]; } } }()); diff --git a/octoprint/static/js/ui.js b/octoprint/static/js/ui.js index 4f0306c..095ea4e 100644 --- a/octoprint/static/js/ui.js +++ b/octoprint/static/js/ui.js @@ -814,7 +814,27 @@ function WebcamViewModel() { } } -function DataUpdater(connectionViewModel, printerStateViewModel, temperatureViewModel, controlsViewModel, speedViewModel, terminalViewModel, webcamViewModel) { +function GcodeViewModel() { + var self = this; + + self.fromHistoryData = function(data) { + self._processProgressData(data.progress); + } + + self.fromCurrentData = function(data) { + self._processProgressData(data.progress); + } + + self._processProgressData = function(data) { + var cmdIndex = GCODE.gCodeReader.getLinesCmdIndex(data.progress); + if(cmdIndex){ + GCODE.renderer.render(cmdIndex.layer, 0, cmdIndex.cmd); + } + } + +} + +function DataUpdater(connectionViewModel, printerStateViewModel, temperatureViewModel, controlsViewModel, speedViewModel, terminalViewModel, webcamViewModel, gcodeViewModel) { var self = this; self.connectionViewModel = connectionViewModel; @@ -824,6 +844,7 @@ function DataUpdater(connectionViewModel, printerStateViewModel, temperatureView self.terminalViewModel = terminalViewModel; self.speedViewModel = speedViewModel; self.webcamViewModel = webcamViewModel; + self.gcodeViewModel = gcodeViewModel; self._socket = io.connect(); self._socket.on("connect", function() { @@ -854,6 +875,7 @@ function DataUpdater(connectionViewModel, printerStateViewModel, temperatureView self.controlsViewModel.fromHistoryData(data); self.terminalViewModel.fromHistoryData(data); self.webcamViewModel.fromHistoryData(data); + self.gcodeViewModel.fromHistoryData(data); }) self._socket.on("current", function(data) { self.connectionViewModel.fromCurrentData(data); @@ -862,6 +884,7 @@ function DataUpdater(connectionViewModel, printerStateViewModel, temperatureView self.controlsViewModel.fromCurrentData(data); self.terminalViewModel.fromCurrentData(data); self.webcamViewModel.fromCurrentData(data); + self.gcodeViewModel.fromCurrentData(data); }) self.reconnect = function() { @@ -880,7 +903,12 @@ $(function() { var terminalViewModel = new TerminalViewModel(); var gcodeFilesViewModel = new GcodeFilesViewModel(); var webcamViewModel = new WebcamViewModel(); +<<<<<<< HEAD var dataUpdater = new DataUpdater(connectionViewModel, printerStateViewModel, temperatureViewModel, controlsViewModel, speedViewModel, terminalViewModel, webcamViewModel); +======= + var gcodeViewModel = new GcodeViewModel(); + var dataUpdater = new DataUpdater(connectionViewModel, printerStateViewModel, temperatureViewModel, speedViewModel, terminalViewModel, webcamViewModel, gcodeViewModel); +>>>>>>> Initial implementation of autoupdate gcodeview on status from server //~~ Print job control