MrDraw/octoprint/static/js/app/viewmodels/gcode.js
Gina Häußge 84ff4b6416 Refactored ui.js into single files, cleaned up js folder
TODO: minimizer for merging all files belonging to the actual app into one
2013-08-11 19:15:37 +02:00

75 lines
2.3 KiB
JavaScript

function GcodeViewModel(loginStateViewModel) {
var self = this;
self.loginState = loginStateViewModel;
self.loadedFilename = undefined;
self.loadedFileMTime = undefined;
self.status = 'idle';
self.enabled = false;
self.errorCount = 0;
self.initialize = function(){
self.enabled = true;
GCODE.ui.initHandlers();
}
self.loadFile = function(filename, mtime){
if (self.status == 'idle' && self.errorCount < 3) {
self.status = 'request';
$.ajax({
url: AJAX_BASEURL + "gcodefiles/" + filename,
data: { "mtime": mtime },
type: "GET",
success: function(response, rstatus) {
if(rstatus === 'success'){
self.showGCodeViewer(response, rstatus);
self.loadedFilename=filename;
self.loadedFileMTime=mtime;
self.status = 'idle';
}
},
error: function() {
self.status = 'idle';
self.errorCount++;
}
})
}
}
self.showGCodeViewer = function(response, rstatus) {
var par = {};
par.target = {};
par.target.result = response;
GCODE.gCodeReader.loadFile(par);
}
self.fromHistoryData = function(data) {
self._processData(data);
}
self.fromCurrentData = function(data) {
self._processData(data);
}
self._processData = function(data) {
if (!self.enabled) return;
if (!data.job.filename) return;
if(self.loadedFilename && self.loadedFilename == data.job.filename &&
self.loadedFileMTime == data.job.mtime) {
if (data.state.flags && (data.state.flags.printing || data.state.flags.paused)) {
var cmdIndex = GCODE.gCodeReader.getCmdIndexForPercentage(data.progress.progress * 100);
if(cmdIndex){
GCODE.renderer.render(cmdIndex.layer, 0, cmdIndex.cmd);
GCODE.ui.updateLayerInfo(cmdIndex.layer);
}
}
self.errorCount = 0
} else if (data.job.filename) {
self.loadFile(data.job.filename, data.job.mtime);
}
}
}