diff --git a/public_html/script.js b/public_html/script.js
index 8d77d51..656eeeb 100644
--- a/public_html/script.js
+++ b/public_html/script.js
@@ -8,6 +8,7 @@ var SiteCircleFeatures = new ol.Collection();
var PlaneIconFeatures = new ol.Collection();
var PlaneTrailFeatures = new ol.Collection();
var Planes = {};
+var PlanesModeAc = {};
var PlanesOrdered = [];
var PlaneFilter = {};
var SelectedPlane = null;
@@ -65,13 +66,16 @@ function processReceiverUpdate(data) {
for (var j=0; j < acs.length; j++) {
var ac = acs[j];
var hex = ac.hex;
+ var squawk = ac.squawk;
var plane = null;
// Do we already have this plane object in Planes?
// If not make it.
- if (Planes[hex]) {
+ if (hex !== "000000" && Planes[hex]) {
plane = Planes[hex];
+ } else if (hex === "000000" && PlanesModeAc[squawk]) {
+ plane = PlanesModeAc[squawk];
} else {
plane = new PlaneObject(hex);
plane.filter = PlaneFilter;
@@ -93,30 +97,34 @@ function processReceiverUpdate(data) {
$('img', plane.tr.cells[1]).css('display', 'none');
}
- plane.tr.addEventListener('click', function(h, evt) {
- if (evt.srcElement instanceof HTMLAnchorElement) {
- evt.stopPropagation();
- return;
- }
+ if (hex !== "000000") {
+ plane.tr.addEventListener('click', function(h, evt) {
+ if (evt.srcElement instanceof HTMLAnchorElement) {
+ evt.stopPropagation();
+ return;
+ }
- if (!$("#map_container").is(":visible")) {
- showMap();
- }
- selectPlaneByHex(h, false);
- adjustSelectedInfoBlockPosition();
- evt.preventDefault();
- }.bind(undefined, hex));
+ if (!$("#map_container").is(":visible")) {
+ showMap();
+ }
+ selectPlaneByHex(h, false);
+ adjustSelectedInfoBlockPosition();
+ evt.preventDefault();
+ }.bind(undefined, hex));
- plane.tr.addEventListener('dblclick', function(h, evt) {
- if (!$("#map_container").is(":visible")) {
- showMap();
- }
- selectPlaneByHex(h, true);
- adjustSelectedInfoBlockPosition();
- evt.preventDefault();
- }.bind(undefined, hex));
-
- Planes[hex] = plane;
+ plane.tr.addEventListener('dblclick', function(h, evt) {
+ if (!$("#map_container").is(":visible")) {
+ showMap();
+ }
+ selectPlaneByHex(h, true);
+ adjustSelectedInfoBlockPosition();
+ evt.preventDefault();
+ }.bind(undefined, hex));
+
+ Planes[hex] = plane;
+ } else {
+ PlanesModeAc[squawk] = plane;
+ }
PlanesOrdered.push(plane);
}
@@ -659,23 +667,25 @@ function createSiteCircleFeatures() {
function reaper() {
//console.log("Reaping started..");
- // Look for planes where we have seen no messages for >300 seconds
+ // Look for planes where we have seen no messages for >300 seconds
var newPlanes = [];
for (var i = 0; i < PlanesOrdered.length; ++i) {
var plane = PlanesOrdered[i];
if (plane.seen > 300) {
- // Reap it.
- //console.log("Reaping " + plane.icao);
- //console.log("parent " + plane.tr.parentNode);
+ // Reap it.
plane.tr.parentNode.removeChild(plane.tr);
plane.tr = null;
- delete Planes[plane.icao];
+ if (plane.icao === "000000") {
+ delete PlanesModeAc[plane.squawk];
+ } else {
+ delete Planes[plane.icao];
+ }
plane.destroy();
- } else {
+ } else {
// Keep it.
newPlanes.push(plane);
- }
- };
+ }
+ };
PlanesOrdered = newPlanes;
refreshTableInfo();
@@ -1336,7 +1346,7 @@ function getFlightAwareIdentLink(ident, linkText) {
}
function getFlightAwareModeSLink(code, linkText) {
- if (code !== null && code.length > 0 && code[0] !== '~') {
+ if (code !== null && code.length > 0 && code[0] !== '~' && code !== "000000") {
if (!linkText) {
linkText = "FlightAware: " + code.toUpperCase();
}
@@ -1355,7 +1365,7 @@ function getFlightAwarePhotoLink(registration) {
}
function getAirframesModeSLink(code) {
- if (code !== null && code.length > 0 && code[0] !== '~') {
+ if (code !== null && code.length > 0 && code[0] !== '~' && code !== "000000") {
return "Airframes.org: " + code.toUpperCase() + "";
}