From a53132753363bab7882780a0407daa6fea8fd08f Mon Sep 17 00:00:00 2001 From: m30164 Date: Fri, 20 Feb 2015 00:09:03 +0100 Subject: [PATCH] Added extended unit settings Added some code to enable the user to configure unit selection in a more detailed fashion. you can now select either metric or imperial, or both, and even set which one of those should be displayed first. --- public_html/config.js | 9 ++- public_html/formatter.js | 170 +++++++++++++++++++++++++++++++++++++++ public_html/gmap.html | 1 + public_html/script.js | 114 +------------------------- 4 files changed, 178 insertions(+), 116 deletions(-) create mode 100644 public_html/formatter.js diff --git a/public_html/config.js b/public_html/config.js index 81909e4..cc27942 100644 --- a/public_html/config.js +++ b/public_html/config.js @@ -8,9 +8,12 @@ // -- Output Settings ------------------------------------- // Show metric values // This controls the units used in the plane table, -// and whether metric or imperial units are shown first -// in the detailed plane info. -Metric = false; // true or false +// You can choose to enable Metric or Imperial or both. +// If you enable both, by setting PreferMetric to either true or false, +// you control which unit is displayed first. +PreferMetric = true; +EnableMetric = true; +EnableImperial = false; // -- Map settings ---------------------------------------- // These settings are overridden by any position information diff --git a/public_html/formatter.js b/public_html/formatter.js new file mode 100644 index 0000000..73fb501 --- /dev/null +++ b/public_html/formatter.js @@ -0,0 +1,170 @@ +var TrackDirections = ["North","Northeast","East","Southeast","South","Southwest","West","Northwest"]; +// formatting helpers + +// track in degrees (0..359) +function format_track_brief(track) { + if (track === null){ + return ""; + } + + return Math.round(track); +} + +// track in degrees (0..359) +function format_track_long(track) { + if (track === null){ + return "n/a"; + } + + var trackDir = Math.floor((360 + track % 360 + 22.5) / 45) % 8; + return Math.round(track) + DEGREES + NBSP + "(" + TrackDirections[trackDir] + ")"; +} + +// altitude (input: alt in feet) +// brief will always show either Metric or Imperial +function format_altitude_brief(alt, vr) { + var alt_text; + + // 4 cases possible: + // 1: EnableMetric = true | EnableImperial = false | PreferMetric = (Dont Care) -> display metric + // 2: EnableMetric = false | EnableImperial = true | PreferMetric = (Dont Care) -> display imperial + // 3: EnableMetric = true | EnableImperial = true | PreferMetric = true -> display metric + // 4: EnableMetric = true | EnableImperial = true | PreferMetric = false -> display imperial + + if (alt === null){ + return ""; + } else if (alt === "ground"){ + return "ground"; + } + + if ((EnableMetric && !EnableImperial) || (PreferMetric && EnableMetric && EnableImperial)){ + alt_text = Math.round(alt / 3.2828) + NBSP; // Altitude to meters + } else { + alt_text = Math.round(alt) + NBSP; + } + + // Vertical Rate Triangle + if (vr > 128){ + return alt_text + UP_TRIANGLE; + } else if (vr < -128){ + return alt_text + DOWN_TRIANGLE; + } else { + return alt_text + NBSP; + } +} + +// alt in ft +function format_altitude_long(alt, vr) { + var alt_text = ""; + + if (alt === null) { + return "n/a"; + } else if (alt === "ground") { + return "on ground"; + } + + // If we only want to see one of the two types + if((EnableMetric && !EnableImperial) || (!EnableMetric && EnableImperial)){ + if(EnableMetric){ + alt_text = Math.round(alt / 3.2828) + " m"; + } + else{ + alt_text = Math.round(alt) + " ft"; + } + } + else{ // we want to see both, check PreferMetric for what order + if (PreferMetric) { + alt_text = Math.round(alt / 3.2828) + " m | " + Math.round(alt) + " ft"; + } else { + alt_text = Math.round(alt) + " ft | " + Math.round(alt / 3.2828) + " m"; + } + } + + if (vr > 128) { + return UP_TRIANGLE + NBSP + alt_text; + } else if (vr < -128) { + return DOWN_TRIANGLE + NBSP + alt_text; + } else { + return alt_text; + } +} + +//input: speed in kts +function format_speed_brief(speed) { + if (speed === null) { + return ""; + } + + if ((EnableMetric && !EnableImperial) || (PreferMetric && EnableMetric && EnableImperial)){ + return Math.round(speed * 1.852); // knots to kilometers per hour + } else { + return Math.round(speed); // knots + } +} + +// speed in kts +function format_speed_long(speed) { + if (speed === null) { + return "n/a"; + } + + // If we only want to see one of the two types + if((EnableMetric && !EnableImperial) || (!EnableMetric && EnableImperial)){ + if(EnableMetric){ + return Math.round(speed * 1.852) + " km/h"; + } + else{ + return Math.round(speed) + " kt"; + } + } + else{ // we want to see both, check PreferMetric for what order + if (PreferMetric) { + return Math.round(speed * 1.852) + " km/h | " + Math.round(speed) + " kt"; + } else { + return Math.round(speed) + " kt | " + Math.round(speed * 1.852) + " km/h"; + } + } + +} + +// dist in meters +function format_distance_brief(dist) { + if (dist === null) { + return ""; + } + + if ((EnableMetric && !EnableImperial) || (PreferMetric && EnableMetric && EnableImperial)){ + return (dist/1000).toFixed(1); // meters to kilometers + } else { + return (dist/1852).toFixed(1); // meters to nautocal miles + } +} + +// dist in metres +function format_distance_long(dist) { + if (dist === null) { + return "n/a"; + } + + // If we only want to see one of the two types + if((EnableMetric && !EnableImperial) || (!EnableMetric && EnableImperial)){ + if(EnableMetric){ + return (dist/1000).toFixed(1) + " km"; + } + else{ + return (dist/1852).toFixed(1) + " NM"; + } + } + else{ // we want to see both, check PreferMetric for what order + if (PreferMetric) { + return (dist/1000).toFixed(1) + " km | " + (dist/1852).toFixed(1) + " NM"; + } else { + return (dist/1852).toFixed(1) + " NM | " + (dist/1000).toFixed(1) + " km"; + } + } +} + +// p as a LatLng +function format_latlng(p) { + return p.lat().toFixed(3) + DEGREES + "," + NBSP + p.lng().toFixed(3) + DEGREES; +} \ No newline at end of file diff --git a/public_html/gmap.html b/public_html/gmap.html index a2f0ff2..e3ec31f 100644 --- a/public_html/gmap.html +++ b/public_html/gmap.html @@ -8,6 +8,7 @@ + diff --git a/public_html/script.js b/public_html/script.js index 7d6e160..9d7fba9 100644 --- a/public_html/script.js +++ b/public_html/script.js @@ -486,118 +486,6 @@ function reaper() { PlanesOrdered = newPlanes; refreshTableInfo(); refreshSelected(); -} - -// -// formatting helpers -// - -var TrackDirections = ["North","Northeast","East","Southeast","South","Southwest","West","Northwest"]; - -// track in degrees (0..359) -function format_track_brief(track) { - if (track === null) return ""; - return Math.round(track); -} - -// track in degrees (0..359) -function format_track_long(track) { - if (track === null) return "n/a"; - var trackDir = Math.floor((360 + track % 360 + 22.5) / 45) % 8; - return Math.round(track) + DEGREES + NBSP + "(" + TrackDirections[trackDir] + ")"; -} - -// alt in ft -function format_altitude_brief(alt, vr) { - var alt_text; - - if (alt === null) - return ""; - if (alt === "ground") - return "ground"; - - if (Metric) - alt_text = Math.round(alt / 3.2828) + NBSP; - else - alt_text = Math.round(alt) + NBSP; - - if (vr > 128) - return alt_text + UP_TRIANGLE; - else if (vr < -128) - return alt_text + DOWN_TRIANGLE; - else - return alt_text + NBSP; -} - -// alt in ft -function format_altitude_long(alt, vr) { - var alt_text; - - if (alt === null) - return "n/a"; - if (alt === "ground") - return "on ground"; - - if (Metric) - alt_text = Math.round(alt / 3.2828) + NBSP + "m / " + Math.round(alt) + NBSP + "ft"; - else - 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 -function format_speed_brief(speed) { - if (speed === null) - return ""; - - if (Metric) - return Math.round(speed * 1.852); - else - return Math.round(speed); -} - -// speed in kts -function format_speed_long(speed) { - if (speed === null) - return "n/a"; - - if (Metric) - return Math.round(speed * 1.852) + NBSP + "km/h / " + Math.round(speed) + NBSP + "kt"; - else - return Math.round(speed) + NBSP + "kt / " + Math.round(speed * 1.852) + NBSP + "km/h"; -} - -// dist in metres -function format_distance_brief(dist) { - if (dist === null) - return ""; - - if (Metric) - return (dist/1000).toFixed(1); - else - return (dist/1852).toFixed(1); -} - -// dist in metres -function format_distance_long(dist) { - if (dist === null) - return "n/a"; - - if (Metric) - return (dist/1000).toFixed(1) + " km / " + (dist/1852).toFixed(1) + " NM"; - else - return (dist/1852).toFixed(1) + " NM / " + (dist/1000).toFixed(1) + " km"; -} - -// p as a LatLng -function format_latlng(p) { - return p.lat().toFixed(3) + DEGREES + "," + NBSP + p.lng().toFixed(3) + DEGREES; } // Refresh the detail window about the plane @@ -898,7 +786,7 @@ function drawCircle(marker, distance) { } distance *= 1000.0; - if (!Metric) { + if (!EnableMetric) { distance *= 1.852; }