iobroker.lovelace 4.0.1 → 4.0.4

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 CHANGED
@@ -471,6 +471,15 @@ After that checkout modified version in `./build` folder. Then.
471
471
  PLACEHOLDER for next version:
472
472
  ### **WORK IN PROGRESS**
473
473
  -->
474
+ ### 4.0.4 (2023-12-09)
475
+ * (Garfonso) fix: crash
476
+
477
+ ### 4.0.3 (2023-12-09)
478
+ * (Garfonso) fix: tests.
479
+
480
+ ### 4.0.2 (2023-12-09)
481
+ * (Garfonso) fix: crash
482
+
474
483
  ### 4.0.1 (2023-12-08)
475
484
  * (Garfonso) fix: hideHeader object is writable
476
485
 
@@ -485,38 +494,6 @@ After that checkout modified version in `./build` folder. Then.
485
494
  * (Garfonso) repaired persistent notifications.
486
495
  * (Garfonso) Use browser_mod to hide sidebar.
487
496
 
488
- ### 3.0.1 (2022-11-03)
489
- * (Garfonso) do not crash if no history instance selected.
490
- * (Garfonso) notifications working again.
491
- * (Garfonso) repaired color temperature handling.
492
-
493
- ### 3.0.0 (2022-10-28)
494
- * (agross) added: per instance language support
495
- * (Garfonso) entity_id for devices with only one non english name should be ok again.
496
- * (Garfonso) changed: updated frontend to 20221027.0. Needs theme adjustment (add code-editor-background-color) and probably card updates
497
- * (Garfonso) added: browser_mod (2.1.3) is now integrated. Please remove manual installed versions of custom browser_mod card.
498
- * (Garfonso) added: 'instances.refresh' can be used to reload page in connected browsers.
499
- * (Garfonso) removed: lovelace_reload and window_reload states
500
- * (Garfonso) removed: name state, not supported by browser_mod anymore
501
- * (Garfonso) added: Support for toasts with action button (either json or ;-string)
502
- * (Garfonso) added: activity state will show if user is currently using a certain browser
503
- * (Garfonso) added: Support for subfolders in /cards/ for images and stuff custom cards load (please keep cards in root folder).
504
- * (Garfonso) crash if notification was malformed json.
505
- * (Garfonso) some translation stuff
506
- * (Garfonso) crash case when states were updated before websocket was ready
507
- * (Apollon77) Prepare for future js-controller versions
508
- * (bluefox) tried to make html requests relative
509
-
510
- ### 2.2.0 (2022-06-05)
511
- * (Garfonso) fixed: incorrect warning about duplicate entities on update of manual entity.
512
- * (Garfonso) fixed: input_datetime did not work if time was enabled and did vanish if date and time were enabled.
513
- * (Garfonso) fixed: RGB hex string got broken on not rounded numbers (problem with mushroom ligth card).
514
- * (Garfonso) fixed: state of cover entity if not 0 or 100% (fixes problem with sliter-button-card).
515
- * (Garfonso) fixed: light did not read brightness ACTUAL in dimmer devices.
516
- * (Garfonso) added: support auto entities card and subscription.
517
- * (Garfonso) added: improve support for input_datetime & string states.
518
- * (Garfonso) added: support for browser_mod (i.e. crontrol frontend from iobroker).
519
-
520
497
  ## License
521
498
 
522
499
  Copyright 2019-2023, bluefox <dogafox@gmail.com>
