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 ;)
master
Gina Häußge 2013-01-22 17:44:20 +01:00
parent ca3c973bfc
commit 01ffd88a37
2 changed files with 18 additions and 8 deletions

View File

@ -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

View File

@ -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