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; }