UI now displays last print time as approx. total print time if available, otherwise uses estimated print time if available

Closes #523
This commit is contained in:
Gina Häußge 2014-07-31 18:16:53 +02:00
parent 5e8a04e54d
commit f9d1086062
5 changed files with 29 additions and 16 deletions

View file

@ -164,6 +164,10 @@ Job information
- 0..1 - 0..1
- Integer - Integer
- The estimated print time for the file, in seconds. - The estimated print time for the file, in seconds.
* - ``lastPrintTime``
- 0..1
- Integer
- The print time of the last print of the file, in seconds.
* - ``filament`` * - ``filament``
- 0..1 - 0..1
- Object - Object

View file

@ -95,6 +95,7 @@ class Printer():
"date": None "date": None
}, },
"estimatedPrintTime": None, "estimatedPrintTime": None,
"lastPrintTime": None,
"filament": { "filament": {
"length": None, "length": None,
"volume": None "volume": None
@ -389,6 +390,7 @@ class Printer():
self._selectedFile = None self._selectedFile = None
estimatedPrintTime = None estimatedPrintTime = None
lastPrintTime = None
date = None date = None
filament = None filament = None
if filename: if filename:
@ -398,11 +400,14 @@ class Printer():
date = int(os.stat(filename).st_ctime) date = int(os.stat(filename).st_ctime)
fileData = self._gcodeManager.getFileData(filename) fileData = self._gcodeManager.getFileData(filename)
if fileData is not None and "gcodeAnalysis" in fileData.keys(): if fileData is not None:
if "estimatedPrintTime" in fileData["gcodeAnalysis"].keys(): if "gcodeAnalysis" in fileData:
estimatedPrintTime = fileData["gcodeAnalysis"]["estimatedPrintTime"] if estimatedPrintTime is None and "estimatedPrintTime" in fileData["gcodeAnalysis"]:
if "filament" in fileData["gcodeAnalysis"].keys(): estimatedPrintTime = fileData["gcodeAnalysis"]["estimatedPrintTime"]
filament = fileData["gcodeAnalysis"]["filament"] if "filament" in fileData["gcodeAnalysis"].keys():
filament = fileData["gcodeAnalysis"]["filament"]
if "prints" in fileData and "last" in fileData["prints"] and "lastPrintTime" in fileData["prints"]["last"]:
lastPrintTime = fileData["prints"]["last"]["lastPrintTime"]
self._stateMonitor.setJobData({ self._stateMonitor.setJobData({
"file": { "file": {
@ -412,6 +417,7 @@ class Printer():
"date": date "date": date
}, },
"estimatedPrintTime": estimatedPrintTime, "estimatedPrintTime": estimatedPrintTime,
"lastPrintTime": lastPrintTime,
"filament": filament, "filament": filament,
}) })

View file

@ -274,12 +274,12 @@ function GcodeFilesViewModel(printerStateViewModel, loginStateViewModel) {
} while (filament.hasOwnProperty("tool" + i)); } while (filament.hasOwnProperty("tool" + i));
} }
} }
output += "Estimated Print Time: " + formatDuration(data["gcodeAnalysis"]["estimatedPrintTime"]); output += "Estimated Print Time: " + formatDuration(data["gcodeAnalysis"]["estimatedPrintTime"]) + "<br>";
} }
if (data["prints"] && data["prints"]["last"]) { if (data["prints"] && data["prints"]["last"]) {
output += "<br>Last Printed: " + formatTimeAgo(data["prints"]["last"]["date"]); output += "Last Printed: " + formatTimeAgo(data["prints"]["last"]["date"]) + "<br>";
if (data["prints"]["last"]["lastPrintTime"]) { if (data["prints"]["last"]["lastPrintTime"]) {
output += "<br>Last Print Time: " + formatDuration(data["prints"]["last"]["lastPrintTime"]); output += "Last Print Time: " + formatDuration(data["prints"]["last"]["lastPrintTime"]);
} }
} }
return output; return output;

View file

@ -24,13 +24,16 @@ function PrinterStateViewModel(loginStateViewModel) {
self.filament = ko.observableArray([]); self.filament = ko.observableArray([]);
self.estimatedPrintTime = ko.observable(undefined); self.estimatedPrintTime = ko.observable(undefined);
self.lastPrintTime = ko.observable(undefined);
self.currentHeight = ko.observable(undefined); self.currentHeight = ko.observable(undefined);
self.estimatedPrintTimeString = ko.computed(function() { self.estimatedPrintTimeString = ko.computed(function() {
if (!self.estimatedPrintTime()) if (self.lastPrintTime())
return "-"; return formatDuration(self.lastPrintTime());
return formatDuration(self.estimatedPrintTime()); if (self.estimatedPrintTime())
return formatDuration(self.estimatedPrintTime());
return "-";
}); });
self.byteString = ko.computed(function() { self.byteString = ko.computed(function() {
if (!self.filesize()) if (!self.filesize())
@ -123,6 +126,7 @@ function PrinterStateViewModel(loginStateViewModel) {
} }
self.estimatedPrintTime(data.estimatedPrintTime); self.estimatedPrintTime(data.estimatedPrintTime);
self.lastPrintTime(data.lastPrintTime);
var result = []; var result = [];
if (data.filament && typeof(data.filament) == "object" && _.keys(data.filament).length > 0) { if (data.filament && typeof(data.filament) == "object" && _.keys(data.filament).length > 0) {

View file

@ -125,12 +125,11 @@
<div class="accordion-inner"> <div class="accordion-inner">
Machine State: <strong data-bind="text: stateString"></strong><br> Machine State: <strong data-bind="text: stateString"></strong><br>
File: <strong data-bind="text: filename"></strong>&nbsp;<strong data-bind="visible: sd">(SD)</strong><br> File: <strong data-bind="text: filename"></strong>&nbsp;<strong data-bind="visible: sd">(SD)</strong><br>
<!-- ko foreach: filament -->
<span data-bind="text: 'Filament (' + name() + '): '"></span><strong data-bind="text: formatFilament(data())"></strong><br>
<!-- /ko -->
Estimated Print Time: <strong data-bind="text: estimatedPrintTimeString"></strong><br>
Timelapse: <strong data-bind="text: timelapseString"></strong><br> Timelapse: <strong data-bind="text: timelapseString"></strong><br>
Height: <strong data-bind="text: heightString"></strong><br> <!-- ko foreach: filament -->
<span data-bind="text: 'Filament (' + name() + '): '"></span><strong data-bind="text: formatFilament(data())"></strong><br>
<!-- /ko -->
Approx. Total Print Time: <strong data-bind="text: estimatedPrintTimeString"></strong><br>
Print Time: <strong data-bind="text: printTimeString"></strong><br> Print Time: <strong data-bind="text: printTimeString"></strong><br>
Print Time Left: <strong data-bind="text: printTimeLeftString"></strong><br> Print Time Left: <strong data-bind="text: printTimeLeftString"></strong><br>
Printed: <strong data-bind="text: byteString"></strong><br> Printed: <strong data-bind="text: byteString"></strong><br>