From b735f8a524ddad1dda0623cffdcb9a338b987742 Mon Sep 17 00:00:00 2001 From: Johan Alvinger Date: Sat, 28 Nov 2020 13:17:14 +0100 Subject: [PATCH 1/4] New option "customEvents" Use custom symbol and/or color based on keyword in event titles --- modules/default/calendar/calendar.js | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/modules/default/calendar/calendar.js b/modules/default/calendar/calendar.js index b2737586..ebad2cb1 100755 --- a/modules/default/calendar/calendar.js +++ b/modules/default/calendar/calendar.js @@ -37,6 +37,7 @@ Module.register("calendar", { hideOngoing: false, colored: false, coloredSymbolOnly: false, + customEvents: [], // Array of {keyword: "", symbol: "", color: ""} where Keyword is a regexp and symbol/color are to be applied for matched tableClass: "small", calendars: [ { @@ -218,6 +219,19 @@ Module.register("calendar", { symbolWrapper.className = "symbol align-right " + symbolClass; var symbols = this.symbolsForEvent(event); + // If symbols are displayed and custom symbol is set, replace event symbol + if (this.config.displaySymbol && this.config.customEvents.length > 0) { + for (var ev in this.config.customEvents) { + if (typeof this.config.customEvents[ev].symbol !== "undefined" && this.config.customEvents[ev].symbol !== "") { + var needle = new RegExp(this.config.customEvents[ev].keyword, "gi"); + if (needle.test(event.title)) { + symbols[0] = this.config.customEvents[ev].symbol; + break; + } + } + } + } + for (var i = 0; i < symbols.length; i++) { var symbol = document.createElement("span"); symbol.className = "fa fa-fw fa-" + symbols[i]; @@ -248,6 +262,23 @@ Module.register("calendar", { } } + // Color events if custom color is specified + if (this.config.customEvents.length > 0) { + for (var ev in this.config.customEvents) { + if (typeof this.config.customEvents[ev].color !== "undefined" && this.config.customEvents[ev].color !== "") { + var needle = new RegExp(this.config.customEvents[ev].keyword, "gi"); + if (needle.test(event.title)) { + eventWrapper.style.cssText = "color:" + this.config.customEvents[ev].color; + titleWrapper.style.cssText = "color:" + this.config.customEvents[ev].color; + if (this.config.displaySymbol) { + symbolWrapper.style.cssText = "color:" + this.config.customEvents[ev].color; + } + break; + } + } + } + } + titleWrapper.innerHTML = this.titleTransform(event.title, this.config.titleReplace, this.config.wrapEvents, this.config.maxTitleLength, this.config.maxTitleLines) + repeatingCountTitle; var titleClass = this.titleClassForUrl(event.url); From db129cc19bd20683f1daf1007de28e7cbd045d50 Mon Sep 17 00:00:00 2001 From: Johan Alvinger Date: Sat, 28 Nov 2020 13:19:04 +0100 Subject: [PATCH 2/4] Added "customEvents" to changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41e39aec..bc30fec6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ _This release is scheduled to be released on 2021-01-01._ - Added Hindi & Gujarati translation. - Chuvash translation. +- Added new option "customEvents" - use custom symbol/color based on keyword in event title + ### Updated - Weather module - forecast now show TODAY and TOMORROW instead of weekday, to make it easier to understand. From 260bc9664e23ef76fecda8edbc20cd3cfc8e0b8e Mon Sep 17 00:00:00 2001 From: Johan Alvinger Date: Sat, 28 Nov 2020 14:05:35 +0100 Subject: [PATCH 3/4] Fixed variable redeclaration --- modules/default/calendar/calendar.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/default/calendar/calendar.js b/modules/default/calendar/calendar.js index ebad2cb1..3793c63f 100755 --- a/modules/default/calendar/calendar.js +++ b/modules/default/calendar/calendar.js @@ -221,9 +221,11 @@ Module.register("calendar", { var symbols = this.symbolsForEvent(event); // If symbols are displayed and custom symbol is set, replace event symbol if (this.config.displaySymbol && this.config.customEvents.length > 0) { - for (var ev in this.config.customEvents) { + var ev; + var needle; + for (ev in this.config.customEvents) { if (typeof this.config.customEvents[ev].symbol !== "undefined" && this.config.customEvents[ev].symbol !== "") { - var needle = new RegExp(this.config.customEvents[ev].keyword, "gi"); + needle = new RegExp(this.config.customEvents[ev].keyword, "gi"); if (needle.test(event.title)) { symbols[0] = this.config.customEvents[ev].symbol; break; From 97f3514677fff008312b4fd10c0ce87cbce020b7 Mon Sep 17 00:00:00 2001 From: Johan Alvinger Date: Mon, 30 Nov 2020 16:48:07 +0100 Subject: [PATCH 4/4] Bugfix after Travis CI error (redeclaring variables) --- modules/default/calendar/calendar.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/default/calendar/calendar.js b/modules/default/calendar/calendar.js index 3793c63f..9206da66 100755 --- a/modules/default/calendar/calendar.js +++ b/modules/default/calendar/calendar.js @@ -174,6 +174,8 @@ Module.register("calendar", { var currentFadeStep = 0; var lastSeenDate = ""; + var ev; + var needle; for (var e in events) { var event = events[e]; @@ -221,8 +223,6 @@ Module.register("calendar", { var symbols = this.symbolsForEvent(event); // If symbols are displayed and custom symbol is set, replace event symbol if (this.config.displaySymbol && this.config.customEvents.length > 0) { - var ev; - var needle; for (ev in this.config.customEvents) { if (typeof this.config.customEvents[ev].symbol !== "undefined" && this.config.customEvents[ev].symbol !== "") { needle = new RegExp(this.config.customEvents[ev].keyword, "gi"); @@ -266,9 +266,9 @@ Module.register("calendar", { // Color events if custom color is specified if (this.config.customEvents.length > 0) { - for (var ev in this.config.customEvents) { + for (ev in this.config.customEvents) { if (typeof this.config.customEvents[ev].color !== "undefined" && this.config.customEvents[ev].color !== "") { - var needle = new RegExp(this.config.customEvents[ev].keyword, "gi"); + needle = new RegExp(this.config.customEvents[ev].keyword, "gi"); if (needle.test(event.title)) { eventWrapper.style.cssText = "color:" + this.config.customEvents[ev].color; titleWrapper.style.cssText = "color:" + this.config.customEvents[ev].color;