Make all visiable values dynamic.

This commit is contained in:
Michael Teeuw 2017-10-18 13:38:56 +02:00
parent 241ff5cb6e
commit ab732b5435
4 changed files with 84 additions and 13 deletions

View File

@ -1,13 +1,43 @@
{#
TODO:
- Show Humidity
- Show Units
_ Show Indoor Temperature
_ Show Indoor Humidity
#}
{% if current %}
<div class="normal medium">
<span class="wi wi-strong-wind dimmed"></span>
<span>
{{current.windSpeed}} <!-- should be converted to wind speed in correct unit ... -->
<sup>{{current.cardinalWindDirection()}}</sup>
</span>
<span class="wi dimmed wi-sunset"></span> <!-- hard coded, should use logic ... -->
<span> 00:00</span> <!-- hard coded, should use logic ... -->
</div>
{% if not config.onlyTemp %}
<div class="normal medium">
<span class="wi wi-strong-wind dimmed"></span>
<span>
{% if config.useBeaufort %}
{{current.beaufortWindSpeed() | round}}
{% else %}
{{current.windSpeed | round}}
{% endif %}
{% if config.showWindDirection %}
<sup>
{% if config.showWindDirectionAsArrow %}
<i class="fa fa-long-arrow-up" style="transform:rotate({{current.windDirection}}deg);"></i>
{% else %}
{{current.cardinalWindDirection()}}
{% endif %}
&nbsp;
</sup>
{% endif %}
</span>
<span class="wi dimmed wi-{{current.nextSunAction()}}"></span>
<span>
{% if current.nextSunAction() == "sunset" %}
{{current.sunset | formatTime}}
{% else %}
{{current.sunrise | formatTime}}
{% endif %}
</span>
</div>
{% endif %}
<div class="large light">
<span class="wi weathericon wi-{{current.weatherType}}"></span>
<span class="bright"> {{current.temperature | round(0 if config.roundTemp else 1)}}°</span></div>

View File

@ -55,7 +55,7 @@ Module.register("weather",{
// Define required scripts.
getStyles: function() {
return ["weather-icons.css", "weather.css"];
return ["font-awesome.css", "weather-icons.css", "weather.css"];
},
// Return the scripts that are nessecery for the weather module.
@ -79,6 +79,9 @@ Module.register("weather",{
// Let the weather provider know we are starting.
this.weatherProvider.start()
// Add custom filters
this.addFilters()
// Schedule the first update.
this.scheduleUpdate(0)
},
@ -122,5 +125,26 @@ Module.register("weather",{
break;
}
}, nextLoad);
},
addFilters() {
var self = this
this.nunjucksEnvironment().addFilter("formatTime", function(date) {
date = moment(date)
if (self.config.timeFormat !== 24) {
if (self.config.showPeriod) {
if (self.config.showPeriodUpper) {
return date.format("h:mm A")
} else {
return date.format("h:mm a")
}
} else {
return date.format("h:mm")
}
}
return date.format("HH:mm")
});
}
});

View File

@ -5,11 +5,11 @@
*
* By Michael Teeuw http://michaelteeuw.nl
* MIT Licensed.
*
*
* This class is the blueprint for a day which includes weather information.
*/
// Currently this is focused on the information which is nessecery for the current weather.
// Currently this is focused on the information which is necessary for the current weather.
// As soon as we start implementing the forecast, mode properties will be added.
class WeatherObject {
@ -60,4 +60,21 @@ class WeatherObject {
return "N";
}
}
beaufortWindSpeed () {
var kmh = this.windSpeed * 60 * 60 / 1000;
var speeds = [1, 5, 11, 19, 28, 38, 49, 61, 74, 88, 102, 117, 1000];
for (var beaufort in speeds) {
var speed = speeds[beaufort];
if (speed > kmh) {
return beaufort;
}
}
return 12;
}
nextSunAction () {
var now = new Date();
return (this.sunrise < now && this.sunset > now) ? "sunset" : "sunrise";
}
};

View File

@ -5,7 +5,7 @@
*
* By Michael Teeuw http://michaelteeuw.nl
* MIT Licensed.
*
*
* This class is the blueprint for a weather provider.
*/