diff --git a/html/config.js b/html/config.js
index b7fbfc3..6533a41 100644
--- a/html/config.js
+++ b/html/config.js
@@ -189,6 +189,9 @@ BingMapsAPIKey = null;
// This determines what is up, default is north (0 degrees)
//mapOrientation = 0;
+// Use UTC for all timestamps etc.
+// utcTimes = false;
+
// Only display labels when zoomed in this far:
//labelZoom = 8;
//labelZoomGround = 12.5;
diff --git a/html/defaults.js b/html/defaults.js
index b52cd23..ec4673c 100644
--- a/html/defaults.js
+++ b/html/defaults.js
@@ -206,6 +206,9 @@ let pf_data = ["chunks/pf.json"]
let mapOrientation = 0; // This determines what is up, normally north (0 degrees)
+// Use UTC for all timestamps etc.
+let utcTimes = false;
+
// Only display labels when zoomed in this far:
let labelZoom = 0;
let labelZoomGround = 14.8;
diff --git a/html/early.js b/html/early.js
index af498b1..5d7047d 100644
--- a/html/early.js
+++ b/html/early.js
@@ -225,6 +225,24 @@ if (usp.has('pTracks')) {
pTracks = 9999;
}
+function getDay(date) {
+ if (utcTimes)
+ return date.getUTCDate();
+ else
+ return date.getDate();
+}
+function zuluTime(date) {
+ return date.getUTCHours().toString().padStart(2,'0')
+ + ":" + date.getUTCMinutes().toString().padStart(2,'0')
+ + ":" + date.getUTCSeconds().toString().padStart(2,'0')
+ + NBSP + "Z";
+}
+function localTime(date) {
+ return date.getHours().toString().padStart(2,'0')
+ + ":" + date.getMinutes().toString().padStart(2,'0')
+ + ":" + date.getSeconds().toString().padStart(2,'0')
+ + NBSP + "L";
+}
function zDateString(date) {
let string = date.getUTCFullYear() + '-'
+ (date.getUTCMonth() + 1).toString().padStart(2, '0') + '-'
diff --git a/html/planeObject.js b/html/planeObject.js
index d81d22f..cd016bb 100644
--- a/html/planeObject.js
+++ b/html/planeObject.js
@@ -1140,19 +1140,7 @@ PlaneObject.prototype.processTrace = function() {
}
now = new Date().getTime()/1000;
}
-
if (showTrace) {
- if (this.position_time) {
- const date = new Date(this.position_time * 1000);
- let timestamp =
- date.getUTCHours().toString().padStart(2,'0')
- + ":" + date.getUTCMinutes().toString().padStart(2,'0')
- + ":" + date.getUTCSeconds().toString().padStart(2,'0')
- + NBSP + "Z";
- jQuery('#trace_time').text('UTC:\n' + timestamp);
- } else {
- jQuery('#trace_time').text('UTC:\n');
- }
this.seen = 0;
this.seen_pos = 0;
}
@@ -1765,21 +1753,20 @@ PlaneObject.prototype.updateLines = function() {
seg.label = new ol.Feature(new ol.geom.Point(seg.fixed.getFirstCoordinate()));
let timestamp;
const date = new Date(seg.ts * 1000);
- if (showTrace || replay) {
- timestamp =
- date.getUTCHours().toString().padStart(2,'0')
- + ":" + date.getUTCMinutes().toString().padStart(2,'0')
- + ":" + date.getUTCSeconds().toString().padStart(2,'0');
- timestamp = "".padStart(0, NBSP) + timestamp + NBSP + "Z";
- if (traceDay != date.getUTCDate())
- timestamp = "".padStart(0, NBSP) + zDateString(date) + '\n' + timestamp;
+ const refDate = (showTrace || replay) ? traceDate : new Date();
+ if (getDay(refDate) == getDay(date)) {
+ timestamp = "";
} else {
- timestamp = date.getHours().toString().padStart(2,'0')
- + ":" + date.getMinutes().toString().padStart(2,'0')
- + ":" + date.getSeconds().toString().padStart(2,'0');
- timestamp = "".padStart(2, NBSP) + timestamp;
- if (today != date.getDate())
- timestamp = "".padStart(0, NBSP) + lDateString(date) + '\n' + timestamp;
+ if (utcTimes) {
+ timestamp = zDateString(date) + '\n';
+ } else {
+ timestamp = lDateString(date) + '\n';
+ }
+ }
+ if (utcTimes) {
+ timestamp += zuluTime(date)
+ } else {
+ timestamp += localTime(date)
}
let text =
speed.padStart(3, NBSP) + " "
diff --git a/html/script.js b/html/script.js
index 5f22347..bd30784 100644
--- a/html/script.js
+++ b/html/script.js
@@ -86,7 +86,6 @@ let showTraceWasIsolation = false;
let showTraceTimestamp = null;
let traceDate = null;
let traceDateString = null;
-let traceDay = null;
let traceOpts = {};
let icaoParam = null;
let globalScale = 1;
@@ -137,7 +136,6 @@ let now = 0;
let last = 0;
let uat_now = 0;
let uat_last = 0;
-let today = 0;
let FetchPending = [];
let FetchPendingUAT = null;
@@ -513,8 +511,6 @@ function initPage() {
let value;
onMobile = window.mobilecheck();
- today = new Date().getDate();
-
if (usp.has('nowebgl')) {
localStorage['webgl'] = "false";
}
@@ -900,8 +896,23 @@ function initPage() {
init: true,
setState: function(state) {
lastLeg = state;
- if (SelectedPlane && !showTrace)
- SelectedPlane.processTrace();
+ if (loadFinished && !showTrace) {
+ for (let i in SelPlanes) {
+ SelPlanes[i].processTrace();
+ }
+ }
+ }
+ });
+
+ new Toggle({
+ key: "utcTimes",
+ display: "UTC times",
+ container: "#settingsLeft",
+ init: utcTimes,
+ setState: function(state) {
+ utcTimes = state;
+ remakeTrails();
+ refreshSelected();
}
});
@@ -2254,7 +2265,6 @@ function initMap() {
let lastReap = 0;
function reaper(all) {
//console.log("Reaping started..");
- today = new Date().getDate();
if (noVanish)
return;
@@ -2432,6 +2442,16 @@ function refreshSelected() {
jQuery('#selected_callsign').text(selected.name);
+ if (showTrace) {
+ if (selected.position_time) {
+ const date = new Date(selected.position_time * 1000);
+ let timestamp = utcTimes ? zuluTime(date) : localTime(date);
+ jQuery('#trace_time').text('Time:\n' + timestamp);
+ } else {
+ jQuery('#trace_time').text('Time:\n');
+ }
+ }
+
if (flightawareLinks) {
jQuery('#selected_flightaware_link').html(getFlightAwareModeSLink(selected.icao, selected.flight, "Visit Flight Page"));
}
@@ -5255,7 +5275,6 @@ function setTraceDate(options) {
}
traceDateString = zDateString(traceDate);
- traceDay = traceDate.getUTCDate();
return traceDate;
}