iobroker.webui 1.21.0 → 1.23.2

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.
Files changed (60) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +17 -1
  3. package/binary/iobroker.iobroker-webcomponent-object-selector-0.0.1.tgz +0 -0
  4. package/dist/importmaps/importmap-config.d.ts +1 -0
  5. package/dist/importmaps/importmap-config.js +2 -1
  6. package/gulpfile.mjs +3 -8
  7. package/io-package.json +53 -53
  8. package/package.json +16 -14
  9. package/www/dist/frontend/common/IobrokerHandler.d.ts +3 -2
  10. package/www/dist/frontend/common/IobrokerHandler.js +3 -0
  11. package/www/dist/frontend/config/ConfigureWebcomponentDesigner.js +7 -3
  12. package/www/dist/frontend/config/IobrokerWebuiAppShell.js +5 -0
  13. package/www/dist/frontend/config/IobrokerWebuiBindingsEditor.js +25 -0
  14. package/www/dist/frontend/config/IobrokerWebuiSignalPropertyEditor.js +18 -0
  15. package/www/dist/frontend/config/IobrokerWebuiSolutionExplorer.js +54 -1
  16. package/www/dist/frontend/generated/Properties.json +6 -2
  17. package/www/dist/frontend/generated/ScriptCommands.json +12 -12
  18. package/www/dist/frontend/runtime/CustomControls.js +37 -6
  19. package/www/dist/frontend/runtime/ScreenViewer.js +2 -2
  20. package/www/dist/frontend/services/IobrokerWebuiBindableLocalObjectsService.js +46 -0
  21. package/www/dist/frontend/services/IobrokerWebuiBindableObjectDragDropService.js +29 -0
  22. package/www/dist/frontend/services/IobrokerWebuiCopyPasteService.js +1 -1
  23. package/www/dist/frontend/services/IobrokerWebuiPropertiesService.js +2 -2
  24. package/www/dist/importmaps/importmap-config.js +2 -1
  25. package/www/index.html +6 -1
  26. package/www/node_modules/@iobroker/socket-client/dist/esm/AdminConnection.js +7 -9
  27. package/www/node_modules/@iobroker/socket-client/dist/esm/Connection.d.ts +3 -3
  28. package/www/node_modules/@iobroker/socket-client/dist/esm/Connection.js +2 -3
  29. package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/dist/wunderbaum.css +545 -0
  30. package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/dist/wunderbaum.esm.js +8271 -0
  31. package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/dist/wunderbaum.esm.min.js +86 -0
  32. package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/dist/wunderbaum.umd.js +8279 -0
  33. package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/dist/wunderbaum.umd.min.js +86 -0
  34. package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/src/wunderbaum.scss +895 -0
  35. package/www/node_modules/@node-projects/web-component-designer/dist/elements/services/propertiesService/services/CssCurrentPropertiesService.js +24 -10
  36. package/www/node_modules/@node-projects/web-component-designer/dist/elements/services/propertiesService/services/CssProperties.json +0 -2
  37. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/components/BindingsEditor.js +7 -8
  38. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/components/EventAssignment.js +2 -2
  39. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/components/VisualizationPropertyGrid.js +1 -2
  40. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/helpers/BindingsHelper.js +50 -23
  41. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/scripting/ScriptSystem.js +10 -4
  42. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/services/SignalPropertyEditor.js +7 -7
  43. package/www/node_modules/@node-projects/web-component-designer-widgets-wunderbaum/dist/widgets/treeView/treeViewExtended.js +0 -1
  44. package/www/node_modules/blockly/blockly_compressed.js +599 -573
  45. package/www/node_modules/blockly/blocks_compressed.js +34 -33
  46. package/www/node_modules/es-module-shims/dist/es-module-shims.js +512 -442
  47. package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/iobrokerSelectId.es.js +53339 -0
  48. package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/iobrokerSelectId.umd.js +305 -0
  49. package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/selectIdHelper.js +34 -0
  50. package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/socket.iob.js +441 -0
  51. package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/test.html +21 -0
  52. package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/vite.svg +1 -0
  53. package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/node_modules/@iobroker/eslint-config/eslint.config.mjs +238 -0
  54. package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/node_modules/@iobroker/eslint-config/prettier.config.mjs +13 -0
  55. package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/node_modules/globals/globals.json +2998 -0
  56. package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/node_modules/globals/index.js +2 -0
  57. package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/node_modules/globals/license +9 -0
  58. package/www/node_modules/wunderbaum/dist/wunderbaum.css +10 -10
  59. package/www/node_modules/wunderbaum/dist/wunderbaum.esm.min.js +24 -24
  60. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/blockly/components/fields/FieldObjectId.js +0 -6
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 jochen.kuehner@gmx.de
3
+ Copyright (c) 2025 jochen.kuehner@gmx.de
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -133,6 +133,22 @@ runtime.html?screenName=screen2
133
133
  Placeholder for next versions:
