diff --git a/public_html/planeObject.js b/public_html/planeObject.js
index 1104130..5058647 100644
--- a/public_html/planeObject.js
+++ b/public_html/planeObject.js
@@ -1,4 +1,4 @@
-var planeSvg = "M 0,0 " +
+var PlaneSvg = "M 0,0 " +
"M 1.9565564,41.694305 C 1.7174505,40.497708 1.6419973,38.448747 " +
"1.8096508,37.70494 1.8936398,37.332056 2.0796653,36.88191 2.222907,36.70461 " +
"2.4497603,36.423844 4.087816,35.47248 14.917931,29.331528 l 12.434577," +
@@ -48,22 +48,25 @@ var planeObject = {
// Data packet numbers
messages : null,
- // Track history
- tracklinesegs : [],
-
+ // Track history as a series of line segments
+ track_linesegs : [],
// When was this last updated (receiver timestamp)
last_message_time : null,
last_position_time : null,
- historySize : 0,
+ // When was this last updated (seconds before last update)
+ seen : null,
+ seen_pos : null,
+
+ history_size : 0,
visible : true,
// GMap Details
marker : null,
icon : {
strokeWeight: 1,
- path: planeSvg,
+ path: PlaneSvg,
scale: 0.4,
fillColor: MarkerColor,
fillOpacity: 0.9,
@@ -75,7 +78,7 @@ var planeObject = {
// Only useful for a long running browser session.
updateTrack : function() {
var here = new google.maps.LatLng(this.latitude, this.longitude);
- if (this.tracklinesegs.length == 0) {
+ if (this.track_linesegs.length == 0) {
// Brand new track
//console.log(this.icao + " new track");
var newseg = { track : new google.maps.MVCArray([here,here]),
@@ -85,12 +88,12 @@ var planeObject = {
estimated : false,
ground : (this.altitude === "ground")
};
- this.tracklinesegs.push(newseg);
- this.historySize += 2;
+ this.track_linesegs.push(newseg);
+ this.history_size += 2;
return;
}
- var lastseg = this.tracklinesegs[this.tracklinesegs.length - 1];
+ var lastseg = this.track_linesegs[this.track_linesegs.length - 1];
var lastpos = lastseg.track.getAt(lastseg.track.getLength() - 1);
var elapsed = (this.last_position_time - lastseg.head_update);
@@ -105,11 +108,11 @@ var planeObject = {
if (!lastseg.estimated) {
// >5s gap in data, create a new estimated segment
//console.log(this.icao + " switching to estimated");
- this.tracklinesegs.push({ track : new google.maps.MVCArray([lastpos, here]),
+ this.track_linesegs.push({ track : new google.maps.MVCArray([lastpos, here]),
line : null,
head_update : this.last_position_time,
estimated : true });
- this.historySize += 2;
+ this.history_size += 2;
return true;
}
@@ -117,20 +120,20 @@ var planeObject = {
//console.log(this.icao + " extending estimated (" + lastseg.track.getLength() + ")");
lastseg.track.push(here);
lastseg.head_update = this.last_position_time;
- this.historySize++;
+ this.history_size++;
return true;
}
if (lastseg.estimated) {
// We are back to good data.
//console.log(this.icao + " switching to good track");
- this.tracklinesegs.push({ track : new google.maps.MVCArray([lastpos, here]),
+ this.track_linesegs.push({ track : new google.maps.MVCArray([lastpos, here]),
line : null,
head_update : this.last_position_time,
tail_update : this.last_position_time,
estimated : false,
ground : (this.altitude === "ground") });
- this.historySize += 2;
+ this.history_size += 2;
return true;
}
@@ -141,13 +144,13 @@ var planeObject = {
// assume the state changed halfway between the two points
var midpoint = google.maps.geometry.spherical.interpolate(lastpos,here,0.5);
lastseg.track.push(midpoint);
- this.tracklinesegs.push({ track : new google.maps.MVCArray([midpoint,here,here]),
+ this.track_linesegs.push({ track : new google.maps.MVCArray([midpoint,here,here]),
line : null,
head_update : this.last_position_time,
tail_update : this.last_position_time,
estimated : false,
ground : (this.altitude === "ground") });
- this.historySize += 4;
+ this.history_size += 4;
return true;
}
@@ -159,7 +162,7 @@ var planeObject = {
//console.log(this.icao + " retain last point");
lastseg.track.push(here);
lastseg.tail_update = lastseg.head_update;
- this.historySize ++;
+ this.history_size ++;
} else {
// replace the last point with the current position
lastseg.track.setAt(lastseg.track.getLength()-1, here);
@@ -170,8 +173,8 @@ var planeObject = {
// This is to remove the line from the screen if we deselect the plane
clearLines : function() {
- for (var i = 0; i < this.tracklinesegs.length; ++i) {
- var seg = this.tracklinesegs[i];
+ for (var i = 0; i < this.track_linesegs.length; ++i) {
+ var seg = this.track_linesegs[i];
if (seg.line !== null) {
seg.line.setMap(null);
seg.line = null;
@@ -192,11 +195,8 @@ var planeObject = {
// If the squawk code is one of the international emergency codes,
// match the info window alert color.
- var squawk_col = { '7500' : 'rgb(255, 85, 85)',
- '7600' : 'rgb(0, 255, 255)',
- '7700' : 'rgb(255, 255, 0)' };
- if (this.squawk in squawk_col)
- col = squawk_col[this.squawk];
+ if (this.squawk in SpecialSquawks)
+ col = SpecialSquawks[this.squawk].markerColor;
var weight = this.is_selected ? 2 : 1;
var rotation = (this.track === null ? 0 : this.track);
@@ -316,8 +316,8 @@ var planeObject = {
if (!this.is_selected)
return;
- for (var i = 0; i < this.tracklinesegs.length; ++i) {
- var seg = this.tracklinesegs[i];
+ for (var i = 0; i < this.track_linesegs.length; ++i) {
+ var seg = this.track_linesegs[i];
if (seg.line === null) {
// console.log("create line for seg " + i + " with " + seg.track.getLength() + " points" + (seg.estimated ? " (estimated)" : ""));
// for (var j = 0; j < seg.track.getLength(); j++) {
diff --git a/public_html/script.js b/public_html/script.js
index 25e38dd..b8e682d 100644
--- a/public_html/script.js
+++ b/public_html/script.js
@@ -4,24 +4,24 @@ var Planes = {};
var PlanesOrdered = [];
var SelectedPlane = null;
-var EmergencySquawks = {
- '7500' : 'Aircraft Hijacking',
- '7600' : 'Radio Failure',
- '7700' : 'General Emergency'
+var SpecialSquawks = {
+ '7500' : { cssClass: 'squawk7500', markerColor: 'rgb(255, 85, 85)', text: 'Aircraft Hijacking' },
+ '7600' : { cssClass: 'squawk7600', markerColor: 'rgb(0, 255, 255)', text: 'Radio Failure' },
+ '7700' : { cssClass: 'squawk7700', markerColor: 'rgb(255, 255, 0)', text: 'General Emergency' }
};
// Get current map settings
-CenterLat = Number(localStorage['CenterLat']) || CONST_CENTERLAT;
-CenterLon = Number(localStorage['CenterLon']) || CONST_CENTERLON;
-ZoomLvl = Number(localStorage['ZoomLvl']) || CONST_ZOOMLVL;
+var CenterLat = Number(localStorage['CenterLat']) || CONST_CENTERLAT;
+var CenterLon = Number(localStorage['CenterLon']) || CONST_CENTERLON;
+var ZoomLvl = Number(localStorage['ZoomLvl']) || CONST_ZOOMLVL;
-Dump1090Version = "unknown version";
-RefreshInterval = 1000;
+var Dump1090Version = "unknown version";
+var RefreshInterval = 1000;
-PlaneRowTemplate = null;
+var PlaneRowTemplate = null;
-TrackedAircraft = 0
-TrackedPositions = 0
+var TrackedAircraft = 0;
+var TrackedPositions = 0;
function fetchData() {
$.getJSON('data/aircraft.json', function(data) {
@@ -314,9 +314,9 @@ function refreshSelected() {
}
var emerg = document.getElementById('selected_emergency');
- if (selected.squawk in EmergencySquawks) {
- emerg.className = 'squawk' + selected.squawk;
- emerg.textContent = '\u00a0Squawking: ' + EmergencySquawks[selected.squawk] + '\u00a0';
+ if (selected.squawk in SpecialSquawks) {
+ emerg.className = SpecialSquawks[selected.squawk].cssClass;
+ emerg.textContent = '\u00a0Squawking: ' + SpecialSquawks[selected.squawk].text + '\u00a0';
} else {
emerg.className = 'hidden';
}
@@ -433,7 +433,7 @@ function refreshTableInfo() {
for (var i = 0; i < PlanesOrdered.length; ++i) {
var tableplane = PlanesOrdered[i];
- TrackedHistorySize += tableplane.historySize;
+ TrackedHistorySize += tableplane.history_size;
if (!tableplane.visible) {
tableplane.tr.className = "plane_table_row hidden";
} else {
@@ -445,8 +445,8 @@ function refreshTableInfo() {
if (tableplane.icao == SelectedPlane)
classes += " selected";
- if (tableplane.squawk in EmergencySquawks) {
- classes += (" squawk" + tableplane.squawk);
+ if (tableplane.squawk in SpecialSquawks) {
+ classes = classes + " " + SpecialSquawks[tableplane.squawk].cssClass;
show_squawk_warning = true;
}