diff --git a/CHANGELOG.md b/CHANGELOG.md index c88b46c8..40f1936d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,7 +34,8 @@ Special thanks to the following contributors: @B1gG, @codac, @ezeholz, @khassel, - Update dependencies in package.json, require node >= v12, remove `rrule-alt` and `rrule` - Update dependencies in package.json and migrate husky to v6, fix husky setup in prod environment - Cleaned up error handling in newsfeed and calendar modules for real -- Update documentation +- Updated default WEATHER module such that a provider can optionally set a custom unit-of-measure for precipitation (`weatherObject.precipitationUnits`) +- Update documentation. ### Removed diff --git a/modules/default/weather/hourly.njk b/modules/default/weather/hourly.njk index 38832bdb..f58d31a0 100644 --- a/modules/default/weather/hourly.njk +++ b/modules/default/weather/hourly.njk @@ -11,13 +11,15 @@ {{ hour.temperature | roundValue | unit("temperature") }} {% if config.showPrecipitationAmount %} - - {{ hour.precipitation }}{{ hour.precipitationUnits }} - - {% else %} - - {{ hour.precipitation | unit("precip") }} - + {% if hour.precipitationUnits %} + + {{ hour.precipitation }}{{ hour.precipitationUnits }} + + {% else %} + + {{ hour.precipitation | unit("precip") }} + + {% endif %} {% endif %} {% set currentStep = currentStep + 1 %} diff --git a/modules/default/weather/providers/envcanada.js b/modules/default/weather/providers/envcanada.js index c48d26dc..db0773ea 100644 --- a/modules/default/weather/providers/envcanada.js +++ b/modules/default/weather/providers/envcanada.js @@ -538,9 +538,20 @@ WeatherProvider.register("envcanada", { setPrecipitation(weather, foreGroup, today) { if (foreGroup[today].querySelector("precipitation accumulation")) { - weather.precipitationUnits = foreGroup[today].querySelector("precipitation accumulation amount").getAttribute("units"); - weather.precipitation = foreGroup[today].querySelector("precipitation accumulation amount").textContent * 1.0; + + weather.precipitationUnits = " " + foreGroup[today].querySelector("precipitation accumulation amount").getAttribute("units"); + + if (this.config.units === "imperial") { + if (weather.precipitationUnits === " cm") { + weather.precipitation = (weather.precipitation * 0.394).toFixed(2); + weather.precipitationUnits = " in"; + } + if (weather.precipitationUnits === " mm") { + weather.precipitation = (weather.precipitation * 0.0394).toFixed(2); + weather.precipitationUnits = " in"; + } + } } // Check Today element for POP @@ -576,32 +587,6 @@ WeatherProvider.register("envcanada", { return kilo; } }, - // - // Convert cm or mm to inches - // - convertPrecipAmt(amt, units) { - if (this.config.units === "imperial") { - if (units === "cm") { - return amt * 0.394; - } - if (units === "mm") { - return amt * 0.0394; - } - } else { - return amt; - } - }, - - // - // Convert ensure precip units accurately reflect configured units - // - convertPrecipUnits(units) { - if (this.config.units === "imperial") { - return null; - } else { - return " " + units; - } - }, // // Convert the icons to a more usable name.