134
134
  ### __WORK IN PROGRESS__
135
135
  -->
136
+ ### 1.23.2 (2025-01-19)
137
+ - one more fix in gulpfile
138
+
139
+ ### 1.23.1 (2025-01-19)
140
+ - fix gulp should work again
141
+
142
+ ### 1.23.0 (2025-01-19)
143
+ - fix paste in events assignment
144
+ - iobroker Signal Selector
145
+ - binding to width and height in custom controls
146
+
147
+ ### 1.22.0 (2025-01-15)
148
+ - local signals browser
149
+ - style completition fixes
150
+ - special bindings for "ring" cameras
151
+
136
152
  ### 1.21.0 (2024-12-28)
137
153
  - fix scripts with empty names on css
138
154
  - css props with only bindings are not shown
@@ -1000,4 +1016,4 @@ runtime.html?screenName=screen2
1000
1016
  ## License
1001
1017
  The MIT License (MIT)
1002
1018
 
1003
- Copyright (c) 2024 jogibear9988 <jochen.kuehner@gmx.de>
1019
+ Copyright (c) 2025 jogibear9988 <jochen.kuehner@gmx.de>
@@ -31,5 +31,6 @@ declare const importMapConfig: {
31
31
  wunderbaum: string;
32
32
  "wunderbaum/": string;
33
33
  "toastify-js": string;
34
+ "iobroker.iobroker-webcomponent-object-selector/": string;
34
35
  };
35
36
  };
@@ -31,7 +31,8 @@ const importMapConfig = {
31
31
  "long": "./node_modules/long/index.js",
32
32
  "wunderbaum": "./node_modules/wunderbaum/dist/wunderbaum.esm.min.js",
33
33
  "wunderbaum/": "./node_modules/wunderbaum/",
34
- "toastify-js": "./node_modules/toastify-js/src/toastify-es.js"
34
+ "toastify-js": "./node_modules/toastify-js/src/toastify-es.js",
35
+ "iobroker.iobroker-webcomponent-object-selector/": "./node_modules/iobroker.iobroker-webcomponent-object-selector/"
35
36
  }
36
37
  };
37
38
  //@ts-ignore
package/gulpfile.mjs CHANGED
@@ -47,14 +47,9 @@ function copyNodeModules() {
47
47
  "monaco-editor",
48
48
  //"tslib"
49
49
  //"wunderbaum",
50
-
51
- "/node_modules/blockly/blockly_compressed.js",
52
- "/node_modules/blockly/blocks_compressed.js",
53
- "/node_modules/blockly/javascript_compressed.js",
54
- "/node_modules/blockly/msg/en.js",
55
- "/node_modules/@blockly/zoom-to-fit/dist/index.js",
56
- ]
57
50
 
51
+ "iobroker.iobroker-webcomponent-object-selector"
52
+ ]
58
53
  runtimeModules = runtimeModules.map(x => './node_modules/' + x + '/**/*')
59
54
 
60
55
  return src(runtimeModules, { base: './', encoding: false })
