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.