diff --git a/modules/default/weather/forecast.njk b/modules/default/weather/forecast.njk
index 556a98ff..d03d3018 100644
--- a/modules/default/weather/forecast.njk
+++ b/modules/default/weather/forecast.njk
@@ -1,7 +1,10 @@
{% if forecast %}
+ {% set numSteps = forecast | calcNumSteps %}
+ {% set currentStep = 0 %}
+ {% set forecast = forecast.slice(0, numSteps) %}
{% for f in forecast %}
-
+
{{ f.date.format('ddd') }} |
|
@@ -16,6 +19,7 @@
|
{% endif %}
+ {% set currentStep = currentStep + 1 %}
{% endfor %}
{% else %}
diff --git a/modules/default/weather/weather.js b/modules/default/weather/weather.js
index 52e9cfee..818bc40a 100644
--- a/modules/default/weather/weather.js
+++ b/modules/default/weather/weather.js
@@ -33,6 +33,9 @@ Module.register("weather",{
decimalSymbol: ".",
showIndoorTemperature: false,
showIndoorHumidity: false,
+ maxNumberOfDays: 3,
+ fade: true,
+ fadePoint: 0.25, // Start on 1/4th of the list.
initialLoadDelay: 0, // 0 seconds delay
retryDelay: 2500,
@@ -198,7 +201,7 @@ Module.register("weather",{
}
}
} else if (type === "rain") {
- if (isNaN(value)) {
+ if (isNaN(value) || value === 0) {
value = "";
} else {
value = `${value.toFixed(2)} ${this.config.units === "imperial" ? "in" : "mm"}`;
@@ -217,5 +220,26 @@ Module.register("weather",{
this.nunjucksEnvironment().addFilter("decimalSymbol", function(value) {
return value.replace(/\./g, this.config.decimalSymbol);
}.bind(this));
+
+ this.nunjucksEnvironment().addFilter("calcNumSteps", function(forecast) {
+ return Math.min(forecast.length, this.config.maxNumberOfDays);
+ }.bind(this));
+
+ this.nunjucksEnvironment().addFilter("opacity", function(currentStep, numSteps) {
+ if (this.config.fade && this.config.fadePoint < 1) {
+ if (this.config.fadePoint < 0) {
+ this.config.fadePoint = 0;
+ }
+ var startingPoint = numSteps * this.config.fadePoint;
+ var numFadesteps = numSteps - startingPoint;
+ if (currentStep >= startingPoint) {
+ return 1 - (currentStep - startingPoint) / numFadesteps;
+ } else {
+ return 1;
+ }
+ } else {
+ return 1;
+ }
+ }.bind(this));
}
});