@@ -113,7 +108,7 @@ function cleanupNodeModules() {
113
108
 
114
109
  function cleanupMonaco() {
115
110
  return deleteAsync([
116
- './www/node_modules/monaco-editor/min/vs/basic-languages/**/*',
111
+ './www/node_modules/monaco-editor/min/vs/basic-languages/**/*',
117
112
  '!./www/node_modules/monaco-editor/min/vs/basic-languages/javascript',
118
113
  '!./www/node_modules/monaco-editor/min/vs/basic-languages/typescript',
119
114
  '!./www/node_modules/monaco-editor/min/vs/basic-languages/html',
package/io-package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "webui",
4
- "version": "1.21.0",
4
+ "version": "1.23.2",
5
5
  "titleLang": {
6
6
  "en": "webui",
7
7
  "de": "webui",
@@ -29,6 +29,58 @@
29
29
  "zh-cn": "使用万维网传送器的高锰用户接口"
30
30
  },
31
31
  "news": {
32
+ "1.23.2": {
33
+ "en": "one more fix in gulpfile",
34
+ "de": "noch eine fix in gulpfile",
35
+ "ru": "еще одно исправление в gulpfile",
36
+ "pt": "mais uma correção no gulpfile",
37
+ "nl": "nog een fix in gulpfile",
38
+ "fr": "une autre correction dans gulpfile",
39
+ "it": "un altro fix in gulpfile",
40
+ "es": "uno más se fijan en el archivo del gulp",
41
+ "pl": "jeszcze jeden fix w gulpfile",
42
+ "uk": "ще одна фіксація в gulpfile",
43
+ "zh-cn": "再加一个固醇"
44
+ },
45
+ "1.23.1": {
46
+ "en": "fix gulp should work again",
47
+ "de": "gulp sollte wieder funktionieren",
48
+ "ru": "исправить gulp должно работать снова",
49
+ "pt": "corrigir gulp deve funcionar novamente",
50
+ "nl": "fix gulp moet weer werken",
51
+ "fr": "réparer gulp devrait fonctionner à nouveau",
52
+ "it": "fissare gulp dovrebbe funzionare di nuovo",
53
+ "es": "arreglar golp debe trabajar de nuevo",
54
+ "pl": "fix gulp powinien działać ponownie",
55
+ "uk": "закріпити гельпом потрібно знову",
56
+ "zh-cn": "修补 gulp 应再次工作"
57
+ },
58
+ "1.23.0": {
59
+ "en": "fix paste in events assignment\niobroker Signal Selector\nbinding to width and height in custom controls",
60
+ "de": "fixieren sie paste in der ereigniszuordnung\niobroker Signal Selektor\nbindung an breite und höhe in benutzerdefinierten steuerungen",
61
+ "ru": "фиксация пасты в присвоении событий\niobroker Signal Selector\nпривязки к ширине и высоте в пользовательском контроле",
62
+ "pt": "corrigir pasta na atribuição de eventos\nseletor de Sinal iobroker\nligação à largura e altura em controles personalizados",
63
+ "nl": "plak plakken in de opdracht van gebeurtenissen\niobroker-signaalkiezer\nbinding aan breedte en hoogte in aangepaste controles",
64
+ "fr": "fixer coller dans l'affectation des événements\nsélecteur de signal iobroker\nfixation à la largeur et à la hauteur dans les commandes personnalisées",
65
+ "it": "correzione della pasta nell'assegnazione degli eventi\niobroker Selettore Segnale\nlegare a larghezza e altezza nei controlli personalizzati",
66
+ "es": "arreglar pasta en la asignación de eventos\niobroker Signal Selector\nunión a ancho y altura en controles personalizados",
67
+ "pl": "fix pasta w przyporządkowaniu zdarzeń\niobroker Selektor sygnału\nwiązanie do szerokości i wysokości w sterowaniu własnym",
68
+ "uk": "фіксувати пасту в появі подій\niobroker Signal Вибратор\nобов'язковий для ширини і висоти в користувацьких управліннях",
69
+ "zh-cn": "在事件任务中固定粘贴\nio 经纪人信号选择器\n绑定自定义控件中的宽度和高度"
70
+ },
71
+ "1.22.0": {
72
+ "en": "local signals browser\nstyle completition fixes\nspecial bindings for \"ring\" cameras",
73
+ "de": "lokale signale browser\nstil completition fixes\nspezielle bindungen für \"ring\"-kameras",
74
+ "ru": "браузер местных сигналов\nстиль комплектации\nспециальные привязки для «кольцовых» камер",
75
+ "pt": "navegador de sinais locais\ncorreções de conclusão de estilo\nligações especiais para câmeras \"ring\"",
76
+ "nl": "lokale signalenbrowser\nstijl completitie fixes\nspeciale bindingen voor \"ring\"-camera's",
77
+ "fr": "navigateur de signaux locaux\ncorrectifs de complétion de style\nfixations spéciales pour caméras \"ring\"",
78
+ "it": "browser segnali locali\nstile correzioni di completamento\nattacchi speciali per telecamere \"ring\"",
79
+ "es": "navegador de señales locales\nestilo completition fixes\nencuadernaciones especiales para cámaras \"ring\"",
80
+ "pl": "przeglądarka lokalnych sygnałów\npoprawki zakończenia stylu\nspecjalne wiązania do kamer \"ring\"",
81
+ "uk": "веб камера\nфіксація стилів\nспеціальні прив'язки для камер \"обручка\"",
82
+ "zh-cn": "本地信号浏览器\n样式补丁修正\n“环”相机的特殊装订"
83
+ },
32
84
  "1.21.0": {
33
85
  "en": "fix scripts with empty names on css\ncss props with only bindings are not shown\nremove of css prop should remove binding?\nOpen Screen in sub screen command",
34
86
  "de": "skripte mit leeren namen auf css fixieren\ncss props mit nur bindungen sind nicht dargestellt\nentfernen css prop sollte bindung entfernen?\nBildschirm im Sub-Bildschirm-Befehl öffnen",
@@ -67,58 +119,6 @@
67
119
  "pl": "dodaj kilka pakietów\nuruchom prosty skrypt cmd i uaktualnij wyświetlacz macierzysty\naktualizacja pakietów, downgrade monaco\nnaprawić kopię zapasową",
68
120
  "uk": "додати кілька пакетів\nзапустити простий скрипт cmd і оновлення отримати батьківський екран\nоновлення пакетів, град монако\nрезервне копіювання",
69
121
  "zh-cn": "添加几个软件包\n运行简单的脚本 cmd 并更新父屏幕\n更新软件包, 降级\n修复备份"
70
- },
71
- "1.19.4": {
72
- "en": "copy & paste events",
73
- "de": "kopieren und einfügen von ereignissen",
74
- "ru": "копировать события",
75
- "pt": "copiar e colar eventos",
76
- "nl": "gebeurtenissen kopiëren & plakken",
77
- "fr": "copier & coller les événements",
78
- "it": "copia & incolla eventi",
79
- "es": "copy \" paste events",
80
- "pl": "kopiowanie i wklejanie zdarzeń",
81
- "uk": "скопіювати та вставляти події",
82
- "zh-cn": "复制粘贴事件( p)"
83
- },
84
- "1.19.3": {
85
- "en": "support null value",
86
- "de": "unterstützungswert",
87
- "ru": "нулевое значение",
88
- "pt": "suporte valor nulo",
89
- "nl": "steun nulwaarde",
90
- "fr": "support valeur null",
91
- "it": "supporto valore null",
92
- "es": "valor nulo",
93
- "pl": "wartość null wsparcia",
94
- "uk": "підтримка значення null",
95
- "zh-cn": "支持无效值"
96
- },
97
- "1.19.2": {
98
- "en": "use name in classlist",
99
- "de": "name in der klassenliste verwenden",
100
- "ru": "имя в класслисте",
101
- "pt": "use o nome na lista de classes",
102
- "nl": "naam gebruiken in klasselijst",
103
- "fr": "utiliser le nom dans la liste des classes",
104
- "it": "usare il nome in classifica",
105
- "es": "nombre de uso en la lista de clases",
106
- "pl": "użyj nazwy na liście klas",
107
- "uk": "ім'я користувача в класі",
108
- "zh-cn": "使用分类列表中的名称"
109
- },
110
- "1.19.1": {
111
- "en": "copy path for screens/controls",
112
- "de": "kopierpfad für bildschirme/steuerungen",
113
- "ru": "путь копирования для экранов/контролей",
114
- "pt": "caminho de cópia para telas / controles",
115
- "nl": "pad voor schermen/besturing kopiëren",
116
- "fr": "chemin de copie pour les écrans/contrôles",
117
- "it": "copiare il percorso per schermi/controlli",
118
- "es": "copy path para pantallas/controles",
119
- "pl": "ścieżka kopiowania ekranów / urządzeń sterujących",
120
- "uk": "копіювання шляху до екранів/контролів",
121
- "zh-cn": "屏幕/控件复制路径"
122
122
  }
123
123
  },
124
124
  "icon": "logo.png",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.webui",
3
- "version": "1.21.0",
3
+ "version": "1.23.2",
4
4
  "description": "ioBroker webui",
5
5
  "type": "module",
6
6
  "main": "dist/backend/main.js",
@@ -43,31 +43,31 @@
43
43
  "node": ">=18"
44
44
  },
45
45
  "dependencies": {
46
- "@iobroker/adapter-core": "^3.2.2",
47
- "@types/node": "^22.10.1"
46
+ "@iobroker/adapter-core": "^3.2.3",
47
+ "@types/node": "^22.10.7"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@adobe/css-tools": "4.4.1",
51
51
  "@alcalzone/release-script": "^3.8.0",
52
52
  "@alcalzone/release-script-plugin-iobroker": "^3.7.2",
53
53
  "@alcalzone/release-script-plugin-license": "^3.7.0",
54
- "@blockly/zoom-to-fit": "^6.0.9",
55
- "@iobroker/socket-client": "^3.1.3",
54
+ "@blockly/zoom-to-fit": "^6.0.12",
55
+ "@iobroker/socket-client": "^4.0.0",
56
56
  "@iobroker/testing": "^5.0.0",
57
57
  "@node-projects/base-custom-webcomponent": "0.27.8",
58
58
  "@node-projects/lean-he-esm": "^3.3.0",
59
59
  "@node-projects/node-html-parser-esm": "^6.2.0",
60
60
  "@node-projects/propertygrid.webcomponent": "^1.2.3",
61
61
  "@node-projects/splitview.webcomponent": "^1.0.1",
62
- "@node-projects/web-component-designer": "^0.1.236",
62
+ "@node-projects/web-component-designer": "^0.1.239",
63
63
  "@node-projects/web-component-designer-codeview-monaco": "^0.1.32",
64
64
  "@node-projects/web-component-designer-htmlparserservice-nodehtmlparser": "^0.1.11",
65
65
  "@node-projects/web-component-designer-stylesheetservice-css-tools": "^0.1.10",
66
- "@node-projects/web-component-designer-visualization-addons": "^0.1.102",
67
- "@node-projects/web-component-designer-widgets-wunderbaum": "^0.1.31",
66
+ "@node-projects/web-component-designer-visualization-addons": "^0.1.112",
67
+ "@node-projects/web-component-designer-widgets-wunderbaum": "^0.1.32",
68
68
  "@types/json-schema": "^7.0.15",
69
69
  "@web/dev-server": "^0.4.6",
70
- "blockly": "^11.1.1",
70
+ "blockly": "^11.2.1",
71
71
  "chai": "^5.1.2",
72
72
  "chai-as-promised": "^8.0.1",
73
73
  "construct-style-sheets-polyfill": "^3.1.0",
@@ -75,13 +75,15 @@
75
75
  "dayjs": "^1.11.13",
76
76
  "del": "^8.0.0",
77
77
  "dock-spawn-ts": "^3.2.1",
78
- "es-module-shims": "^1.10.1",
79
- "eslint": "^9.16.0",
78
+ "es-module-shims": "^2.0.3",
79
+ "eslint": "^9.18.0",
80
80
  "esprima-next": "^6.0.3",
81
+ "glob-stream": "^8.0.2",
81
82
  "gulp": "^5.0.0",
82
83
  "gulp-git": "^2.11.0",
83
84
  "gulp-replace": "^1.1.4",
84
- "long": "^5.2.3",
85
+ "iobroker.iobroker-webcomponent-object-selector": "file:binary/iobroker.iobroker-webcomponent-object-selector-0.0.1.tgz",
86
+ "long": "^5.2.4",
85
87
  "mobile-drag-drop": "^3.0.0-rc.0",
86
88
  "mocha": "^11.0.1",
87
89
  "monaco-editor": "^0.50.0",
@@ -90,8 +92,8 @@
90
92
  "toastify-js": "^1.12.0",
91
93
  "ts-node": "^10.9.2",
92
94
  "tslib": "^2.8.1",
93
- "typescript": "^5.7.2",
95
+ "typescript": "^5.7.3",
94
96
  "typescript-json-schema": "^0.65.1",
95
- "wunderbaum": "0.11.0"
97
+ "wunderbaum": "0.12.0"
96
98
  }
97
99
  }
@@ -75,6 +75,7 @@ export declare class IobrokerHandler implements VisualizationHandler {
75
75
  file: ArrayBuffer;
76
76
  }>;
77
77
  removeAdditionalFile(name: string): Promise<void>;
78
+ getLocalStateNames(): string[];
78
79
  subscribeState(id: string, cb: ioBroker.StateChangeHandler): Promise<void>;
79
80
  unsubscribeState(id: string, cb: ioBroker.StateChangeHandler): void;
80
81
  getObjectList(type: ioBroker.ObjectType, id: string): Promise<Record<string, ioBroker.AnyObject & {
@@ -95,8 +96,8 @@ export declare class IobrokerHandler implements VisualizationHandler {
95
96
  getSignalInformation(signal: any): SignalInformation;
96
97
  getHistoricData(id: string, config: any): Promise<{
97
98
  values: ioBroker.GetHistoryResult;
98
- sessionId: string;
99
- stepIgnore: number;
99
+ sessionId: number;
100
+ step: number;
100
101
  }>;
101
102
  }
102
103
  export declare const iobrokerHandler: IobrokerHandler;
@@ -336,6 +336,9 @@ export class IobrokerHandler {
336
336
  }
337
337
  #localSubscriptions = new Map;
338
338
  #localValues = new Map;
339
+ getLocalStateNames() {
340
+ return Array.from(this.#localSubscriptions.keys());
341
+ }
339
342
  async subscribeState(id, cb) {
340
343
  if (id.startsWith('local_')) {
341
344
  let arr = this.#localSubscriptions.get(id);
@@ -2,7 +2,7 @@ import { BaseCustomWebcomponentBindingsService, EventsService, JsonFileElementsS
2
2
  import { NodeHtmlParserService } from '@node-projects/web-component-designer-htmlparserservice-nodehtmlparser';
3
3
  import { CodeViewMonaco } from '@node-projects/web-component-designer-codeview-monaco';
4
4
  import { CssToolsStylesheetService } from '@node-projects/web-component-designer-stylesheetservice-css-tools';
5
- import { BindableObjectDragDropService, BindingsEditor, VisualizationBindingsService, PropertyGridDragDropService, ScriptRefactorService, VisualizationBindingsRefactorService } from "@node-projects/web-component-designer-visualization-addons";
5
+ import { VisualizationBindingsService, PropertyGridDragDropService, ScriptRefactorService, VisualizationBindingsRefactorService } from "@node-projects/web-component-designer-visualization-addons";
6
6
  import { IobrokerWebuiBindableObjectsService } from "../services/IobrokerWebuiBindableObjectsService.js";
7
7
  import { IobrokerWebuiDemoProviderService } from "../services/IobrokerWebuiDemoProviderService.js";
8
8
  import { IobrokerWebuiConfirmationWrapper } from "./IobrokerWebuiConfirmationWrapper.js";
@@ -20,13 +20,17 @@ import { IobrokerWebuiScreenContextMenu } from "../services/IobrokerWebuiScreenC
20
20
  import { IobrokerWebuiEventsService } from "../services/IobrokerWebuiEventsService.js";
21
21
  import { IobrokerWebuiCustomControlEventsService } from "../services/IobrokerWebuiCustomControlEventsService.js";
22
22
  import { IobrokerWebuiBindableObjectsForPropertiesService } from "../services/IobrokerWebuiBindableObjectsForPropertiesService.js";
23
+ import { IobrokerWebuiBindableLocalObjectsService } from "../services/IobrokerWebuiBindableLocalObjectsService.js";
24
+ import { IobrokerWebuiBindableObjectDragDropService } from "../services/IobrokerWebuiBindableObjectDragDropService.js";
25
+ import { IobrokerWebuiBindingsEditor } from "./IobrokerWebuiBindingsEditor.js";
23
26
  export function configureDesigner(bindingsHelper) {
24
27
  const serviceContainer = createDefaultServiceContainer();
25
28
  serviceContainer.register("bindingService", new BaseCustomWebcomponentBindingsService());
26
29
  serviceContainer.register("htmlParserService", new NodeHtmlParserService());
27
30
  serviceContainer.register("bindableObjectsService", new IobrokerWebuiBindableObjectsService());
31
+ serviceContainer.register("bindableObjectsService", new IobrokerWebuiBindableLocalObjectsService());
28
32
  serviceContainer.register("bindableObjectsService", new IobrokerWebuiBindableObjectsForPropertiesService());
29
- serviceContainer.register("bindableObjectDragDropService", new BindableObjectDragDropService(bindingsHelper, iobrokerHandler));
33
+ serviceContainer.register("bindableObjectDragDropService", new IobrokerWebuiBindableObjectDragDropService(bindingsHelper, iobrokerHandler));
30
34
  serviceContainer.register("bindingService", new VisualizationBindingsService(bindingsHelper));
31
35
  serviceContainer.register("demoProviderService", new IobrokerWebuiDemoProviderService());
32
36
  serviceContainer.register("externalDragDropService", new IobrokerWebuiExternalDragDropService());
@@ -60,7 +64,7 @@ export function configureDesigner(bindingsHelper) {
60
64
  }
61
65
  serviceContainer.config.openBindingsEditor = async (property, designItems, binding, target) => {
62
66
  if (!binding || binding.service instanceof VisualizationBindingsService) {
63
- let dynEdt = new BindingsEditor(property, binding, target, serviceContainer, designItems[0].instanceServiceContainer, window.appShell);
67
+ let dynEdt = new IobrokerWebuiBindingsEditor(property, binding, target, serviceContainer, designItems[0].instanceServiceContainer, window.appShell);
64
68
  let cw = new IobrokerWebuiConfirmationWrapper();
65
69
  cw.title = "Edit Binding of '" + property.name + "' - " + property.propertyType;
66
70
  cw.appendChild(dynEdt);
@@ -8,6 +8,7 @@ const bindingsHelper = new BindingsHelper(iobrokerHandler);
8
8
  LazyLoader.LoadJavascript('./node_modules/monaco-editor/min/vs/loader.js');
9
9
  import '@node-projects/web-component-designer';
10
10
  import { ValueType } from '@node-projects/web-component-designer';
11
+ import { BindableObjectsBrowser } from '@node-projects/web-component-designer-widgets-wunderbaum';
11
12
  import { PanelContainer } from 'dock-spawn-ts/lib/js/PanelContainer.js';
12
13
  import { PanelType } from 'dock-spawn-ts/lib/js/enums/PanelType.js';
13
14
  import { configureDesigner } from './ConfigureWebcomponentDesigner.js';
@@ -124,6 +125,10 @@ export class IobrokerWebuiAppShell extends BaseCustomWebComponentConstructorAppe
124
125
  this.scriptSystem = scriptSystem;
125
126
  this.bindingsHelper = bindingsHelper;
126
127
  }
128
+ createBindableObjectBrowser() {
129
+ return new BindableObjectsBrowser();
130
+ }
131
+ ;
127
132
  async ready() {
128
133
  this._dock = this._getDomElement('dock');
129
134
  this._solutionExplorer = this._getDomElement('solutionExplorer');
@@ -0,0 +1,25 @@
1
+ import { BindingsEditor } from "@node-projects/web-component-designer-visualization-addons";
2
+ import { openSelectIdDialog } from "iobroker.iobroker-webcomponent-object-selector/dist/selectIdHelper.js";
3
+ //@ts-ignore
4
+ export class IobrokerWebuiBindingsEditor extends BindingsEditor {
5
+ static is = 'iobroker-webui-bindings-editor';
6
+ constructor(property, binding, bindingTarget, serviceContainer, instanceServiceContainer, shell) {
7
+ super(property, binding, bindingTarget, serviceContainer, instanceServiceContainer, shell);
8
+ let groupObjectNameControl = this._getDomElement('groupObjectName');
9
+ let btn = document.createElement('button');
10
+ btn.textContent = 'IOB';
11
+ btn.title = "iobroker signal selector";
12
+ btn.style.height = '22px';
13
+ btn.onclick = async () => {
14
+ var res = await openSelectIdDialog({ host: window.iobrokerHost, port: window.iobrokerPort, protocol: window.location.protocol, language: 'en', selected: '', allowAll: true });
15
+ if (res) {
16
+ if (this.objectNames.length > 1)
17
+ this.objectNames += ";";
18
+ this.objectNames += res;
19
+ this._bindingsRefresh();
20
+ }
21
+ };
22
+ groupObjectNameControl.appendChild(btn);
23
+ }
24
+ }
25
+ customElements.define(IobrokerWebuiBindingsEditor.is, IobrokerWebuiBindingsEditor);
@@ -0,0 +1,18 @@
1
+ import { SignalPropertyEditor } from "@node-projects/web-component-designer-visualization-addons";
2
+ import { openSelectIdDialog } from "iobroker.iobroker-webcomponent-object-selector/dist/selectIdHelper.js";
3
+ export class IobrokerWebuiSignalPropertyEditor extends SignalPropertyEditor {
4
+ constructor(property, shell) {
5
+ super(property, shell);
6
+ let btn = document.createElement('button');
7
+ btn.textContent = 'IOB';
8
+ btn.title = "iobroker signal selector";
9
+ btn.onclick = async () => {
10
+ var res = await openSelectIdDialog({ host: window.iobrokerHost, port: window.iobrokerPort, protocol: window.location.protocol, language: 'en', selected: this._ip.value, allowAll: true });
11
+ if (res) {
12
+ this._ip.value = res;
13
+ this._valueChanged(this._ip.value);
14
+ }
15
+ };
16
+ this._container.appendChild(btn);
17
+ }
18
+ }
@@ -74,7 +74,7 @@ export class IobrokerWebuiSolutionExplorer extends BaseCustomWebComponentConstru
74
74
  this._createAdditionalFilesNode(),
75
75
  this._createChartsNode(),
76
76
  this._createIconsFolderNode(),
77
- this._createObjectsNode()
77
+ this._createBindablesNode()
78
78
  ]);
79
79
  return result.map(x => x.status == 'fulfilled' ? x.value : null);
80
80
  }
@@ -726,6 +726,18 @@ export class IobrokerWebuiSolutionExplorer extends BaseCustomWebComponentConstru
726
726
  }
727
727
  return controlsNode;
728
728
  }
729
+ async _createBindablesNode() {
730
+ const node = {
731
+ title: 'Bindables',
732
+ folder: true,
733
+ lazy: true,
734
+ children: [
735
+ await this._createObjectsNode(),
736
+ await this._createLocalsNode()
737
+ ]
738
+ };
739
+ return node;
740
+ }
729
741
  async _createObjectsNode() {
730
742
  const s = this.serviceContainer.bindableObjectsServices[0];
731
743
  const objectsNode = {
@@ -778,6 +790,47 @@ export class IobrokerWebuiSolutionExplorer extends BaseCustomWebComponentConstru
778
790
  lazyload: (event, data) => this._lazyLoadObjectNodes(event, data)
779
791
  }));
780
792
  }
793
+ async _createLocalsNode() {
794
+ //Todo: reset lazy load on colapse in local nodes view
795
+ const s = this.serviceContainer.bindableObjectsServices[1];
796
+ const objectsNode = {
797
+ title: 'Locals',
798
+ data: { service: s },
799
+ folder: true,
800
+ lazy: true,
801
+ key: 'locals',
802
+ lazyload: (event, data) => this._lazyLoadObjectNodes(event, data),
803
+ contextMenu: (event) => {
804
+ ContextMenu.show([{
805
+ title: 'Refresh', action: async () => {
806
+ s.clearCache();
807
+ const objectsNode = this._tree.findKey('locals');
808
+ if (objectsNode) {
809
+ objectsNode.resetLazy();
810
+ await sleep(50);
811
+ objectsNode.setExpanded(true);
812
+ }
813
+ }
814
+ }, {
815
+ title: 'Add local', action: async () => {
816
+ let nm = prompt('new local variable name (without local_ prefix) :');
817
+ if (nm) {
818
+ if (!nm.startsWith('local_'))
819
+ nm = "local_" + nm;
820
+ const cb = () => { };
821
+ iobrokerHandler.subscribeState(nm, cb);
822
+ iobrokerHandler.unsubscribeState(nm, cb);
823
+ const objectsNode = this._tree.findKey('locals');
824
+ objectsNode.resetLazy();
825
+ await sleep(50);
826
+ objectsNode.setExpanded(true);
827
+ }
828
+ }
829
+ }], event);
830
+ },
831
+ };
832
+ return objectsNode;
833
+ }
781
834
  #activeLazyLoads = new Set();
782
835
  async _loadTree() {
783
836
  let dndSourceNode = null;
@@ -39,7 +39,7 @@
39
39
  "arguments",
40
40
  "caller",
41
41
  "name",
42
- "__@hasInstance@2369"
42
+ "__@hasInstance@5144"
43
43
  ],
44
44
  "type": "object"
45
45
  },
@@ -78,6 +78,9 @@
78
78
  },
79
79
  "type": "array"
80
80
  },
