diff --git a/public_html/index.html b/public_html/index.html index 2a51b8c..106e2d8 100644 --- a/public_html/index.html +++ b/public_html/index.html @@ -60,6 +60,12 @@ [ Reset Map ] [ Show Map ] + + [ Select All ] + + + [ Select None ] + diff --git a/public_html/script.js b/public_html/script.js index 3b72460..8b6e20c 100644 --- a/public_html/script.js +++ b/public_html/script.js @@ -9,6 +9,7 @@ var PlaneTrailFeatures = new ol.Collection(); var Planes = {}; var PlanesOrdered = []; var SelectedPlane = null; +var SelectedAllPlanes = false; var FollowSelected = false; var SpecialSquawks = { @@ -129,6 +130,7 @@ function fetchData() { plane.updateTick(now, LastReceiverTimestamp); } + selectNewPlanes(); refreshTableInfo(); refreshSelected(); @@ -896,6 +898,11 @@ function sortBy(id,sc,se) { function selectPlaneByHex(hex,autofollow) { //console.log("select: " + hex); // If SelectedPlane has something in it, clear out the selected + + if (SelectedAllPlanes) { + deselectAllPlanes(); + } + if (SelectedPlane != null) { Planes[SelectedPlane].selected = false; Planes[SelectedPlane].clearLines(); @@ -904,31 +911,92 @@ function selectPlaneByHex(hex,autofollow) { } // If we are clicking the same plane, we are deselecting it. - // (unless it was a doubleclick..) + // (unless it was a doubleclick..) if (SelectedPlane === hex && !autofollow) { - hex = null; - } + hex = null; + } - if (hex !== null) { + if (hex !== null) { // Assign the new selected SelectedPlane = hex; Planes[SelectedPlane].selected = true; Planes[SelectedPlane].updateLines(); Planes[SelectedPlane].updateMarker(); - $(Planes[SelectedPlane].tr).addClass("selected"); + $(Planes[SelectedPlane].tr).addClass("selected"); } else { SelectedPlane = null; } - if (SelectedPlane !== null && autofollow) { - FollowSelected = true; - if (OLMap.getView().getZoom() < 8) - OLMap.getView().setZoom(8); - } else { - FollowSelected = false; - } + if (SelectedPlane !== null && autofollow) { + FollowSelected = true; + if (OLMap.getView().getZoom() < 8) + OLMap.getView().setZoom(8); + } else { + FollowSelected = false; + } - refreshSelected(); + refreshSelected(); +} + +// loop through the planes and mark them as selected to show the paths for all planes +function selectAllPlanes() { + // if all planes are already selected, deselect them all + if (SelectedAllPlanes) { + deselectAllPlanes(); + } else { + // If SelectedPlane has something in it, clear out the selected + if (SelectedPlane != null) { + Planes[SelectedPlane].selected = false; + Planes[SelectedPlane].clearLines(); + Planes[SelectedPlane].updateMarker(); + $(Planes[SelectedPlane].tr).removeClass("selected"); + } + + SelectedPlane = null; + + for(var key in Planes) { + if (Planes[key].visible !== false) { + Planes[key].selected = true; + Planes[key].updateLines(); + Planes[key].updateMarker(); + } + } + SelectedAllPlanes = true; + } + + refreshSelected(); +} + +// on refreshes, try to find new planes and mark them as selected +function selectNewPlanes() { + if (SelectedAllPlanes) { + for (var key in Planes) { + if (Planes[key].visible === false) { + Planes[key].selected = false; + Planes[key].clearLines(); + Planes[key].updateMarker(); + } else { + if (Planes[key].selected !== true) { + Planes[key].selected = true; + Planes[key].updateLines(); + Planes[key].updateMarker(); + } + } + } + } +} + +// deselect all the planes +function deselectAllPlanes() { + for(var key in Planes) { + Planes[key].selected = false; + Planes[key].clearLines(); + Planes[key].updateMarker(); + $(Planes[key].tr).removeClass("selected"); + } + SelectedPlane = null; + SelectedAllPlanes = false; + refreshSelected(); } function toggleFollowSelected() {