From 13e6070dd96c9c2092b83e83b984b052ea73f017 Mon Sep 17 00:00:00 2001 From: Jarek Szczepanski Date: Mon, 31 Mar 2014 11:12:44 +0200 Subject: [PATCH] Added last print time to popover on file list --- src/octoprint/gcodefiles.py | 14 ++++++++++++-- src/octoprint/printer.py | 6 +++--- src/octoprint/static/js/app/viewmodels/files.js | 3 +++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/octoprint/gcodefiles.py b/src/octoprint/gcodefiles.py index a6cf1fe4..fd69d4db 100644 --- a/src/octoprint/gcodefiles.py +++ b/src/octoprint/gcodefiles.py @@ -417,6 +417,8 @@ class GcodeManager: "date": val["last"]["date"], "success": val["last"]["success"] } + if "lastPrintTime" in val["last"] and val["last"]["lastPrintTime"] is not None: + last["lastPrintTime"] = val["last"]["lastPrintTime"] prints = { "success": val["success"], "failure": val["failure"], @@ -448,7 +450,7 @@ class GcodeManager: #~~ print job data - def printSucceeded(self, filename): + def printSucceeded(self, filename, printTime): filename = self._getBasicFilename(filename) absolutePath = self.getAbsolutePath(filename) if absolutePath is None: @@ -460,10 +462,14 @@ class GcodeManager: "date": time.time(), "success": True } + + if printTime is not None: + metadata["prints"]["last"]["lastPrintTime"] = printTime + self.setFileMetadata(filename, metadata) self._saveMetadata() - def printFailed(self, filename): + def printFailed(self, filename, printTime): filename = self._getBasicFilename(filename) absolutePath = self.getAbsolutePath(filename) if absolutePath is None: @@ -475,6 +481,10 @@ class GcodeManager: "date": time.time(), "success": False } + + if printTime is not None: + metadata["prints"]["last"]["lastPrintTime"] = printTime + self.setFileMetadata(filename, metadata) self._saveMetadata() diff --git a/src/octoprint/printer.py b/src/octoprint/printer.py index 231268bf..b918b9be 100644 --- a/src/octoprint/printer.py +++ b/src/octoprint/printer.py @@ -306,7 +306,7 @@ class Printer(): # mark print as failure if self._selectedFile is not None: - self._gcodeManager.printFailed(self._selectedFile["filename"]) + self._gcodeManager.printFailed(self._selectedFile["filename"], self._comm.getPrintTime()) payload = { "file": self._selectedFile["filename"], "origin": FileDestinations.LOCAL @@ -455,9 +455,9 @@ class Printer(): if self._comm is not None and oldState == self._comm.STATE_PRINTING: if self._selectedFile is not None: if state == self._comm.STATE_OPERATIONAL: - self._gcodeManager.printSucceeded(self._selectedFile["filename"]) + self._gcodeManager.printSucceeded(self._selectedFile["filename"], self._comm.getPrintTime()) elif state == self._comm.STATE_CLOSED or state == self._comm.STATE_ERROR or state == self._comm.STATE_CLOSED_WITH_ERROR: - self._gcodeManager.printFailed(self._selectedFile["filename"]) + self._gcodeManager.printFailed(self._selectedFile["filename"], self._comm.getPrintTime()) self._gcodeManager.resumeAnalysis() # printing done, put those cpu cycles to good use elif self._comm is not None and state == self._comm.STATE_PRINTING: self._gcodeManager.pauseAnalysis() # do not analyse gcode while printing diff --git a/src/octoprint/static/js/app/viewmodels/files.js b/src/octoprint/static/js/app/viewmodels/files.js index c3717abb..1f43791b 100644 --- a/src/octoprint/static/js/app/viewmodels/files.js +++ b/src/octoprint/static/js/app/viewmodels/files.js @@ -212,6 +212,9 @@ function GcodeFilesViewModel(printerStateViewModel, loginStateViewModel) { if (data["prints"] && data["prints"]["last"]) { output += "

"; output += "Last Print: " + formatDate(data["prints"]["last"]["date"]) + ""; + if (data["prints"]["last"]["lastPrintTime"]) { + output += "
Last Print Time: " + formatDuration(data["prints"]["last"]["lastPrintTime"]) + ""; + } output += "

"; } return output;