81
+ "bindToSize": {
82
+ "type": "boolean"
83
+ },
81
84
  "height": {
82
85
  "type": "string"
83
86
  },
@@ -93,7 +96,8 @@
93
96
  "width",
94
97
  "height",
95
98
  "useGlobalStyle",
96
- "addoptedStyles"
99
+ "addoptedStyles",
100
+ "bindToSize"
97
101
  ],
98
102
  "type": "object"
99
103
  },
@@ -970,9 +970,6 @@
970
970
  },
971
971
  "WebuiScriptCommands": {
972
972
  "anyOf": [
973
- {
974
- "$ref": "#/definitions/Comment"
975
- },
976
973
  {
977
974
  "$ref": "#/definitions/OpenUrl"
978
975
  },
@@ -1040,31 +1037,34 @@
1040
1037
  "$ref": "#/definitions/ClearSiganlsInGroup"
1041
1038
  },
1042
1039
  {
1043
- "$ref": "#/definitions/Condition"
1040
+ "$ref": "#/definitions/RunScript"
1044
1041
  },
1045
1042
  {
1046
- "$ref": "#/definitions/Exit"
1043
+ "$ref": "#/definitions/CopySignalValuesFromFolder"
1047
1044
  },
1048
1045
  {
1049
- "$ref": "#/definitions/Label"
1046
+ "$ref": "#/definitions/ShowMessageBox"
1050
1047
  },
1051
1048
  {
1052
- "$ref": "#/definitions/RunScript"
1049
+ "$ref": "#/definitions/ExportSignalValuesAsJson"
1053
1050
  },
1054
1051
  {
1055
- "$ref": "#/definitions/Goto"
1052
+ "$ref": "#/definitions/ImportSignalValuesFromJson"
1056
1053
  },
1057
1054
  {
1058
- "$ref": "#/definitions/CopySignalValuesFromFolder"
1055
+ "$ref": "#/definitions/Comment"
1059
1056
  },
1060
1057
  {
1061
- "$ref": "#/definitions/ShowMessageBox"
1058
+ "$ref": "#/definitions/Condition"
1062
1059
  },
1063
1060
  {
1064
- "$ref": "#/definitions/ExportSignalValuesAsJson"
1061
+ "$ref": "#/definitions/Exit"
1065
1062
  },
1066
1063
  {
1067
- "$ref": "#/definitions/ImportSignalValuesFromJson"
1064
+ "$ref": "#/definitions/Label"
1065
+ },
1066
+ {
1067
+ "$ref": "#/definitions/Goto"
1068
1068
  },
1069
1069
  {
1070
1070
  "$ref": "#/definitions/OpenScreen"