iobroker.ical 1.15.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/admin/i18n/de/translations.json +1 -0
- package/admin/i18n/en/translations.json +1 -0
- package/admin/i18n/es/translations.json +1 -0
- package/admin/i18n/fr/translations.json +1 -0
- package/admin/i18n/it/translations.json +1 -0
- package/admin/i18n/nl/translations.json +1 -0
- package/admin/i18n/pl/translations.json +1 -0
- package/admin/i18n/pt/translations.json +1 -0
- package/admin/i18n/ru/translations.json +1 -0
- package/admin/i18n/uk/translations.json +1 -0
- package/admin/i18n/zh-cn/translations.json +1 -0
- package/admin/jsonConfig.json +29 -0
- package/admin/words.js +1 -0
- package/io-package.json +15 -40
- package/main.js +16 -38
- package/package.json +17 -17
package/README.md
CHANGED
|
@@ -23,7 +23,6 @@ Sentry reporting, starting with js-controller 3.0, means that this adapter can u
|
|
|
23
23
|
|
|
24
24
|
<!--
|
|
25
25
|
## Todo
|
|
26
|
-
* `data.trigger` doesn't support `check` option
|
|
27
26
|
* fix timezone stuff in tests
|
|
28
27
|
-->
|
|
29
28
|
|
|
@@ -32,6 +31,12 @@ Sentry reporting, starting with js-controller 3.0, means that this adapter can u
|
|
|
32
31
|
Placeholder for the next version (at the beginning of the line):
|
|
33
32
|
### **WORK IN PROGRESS**
|
|
34
33
|
-->
|
|
34
|
+
### 1.16.0 (2024-10-29)
|
|
35
|
+
* (cvoelkel76) add checkbox to allow to exactly match a calender event.
|
|
36
|
+
* (jens-maus) update node-ical to latest 0.20.0
|
|
37
|
+
* (klein0r) Breaking change: Removed trigger state (subscribe is deprecated in js-controller 6.x)
|
|
38
|
+
* (simatec) Responsive design added
|
|
39
|
+
|
|
35
40
|
### 1.15.0 (2024-04-30)
|
|
36
41
|
* (mcm1957) Adapter requires node.js >= 18 and js-controller >= 5 now
|
|
37
42
|
* (mcm1957) Dependencies have been updated
|
|
@@ -46,10 +51,6 @@ Sentry reporting, starting with js-controller 3.0, means that this adapter can u
|
|
|
46
51
|
* (klein0r) Create dummy file in files tab
|
|
47
52
|
* (klein0r) Fixed recurring events
|
|
48
53
|
|
|
49
|
-
### 1.14.0 (2024-01-07)
|
|
50
|
-
* (klein0r) Allow to set custom http user agent
|
|
51
|
-
* (klein0r) Added option to use files tab for calendar files
|
|
52
|
-
|
|
53
54
|
## License
|
|
54
55
|
|
|
55
56
|
The MIT License (MIT)
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"Hide Year": "Jahr verbergen",
|
|
12
12
|
"Ignore Certificate errors": "Zertifikatfehler ignorieren",
|
|
13
13
|
"Ignore case for event-search": "Groß-/Kleinschreibung bei Ereignis-Suche ignorieren",
|
|
14
|
+
"Exact Match for event-search": "Exakte Übereinstimmung für die Ereignissuche",
|
|
14
15
|
"Language": "Sprache",
|
|
15
16
|
"Padding date with '0'": "Datumsangaben mit führender '0'",
|
|
16
17
|
"Past days": "Vergangene Tage",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"Hide Year": "Hide Year",
|
|
12
12
|
"Ignore Certificate errors": "Ignore Certificate errors",
|
|
13
13
|
"Ignore case for event-search": "Ignore case for event-search",
|
|
14
|
+
"Exact Match for event-search": "Exact Match for event-search",
|
|
14
15
|
"Language": "Language",
|
|
15
16
|
"Padding date with '0'": "Padding date with '0'",
|
|
16
17
|
"Past days": "Past days",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"Default color for HTML": "Color predeterminado para HTML",
|
|
7
7
|
"Events": "Eventos",
|
|
8
8
|
"Every calendar has own color": "Cada calendario tiene su propio color",
|
|
9
|
+
"Exact Match for event-search": "Exact Match for event-search",
|
|
9
10
|
"HTML settings": "Configuración HTML",
|
|
10
11
|
"Hide Start-End of events": "Ocultar inicio-fin de eventos",
|
|
11
12
|
"Hide Year": "Ocultar año",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"Default color for HTML": "Couleur par défaut pour HTML",
|
|
7
7
|
"Events": "Événements",
|
|
8
8
|
"Every calendar has own color": "Chaque calendrier a sa propre couleur",
|
|
9
|
+
"Exact Match for event-search": "Correspondance exacte pour la recherche d'événements",
|
|
9
10
|
"HTML settings": "Paramètres HTML",
|
|
10
11
|
"Hide Start-End of events": "Masquer le début et la fin des événements",
|
|
11
12
|
"Hide Year": "Masquer l'année",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"Default color for HTML": "Colore predefinito per HTML",
|
|
7
7
|
"Events": "eventi",
|
|
8
8
|
"Every calendar has own color": "Ogni calendario ha il proprio colore",
|
|
9
|
+
"Exact Match for event-search": "Corrispondenza esatta per la ricerca di eventi",
|
|
9
10
|
"HTML settings": "Impostazioni HTML",
|
|
10
11
|
"Hide Start-End of events": "Nascondi inizio-fine degli eventi",
|
|
11
12
|
"Hide Year": "Nascondi anno",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"Default color for HTML": "Standaard-kleur voor HTML",
|
|
7
7
|
"Events": "Gebeurtenissen",
|
|
8
8
|
"Every calendar has own color": "Elke agenda heeft zijn eigen kleur",
|
|
9
|
+
"Exact Match for event-search": "Exacte match voor zoeken naar evenementen",
|
|
9
10
|
"HTML settings": "HTML-instellingen",
|
|
10
11
|
"Hide Start-End of events": "Verberg begin-einde van evenementen",
|
|
11
12
|
"Hide Year": "Jaar verbergen",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"Default color for HTML": "Domyślny kolor dla HTML",
|
|
7
7
|
"Events": "Wydarzenia",
|
|
8
8
|
"Every calendar has own color": "Każdy kalendarz ma własny kolor",
|
|
9
|
+
"Exact Match for event-search": "Dokładne dopasowanie do wyszukiwania zdarzeń",
|
|
9
10
|
"HTML settings": "Ustawienia HTML",
|
|
10
11
|
"Hide Start-End of events": "Ukryj Start-Koniec wydarzeń",
|
|
11
12
|
"Hide Year": "Ukryj rok",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"Default color for HTML": "Cor padrão para HTML",
|
|
7
7
|
"Events": "Eventos",
|
|
8
8
|
"Every calendar has own color": "Cada calendário tem cor própria",
|
|
9
|
+
"Exact Match for event-search": "Correspondência exata para pesquisa de eventos",
|
|
9
10
|
"HTML settings": "Configurações de HTML",
|
|
10
11
|
"Hide Start-End of events": "Ocultar início e fim dos eventos",
|
|
11
12
|
"Hide Year": "Ocultar Ano",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"Default color for HTML": "Цвет по умолчанию для HTML",
|
|
7
7
|
"Events": "События",
|
|
8
8
|
"Every calendar has own color": "Каждый календарь в свой цвет",
|
|
9
|
+
"Exact Match for event-search": "Точное совпадение для поиска событий",
|
|
9
10
|
"HTML settings": "Настройки HTML",
|
|
10
11
|
"Hide Start-End of events": "Скрывать начало и конец события",
|
|
11
12
|
"Hide Year": "Скрывать год",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"Default color for HTML": "Колір за замовчуванням для HTML",
|
|
7
7
|
"Events": "Події",
|
|
8
8
|
"Every calendar has own color": "Кожен календар має свій колір",
|
|
9
|
+
"Exact Match for event-search": "Точна відповідність для пошуку подій",
|
|
9
10
|
"HTML settings": "Налаштування HTML",
|
|
10
11
|
"Hide Start-End of events": "Приховати початок-кінець подій",
|
|
11
12
|
"Hide Year": "Приховати рік",
|
package/admin/jsonConfig.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"i18n": true,
|
|
3
3
|
"type": "tabs",
|
|
4
|
+
"tabsStyle": {
|
|
5
|
+
"width": "calc(100% - 100px)"
|
|
6
|
+
},
|
|
4
7
|
"items": {
|
|
5
8
|
"_options": {
|
|
6
9
|
"type": "panel",
|
|
@@ -11,6 +14,7 @@
|
|
|
11
14
|
"type": "number",
|
|
12
15
|
"min": 0,
|
|
13
16
|
"step": 1,
|
|
17
|
+
"xs": 12,
|
|
14
18
|
"sm": 12,
|
|
15
19
|
"md": 4,
|
|
16
20
|
"lg": 4,
|
|
@@ -20,6 +24,7 @@
|
|
|
20
24
|
"type": "number",
|
|
21
25
|
"min": 0,
|
|
22
26
|
"step": 1,
|
|
27
|
+
"xs": 12,
|
|
23
28
|
"sm": 12,
|
|
24
29
|
"md": 4,
|
|
25
30
|
"lg": 4,
|
|
@@ -28,10 +33,19 @@
|
|
|
28
33
|
"ignoreCaseInEventname": {
|
|
29
34
|
"type": "checkbox",
|
|
30
35
|
"newLine": true,
|
|
36
|
+
"xs": 12,
|
|
31
37
|
"sm": 12,
|
|
32
38
|
"md": 4,
|
|
33
39
|
"lg": 4,
|
|
34
40
|
"label": "Ignore case for event-search"
|
|
41
|
+
},
|
|
42
|
+
"exactMatchInEventname": {
|
|
43
|
+
"type": "checkbox",
|
|
44
|
+
"newLine": true,
|
|
45
|
+
"sm": 12,
|
|
46
|
+
"md": 4,
|
|
47
|
+
"lg": 4,
|
|
48
|
+
"label": "Exact Match for event-search"
|
|
35
49
|
}
|
|
36
50
|
}
|
|
37
51
|
},
|
|
@@ -41,6 +55,7 @@
|
|
|
41
55
|
"items": {
|
|
42
56
|
"language": {
|
|
43
57
|
"type": "select",
|
|
58
|
+
"xs": 12,
|
|
44
59
|
"sm": 12,
|
|
45
60
|
"md": 4,
|
|
46
61
|
"lg": 4,
|
|
@@ -84,6 +99,7 @@
|
|
|
84
99
|
"fulltime": {
|
|
85
100
|
"type": "text",
|
|
86
101
|
"newLine": true,
|
|
102
|
+
"xs": 12,
|
|
87
103
|
"sm": 12,
|
|
88
104
|
"md": 4,
|
|
89
105
|
"lg": 4,
|
|
@@ -91,6 +107,7 @@
|
|
|
91
107
|
},
|
|
92
108
|
"defColor": {
|
|
93
109
|
"type": "color",
|
|
110
|
+
"xs": 12,
|
|
94
111
|
"sm": 12,
|
|
95
112
|
"md": 4,
|
|
96
113
|
"lg": 4,
|
|
@@ -99,6 +116,7 @@
|
|
|
99
116
|
"dataPaddingWithZeros": {
|
|
100
117
|
"type": "checkbox",
|
|
101
118
|
"newLine": true,
|
|
119
|
+
"xs": 12,
|
|
102
120
|
"sm": 12,
|
|
103
121
|
"md": 4,
|
|
104
122
|
"lg": 4,
|
|
@@ -106,6 +124,7 @@
|
|
|
106
124
|
},
|
|
107
125
|
"replaceDates": {
|
|
108
126
|
"type": "checkbox",
|
|
127
|
+
"xs": 12,
|
|
109
128
|
"sm": 12,
|
|
110
129
|
"md": 4,
|
|
111
130
|
"lg": 4,
|
|
@@ -114,6 +133,7 @@
|
|
|
114
133
|
"everyCalOneColor": {
|
|
115
134
|
"type": "checkbox",
|
|
116
135
|
"newLine": true,
|
|
136
|
+
"xs": 12,
|
|
117
137
|
"sm": 12,
|
|
118
138
|
"md": 4,
|
|
119
139
|
"lg": 4,
|
|
@@ -121,6 +141,7 @@
|
|
|
121
141
|
},
|
|
122
142
|
"colorize": {
|
|
123
143
|
"type": "checkbox",
|
|
144
|
+
"xs": 12,
|
|
124
145
|
"sm": 12,
|
|
125
146
|
"md": 4,
|
|
126
147
|
"lg": 4,
|
|
@@ -129,6 +150,7 @@
|
|
|
129
150
|
"forceFullday": {
|
|
130
151
|
"type": "checkbox",
|
|
131
152
|
"newLine": true,
|
|
153
|
+
"xs": 12,
|
|
132
154
|
"sm": 12,
|
|
133
155
|
"md": 4,
|
|
134
156
|
"lg": 4,
|
|
@@ -136,6 +158,7 @@
|
|
|
136
158
|
},
|
|
137
159
|
"hideYear": {
|
|
138
160
|
"type": "checkbox",
|
|
161
|
+
"xs": 12,
|
|
139
162
|
"sm": 12,
|
|
140
163
|
"md": 4,
|
|
141
164
|
"lg": 4,
|
|
@@ -144,6 +167,7 @@
|
|
|
144
167
|
"arrowAlreadyStarted": {
|
|
145
168
|
"type": "checkbox",
|
|
146
169
|
"newLine": true,
|
|
170
|
+
"xs": 12,
|
|
147
171
|
"sm": 12,
|
|
148
172
|
"md": 4,
|
|
149
173
|
"lg": 4,
|
|
@@ -151,6 +175,7 @@
|
|
|
151
175
|
},
|
|
152
176
|
"addColorBox": {
|
|
153
177
|
"type": "checkbox",
|
|
178
|
+
"xs": 12,
|
|
154
179
|
"sm": 12,
|
|
155
180
|
"md": 4,
|
|
156
181
|
"lg": 4,
|
|
@@ -164,6 +189,7 @@
|
|
|
164
189
|
"items": {
|
|
165
190
|
"calendars": {
|
|
166
191
|
"type": "table",
|
|
192
|
+
"xs": 12,
|
|
167
193
|
"sm": 12,
|
|
168
194
|
"md": 12,
|
|
169
195
|
"lg": 12,
|
|
@@ -344,6 +370,7 @@
|
|
|
344
370
|
"customUserAgentEnabled": {
|
|
345
371
|
"type": "checkbox",
|
|
346
372
|
"newLine": true,
|
|
373
|
+
"xs": 12,
|
|
347
374
|
"sm": 12,
|
|
348
375
|
"md": 4,
|
|
349
376
|
"lg": 4,
|
|
@@ -352,6 +379,7 @@
|
|
|
352
379
|
"customUserAgent": {
|
|
353
380
|
"hidden": "!data.customUserAgentEnabled",
|
|
354
381
|
"type": "text",
|
|
382
|
+
"xs": 12,
|
|
355
383
|
"sm": 12,
|
|
356
384
|
"md": 8,
|
|
357
385
|
"lg": 8,
|
|
@@ -365,6 +393,7 @@
|
|
|
365
393
|
"items": {
|
|
366
394
|
"events": {
|
|
367
395
|
"type": "table",
|
|
396
|
+
"xs": 12,
|
|
368
397
|
"sm": 12,
|
|
369
398
|
"md": 12,
|
|
370
399
|
"lg": 12,
|
package/admin/words.js
CHANGED
|
@@ -15,6 +15,7 @@ systemDictionary = {
|
|
|
15
15
|
"Default color for HTML": { "en": "Default color for HTML", "de": "Standardfarben für HTML", "ru": "Цвет по умолчанию для HTML", "pt": "Cor padrão para HTML", "nl": "Standaard-kleur voor HTML", "fr": "Couleur par défaut pour HTML", "it": "Colore predefinito per HTML", "es": "Color predeterminado para HTML", "pl": "Domyślny kolor dla HTML", "uk": "Колір за замовчуванням для HTML", "zh-cn": "HTML 的默认颜色"},
|
|
16
16
|
"Events": { "en": "Events", "de": "Ereignisse", "ru": "События", "pt": "Eventos", "nl": "Gebeurtenissen", "fr": "Événements", "it": "eventi", "es": "Eventos", "pl": "Wydarzenia", "uk": "Події", "zh-cn": "活动"},
|
|
17
17
|
"Every calendar has own color": { "en": "Every calendar has own color", "de": "Jeder Kalender hat eine eigene Farbe", "ru": "Каждый календарь в свой цвет", "pt": "Cada calendário tem cor própria", "nl": "Elke agenda heeft zijn eigen kleur", "fr": "Chaque calendrier a sa propre couleur", "it": "Ogni calendario ha il proprio colore", "es": "Cada calendario tiene su propio color", "pl": "Każdy kalendarz ma własny kolor", "uk": "Кожен календар має свій колір", "zh-cn": "每个日历都有自己的颜色"},
|
|
18
|
+
"Exact Match for event-search": { "en": "Exact Match for event-search", "de": "Exakte Übereinstimmung für die Ereignissuche", "ru": "Точное совпадение для поиска событий", "pt": "Correspondência exata para pesquisa de eventos", "nl": "Exacte match voor zoeken naar evenementen", "fr": "Correspondance exacte pour la recherche d'événements", "it": "Corrispondenza esatta per la ricerca di eventi", "es": "Exact Match for event-search", "pl": "Dokładne dopasowanie do wyszukiwania zdarzeń", "uk": "Точна відповідність для пошуку подій", "zh-cn": "事件搜索的精确匹配"},
|
|
18
19
|
"HTML settings": { "en": "HTML settings", "de": "HTML Einstellungen", "ru": "Настройки HTML", "pt": "Configurações de HTML", "nl": "HTML-instellingen", "fr": "Paramètres HTML", "it": "Impostazioni HTML", "es": "Configuración HTML", "pl": "Ustawienia HTML", "uk": "Налаштування HTML", "zh-cn": "HTML 设置"},
|
|
19
20
|
"Hide Start-End of events": { "en": "Hide Start-End of events", "de": "Start- und Endzeit verbergen", "ru": "Скрывать начало и конец события", "pt": "Ocultar início e fim dos eventos", "nl": "Verberg begin-einde van evenementen", "fr": "Masquer le début et la fin des événements", "it": "Nascondi inizio-fine degli eventi", "es": "Ocultar inicio-fin de eventos", "pl": "Ukryj Start-Koniec wydarzeń", "uk": "Приховати початок-кінець подій", "zh-cn": "隐藏事件的开始 - 结束"},
|
|
20
21
|
"Hide Year": { "en": "Hide Year", "de": "Jahr verbergen", "ru": "Скрывать год", "pt": "Ocultar Ano", "nl": "Jaar verbergen", "fr": "Masquer l'année", "it": "Nascondi anno", "es": "Ocultar año", "pl": "Ukryj rok", "uk": "Приховати рік", "zh-cn": "隐藏年份"},
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "ical",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.16.0",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.16.0": {
|
|
7
|
+
"en": "add checkbox to allow to exactly match a calender event.\nupdate node-ical to latest 0.20.0\nBreaking change: Removed trigger state (subscribe is deprecated in js-controller 6.x)\nResponsive design added",
|
|
8
|
+
"de": "fügen sie checkbox hinzu, um ein kalenderereignis genau zu vereinbaren.\nupdate node-ical bis neueste 0.20.0\nBruchänderung: Entfernter Triggerzustand (Abonnent wird in js-Controller 6.x abgeschrieben)\nResponsive Design hinzugefügt",
|
|
9
|
+
"ru": "добавьте флажок, чтобы позволить точно соответствовать событиям календера.\nобновление узла к последнему 0.20.0\nПерерыв: Удаленное состояние триггера (подписано в js-controller 6.x)\nДобавлен ответный дизайн",
|
|
10
|
+
"pt": "adicionar caixa de seleção para permitir exatamente combinar um evento de calandragem.\natualizar node-ical para o mais recente 0.20.0\nMudança de ruptura: Estado do gatilho removido (a assinatura é deprecated no js-controller 6.x)\nDesign responsivo adicionado",
|
|
11
|
+
"nl": "voeg het selectievakje toe om een agenda-evenement exact te laten overeenkomen.\nupdate node-ical naar de laatste 0.20.0\nVerandering: Verwijderde trigger status (abonneren wordt verouderd in js-controller 6.x)\nResponsief ontwerp toegevoegd",
|
|
12
|
+
"fr": "ajouter une case à cocher pour permettre de correspondre exactement à un événement de calandre.\nmettre à jour node-ical au dernier 0.20.0\nBriser le changement : État de déclenchement supprimé (subscription est obsolète dans js-controller 6.x)\nConception sensible ajoutée",
|
|
13
|
+
"it": "aggiungere la casella di controllo per consentire di abbinare esattamente un evento di calender.\naggiornamento nodo-ical al più recente 0.20.0\nCambiamento di rottura: Stato di attivazione rimosso (l'iscrizione è deprecata in js-controller 6.x)\nDesign reattivo aggiunto",
|
|
14
|
+
"es": "agregue la casilla de verificación para permitir exactamente igualar un evento calender.\nactualización nodo-ical a más tardar 0.20.0\nCambio de ruptura: Estado de activación eliminado (suscripción se deprecata en js-controller 6.x)\nDiseño responsable añadido",
|
|
15
|
+
"pl": "dodaj pole wyboru, aby umożliwić dokładne dopasowanie zdarzenia kalendarza.\naktualizacja node- ical do najnowszej wersji 0.20.0\nŁamanie zmian: Usunięty stan wyzwalania (prenumerata w sterowniku js- 6.x)\nDodano projekt odpowiadający",
|
|
16
|
+
"uk": "додайте прапорець, щоб точно відповідати події.\nоновлення вершини-ical до останньої 0.20.0\nЗміна розривів: Вилучений пусковий стан (приписується в js-controller 6.x)\nДодано адаптивний дизайн",
|
|
17
|
+
"zh-cn": "添加复选框,以便精确匹配一个计数器事件.\n将节点更新为最近0.2.0\n中断更改 : 删除触发状态( 订阅在 js- controller 6. x 中已贬值)\n增加了反应设计"
|
|
18
|
+
},
|
|
6
19
|
"1.15.0": {
|
|
7
20
|
"en": "Adapter requires node.js >= 18 and js-controller >= 5 now\nDependencies have been updated",
|
|
8
21
|
"de": "Adapter benötigt node.js >= 18 und js-controller >= 5 jetzt\nAbhängigkeiten wurden aktualisiert",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "Incorrect jsonConfig został ustalony jako #602\nZależności zostały zaktualizowane",
|
|
81
94
|
"uk": "[#602]\nОновлено залежність",
|
|
82
95
|
"zh-cn": "错误的 json Config已确定[第602号]\n已更新了属地"
|
|
83
|
-
},
|
|
84
|
-
"1.13.5": {
|
|
85
|
-
"en": "updated node-ical to latest 0.17.1",
|
|
86
|
-
"de": "aktualisiert kinematisch auf neuste 0,17.1",
|
|
87
|
-
"ru": "обновленный node-ical до последней 0.17.1",
|
|
88
|
-
"pt": "atualizado node-ical para mais recente 0.17.1",
|
|
89
|
-
"nl": "vertaling: 0.17.1",
|
|
90
|
-
"fr": "mise à jour node-ical to latest 0.17.1",
|
|
91
|
-
"it": "aggiornato nodo-ical al più recente 0,15",
|
|
92
|
-
"es": "actualizado nodo-ical a último 0.17.1",
|
|
93
|
-
"pl": "uaktualnianie węzła 0,17.1",
|
|
94
|
-
"uk": "оновлений вузол-ical в останні роки 0 товар(ов) - 0.00 р",
|
|
95
|
-
"zh-cn": "最新资料 0.17.1"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
|
@@ -152,7 +152,6 @@
|
|
|
152
152
|
"config": "json"
|
|
153
153
|
},
|
|
154
154
|
"allowInit": true,
|
|
155
|
-
"subscribe": "ical.<INSTANCE>.trigger",
|
|
156
155
|
"extIcon": "https://raw.githubusercontent.com/iobroker-community-adapters/ioBroker.ical/master/admin/ical.png",
|
|
157
156
|
"type": "date-and-time",
|
|
158
157
|
"connectionType": "local",
|
|
@@ -188,6 +187,7 @@
|
|
|
188
187
|
"hideYear": false,
|
|
189
188
|
"arrowAlreadyStarted": true,
|
|
190
189
|
"ignoreCaseInEventname": false,
|
|
190
|
+
"exactMatchInEventname": false,
|
|
191
191
|
"addColorBox": false,
|
|
192
192
|
"calendars": [
|
|
193
193
|
{
|
|
@@ -337,31 +337,6 @@
|
|
|
337
337
|
},
|
|
338
338
|
"native": {}
|
|
339
339
|
},
|
|
340
|
-
{
|
|
341
|
-
"_id": "trigger",
|
|
342
|
-
"type": "state",
|
|
343
|
-
"common": {
|
|
344
|
-
"name": {
|
|
345
|
-
"en": "Command",
|
|
346
|
-
"de": "Befehl",
|
|
347
|
-
"ru": "Команда",
|
|
348
|
-
"pt": "Comando",
|
|
349
|
-
"nl": "Commando",
|
|
350
|
-
"fr": "Commandant",
|
|
351
|
-
"it": "Comando",
|
|
352
|
-
"es": "Comando",
|
|
353
|
-
"pl": "Dowództwo",
|
|
354
|
-
"uk": "Про компанію",
|
|
355
|
-
"zh-cn": "指挥"
|
|
356
|
-
},
|
|
357
|
-
"desc": "Commands: read [url], check [reason]",
|
|
358
|
-
"type": "string",
|
|
359
|
-
"read": true,
|
|
360
|
-
"write": true,
|
|
361
|
-
"role": "value"
|
|
362
|
-
},
|
|
363
|
-
"native": {}
|
|
364
|
-
},
|
|
365
340
|
{
|
|
366
341
|
"_id": "data.count",
|
|
367
342
|
"type": "state",
|
package/main.js
CHANGED
|
@@ -22,43 +22,6 @@ function startAdapter(options) {
|
|
|
22
22
|
|
|
23
23
|
Object.assign(options,{
|
|
24
24
|
name: adapterName,
|
|
25
|
-
stateChange: async function (id, state) {
|
|
26
|
-
if (!id || !state || state.ack || !state.val) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (id === `${adapter.namespace}.trigger`) {
|
|
31
|
-
const content = state.val.split(' ');
|
|
32
|
-
// One time read all calendars
|
|
33
|
-
switch (content[0]) {
|
|
34
|
-
case 'read':
|
|
35
|
-
if (content[1]) {
|
|
36
|
-
adapter.log.info(`reading iCal from URL: "${content[1]}"`);
|
|
37
|
-
readOne(content[1]);
|
|
38
|
-
} else {
|
|
39
|
-
adapter.log.info('reading one time from all calendars');
|
|
40
|
-
readAll();
|
|
41
|
-
}
|
|
42
|
-
break;
|
|
43
|
-
|
|
44
|
-
// FIXME: checkForEvents not supporting call with only 1 parameter
|
|
45
|
-
case 'check':
|
|
46
|
-
if (content[1]) {
|
|
47
|
-
adapter.log.info(`checking "${content[1]}"`);
|
|
48
|
-
await checkForEvents(content[1]);
|
|
49
|
-
} else {
|
|
50
|
-
adapter.log.warn('check all events');
|
|
51
|
-
for (let i = 0; i < adapter.config.events.length; i++) {
|
|
52
|
-
await checkForEvents(adapter.config.events[i].name);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
break;
|
|
56
|
-
|
|
57
|
-
default:
|
|
58
|
-
adapter.log.warn(`Unknown command in trigger: "${state.val}"`);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
25
|
unload: function (callback) {
|
|
63
26
|
stopped = true;
|
|
64
27
|
callback();
|
|
@@ -690,6 +653,7 @@ function colorizeDates(date, today, tomorrow, dayafter, col, calName) {
|
|
|
690
653
|
|
|
691
654
|
async function checkForEvents(reason, event, realnow) {
|
|
692
655
|
const ignoreCaseInEventname = adapter.config.ignoreCaseInEventname;
|
|
656
|
+
const exactMatchInEventname = adapter.config.exactMatchInEventname;
|
|
693
657
|
// show unknown events
|
|
694
658
|
let result = true;
|
|
695
659
|
let today = new Date(realnow.getTime());
|
|
@@ -700,7 +664,19 @@ async function checkForEvents(reason, event, realnow) {
|
|
|
700
664
|
// check if event exists in table
|
|
701
665
|
for (let i = 0; i < events.length; i++) {
|
|
702
666
|
const ev = events[i];
|
|
703
|
-
|
|
667
|
+
let evFound = false;
|
|
668
|
+
if (exactMatchInEventname) {
|
|
669
|
+
// calendar entry must be exactly the same as the event
|
|
670
|
+
if ((reason === ev.name) || (ignoreCaseInEventname && (reason.toLowerCase() === ev.name.toLowerCase()))) {
|
|
671
|
+
evFound = true;
|
|
672
|
+
}
|
|
673
|
+
} else {
|
|
674
|
+
// event is included in the calendar entry
|
|
675
|
+
if ((reason.includes(ev.name)) || (ignoreCaseInEventname && (reason.toLowerCase().includes(ev.name.toLowerCase())))) {
|
|
676
|
+
evFound = true;
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
if (evFound) {
|
|
704
680
|
// check if event should shown
|
|
705
681
|
result = ev.display;
|
|
706
682
|
adapter.log.debug(`found event in table: ${ev.name}, day=${ev.day}`);
|
|
@@ -1600,6 +1576,8 @@ function main() {
|
|
|
1600
1576
|
}
|
|
1601
1577
|
});
|
|
1602
1578
|
|
|
1579
|
+
adapter.delObjectAsync('trigger'); // removed deprecated subscribe state (created in previous versions)
|
|
1580
|
+
|
|
1603
1581
|
syncUserEvents(readAll);
|
|
1604
1582
|
}
|
|
1605
1583
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.ical",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.16.0",
|
|
4
4
|
"description": "Allows read information from google calender and from iCal.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "bluefox",
|
|
@@ -39,37 +39,37 @@
|
|
|
39
39
|
"node": ">=18"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@iobroker/adapter-core": "^3.1
|
|
43
|
-
"axios": "1.
|
|
42
|
+
"@iobroker/adapter-core": "^3.2.1",
|
|
43
|
+
"axios": "^1.7.7",
|
|
44
44
|
"cloneextend": "^0.0.3",
|
|
45
45
|
"json-schema": "^0.4.0",
|
|
46
|
-
"node-ical": "^0.
|
|
46
|
+
"node-ical": "^0.20.0",
|
|
47
47
|
"rrule": "2.8.1"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@alcalzone/release-script": "^3.
|
|
51
|
-
"@alcalzone/release-script-plugin-iobroker": "^3.7.
|
|
50
|
+
"@alcalzone/release-script": "^3.8.0",
|
|
51
|
+
"@alcalzone/release-script-plugin-iobroker": "^3.7.2",
|
|
52
52
|
"@alcalzone/release-script-plugin-license": "^3.7.0",
|
|
53
53
|
"@alcalzone/release-script-plugin-manual-review": "^3.7.0",
|
|
54
|
-
"@iobroker/adapter-dev": "^1.
|
|
55
|
-
"@iobroker/testing": "^
|
|
56
|
-
"@types/chai": "^4.3.
|
|
54
|
+
"@iobroker/adapter-dev": "^1.3.0",
|
|
55
|
+
"@iobroker/testing": "^5.0.0",
|
|
56
|
+
"@types/chai": "^4.3.19",
|
|
57
57
|
"@types/chai-as-promised": "^7.1.8",
|
|
58
|
-
"@types/mocha": "^10.0.
|
|
59
|
-
"@types/node": "^
|
|
58
|
+
"@types/mocha": "^10.0.8",
|
|
59
|
+
"@types/node": "^22.7.4",
|
|
60
60
|
"@types/proxyquire": "^1.3.31",
|
|
61
61
|
"@types/sinon": "^17.0.3",
|
|
62
62
|
"@types/sinon-chai": "^3.2.12",
|
|
63
|
-
"chai": "^4.
|
|
64
|
-
"chai-as-promised": "^7.1.
|
|
63
|
+
"chai": "^4.5.0",
|
|
64
|
+
"chai-as-promised": "^7.1.2",
|
|
65
65
|
"chai-string": "^1.5.0",
|
|
66
66
|
"eslint": "^8.56.0",
|
|
67
|
-
"luxon": "^3.
|
|
68
|
-
"mocha": "^10.
|
|
67
|
+
"luxon": "^3.5.0",
|
|
68
|
+
"mocha": "^10.7.3",
|
|
69
69
|
"proxyquire": "^2.1.3",
|
|
70
|
-
"sinon": "^
|
|
70
|
+
"sinon": "^19.0.2",
|
|
71
71
|
"sinon-chai": "^3.7.0",
|
|
72
|
-
"typescript": "~5.
|
|
72
|
+
"typescript": "~5.6.2"
|
|
73
73
|
},
|
|
74
74
|
"bugs": {
|
|
75
75
|
"url": "https://github.com/iobroker-community-adapters/ioBroker.ical/issues"
|