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.
- package/LICENSE +1 -1
- package/README.md +17 -1
- package/binary/iobroker.iobroker-webcomponent-object-selector-0.0.1.tgz +0 -0
- package/dist/importmaps/importmap-config.d.ts +1 -0
- package/dist/importmaps/importmap-config.js +2 -1
- package/gulpfile.mjs +3 -8
- package/io-package.json +53 -53
- package/package.json +16 -14
- package/www/dist/frontend/common/IobrokerHandler.d.ts +3 -2
- package/www/dist/frontend/common/IobrokerHandler.js +3 -0
- package/www/dist/frontend/config/ConfigureWebcomponentDesigner.js +7 -3
- package/www/dist/frontend/config/IobrokerWebuiAppShell.js +5 -0
- package/www/dist/frontend/config/IobrokerWebuiBindingsEditor.js +25 -0
- package/www/dist/frontend/config/IobrokerWebuiSignalPropertyEditor.js +18 -0
- package/www/dist/frontend/config/IobrokerWebuiSolutionExplorer.js +54 -1
- package/www/dist/frontend/generated/Properties.json +6 -2
- package/www/dist/frontend/generated/ScriptCommands.json +12 -12
- package/www/dist/frontend/runtime/CustomControls.js +37 -6
- package/www/dist/frontend/runtime/ScreenViewer.js +2 -2
- package/www/dist/frontend/services/IobrokerWebuiBindableLocalObjectsService.js +46 -0
- package/www/dist/frontend/services/IobrokerWebuiBindableObjectDragDropService.js +29 -0
- package/www/dist/frontend/services/IobrokerWebuiCopyPasteService.js +1 -1
- package/www/dist/frontend/services/IobrokerWebuiPropertiesService.js +2 -2
- package/www/dist/importmaps/importmap-config.js +2 -1
- package/www/index.html +6 -1
- package/www/node_modules/@iobroker/socket-client/dist/esm/AdminConnection.js +7 -9
- package/www/node_modules/@iobroker/socket-client/dist/esm/Connection.d.ts +3 -3
- package/www/node_modules/@iobroker/socket-client/dist/esm/Connection.js +2 -3
- package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/dist/wunderbaum.css +545 -0
- package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/dist/wunderbaum.esm.js +8271 -0
- package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/dist/wunderbaum.esm.min.js +86 -0
- package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/dist/wunderbaum.umd.js +8279 -0
- package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/dist/wunderbaum.umd.min.js +86 -0
- package/www/node_modules/@node-projects/propertygrid.webcomponent/node_modules/wunderbaum/src/wunderbaum.scss +895 -0
- package/www/node_modules/@node-projects/web-component-designer/dist/elements/services/propertiesService/services/CssCurrentPropertiesService.js +24 -10
- package/www/node_modules/@node-projects/web-component-designer/dist/elements/services/propertiesService/services/CssProperties.json +0 -2
- package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/components/BindingsEditor.js +7 -8
- package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/components/EventAssignment.js +2 -2
- package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/components/VisualizationPropertyGrid.js +1 -2
- package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/helpers/BindingsHelper.js +50 -23
- package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/scripting/ScriptSystem.js +10 -4
- package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/services/SignalPropertyEditor.js +7 -7
- package/www/node_modules/@node-projects/web-component-designer-widgets-wunderbaum/dist/widgets/treeView/treeViewExtended.js +0 -1
- package/www/node_modules/blockly/blockly_compressed.js +599 -573
- package/www/node_modules/blockly/blocks_compressed.js +34 -33
- package/www/node_modules/es-module-shims/dist/es-module-shims.js +512 -442
- package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/iobrokerSelectId.es.js +53339 -0
- package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/iobrokerSelectId.umd.js +305 -0
- package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/selectIdHelper.js +34 -0
- package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/socket.iob.js +441 -0
- package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/test.html +21 -0
- package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/dist/vite.svg +1 -0
- package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/node_modules/@iobroker/eslint-config/eslint.config.mjs +238 -0
- package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/node_modules/@iobroker/eslint-config/prettier.config.mjs +13 -0
- package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/node_modules/globals/globals.json +2998 -0
- package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/node_modules/globals/index.js +2 -0
- package/www/node_modules/iobroker.iobroker-webcomponent-object-selector/node_modules/globals/license +9 -0
- package/www/node_modules/wunderbaum/dist/wunderbaum.css +10 -10
- package/www/node_modules/wunderbaum/dist/wunderbaum.esm.min.js +24 -24
- package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/blockly/components/fields/FieldObjectId.js +0 -6
package/LICENSE
CHANGED
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)
|
|
1019
|
+
Copyright (c) 2025 jogibear9988 <jochen.kuehner@gmx.de>
|
|
Binary file
|
|
@@ -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.
|
|
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.
|
|
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.
|
|
47
|
-
"@types/node": "^22.10.
|
|
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.
|
|
55
|
-
"@iobroker/socket-client": "^
|
|
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.
|
|
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.
|
|
67
|
-
"@node-projects/web-component-designer-widgets-wunderbaum": "^0.1.
|
|
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.
|
|
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": "^
|
|
79
|
-
"eslint": "^9.
|
|
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
|
-
"
|
|
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.
|
|
95
|
+
"typescript": "^5.7.3",
|
|
94
96
|
"typescript-json-schema": "^0.65.1",
|
|
95
|
-
"wunderbaum": "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:
|
|
99
|
-
|
|
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 {
|
|
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
|
|
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
|
|
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.
|
|
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@
|
|
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/
|
|
1040
|
+
"$ref": "#/definitions/RunScript"
|
|
1044
1041
|
},
|
|
1045
1042
|
{
|
|
1046
|
-
"$ref": "#/definitions/
|
|
1043
|
+
"$ref": "#/definitions/CopySignalValuesFromFolder"
|
|
1047
1044
|
},
|
|
1048
1045
|
{
|
|
1049
|
-
"$ref": "#/definitions/
|
|
1046
|
+
"$ref": "#/definitions/ShowMessageBox"
|
|
1050
1047
|
},
|
|
1051
1048
|
{
|
|
1052
|
-
"$ref": "#/definitions/
|
|
1049
|
+
"$ref": "#/definitions/ExportSignalValuesAsJson"
|
|
1053
1050
|
},
|
|
1054
1051
|
{
|
|
1055
|
-
"$ref": "#/definitions/
|
|
1052
|
+
"$ref": "#/definitions/ImportSignalValuesFromJson"
|
|
1056
1053
|
},
|
|
1057
1054
|
{
|
|
1058
|
-
"$ref": "#/definitions/
|
|
1055
|
+
"$ref": "#/definitions/Comment"
|
|
1059
1056
|
},
|
|
1060
1057
|
{
|
|
1061
|
-
"$ref": "#/definitions/
|
|
1058
|
+
"$ref": "#/definitions/Condition"
|
|
1062
1059
|
},
|
|
1063
1060
|
{
|
|
1064
|
-
"$ref": "#/definitions/
|
|
1061
|
+
"$ref": "#/definitions/Exit"
|
|
1065
1062
|
},
|
|
1066
1063
|
{
|
|
1067
|
-
"$ref": "#/definitions/
|
|
1064
|
+
"$ref": "#/definitions/Label"
|
|
1065
|
+
},
|
|
1066
|
+
{
|
|
1067
|
+
"$ref": "#/definitions/Goto"
|
|
1068
1068
|
},
|
|
1069
1069
|
{
|
|
1070
1070
|
"$ref": "#/definitions/OpenScreen"
|