From 01ffd88a37bf3abb85a06bc02da6f03900de99a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Tue, 22 Jan 2013 17:44:20 +0100 Subject: [PATCH] Use UTC timestamps only for the temperature graph. Should get rid of weird timestamps in case server and client are in a different timezone. Also fixed the "display minutes since the epoch when not connected to a freshly started server" issue ;) --- octoprint/printer.py | 12 ++++++------ octoprint/static/js/ui.js | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/octoprint/printer.py b/octoprint/printer.py index a827509..ac09506 100644 --- a/octoprint/printer.py +++ b/octoprint/printer.py @@ -258,18 +258,18 @@ class Printer(): self._stateMonitor.setProgress({"progress": self._progress, "printTime": formattedPrintTime, "printTimeLeft": formattedPrintTimeLeft}) def _addTemperatureData(self, temp, bedTemp, targetTemp, bedTargetTemp): - currentTime = int(time.time() * 1000) + currentTimeUtc = int((time.time() + time.timezone) * 1000) - self._temps["actual"].append((currentTime, temp)) + self._temps["actual"].append((currentTimeUtc, temp)) self._temps["actual"] = self._temps["actual"][-300:] - self._temps["target"].append((currentTime, targetTemp)) + self._temps["target"].append((currentTimeUtc, targetTemp)) self._temps["target"] = self._temps["target"][-300:] - self._temps["actualBed"].append((currentTime, bedTemp)) + self._temps["actualBed"].append((currentTimeUtc, bedTemp)) self._temps["actualBed"] = self._temps["actualBed"][-300:] - self._temps["targetBed"].append((currentTime, bedTargetTemp)) + self._temps["targetBed"].append((currentTimeUtc, bedTargetTemp)) self._temps["targetBed"] = self._temps["targetBed"][-300:] self._temp = temp @@ -277,7 +277,7 @@ class Printer(): self._targetTemp = targetTemp self._targetBedTemp = bedTargetTemp - self._stateMonitor.addTemperature({"currentTime": currentTime, "temp": self._temp, "bedTemp": self._bedTemp, "targetTemp": self._targetTemp, "targetBedTemp": self._targetBedTemp}) + self._stateMonitor.addTemperature({"currentTime": currentTimeUtc, "temp": self._temp, "bedTemp": self._bedTemp, "targetTemp": self._targetTemp, "targetBedTemp": self._targetBedTemp}) def _setJobData(self, filename, gcode, gcodeList): self._filename = filename diff --git a/octoprint/static/js/ui.js b/octoprint/static/js/ui.js index 7b34c4f..731765c 100644 --- a/octoprint/static/js/ui.js +++ b/octoprint/static/js/ui.js @@ -250,9 +250,19 @@ function TemperatureViewModel() { mode: "time", minTickSize: [2, "minute"], tickFormatter: function(val, axis) { + if (val == undefined || val == 0) + return ""; // we don't want to display the minutes since the epoch if not connected yet ;) + + // calculate current time in milliseconds in UTC var now = new Date(); - var diff = now.getTime() - val; - var diffInMins = Math.round(diff / (60000)); + var timezoneOffset = now.getTimezoneOffset() * 60 * 1000; + var timestampUtc = now.getTime() + timezoneOffset; + + // calculate difference in milliseconds + var diff = timestampUtc - val; + + // convert to minutes + var diffInMins = Math.round(diff / (60 * 1000)); if (diffInMins == 0) return "just now"; else