package/io-package.json CHANGED
@@ -1,8 +1,47 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "lovelace",
4
- "version": "4.0.1",
4
+ "version": "4.0.4",
5
5
  "news": {
6
+ "4.0.4": {
7
+ "en": "fix: crash",
8
+ "de": "fix: absturz",
9
+ "ru": "исправить: аварии",
10
+ "pt": "correção: acidente",
11
+ "nl": "vertaling:",
12
+ "fr": "correction :",
13
+ "it": "correzione: crash",
14
+ "es": "arranca:",
15
+ "pl": "naprawa",
16
+ "uk": "виправити: аварійний",
17
+ "zh-cn": "fix:坠落"
18
+ },
19
+ "4.0.3": {
20
+ "en": "fix: tests.",
21
+ "de": "fix: tests.",
22
+ "ru": "исправить: тесты.",
23
+ "pt": "correção: testes.",
24
+ "nl": "testen.",
25
+ "fr": "correction: essais.",
26
+ "it": "correzione: test.",
27
+ "es": "reparación: pruebas.",
28
+ "pl": "uwaga: testy.",
29
+ "uk": "виправити: тести.",
30
+ "zh-cn": "fix:试验。."
31
+ },
32
+ "4.0.2": {
33
+ "en": "fix: crash",
34
+ "de": "fix: absturz",
35
+ "ru": "исправить: аварии",
36
+ "pt": "correção: acidente",
37
+ "nl": "vertaling:",
38
+ "fr": "correction :",
39
+ "it": "correzione: crash",
40
+ "es": "arranca:",
41
+ "pl": "naprawa",
42
+ "uk": "виправити: аварійний",
43
+ "zh-cn": "fix:坠落"
44
+ },
6
45
  "4.0.1": {
7
46
  "en": "fix: hideHeader object is writable",
8
47
  "de": "fix: hideHeader-Objekt ist schreibbar"
@@ -45,45 +84,6 @@
45
84
  "pl": "upoważnianie języka\nzmieniło się: zaktualizowano front do 20221027. Konstrukcja tematu (dodawanie kod-editor-ground-color) oraz prawdopodobnie aktualizacja kart\ndodano: przeglądarkę_mod (2.1.3). Zastosowanie ręcznych wersji karty przeglądarki_mod.\ndostęp: instances.refresh być używany do przeładowania strony w połączonych przeglądarkach.\nusunięte: miłość_reload and window_reload\nusunięta: nazwa nie jest wspierana przez przeglądarkę_mod anymore\ndodał: Wspieranie toastów z przyciskiem (json lub -;string)\ndodano: stan aktywności pokazuje, że użytkownik jest obecnie używany przez określoną przeglądarkę\ndodał: Wsparcie dla subklerów w kartach dla obrazów i kart przechowywania kart (please keep cards in root folder).",
46
85
  "uk": "додано: підтримка мови екземпляра\nзмінено: оновлений фронтенд до 20221027.0 Потрібні налаштування теми (add code-editor-phone-color) і, ймовірно, оновлення карт\nдодано: браузер_mod (2.1.3) тепер інтегрований. Будь ласка, видаліть ручні встановлені версії користувацького браузера_mod карти.\nдодано: instances.refresh перезавантажити сторінку в підключених браузерах.\nвидалити: lovelace_reload і windows_reload стани\nвидалити: стан імен, не підтримується браузером_mod додатково\nдоданий: Підтримка тастів з кнопкою дії (або json або -;string)\nдодано: стан роботи покаже, якщо користувач наразі використовує певний браузер\nдодано: Підтримка підпапок у картках для зображень та начинок на замовлення, завантаження карт (збережіть картки у папці кореневих).",
47
86
  "zh-cn": "增加:每一类语文支助\n修改:更新前线到20221027.0。 需求专题调整(附加编码的外地领地)以及可能提供最新资料\n增加:现正在综合编(2.1.3)。 请取消制造的习俗包件的手册。.\n增加:情况。 可以用来复制连带代的页。.\n删除:亲王:重载和窗口。\n删除:姓名国,未获括号内的支持;莫斯·马约尔\n增加:支持以行动、但顿(既不是 json,也不是;示范)\n增加:如果用户目前使用某些代行,活动国将显示活动情况。\n增加:支持在图像和制成品的卡里的投影器(装有根带的卡)。."
48
- },
49
- "2.2.0": {
50
- "en": "fixed: incorrect warning about duplicate entities on update of manual entity.\nfixed: input_datetime did not work if time was enabled and did vanish if date and time were enabled.\nfixed: RGB hex string got broken on not rounded numbers (problem with mushroom ligth card).\nfixed: state of cover entity if not 0 or 100% (fixes problem with sliter-button-card).\nfixed: light did not read brightness ACTUAL in dimmer devices.\nadded: support auto entities card and subscription.\nadded: improve support for input_datetime & string states.\nadded: support for browser_mod (i.e. crontrol frontend from iobroker).",
51
- "de": "behoben: Falsche Warnung vor doppelten Entitäten beim Update einer manuellen Entität.\nbehoben: input_datetime funktionierte nicht, wenn die Uhrzeit aktiviert war, und verschwand, wenn Datum und Uhrzeit aktiviert waren.\nbehoben: RGB-Hex-String wurde bei nicht gerundeten Zahlen unterbrochen (Problem mit Pilzlichtkarte).\nbehoben: Zustand der Abdeckungsentität, wenn nicht 0 oder 100% (behebt das Problem mit der Sliter-Button-Karte).\nbehoben: Licht hat Helligkeit IST bei Dimmergeräten nicht gelesen.\nhinzugefügt: Unterstützung von Karten und Abonnements für automatische Entitäten.\nhinzugefügt: verbesserte Unterstützung für input_datetime & String-Zustände.\nhinzugefügt: Unterstützung für browser_mod (d. h. Crontrol-Frontend von iobroker).",
52
- "ru": "исправлено: некорректное предупреждение о повторяющихся сущностях при обновлении ручной сущности.\nисправлено: input_datetime не работал, если время было включено, и исчезало, если были включены дата и время.\nисправлено: шестнадцатеричная строка RGB ломалась на неокругленных числах (проблема с грибовидной картой).\nисправлено: состояние объекта покрытия, если не 0 или 100% (исправляет проблему с картой-кнопкой).\nисправлено: свет не считывал АКТУАЛЬНУЮ яркость в диммерных устройствах.\nдобавлено: поддержка автоматических карточек и подписок.\nдобавлено: улучшена поддержка input_datetime и строковых состояний.\nдобавлено: поддержка browser_mod (т.е. интерфейс crontrol от iobroker).",
53
- "pt": "corrigido: aviso incorreto sobre entidades duplicadas na atualização da entidade manual.\nfixo: input_datetime não funcionava se a hora estivesse habilitada e desaparecia se data e hora estivessem habilitadas.\ncorrigido: a string hexadecimal RGB foi quebrada em números não arredondados (problema com o cartão de luz de cogumelo).\nfixo: estado da entidade de cobertura se não for 0 ou 100% (corrige o problema com o cartão-botão cortador).\nfixo: a luz não lia o brilho REAL em dispositivos dimmer.\nadicionado: suporte a cartão e assinatura de entidades automáticas.\nadicionado: melhore o suporte para estados input_datetime e string.\nadicionado: suporte para browser_mod (ou seja, frontend crontrol do iobroker).",
54
- "nl": "opgelost: onjuiste waarschuwing over dubbele entiteiten bij update van handmatige entiteit.\nopgelost: input_datetime werkte niet als tijd was ingeschakeld en verdween als datum en tijd waren ingeschakeld.\nopgelost: RGB hex string is gebroken op niet afgeronde getallen (probleem met paddenstoellichtkaart).\nvast: staat van dekkingsentiteit indien niet 0 of 100% (probleem met sliter-knop-kaart opgelost).\nvast: het licht leest de helderheid niet ACTUAL in dimmers.\ntoegevoegd: ondersteuning voor auto-entiteitenkaart en abonnement.\ntoegevoegd: ondersteuning voor input_datetime & string-statussen verbeteren.\ntoegevoegd: ondersteuning voor browser_mod (d.w.z. crontrol frontend van iobroker).",
55
- "fr": "corrigé : avertissement incorrect concernant les entités en double lors de la mise à jour de l'entité manuelle.\ncorrigé : input_datetime ne fonctionnait pas si l'heure était activée et disparaissait si la date et l'heure étaient activées.\ncorrigé : la chaîne hexadécimale RVB était cassée sur des nombres non arrondis (problème avec la carte champignon).\ncorrigé : état de l'entité de couverture si ce n'est pas 0 ou 100 % (corrige le problème avec la découpeuse-bouton-carte).\ncorrigé : la lumière n'a pas lu la luminosité RÉELLE dans les dispositifs de gradation.\najouté : prise en charge de la carte et de l'abonnement des entités automatiques.\najouté : amélioration de la prise en charge des états input_datetime et string.\najouté : prise en charge de browser_mod (c'est-à-dire l'interface crontrol d'iobroker).",
56
- "it": "corretto: avviso errato su entità duplicate sull'aggiornamento dell'entità manuale.\nrisolto: input_datetime non funzionava se l'ora era abilitata e svaniva se la data e l'ora erano abilitate.\nrisolto: la stringa esadecimale RGB si interrompeva su numeri non arrotondati (problema con la scheda fungo ligth).\nfisso: stato dell'entità della copertura se diverso da 0 o 100% (risolve il problema con la tessera-tasto-sliter).\nfisso: la luce non ha letto la luminosità EFFETTIVA nei dispositivi dimmer.\naggiunto: supporto per la carta delle entità automatiche e l'abbonamento.\naggiunto: miglioramento del supporto per input_datetime e stati delle stringhe.\naggiunto: supporto per browser_mod (cioè frontend di crotrol da iobroker).",
57
- "es": "corregido: advertencia incorrecta sobre entidades duplicadas en la actualización de la entidad manual.\ncorregido: input_datetime no funcionaba si la hora estaba habilitada y desaparecía si la fecha y la hora estaban habilitadas.\nsolucionado: la cadena hexadecimal RGB se rompió en números no redondeados (problema con la tarjeta de luz de hongos).\narreglado: estado de la entidad de cobertura si no es 0 o 100% (soluciona el problema con la tarjeta de botón de corte).\ncorregido: la luz no leía el brillo REAL en los dispositivos de atenuación.\nagregado: admite tarjeta de entidades automáticas y suscripción.\nagregado: mejore el soporte para input_datetime y estados de cadena.\nagregado: soporte para browser_mod (es decir, frontend crontrol de iobroker).",
58
- "pl": "naprawiono: nieprawidłowe ostrzeżenie o zduplikowanych encjach przy aktualizacji encji ręcznej.\nnaprawiono: input_datetime nie działał, jeśli czas był włączony i znikał, jeśli data i godzina były włączone.\nnaprawiono: ciąg szesnastkowy RGB pękał na niezaokrąglonych liczbach (problem z kartą grzybkową).\nnaprawiono: stan jednostki okładki, jeśli nie 0 lub 100% (rozwiązuje problem z kartą z przyciskami sliterowymi).\nnaprawiono: światło nie odczytywało jasności AKTUALNEJ w urządzeniach ze ściemniaczem.\ndodano: obsługa karty i subskrypcji podmiotów automatycznych.\ndodano: poprawiono obsługę input_datetime i stanów stringów.\ndodano: wsparcie dla browser_mod (czyli crontrol frontend z iobroker).",
59
- "zh-cn": "修复:手动实体更新时有关重复实体的错误警告。\n已修复:如果启用了时间,则 input_datetime 不起作用,如果启用了日期和时间,则会消失。\n修复:RGB 十六进制字符串在非四舍五入的数字上被破坏(蘑菇灯卡问题)。\n已修复:如果不是 0 或 100%,则覆盖实体的状态(修复了 sliter-button-card 的问题)。\n已修复:调光器设备中的灯光未读取实际亮度。\n补充:支持自动实体卡和订阅。\n添加:改进对 input_datetime 和字符串状态的支持。\n添加:对 browser_mod 的支持(即来自 iobroker 的 crontrol 前端)。",
60
- "uk": "виправлено: некоректне попередження про дублікати сутностей під час оновлення ручної сутності.\nвиправлено: input_datetime не працював, якщо час було ввімкнено, і зникав, якщо дата й час були ввімкнені.\nвиправлено: шістнадцятковий рядок RGB порушувався на незаокруглених числах (проблема з грибоподібною карткою).\nвиправлено: стан об’єкта покриття, якщо не 0 або 100% (вирішено проблему з картою кнопки-розрізу).\nвиправлено: світло не зчитує АКТУАЛЬНУ яскравість у димерах.\nдодано: підтримка автоматичної картки та підписки.\nдодано: покращено підтримку станів input_datetime та рядків.\nдодано: підтримка browser_mod (тобто інтерфейс crontrol від iobroker)."
61
- },
62
- "2.1.4": {
63
- "en": "Dependency update",
64
- "de": "Abhängigkeits-Update",
65
- "ru": "Обновление зависимости",
66
- "pt": "Atualização de dependência",
67
- "nl": "Afhankelijkheidsupdate",
68
- "fr": "Mise à jour des dépendances",
69
- "it": "Aggiornamento delle dipendenze",
70
- "es": "Actualización de dependencia",
71
- "pl": "Aktualizacja zależności",
72
- "zh-cn": "依赖更新",
73
- "uk": "Оновлення залежності"
74
- },
75
- "2.1.3": {
76
- "en": "Fixed: remove backup of old frontend (sorry)",
77
- "de": "Behoben: Backup des alten Frontends entfernen (sorry)",
78
- "ru": "Исправлено: удалить резервную копию старого интерфейса (извините)",
79
- "pt": "Corrigido: remover backup de front-end antigo (desculpe)",
80
- "nl": "Opgelost: verwijder back-up van oude frontend (sorry)",
81
- "fr": "Corrigé : supprimer la sauvegarde de l'ancienne interface (désolé)",
82
- "it": "Risolto: rimuovere il backup del vecchio frontend (scusate)",
83
- "es": "Corregido: eliminar la copia de seguridad de la interfaz anterior (lo siento)",
84
- "pl": "Naprawiono: usuń kopię zapasową starego frontendu (przepraszam)",
85
- "zh-cn": "修正:删除旧前端的备份(抱歉)",
86
- "uk": "Виправлено: видалення резервної копії старого інтерфейсу (вибачте)"
87
87
  }
88
88
  },
