diff --git a/scripts/remove_bloat.sh b/scripts/remove_bloat.sh index 3971d35..e163a84 100755 --- a/scripts/remove_bloat.sh +++ b/scripts/remove_bloat.sh @@ -7,7 +7,7 @@ echo "Removing bloat in node_modules..." pwd cd www/node_modules -rm -rf {ansicolors,buffer-from,cardinal,concat-stream,core-util-is,csscolorparser} +rm -rf {ansicolors,buffer-from,cardinal,chartjs-color,chartjs-color-string,color-convert,color-name,concat-stream,core-util-is,csscolorparser} rm -rf {dom7,earcut,esprima,geojson-vt,gl-matrix,grid-index,ieee754,inherits,isarray} rm -rf {kdbush,leaflet-geometryutil,@mapbox,minimist,murmurhash-js} rm -rf {path-to-regexp,pbf,potpack,process-nextick-args} @@ -25,6 +25,11 @@ rm -rf dist/bwip-js.js rm -rf dist/node-bwipjs.js cd .. +cd chart.js +cd dist +rm {Chart.bundle.js,Chart.css,Chart.js} +cd ../.. + cd @fortawesome/fontawesome-free rm -rf {js,less,metadata,scss,sprites,svgs} find css -type f -not -name 'all.min.css' -delete diff --git a/www/assets/images/weather-fog.svg b/www/assets/images/weather-fog.svg new file mode 100644 index 0000000..7d06015 --- /dev/null +++ b/www/assets/images/weather-fog.svg @@ -0,0 +1,106 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/www/assets/images/weather-hazard.svg b/www/assets/images/weather-hazard.svg new file mode 100644 index 0000000..6fbade0 --- /dev/null +++ b/www/assets/images/weather-hazard.svg @@ -0,0 +1,196 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/assets/images/weather-heat.svg b/www/assets/images/weather-heat.svg new file mode 100644 index 0000000..ba0df95 --- /dev/null +++ b/www/assets/images/weather-heat.svg @@ -0,0 +1,103 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/www/assets/images/weather-mostly-sunny.svg b/www/assets/images/weather-mostly-sunny.svg new file mode 100644 index 0000000..3a9b798 --- /dev/null +++ b/www/assets/images/weather-mostly-sunny.svg @@ -0,0 +1,93 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/www/assets/js/toolbox_weather.js b/www/assets/js/toolbox_weather.js index b576e3e..429e558 100644 --- a/www/assets/js/toolbox_weather.js +++ b/www/assets/js/toolbox_weather.js @@ -40,25 +40,189 @@ function loadWeather(reload) { } requestfinished = true; if (resp.status == "OK") { - var mintemp = (getStorage("units") == "metric" ? Math.round(ftoc(resp.temp.min)) + " °C" : Math.round(resp.temp.min) + " °F"); - var maxtemp = (getStorage("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"); + // + // Summary tab + // + var mintemp = (getStorage("units") == "metric" ? Math.round(ftoc(resp.summary.temp.min)) + " °C" : Math.round(resp.summary.temp.min) + " °F"); + var maxtemp = (getStorage("units") == "metric" ? Math.round(ftoc(resp.summary.temp.max)) + " °C" : Math.round(resp.summary.temp.max) + " °F"); + $("#summarylowtemp").html(mintemp); + $("#summaryhightemp").html(maxtemp); + $("#summaryprecipchance").text(Math.round(resp.summary.precipitation.chance * 100.0) + "% chance"); if (getStorage("units") == "metric") { - $("#windspeed").text(Math.round(resp.windspeed * 1.609344) + " km/h"); + $("#summarywindspeed").text(Math.round(resp.summary.windspeed * 1.609344) + " km/h"); } else { - $("#windspeed").text(Math.round(resp.windspeed) + " mph"); + $("#summarywindspeed").text(Math.round(resp.summary.windspeed) + " mph"); } - if (SETTINGS.weathericons.includes(resp.icon)) { - $("#weathericon").attr("src", "assets/images/weather-" + resp.icon + ".svg"); + if (SETTINGS.weathericons.includes(resp.summary.icon)) { + $("#summaryweathericon").attr("src", "assets/images/weather-" + resp.summary.icon + ".svg"); } else { - $("#weathericon").attr("src", "assets/images/weather-none.svg"); + $("#summaryweathericon").attr("src", "assets/images/weather-none.svg"); } - $("#forecast-location").text(resp.location_name); - $("#forecast-info").text("Forecast covers the next " + resp.forecast_hours + " hours (until " + timestampToTimeString(resp.forecast_until) + ")."); - $("#forecast-creditlink").text(resp.source.text); - $("#forecast-creditlink").attr("onclick", "openExternalBrowser('" + resp.source.url + "')"); + $("#summary-forecast-location").text(resp.location_name); + $("#summary-forecast-info").text("Forecast covers the next " + resp.summary.forecast_hours + " hours (until " + timestampToTimeString(resp.summary.forecast_until) + ")."); + $("#summary-forecast-creditlink").text(resp.source.text); + $("#summary-forecast-creditlink").attr("onclick", "openExternalBrowser('" + resp.source.url + "')"); + + + // + // Now tab + // + var temp = (getStorage("units") == "metric" ? Math.round(ftoc(resp.now.temp)) + " °C" : Math.round(resp.now.temp) + " °F"); + var feelslike = (getStorage("units") == "metric" ? Math.round(ftoc(resp.now.feelslike)) + " °C" : Math.round(resp.now.feelslike) + " °F"); + $("#nowtemp").html(temp); + $("#nowfeelslike").html(feelslike); + if (SETTINGS.weathericons.includes(resp.now.icon)) { + $("#nowweathericon").attr("src", "assets/images/weather-" + resp.now.icon + ".svg"); + } else { + $("#nowweathericon").attr("src", "assets/images/weather-none.svg"); + } + + var uvcolor = "#4CAF50"; + if (resp.now.uv_index > 10) { + uvcolor = "#673AB7"; + } else if (resp.now.uv_index > 7) { + uvcolor = "#F44336"; + } else if (resp.now.uv_index > 5) { + uvcolor = "#FF9800"; + } else if (resp.now.uv_index > 2) { + uvcolor = "#FFEB3B"; + } + app.gauge.get('#nowuvindexgauge').update({ + value: Math.max(resp.now.uv_index / 11, 0.05), + valueText: resp.now.uv_index, + borderColor: uvcolor, + }); + + if (getStorage("units") == "metric") { + $("#nowwindspeed").text(Math.round(resp.now.windspeed * 1.609344) + " km/h"); + } else { + $("#nowwindspeed").text(Math.round(resp.now.windspeed) + " mph"); + } + + $("#nowwinddirection").text(degreesToCardinal(resp.now.winddirection)); + + var minutelydata = []; + var maxprecip = 0; + for (var i = 0; i < resp.today.minutely.length; i++) { + precip = resp.today.minutely[i].precip; + if (getStorage("units") == "metric") { + precip = precip * 25.4; + } + + minutelydata[i] = { + x: new Date(resp.today.minutely[i].time * 1000), + y: precip + }; + if (precip > maxprecip) { + maxprecip = precip; + } + } + + if (maxprecip > 0) { + // only make rain chart if there's rain + var precipChart = new Chart(document.getElementById('precipchart'), { + type: "line", + data: { + datasets: [ + { + fill: true, + data: minutelydata, + borderWidth: 0, + spanGaps: true, + backgroundColor: "#03A9F4", + borderColor: "#03A9F4" + } + ] + }, + options: { + responsive: true, + elements: { + point: { + radius: 0 + } + }, + scales: { + xAxes: [{ + type: 'time', + display: true, + scaleLabel: { + display: false + }, + gridLines: { + display: true, + drawBorder: false + }, + time: { + unit: 'minute', + stepSize: 5, + displayFormats: { + minute: 'h:mm', + hour: 'hA' + } + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true + }, + gridLines: { + display: false, + drawBorder: false + }, + ticks: { + min: 0, + max: Math.round(maxprecip), + stepSize: (Math.round(maxprecip) / 2), + callback: function (value, index, values) { + if (getStorage("units") == "metric") { + return value + ' mm'; + } else { + return value + ' in'; + } + } + } + }] + }, + legend: { + display: false + }, + tooltips: { + enabled: false + } + } + }); + } + + forecastItems = []; + + for (var i = 1; i < resp.forecast.length; i++) { + var low = (getStorage("units") == "metric" ? Math.round(ftoc(resp.forecast[i].temp.min)) : Math.round(resp.forecast[i].temp.min)); + var high = (getStorage("units") == "metric" ? Math.round(ftoc(resp.forecast[i].temp.max)) + " °C" : Math.round(resp.forecast[i].temp.max) + " °F"); + forecastItems.push({ + day: formatTimestamp('l', resp.forecast[i].date), + temps: low + " to " + high, + uv_index: resp.forecast[i].uv_index + }); + } + + forecastItemTemplate = '
  • ' + + '
    ' + + '
    ' + + '
    ' + + '
    {{day}}
    ' + + ' {{temps}}' + + '
    UV Index: {{uv_index}}' + + '
    ' + + '
    ' + + '
    ' + + '
  • '; + + forecastVirtualList = app.virtualList.create({ + el: "#forecast-list", + items: forecastItems, + itemTemplate: forecastItemTemplate + }); } else { app.dialog.alert(resp.message, "Error"); } diff --git a/www/assets/js/util.js b/www/assets/js/util.js index e0819ee..e9ba4cb 100644 --- a/www/assets/js/util.js +++ b/www/assets/js/util.js @@ -272,4 +272,46 @@ function time() { */ function timeDiff(compareto) { return time() - compareto; +} + +/** + * Convert decimal degrees to cardinal/compass directions. + * https://gist.github.com/felipeskroski/8aec22f01dabdbf8fb6b + * @param {type} deg + * @returns {String} + */ +function degreesToCardinal(deg) { + if (deg > 11.25 && deg < 33.75) { + return "NNE"; + } else if (deg > 33.75 && deg < 56.25) { + return "ENE"; + } else if (deg > 56.25 && deg < 78.75) { + return "E"; + } else if (deg > 78.75 && deg < 101.25) { + return "ESE"; + } else if (deg > 101.25 && deg < 123.75) { + return "ESE"; + } else if (deg > 123.75 && deg < 146.25) { + return "SE"; + } else if (deg > 146.25 && deg < 168.75) { + return "SSE"; + } else if (deg > 168.75 && deg < 191.25) { + return "S"; + } else if (deg > 191.25 && deg < 213.75) { + return "SSW"; + } else if (deg > 213.75 && deg < 236.25) { + return "SW"; + } else if (deg > 236.25 && deg < 258.75) { + return "WSW"; + } else if (deg > 258.75 && deg < 281.25) { + return "W"; + } else if (deg > 281.25 && deg < 303.75) { + return "WNW"; + } else if (deg > 303.75 && deg < 326.25) { + return "NW"; + } else if (deg > 326.25 && deg < 348.75) { + return "NNW"; + } else { + return "N"; + } } \ No newline at end of file diff --git a/www/index.html b/www/index.html index 4fd313f..6c80a79 100644 --- a/www/index.html +++ b/www/index.html @@ -15,6 +15,7 @@ + @@ -46,6 +47,7 @@ + diff --git a/www/package-lock.json b/www/package-lock.json index 906767e..92b4750 100644 --- a/www/package-lock.json +++ b/www/package-lock.json @@ -1,6 +1,6 @@ { "name": "PackageHelper", - "version": "1.5.0", + "version": "1.5.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -20,7 +20,7 @@ "@mapbox/geojson-rewind": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.4.1.tgz", - "integrity": "sha512-mxo2MEr7izA1uOXcDsw99Kgg6xW3P4H2j4n1lmldsgviIelpssvP+jQDivFKOHrOVJDpTTi5oZJvRcHtU9Uufw==", + "integrity": "sha1-NX15MArbf+x8HwkVEpiLymRY8Gg=", "requires": { "@mapbox/geojson-area": "0.2.2", "concat-stream": "~1.6.0", @@ -31,14 +31,14 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" } } }, "@mapbox/geojson-types": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz", - "integrity": "sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==" + "integrity": "sha1-muz2QssA6rEIClfE+UmmW0pYRtY=" }, "@mapbox/jsonlint-lines-primitives": { "version": "2.0.2", @@ -48,7 +48,7 @@ "@mapbox/mapbox-gl-supported": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz", - "integrity": "sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==" + "integrity": "sha1-9gtqVaXY5e6Qg0fSzkJQsVED3I4=" }, "@mapbox/point-geometry": { "version": "0.1.0", @@ -58,7 +58,7 @@ "@mapbox/tiny-sdf": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.1.1.tgz", - "integrity": "sha512-Ihn1nZcGIswJ5XGbgFAvVumOgWpvIjBX9jiRlIl46uQG9vJOF51ViBYHF95rEZupuyQbEmhLaDPLQlU7fUTsBg==" + "integrity": "sha1-FqIMRwdBv+kZHeszb0bhlNpKkf8=" }, "@mapbox/unitbezier": { "version": "0.0.0", @@ -68,7 +68,7 @@ "@mapbox/vector-tile": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", - "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "integrity": "sha1-06dMkEAtBuiexm3knsgX/1NAlmY=", "requires": { "@mapbox/point-geometry": "~0.1.0" } @@ -76,7 +76,7 @@ "@mapbox/whoots-js": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", - "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" + "integrity": "sha1-SXxnoc71DRokWbpg8xXkSNKth/4=" }, "@zxing/library": { "version": "0.15.2", @@ -95,7 +95,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=" }, "bwip-js": { "version": "2.0.6", @@ -111,10 +111,56 @@ "redeyed": "~0.4.0" } }, + "chart.js": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.3.tgz", + "integrity": "sha512-+2jlOobSk52c1VU6fzkh3UwqHMdSlgH1xFv9FKMqHiNCpXsGPQa/+81AFa+i3jZ253Mq9aAycPwDjnn1XbRNNw==", + "requires": { + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" + } + }, + "chartjs-color": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz", + "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==", + "requires": { + "chartjs-color-string": "^0.6.0", + "color-convert": "^1.9.3" + } + }, + "chartjs-color-string": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", + "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", + "requires": { + "color-name": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + }, + "dependencies": { + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + } + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", "requires": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -143,7 +189,7 @@ "earcut": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.2.tgz", - "integrity": "sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ==" + "integrity": "sha1-QbC8NfY+D+gNp83f8oUR5+LoDRE=" }, "esprima": { "version": "1.0.4", @@ -164,7 +210,7 @@ "geojson-vt": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", - "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==" + "integrity": "sha1-+K22FNLB0/bufEJlytS7861gyLc=" }, "gl-matrix": { "version": "3.2.1", @@ -174,17 +220,17 @@ "grid-index": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", - "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==" + "integrity": "sha1-l/giHt7BAmyDd7hkRqfHHnlSLqc=" }, "ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=" }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=" }, "isarray": { "version": "1.0.0", @@ -204,7 +250,7 @@ "kdbush": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", - "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==" + "integrity": "sha1-+EhHlNRwBMwthe06eTU9vgq8K/A=" }, "leaflet": { "version": "1.6.0", @@ -269,6 +315,11 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "moment": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" + }, "murmurhash-js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", @@ -277,12 +328,12 @@ "path-to-regexp": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.1.0.tgz", - "integrity": "sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==" + "integrity": "sha1-Cxj4i3oM4L+uaiWZDJCauG9RJCc=" }, "pbf": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", - "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", + "integrity": "sha1-tMG55yr5Zs2CxlMWkRFcwECf/io=", "requires": { "ieee754": "^1.1.12", "resolve-protobuf-schema": "^2.1.0" @@ -291,27 +342,27 @@ "potpack": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.1.tgz", - "integrity": "sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw==" + "integrity": "sha1-0bGv2J5Mj3dihl7DC9ESq3Z+Lr8=" }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=" }, "protocol-buffers-schema": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz", - "integrity": "sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA==" + "integrity": "sha1-Lw6jHKlmJ9aAvy/vrn6/orZFPq4=" }, "quickselect": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + "integrity": "sha1-8ZaApIal7vtYEwPgI+mPqvJd0Bg=" }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -333,7 +384,7 @@ "resolve-protobuf-schema": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", - "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "integrity": "sha1-nKmp5pzxkrva8QBuwZc5SKpKN1g=", "requires": { "protocol-buffers-schema": "^3.3.1" } @@ -346,12 +397,12 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" }, "sharkdown": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/sharkdown/-/sharkdown-0.1.1.tgz", - "integrity": "sha512-exwooSpmo5s45lrexgz6Q0rFQM574wYIX3iDZ7RLLqOb7IAoQZu9nxlZODU972g19sR69OIpKP2cpHTzU+PHIg==", + "integrity": "sha1-ZEhL0PCPNH+DGen/lHpnD2tIsbI=", "requires": { "cardinal": "~0.4.2", "minimist": "0.0.5", @@ -376,12 +427,12 @@ "ssr-window": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-1.0.1.tgz", - "integrity": "sha512-dgFqB+f00LJTEgb6UXhx0h+SrG50LJvti2yMKMqAgzfUmUXZrLSv2fjULF7AWGwK25EXu8+smLR3jYsJQChPsg==" + "integrity": "sha1-MHUqakZm53Z/C35qpvwv29DZs2k=" }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", "requires": { "safe-buffer": "~5.1.0" } @@ -389,7 +440,7 @@ "supercluster": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.0.0.tgz", - "integrity": "sha512-8VuHI8ynylYQj7Qf6PBMWy1PdgsnBiIxujOgc9Z83QvJ8ualIYWNx2iMKyKeC4DZI5ntD9tz/CIwwZvIelixsA==", + "integrity": "sha1-ddR0+vsKBV21Uu1717vaWD9qsyE=", "requires": { "kdbush": "^3.0.0" } @@ -397,12 +448,12 @@ "template7": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/template7/-/template7-1.4.2.tgz", - "integrity": "sha512-eoKnScBMDk7lyj7+iCzKbxGiSLLlQk0DNvmclyJuMCUKxy9JrFuAB+GD5iplF4WiQPtMdI06CHHks3avL22JXA==" + "integrity": "sha1-YvMpWTYeRV7Bce+e8z0pynEw4Ak=" }, "text-encoding": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.7.0.tgz", - "integrity": "sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==", + "integrity": "sha1-+JXoNuRZkGJAhmAXmOqY6PNu5kM=", "optional": true }, "through": { @@ -413,12 +464,12 @@ "tinyqueue": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", - "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" + "integrity": "sha1-ZNhJLr8554Ade9NAYuKbRbIDXwg=" }, "ts-custom-error": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.1.1.tgz", - "integrity": "sha512-f/syoy+pTE4z82qaiRuthEeZtCGNKzlfs0Zc8jpQFcz/CYMaFSwFSdfFt1sSFnPlDLOEm7RCROdIxZ44N8UlwA==" + "integrity": "sha1-0wx0FUYdrJPcLMnp6y2ukuZCOQE=" }, "typedarray": { "version": "0.0.6", @@ -433,7 +484,7 @@ "vt-pbf": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.1.tgz", - "integrity": "sha512-pHjWdrIoxurpmTcbfBWXaPwSmtPAHS105253P1qyEfSTV2HJddqjM+kIHquaT/L6lVJIk9ltTGc0IxR/G47hYA==", + "integrity": "sha1-sPYn45oQzpHZQ7iY7SNj0hiZ+4I=", "requires": { "@mapbox/point-geometry": "0.1.0", "@mapbox/vector-tile": "^1.3.1", diff --git a/www/package.json b/www/package.json index 888e266..a487c1d 100644 --- a/www/package.json +++ b/www/package.json @@ -7,6 +7,7 @@ "@fortawesome/fontawesome-free": "^5.12.1", "@zxing/library": "^0.15.2", "bwip-js": "^2.0.6", + "chart.js": "^2.9.3", "framework7": "^5.5.1", "jquery": "^3.4.1", "jsbarcode": "^3.11.0", diff --git a/www/pages/toolbox/weather.html b/www/pages/toolbox/weather.html index 0e9b2bf..383faee 100644 --- a/www/pages/toolbox/weather.html +++ b/www/pages/toolbox/weather.html @@ -21,34 +21,94 @@ -
    -
    -
    -
    - - -
    -
    -

    Low: ...

    -
    -
    -

    High: ...

    -
    -
    -

    Precipitation: ...

    -

    Wind speed: ...

    +
    +
    + Summary + Now + Forecast +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +

    Low: ...

    +
    +
    +

    High: ...

    +
    +
    +

    Precipitation: ...

    +

    Wind speed: ...

    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +

    ...

    +

    Feels like ...

    +
    +
    + +
    +
    +
    +
    +
    +

    + Wind: ... +
    + ... +

    +
    +
    -
    +
    +
    +
    +
    diff --git a/www/settings.js b/www/settings.js index 4190cfe..ca8bb2a 100644 --- a/www/settings.js +++ b/www/settings.js @@ -115,9 +115,13 @@ var SETTINGS = { "clear", "cloudy", "partly-cloudy", + "mostly-sunny", "rain", "snow", + "fog", + "heat", "windy", + "hazard", "none" ], scannerevents: [ @@ -357,7 +361,7 @@ var SETTINGS = { geocodeapi: "https://apis.netsyms.net/packagehelper/geocode.php", geocodebarcodeapi: "https://apis.netsyms.net/packagehelper/geocode_barcode.php", trackingapi: "https://apis.netsyms.net/packagehelper/track.php", - weatherapi: "https://apis.netsyms.net/packagehelper/weather.php", + weatherapi: "http://localhost/packagehelperapi/weather.php", geoipapi: "https://apis.netsyms.net/packagehelper/geoip.php", sharelistapi: "https://apis.netsyms.net/packagehelper/sharepackagelist.php", loginurl: "https://apis.netsyms.net/packagehelper/login/",