diff --git a/CHANGELOG.md b/CHANGELOG.md
index 069c61f8..7d5bc9b4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,10 +13,17 @@ _This release is scheduled to be released on 2020-10-01._
### Updated
+- Change incorrect weather.js default properties.
+
### Deleted
### Fixed
+- Fix the use of "maxNumberOfDays" in the module "weatherforecast depending on the endpoint (forecast/daily or forecast)". [#2018](https://github.com/MichMich/MagicMirror/issues/2018)
+- Fix calendar display. Account for current timezone. [#2068](https://github.com/MichMich/MagicMirror/issues/2068)
+- Fix logLevel being set before loading config.
+- Fix incorrect namespace links in svg clockfaces. [#2072](https://github.com/MichMich/MagicMirror/issues/2072)
+
## [2.12.0] - 2020-07-01
Special thanks to the following contributors: @AndreKoepke, @andrezibaia, @bryanzzhu, @chamakura, @DarthBrento, @Ekristoffe, @khassel, @Legion2, @ndom91, @radokristof, @rejas, @XBCreepinJesus & @ZoneMR.
diff --git a/js/app.js b/js/app.js
index 7cf7dd2e..b1fcc9bb 100644
--- a/js/app.js
+++ b/js/app.js
@@ -202,6 +202,8 @@ var App = function () {
loadConfig(function (c) {
config = c;
+ Log.setLogLevel(config.logLevel);
+
var modules = [];
for (var m in config.modules) {
diff --git a/js/logger.js b/js/logger.js
index 157420a7..122ba81a 100644
--- a/js/logger.js
+++ b/js/logger.js
@@ -32,13 +32,15 @@
timeStamp: Function.prototype.bind.call(console.timeStamp, console)
};
- if (config && config.logLevel) {
- Object.keys(logLevel).forEach(function (key, index) {
- if (!config.logLevel.includes(key.toLocaleUpperCase())) {
- logLevel[key] = function () {};
- }
- });
- }
+ logLevel.setLogLevel = function (newLevel) {
+ if (newLevel) {
+ Object.keys(logLevel).forEach(function (key, index) {
+ if (!newLevel.includes(key.toLocaleUpperCase())) {
+ logLevel[key] = function () {};
+ }
+ });
+ }
+ };
return logLevel;
});
diff --git a/js/main.js b/js/main.js
index 07459f0f..dc1667af 100644
--- a/js/main.js
+++ b/js/main.js
@@ -477,6 +477,9 @@ var MM = (function () {
init: function () {
Log.info("Initializing MagicMirror.");
loadConfig();
+
+ Log.setLogLevel(config.logLevel);
+
Translator.loadCoreTranslations(config.language);
Loader.loadModules();
},
diff --git a/modules/default/calendar/calendar.js b/modules/default/calendar/calendar.js
index bba7565d..5c6ce453 100755
--- a/modules/default/calendar/calendar.js
+++ b/modules/default/calendar/calendar.js
@@ -467,6 +467,7 @@ Module.register("calendar", {
var calendar = this.calendarData[c];
for (var e in calendar) {
var event = JSON.parse(JSON.stringify(calendar[e])); // clone object
+
if (event.endDate < now) {
continue;
}
diff --git a/modules/default/calendar/calendarfetcher.js b/modules/default/calendar/calendarfetcher.js
index 4a6fb0e6..acae13dc 100644
--- a/modules/default/calendar/calendarfetcher.js
+++ b/modules/default/calendar/calendarfetcher.js
@@ -186,10 +186,7 @@ const CalendarFetcher = function (url, reloadInterval, excludedEvents, maximumNu
// kblankenship1989 - to fix issue #1798, converting all dates to locale time first, then converting back to UTC time
const pastLocal = pastMoment.subtract(past.getTimezoneOffset(), "minutes").toDate();
const futureLocal = futureMoment.subtract(future.getTimezoneOffset(), "minutes").toDate();
- const datesLocal = rule.between(pastLocal, futureLocal, true, limitFunction);
- const dates = datesLocal.map(function (dateLocal) {
- return moment(dateLocal).add(dateLocal.getTimezoneOffset(), "minutes").toDate();
- });
+ const dates = rule.between(pastLocal, futureLocal, true, limitFunction);
// The "dates" array contains the set of dates within our desired date range range that are valid
// for the recurrence rule. *However*, it's possible for us to have a specific recurrence that
diff --git a/modules/default/clock/faces/face-001.svg b/modules/default/clock/faces/face-001.svg
index 13436c76..abd08ce7 100644
--- a/modules/default/clock/faces/face-001.svg
+++ b/modules/default/clock/faces/face-001.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/clock/faces/face-002.svg b/modules/default/clock/faces/face-002.svg
index a3ee3682..1ec31049 100644
--- a/modules/default/clock/faces/face-002.svg
+++ b/modules/default/clock/faces/face-002.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/clock/faces/face-003.svg b/modules/default/clock/faces/face-003.svg
index d3fc32de..7cfeebac 100644
--- a/modules/default/clock/faces/face-003.svg
+++ b/modules/default/clock/faces/face-003.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/clock/faces/face-004.svg b/modules/default/clock/faces/face-004.svg
index 140955d7..bc97588c 100644
--- a/modules/default/clock/faces/face-004.svg
+++ b/modules/default/clock/faces/face-004.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/clock/faces/face-005.svg b/modules/default/clock/faces/face-005.svg
index fb52a435..0bc1b430 100644
--- a/modules/default/clock/faces/face-005.svg
+++ b/modules/default/clock/faces/face-005.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/clock/faces/face-006.svg b/modules/default/clock/faces/face-006.svg
index a9eff826..87c52ed5 100644
--- a/modules/default/clock/faces/face-006.svg
+++ b/modules/default/clock/faces/face-006.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/clock/faces/face-007.svg b/modules/default/clock/faces/face-007.svg
index b0dde834..e557f55f 100644
--- a/modules/default/clock/faces/face-007.svg
+++ b/modules/default/clock/faces/face-007.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/clock/faces/face-008.svg b/modules/default/clock/faces/face-008.svg
index 551ea7df..6fadb396 100644
--- a/modules/default/clock/faces/face-008.svg
+++ b/modules/default/clock/faces/face-008.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/clock/faces/face-009.svg b/modules/default/clock/faces/face-009.svg
index cd3720f2..bd207e09 100644
--- a/modules/default/clock/faces/face-009.svg
+++ b/modules/default/clock/faces/face-009.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/clock/faces/face-010.svg b/modules/default/clock/faces/face-010.svg
index d0af3acb..8c5e5848 100644
--- a/modules/default/clock/faces/face-010.svg
+++ b/modules/default/clock/faces/face-010.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/clock/faces/face-011.svg b/modules/default/clock/faces/face-011.svg
index 2d5f27ba..9886fed5 100644
--- a/modules/default/clock/faces/face-011.svg
+++ b/modules/default/clock/faces/face-011.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/clock/faces/face-012.svg b/modules/default/clock/faces/face-012.svg
index 8096d492..cfd80698 100644
--- a/modules/default/clock/faces/face-012.svg
+++ b/modules/default/clock/faces/face-012.svg
@@ -1 +1 @@
-
+
diff --git a/modules/default/weather/weather.js b/modules/default/weather/weather.js
index ef2a3bd6..7442c976 100644
--- a/modules/default/weather/weather.js
+++ b/modules/default/weather/weather.js
@@ -17,7 +17,6 @@ Module.register("weather", {
lon: 0,
location: false,
locationID: false,
- apiKey: "",
units: config.units,
tempUnits: config.units,
@@ -46,8 +45,10 @@ Module.register("weather", {
initialLoadDelay: 0, // 0 seconds delay
retryDelay: 2500,
+ apiKey: "",
+ apiSecret: "",
apiVersion: "2.5",
- apiBase: "https://api.openweathermap.org/data/",
+ apiBase: "https://api.openweathermap.org/data/", // TODO: this should not be part of the weather.js file, but should be contained in the openweatherprovider
weatherEndpoint: "/weather",
appendLocationNameToHeader: true,
diff --git a/modules/default/weatherforecast/weatherforecast.js b/modules/default/weatherforecast/weatherforecast.js
index 83389911..d872ee01 100644
--- a/modules/default/weatherforecast/weatherforecast.js
+++ b/modules/default/weatherforecast/weatherforecast.js
@@ -294,7 +294,15 @@ Module.register("weatherforecast", {
return;
}
- params += "&cnt=" + (this.config.maxNumberOfDays < 1 || this.config.maxNumberOfDays > 17 ? 7 : this.config.maxNumberOfDays);
+ let numberOfDays;
+ if (this.config.forecastEndpoint === "forecast") {
+ numberOfDays = this.config.maxNumberOfDays < 1 || this.config.maxNumberOfDays > 5 ? 5 : this.config.maxNumberOfDays;
+ // don't get forecasts for the 6th day, as it would not represent the whole day
+ numberOfDays = numberOfDays * 8 - (Math.floor(new Date().getHours() / 3) % 8);
+ } else {
+ numberOfDays = this.config.maxNumberOfDays < 1 || this.config.maxNumberOfDays > 17 ? 7 : this.config.maxNumberOfDays;
+ }
+ params += "&cnt=" + numberOfDays;
params += "&units=" + this.config.units;
params += "&lang=" + this.config.lang;