From 09c50fff4d0a1a9751c84bf18dd906b1dc1e3900 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Thu, 22 Jan 2015 16:09:19 +0000 Subject: [PATCH] Show vertical rate indicators next to altitude. --- public_html/planeObject.js | 2 ++ public_html/script.js | 36 ++++++++++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/public_html/planeObject.js b/public_html/planeObject.js index 5d36a2f..7cfec07 100644 --- a/public_html/planeObject.js +++ b/public_html/planeObject.js @@ -225,6 +225,8 @@ PlaneObject.prototype.updateData = function(receiver_timestamp, data) { if (typeof data.altitude !== "undefined") this.altitude = data.altitude; + if (typeof data.vert_rate !== "undefined") + this.vert_rate = data.vert_rate; if (typeof data.speed !== "undefined") this.speed = data.speed; if (typeof data.track !== "undefined") diff --git a/public_html/script.js b/public_html/script.js index eabde45..4784735 100644 --- a/public_html/script.js +++ b/public_html/script.js @@ -37,6 +37,8 @@ var MessageCountHistory = []; var NBSP='\u00a0'; var DEGREES='\u00b0' +var UP_TRIANGLE='\u25b2'; // U+25B2 BLACK UP-POINTING TRIANGLE +var DOWN_TRIANGLE='\u25bc'; // U+25BC BLACK DOWN-POINTING TRIANGLE function processReceiverUpdate(data) { // Loop through all the planes in the data packet @@ -499,29 +501,47 @@ function format_track_long(track) { } // alt in ft -function format_altitude_brief(alt) { +function format_altitude_brief(alt, vr) { + var alt_text; + if (alt === null) return ""; if (alt === "ground") return "ground"; if (Metric) - return Math.round(alt / 3.2828); + alt_text = Math.round(alt / 3.2828) + NBSP; else - return Math.round(alt); + alt_text = Math.round(alt) + NBSP; + + if (vr > 100) + return alt_text + UP_TRIANGLE; + else if (vr < -100) + return alt_text + DOWN_TRIANGLE; + else + return alt_text + NBSP; } // alt in ft -function format_altitude_long(alt) { +function format_altitude_long(alt, vr) { + var alt_text; + if (alt === null) return "n/a"; if (alt === "ground") return "on ground"; if (Metric) - return Math.round(alt / 3.2828) + NBSP + "m / " + Math.round(alt) + NBSP + "ft"; + alt_text = Math.round(alt / 3.2828) + NBSP + "m / " + Math.round(alt) + NBSP + "ft"; else - return Math.round(alt) + NBSP + "ft / " + Math.round(alt / 3.2828) + NBSP + "m"; + alt_text = Math.round(alt) + NBSP + "ft / " + Math.round(alt / 3.2828) + NBSP + "m"; + + if (vr > 128) + return UP_TRIANGLE + NBSP + alt_text; + else if (vr < -128) + return DOWN_TRIANGLE + NBSP + alt_text; + else + return alt_text; } // speed in kts @@ -626,7 +646,7 @@ function refreshSelected() { emerg.className = 'hidden'; } - $("#selected_altitude").text(format_altitude_long(selected.altitude)); + $("#selected_altitude").text(format_altitude_long(selected.altitude, selected.vert_rate)); if (selected.squawk === null || selected.squawk === '0000') { $('#selected_squawk').text('n/a'); @@ -692,7 +712,7 @@ function refreshTableInfo() { // ICAO doesn't change tableplane.tr.cells[1].textContent = (tableplane.flight !== null ? tableplane.flight : ""); tableplane.tr.cells[2].textContent = (tableplane.squawk !== null ? tableplane.squawk : ""); - tableplane.tr.cells[3].textContent = format_altitude_brief(tableplane.altitude); + tableplane.tr.cells[3].textContent = format_altitude_brief(tableplane.altitude, tableplane.vert_rate); tableplane.tr.cells[4].textContent = format_speed_brief(tableplane.speed); if (tableplane.position !== null)