75 lines
2.3 KiB
JavaScript
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);
|
|
}
|
|
}
|
|
|
|
}
|