89
89
  "title": "Visualization with Lovelace-UI",
@@ -250,11 +250,13 @@ class BrowserModModule {
250
250
  } else {
251
251
  //read hideHeader setting from object:
252
252
  const hideHeader = await this.adapter.getStateAsync(ioBrokerDeviceId + '.hideHeader');
253
- if (browserId) {
254
- this.initialiseBrowserSettings(browserId);
255
- this.browserModStorage.browsers[browserId].settings.hideHeader = hideHeader.val;
256
- } else {
257
- this.browserModStorage.settings.hideHeader = hideHeader.val;
253
+ if (hideHeader) {
254
+ if (browserId) {
255
+ this.initialiseBrowserSettings(browserId);
256
+ this.browserModStorage.browsers[browserId].settings.hideHeader = hideHeader.val;
257
+ } else {
258
+ this.browserModStorage.settings.hideHeader = hideHeader.val;
259
+ }
258
260
  }
259
261
  }
260
262
  }
@@ -358,7 +360,7 @@ class BrowserModModule {
358
360
  this.initialiseBrowserSettings(message.browserID);
359
361
 
360
362
  // if data.browserID exists, browserID is changed -> copy stuff and delete old id.
361
- if (message.data.browserID) {
363
+ if (message.data && message.data.browserID) {
362
364
  for (const id of Object.keys(this.objects)) {
363
365
  if (id.startsWith(ioBrokerDeviceId)) {
364
366
  delete this.objects[id];
@@ -566,13 +568,15 @@ class BrowserModModule {
566
568
  await this.adapter.setState(id, false, true);
567
569
  } else if (id.endsWith('hideHeader')) {
568
570
  const hideHeader = await this.adapter.getStateAsync(id);
569
- if (id === this.adapter.namespace + '.' + instancesPath + 'hideHeader') {
570
- this.browserModStorage.settings.hideHeader = hideHeader.val;
571
- } else {
572
- //read hideHeader states from ioBroker objects.
573
- const browserId = id.split('.')[3];
574
- this.initialiseBrowserSettings(browserId);
575
- this.browserModStorage.browsers[id.split('.')[3]].settings.hideHeader = hideHeader.val;
571
+ if (hideHeader) {
572
+ if (id === this.adapter.namespace + '.' + instancesPath + 'hideHeader') {
573
+ this.browserModStorage.settings.hideHeader = hideHeader.val;
574
+ } else {
575
+ //read hideHeader states from ioBroker objects.
576
+ const browserId = id.split('.')[3];
577
+ this.initialiseBrowserSettings(browserId);
578
+ this.browserModStorage.browsers[id.split('.')[3]].settings.hideHeader = hideHeader.val;
579
+ }
576
580
  }
577
581
  }
578
582
  }
package/lib/server.js CHANGED
@@ -920,6 +920,27 @@ class WebServer {
920
920
  entityHome.attributes.longitude = parseFloat(this.systemConfig.longitude);
921
921
  entityHome.last_changed = this.systemConfig.ts;
922
922
  entityHome.last_updated = this.systemConfig.ts;
923
+
924
+ //shoppindlist:
925
+ let entityShoppingList = entityData.entityId2Entity['todo.shoppinglist'];
926
+ if (!entityShoppingList) {
927
+ entityShoppingList = {
928
+ 'entity_id': 'todo.shoppinglist',
929
+ 'state': 'unknown',
930
+ 'attributes': {
931
+ 'hidden': true,
932
+ 'friendly_name': 'Shopping List',
933
+ 'icon': 'mdi:cart'
934
+ },
935
+ 'context': {
936
+ 'id': 'system.config', //not sure this makes a lot of sense. But prevents crash in UI.
937
+ 'STATE': {}, //prevent warning on getting history.
938
+ 'type': 'shopping_list'
939
+ }
940
+ };
941
+ entityData.entities.push(entityShoppingList);
942
+ entityData.entityId2Entity[entityShoppingList.entity_id] = entityShoppingList;
943
+ }
923
944
  }
924
945
 
925
946
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.lovelace",
3
- "version": "4.0.1",
3
+ "version": "4.0.4",
4
4
  "description": "With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI",
5
5
  "author": {
6
6
  "name": "bluefox",