Refresh gcode visualization if the selected file is modified
This passes the file modification time to the javascript side and if they don't match then the file is re-downloaded and parsed. The mtime is also used in the AJAX request as it prevents the browser from serving the new request from cache.master
parent
566933a765
commit
e7f5384427
|
@ -303,10 +303,16 @@ class Printer():
|
||||||
formattedFilename = None
|
formattedFilename = None
|
||||||
formattedFilesize = None
|
formattedFilesize = None
|
||||||
estimatedPrintTime = None
|
estimatedPrintTime = None
|
||||||
|
fileMTime = None
|
||||||
filament = None
|
filament = None
|
||||||
if filename:
|
if filename:
|
||||||
formattedFilename = os.path.basename(filename)
|
formattedFilename = os.path.basename(filename)
|
||||||
|
|
||||||
|
# Use a string for mtime because it could be float and the
|
||||||
|
# javascript needs to exact match
|
||||||
|
if not sd:
|
||||||
|
fileMTime = str(os.stat(filename).st_mtime)
|
||||||
|
|
||||||
if filesize:
|
if filesize:
|
||||||
formattedFilesize = util.getFormattedSize(filesize)
|
formattedFilesize = util.getFormattedSize(filesize)
|
||||||
|
|
||||||
|
@ -317,7 +323,7 @@ class Printer():
|
||||||
if "filament" in fileData["gcodeAnalysis"].keys():
|
if "filament" in fileData["gcodeAnalysis"].keys():
|
||||||
filament = fileData["gcodeAnalysis"]["filament"]
|
filament = fileData["gcodeAnalysis"]["filament"]
|
||||||
|
|
||||||
self._stateMonitor.setJobData({"filename": formattedFilename, "filesize": formattedFilesize, "estimatedPrintTime": estimatedPrintTime, "filament": filament, "sd": sd})
|
self._stateMonitor.setJobData({"filename": formattedFilename, "filesize": formattedFilesize, "estimatedPrintTime": estimatedPrintTime, "filament": filament, "sd": sd, "mtime": fileMTime})
|
||||||
|
|
||||||
def _sendInitialStateUpdate(self, callback):
|
def _sendInitialStateUpdate(self, callback):
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -1098,6 +1098,7 @@ function GcodeViewModel(loginStateViewModel) {
|
||||||
self.loginState = loginStateViewModel;
|
self.loginState = loginStateViewModel;
|
||||||
|
|
||||||
self.loadedFilename = undefined;
|
self.loadedFilename = undefined;
|
||||||
|
self.loadedFileMTime = undefined;
|
||||||
self.status = 'idle';
|
self.status = 'idle';
|
||||||
self.enabled = false;
|
self.enabled = false;
|
||||||
|
|
||||||
|
@ -1108,16 +1109,18 @@ function GcodeViewModel(loginStateViewModel) {
|
||||||
GCODE.ui.initHandlers();
|
GCODE.ui.initHandlers();
|
||||||
}
|
}
|
||||||
|
|
||||||
self.loadFile = function(filename){
|
self.loadFile = function(filename, mtime){
|
||||||
if (self.status == 'idle' && self.errorCount < 3) {
|
if (self.status == 'idle' && self.errorCount < 3) {
|
||||||
self.status = 'request';
|
self.status = 'request';
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: AJAX_BASEURL + "gcodefiles/" + filename,
|
url: AJAX_BASEURL + "gcodefiles/" + filename,
|
||||||
|
data: { "mtime": mtime },
|
||||||
type: "GET",
|
type: "GET",
|
||||||
success: function(response, rstatus) {
|
success: function(response, rstatus) {
|
||||||
if(rstatus === 'success'){
|
if(rstatus === 'success'){
|
||||||
self.showGCodeViewer(response, rstatus);
|
self.showGCodeViewer(response, rstatus);
|
||||||
self.loadedFilename=filename;
|
self.loadedFilename=filename;
|
||||||
|
self.loadedFileMTime=mtime;
|
||||||
self.status = 'idle';
|
self.status = 'idle';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1148,7 +1151,8 @@ function GcodeViewModel(loginStateViewModel) {
|
||||||
if (!self.enabled) return;
|
if (!self.enabled) return;
|
||||||
if (!data.job.filename) return;
|
if (!data.job.filename) return;
|
||||||
|
|
||||||
if(self.loadedFilename && self.loadedFilename == data.job.filename) {
|
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)) {
|
if (data.state.flags && (data.state.flags.printing || data.state.flags.paused)) {
|
||||||
var cmdIndex = GCODE.gCodeReader.getCmdIndexForPercentage(data.progress.progress * 100);
|
var cmdIndex = GCODE.gCodeReader.getCmdIndexForPercentage(data.progress.progress * 100);
|
||||||
if(cmdIndex){
|
if(cmdIndex){
|
||||||
|
@ -1158,7 +1162,7 @@ function GcodeViewModel(loginStateViewModel) {
|
||||||
}
|
}
|
||||||
self.errorCount = 0
|
self.errorCount = 0
|
||||||
} else if (data.job.filename) {
|
} else if (data.job.filename) {
|
||||||
self.loadFile(data.job.filename);
|
self.loadFile(data.job.filename, data.job.mtime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue