From 66161eebf8ecf772c1112bf9b7dc63ff5830753c Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Thu, 21 Nov 2019 23:38:02 -0700 Subject: [PATCH] Add weather page to toolbox (close #25) --- www/assets/images/weather-clear.svg | 68 ++++++++++++++++++++++++ www/assets/images/weather-rain.svg | 68 ++++++++++++++++++++++++ www/assets/images/weather-snow.svg | 81 +++++++++++++++++++++++++++++ www/assets/images/weather-windy.svg | 68 ++++++++++++++++++++++++ www/assets/js/toolbox_track.js | 2 +- www/assets/js/toolbox_weather.js | 63 ++++++++++++++++++++++ www/pages/toolbox.html | 8 +++ www/pages/toolbox/weather.html | 46 ++++++++++++++++ www/routes.js | 10 ++++ www/settings.js | 3 +- 10 files changed, 415 insertions(+), 2 deletions(-) create mode 100644 www/assets/images/weather-clear.svg create mode 100644 www/assets/images/weather-rain.svg create mode 100644 www/assets/images/weather-snow.svg create mode 100644 www/assets/images/weather-windy.svg create mode 100644 www/assets/js/toolbox_weather.js create mode 100644 www/pages/toolbox/weather.html diff --git a/www/assets/images/weather-clear.svg b/www/assets/images/weather-clear.svg new file mode 100644 index 0000000..d7448af --- /dev/null +++ b/www/assets/images/weather-clear.svg @@ -0,0 +1,68 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/www/assets/images/weather-rain.svg b/www/assets/images/weather-rain.svg new file mode 100644 index 0000000..5288541 --- /dev/null +++ b/www/assets/images/weather-rain.svg @@ -0,0 +1,68 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/www/assets/images/weather-snow.svg b/www/assets/images/weather-snow.svg new file mode 100644 index 0000000..53f6d5a --- /dev/null +++ b/www/assets/images/weather-snow.svg @@ -0,0 +1,81 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/www/assets/images/weather-windy.svg b/www/assets/images/weather-windy.svg new file mode 100644 index 0000000..578c430 --- /dev/null +++ b/www/assets/images/weather-windy.svg @@ -0,0 +1,68 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/www/assets/js/toolbox_track.js b/www/assets/js/toolbox_track.js index 9d13aa8..ccdc5dd 100644 --- a/www/assets/js/toolbox_track.js +++ b/www/assets/js/toolbox_track.js @@ -100,7 +100,7 @@ function openTrackingHistory(trackingcode) { error: function (jqXHR, status, errorThrown) { if (trackingdialogopen) { app.dialog.close(); - searchingdialogopen = false; + trackingdialogopen = false; } requestfinished = true; playSound("error"); diff --git a/www/assets/js/toolbox_weather.js b/www/assets/js/toolbox_weather.js new file mode 100644 index 0000000..4eb59c7 --- /dev/null +++ b/www/assets/js/toolbox_weather.js @@ -0,0 +1,63 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + +function ftoc(f) { + return (f - 32) * 5 / 9; +} + +function loadWeather() { + + if (userPosition.coords.accuracy > 99999) { + app.dialog.alert("Couldn't find your location. Wait for a GPS signal and try again.", "Error"); + return; + } + + var requestfinished = false; + var weatherdialogopen = false; + $.ajax({ + url: SETTINGS.weatherapi, + dataType: 'json', + data: { + latitude: userPosition.coords.latitude, + longitude: userPosition.coords.longitude + }, + timeout: 15 * 1000, + success: function (resp) { + if (weatherdialogopen) { + app.dialog.close(); + weatherdialogopen = false; + } + requestfinished = true; + if (resp.status == "OK") { + var mintemp = (localStorage.getItem("units") == "metric" ? Math.round(ftoc(resp.temp.min)) + " °C" : Math.round(resp.temp.min) + " °F"); + var maxtemp = (localStorage.getItem("units") == "metric" ? Math.round(ftoc(resp.temp.max)) + " °C" : Math.round(resp.temp.max) + " °F"); + $("#lowtemp").html(mintemp); + $("#hightemp").html(maxtemp); + $("#precipchance").text(Math.round(resp.precipitation.chance * 100.0) + "% chance"); + $("#weathericon").attr("src", "assets/images/weather-" + resp.icon + ".svg"); + } else { + app.dialog.alert(resp.message, "Error"); + } + }, + error: function (jqXHR, status, errorThrown) { + if (weatherdialogopen) { + app.dialog.close(); + weatherdialogopen = false; + } + requestfinished = true; + app.dialog.alert("There was a network issue while checking the weather. Please try again.", "Error"); + } + }); + + // Open a loading message if there's a delay + setTimeout(function () { + if (!requestfinished) { + app.dialog.preloader("Checking Weather..."); + weatherdialogopen = true; + } + }, 1000); +} \ No newline at end of file diff --git a/www/pages/toolbox.html b/www/pages/toolbox.html index b140372..14155c6 100644 --- a/www/pages/toolbox.html +++ b/www/pages/toolbox.html @@ -27,6 +27,14 @@ +
  • + +
    +
    +
    Weather
    +
    +
    +
  • + +
    + + + +
    + +
    + + +
    +
    +

    Low: ...

    +
    +
    +

    High: ...

    +
    +
    +

    Precipitation: ...

    +
    +
    + + +
    +
    + + +
    diff --git a/www/routes.js b/www/routes.js index 4f516c3..7900fd0 100644 --- a/www/routes.js +++ b/www/routes.js @@ -98,6 +98,16 @@ var routes = [ url: './pages/toolbox/track.html', name: 'track' }, + { + path: '/toolbox/weather', + url: './pages/toolbox/weather.html', + name: 'weather', + on: { + pageAfterIn: function () { + loadWeather(); + } + } + }, { path: '/toolbox/track/info', templateUrl: './pages/toolbox/trackinginfo.html', diff --git a/www/settings.js b/www/settings.js index ef0f6a5..89cdb9a 100644 --- a/www/settings.js +++ b/www/settings.js @@ -79,5 +79,6 @@ var SETTINGS = { } }, geocodeapi: "https://apis.netsyms.net/packagehelper/geocode.php", - trackingapi: "https://apis.netsyms.net/packagehelper/track.php" + trackingapi: "https://apis.netsyms.net/packagehelper/track.php", + weatherapi: "https://apis.netsyms.net/packagehelper/weather.php" }