iobroker.eos-admin 7.9.49 → 7.9.50
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/adminWww/assets/Objects-DPan0bzw.js +2 -2
- package/adminWww/assets/Objects-DPw50Write.js +878 -0
- package/adminWww/assets/bootstrap-DPWrite50.js +317 -0
- package/adminWww/assets/hostInit-DPWrite50.js +2 -0
- package/adminWww/assets/index-D2ymscJA.js +1 -1
- package/adminWww/assets/index-DPAdapter50.js +950 -0
- package/adminWww/assets/index-DPWrite50.js +2 -0
- package/adminWww/index.html +8 -8
- package/adminWww/js/eos-branding.js +10 -3
- package/adminWww/js/eos-objects-state-tools.js +225 -12
- package/adminWww/js/eos-role-ui.js +9 -2
- package/adminWww/js/eos-security-ui.js +1 -1
- package/adminWww/mf-manifest.json +1 -1
- package/adminWww/remoteEntry-DPWrite50.js +2 -0
- package/io-package.json +8 -4
- package/package.json +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./bootstrap-DPWrite50.js","./DefaultPropsProvider-BiXBMQYQ.js","./_commonjsHelpers-CE1G-McA.js","./iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js","./emotion-serialize.esm-Q4o_CgeF.js","./iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-BywLg1Xe.js","./iobroker_admin__loadShare__react__loadShare__-LM7uyL45.js","./ace-DEUjyTIn.js","./iobroker_admin__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-LFZoiUTt.js","./iobroker_admin__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__-CpA7pnS5.js","./iobroker_admin__loadShare__leaflet__loadShare__-CNUAG3AH.js","./ext-language_tools-ylAoucDh.js","./iobroker_admin__loadShare__react_mf_2_dropzone__loadShare__-CwjnV48g.js","./iobroker_admin__loadShare__react_mf_2_dom__loadShare__-CVeAXnkk.js","./preload-helper-BDBacUwf.js","./iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-CJO5yP3h.js","./sdk-C-e-e2gd.js","./extends-CF3RwP-h.js","./assertThisInitialized-B0aQ9eG_.js","./useTheme-Bl-M1DYp.js","./createTheme-DFX8CY6F.js","./blue-CagzI6CQ.js","./index-DcK0RDrH.js","./ThemeProvider-BOFFjWAF.js","./emotion-cache.browser.esm-BgJfNZJN.js","./setYear-3ufv5yRD.js","./en-US-DBFJNIH6.js","./bootstrap-D57bMhRi.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as c}from"./preload-helper-BDBacUwf.js";import"./iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))s(e);new MutationObserver(e=>{for(const r of e)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?r.credentials="include":e.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(e){if(e.ep)return;e.ep=!0;const r=n(e);fetch(e.href,r)}})();c(()=>import("./bootstrap-DPWrite50.js").then(i=>i.o),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url);
|
package/adminWww/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
translate="no"
|
|
5
5
|
>
|
|
6
6
|
<head>
|
|
7
|
-
<script type="module" src="./assets/hostInit-
|
|
7
|
+
<script type="module" src="./assets/hostInit-DPWrite50.js?v=50"></script>
|
|
8
8
|
|
|
9
9
|
<meta charset="utf-8" />
|
|
10
10
|
<link
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
rel="stylesheet"
|
|
32
32
|
href="css/leaflet.css"
|
|
33
33
|
/>
|
|
34
|
-
<link rel="stylesheet" href="./css/eos-branding.css?v=
|
|
34
|
+
<link rel="stylesheet" href="./css/eos-branding.css?v=50" />
|
|
35
35
|
<link
|
|
36
36
|
rel="manifest"
|
|
37
37
|
href="manifest.json"
|
|
@@ -151,14 +151,14 @@
|
|
|
151
151
|
false,
|
|
152
152
|
);
|
|
153
153
|
</script>
|
|
154
|
-
<script type="module" crossorigin src="./assets/index-
|
|
154
|
+
<script type="module" crossorigin src="./assets/index-DPWrite50.js?v=50"></script>
|
|
155
155
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-BDBacUwf.js">
|
|
156
156
|
<link rel="modulepreload" crossorigin href="./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js">
|
|
157
|
-
<script defer src="./js/eos-branding.js?v=
|
|
158
|
-
<script defer src="./js/eos-security-ui.js?v=
|
|
159
|
-
<script defer src="./js/eos-role-ui.js?v=
|
|
160
|
-
<script defer src="./js/eos-assistant.js?v=
|
|
161
|
-
<script defer src="./js/eos-objects-state-tools.js?v=
|
|
157
|
+
<script defer src="./js/eos-branding.js?v=50"></script>
|
|
158
|
+
<script defer src="./js/eos-security-ui.js?v=50"></script>
|
|
159
|
+
<script defer src="./js/eos-role-ui.js?v=50"></script>
|
|
160
|
+
<script defer src="./js/eos-assistant.js?v=50"></script>
|
|
161
|
+
<script defer src="./js/eos-objects-state-tools.js?v=50"></script>
|
|
162
162
|
</head>
|
|
163
163
|
<body>
|
|
164
164
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
window.NEXOWATT_EOS_UI_VERSION = '
|
|
4
|
+
window.NEXOWATT_EOS_UI_VERSION = 'v50-dp-write-hardfix';
|
|
5
5
|
|
|
6
6
|
const BRAND = 'NexoWatt EOS';
|
|
7
7
|
const EOS_MEANING = 'Energy Operation System';
|
|
@@ -1463,6 +1463,8 @@
|
|
|
1463
1463
|
run();
|
|
1464
1464
|
};
|
|
1465
1465
|
|
|
1466
|
+
const isObjectsRoute = () => /#\/?tab-objects\b|#tab-objects\b/.test(String(window.location.hash || '')) || /[?&]tab=objects/.test(String(window.location.href || ''));
|
|
1467
|
+
|
|
1466
1468
|
const installObserver = () => safe(() => {
|
|
1467
1469
|
const observer = new MutationObserver(mutations => {
|
|
1468
1470
|
for (const mutation of mutations) {
|
|
@@ -1477,7 +1479,10 @@
|
|
|
1477
1479
|
if (node.nodeType === Node.TEXT_NODE) {
|
|
1478
1480
|
if (isAdapterConfigSurface() && node.parentElement?.closest?.('#app-paper')) patchMojibakeTextNode(node);
|
|
1479
1481
|
else patchTextNode(node);
|
|
1480
|
-
} else if (node.nodeType === Node.ELEMENT_NODE)
|
|
1482
|
+
} else if (node.nodeType === Node.ELEMENT_NODE) {
|
|
1483
|
+
if (isObjectsRoute() && node.closest?.('.eos-object-value-cell,[data-eos-object-value-cell]')) return;
|
|
1484
|
+
state.pendingScopes.add(node);
|
|
1485
|
+
}
|
|
1481
1486
|
});
|
|
1482
1487
|
}
|
|
1483
1488
|
if (state.pendingScopes.size) scheduleScopePatch();
|
|
@@ -1485,7 +1490,9 @@
|
|
|
1485
1490
|
observer.observe(document.documentElement, {
|
|
1486
1491
|
subtree: true,
|
|
1487
1492
|
childList: true,
|
|
1488
|
-
|
|
1493
|
+
// v50: React changes thousands of text nodes on the data-point page.
|
|
1494
|
+
// Added nodes are still patched; existing text-node mutation tracking is too expensive.
|
|
1495
|
+
characterData: false,
|
|
1489
1496
|
});
|
|
1490
1497
|
});
|
|
1491
1498
|
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
window.NEXOWATT_EOS_OBJECTS_STATE_TOOLS_VERSION = '
|
|
4
|
+
window.NEXOWATT_EOS_OBJECTS_STATE_TOOLS_VERSION = 'v50-dp-write-hardfix';
|
|
5
5
|
|
|
6
6
|
const ACTIVE_CLASS = 'eos-objects-surface';
|
|
7
7
|
const safe = fn => { try { return fn(); } catch (_) { return undefined; } };
|
|
8
|
+
const busyIds = new Set();
|
|
8
9
|
|
|
9
10
|
const isObjectsRoute = () => {
|
|
10
11
|
const hash = String(window.location.hash || '');
|
|
11
|
-
if (
|
|
12
|
+
if (/#\/?tab-objects\b|#tab-objects\b/.test(hash)) return true;
|
|
12
13
|
return /[?&]tab=objects/.test(String(window.location.href || ''));
|
|
13
14
|
};
|
|
14
15
|
|
|
@@ -54,6 +55,7 @@
|
|
|
54
55
|
'.eos-object-value-cell',
|
|
55
56
|
'[data-eos-object-value-cell]',
|
|
56
57
|
'[title*="Wert schreiben"]',
|
|
58
|
+
'[title*="Wert klicken"]',
|
|
57
59
|
'[title*="Button sofort testen"]'
|
|
58
60
|
].join(',');
|
|
59
61
|
|
|
@@ -65,6 +67,17 @@
|
|
|
65
67
|
return out;
|
|
66
68
|
};
|
|
67
69
|
|
|
70
|
+
const getSocket = () => window.NEXOWATT_EOS_OBJECTS_SOCKET || window.NEXOWATT_EOS_SOCKET || window.socket || null;
|
|
71
|
+
|
|
72
|
+
const normalizeText = value => String(value ?? '').replace(/\s+/g, ' ').trim();
|
|
73
|
+
|
|
74
|
+
const isWritableCell = cell => {
|
|
75
|
+
if (!cell) return false;
|
|
76
|
+
if (cell.getAttribute('data-eos-object-writable') === '1') return true;
|
|
77
|
+
const title = `${cell.getAttribute('title') || ''} ${cell.textContent || ''}`;
|
|
78
|
+
return /wert\s*(klicken|schreiben)|write\s*value|sofort\s*testen/i.test(title);
|
|
79
|
+
};
|
|
80
|
+
|
|
68
81
|
const releaseNativeControls = root => safe(() => {
|
|
69
82
|
if (!setSurfaceState()) return;
|
|
70
83
|
const base = root && root.nodeType ? root : document;
|
|
@@ -84,9 +97,8 @@
|
|
|
84
97
|
const base = root && root.nodeType ? root : document;
|
|
85
98
|
collect(base, valueCellSelector).forEach(cell => {
|
|
86
99
|
const id = cell.getAttribute('data-eos-object-value-cell') || cell.closest?.('[id]')?.getAttribute('id') || '';
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
const visibleValue = (cell.textContent || '').trim().replace(/\s+/g, ' ') || '(leer)';
|
|
100
|
+
const writable = isWritableCell(cell);
|
|
101
|
+
const visibleValue = normalizeText(cell.textContent || '') || '(leer)';
|
|
90
102
|
const cache = `${id}|${writable ? 1 : 0}|${visibleValue}`;
|
|
91
103
|
|
|
92
104
|
cell.style.pointerEvents = 'auto';
|
|
@@ -94,6 +106,7 @@
|
|
|
94
106
|
cell.classList.add('eos-object-value-cell');
|
|
95
107
|
cell.classList.toggle('eos-object-value-writable', writable);
|
|
96
108
|
cell.classList.toggle('eos-object-value-readonly', !writable);
|
|
109
|
+
if (writable) cell.setAttribute('tabindex', '0');
|
|
97
110
|
|
|
98
111
|
if (cell.getAttribute('data-eos-value-cache') !== cache) {
|
|
99
112
|
cell.setAttribute('data-eos-value-cache', cache);
|
|
@@ -102,13 +115,192 @@
|
|
|
102
115
|
id ? `ID: ${id}` : null,
|
|
103
116
|
`Aktueller Wert: ${visibleValue}`,
|
|
104
117
|
`Status: ${writable ? 'beschreibbar' : 'nur lesbar'}`,
|
|
105
|
-
writable ? 'Klicken: Wert schreiben
|
|
118
|
+
writable ? 'Klicken: Wert schreiben' : 'Nur lesbarer Wert'
|
|
106
119
|
].filter(Boolean).join('\n');
|
|
107
120
|
if (cell.getAttribute('title') !== nextTitle) cell.setAttribute('title', nextTitle);
|
|
108
121
|
}
|
|
109
122
|
});
|
|
110
123
|
});
|
|
111
124
|
|
|
125
|
+
const parseBoolean = value => {
|
|
126
|
+
if (value === true || value === 1) return true;
|
|
127
|
+
if (value === false || value === 0 || value == null) return false;
|
|
128
|
+
const normalized = String(value).trim().toLowerCase();
|
|
129
|
+
return normalized === 'true' || normalized === '1' || normalized === 'on' || normalized === 'yes' || normalized === 'ja';
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
const isNullToken = value => /^\s*(\(null\)|null|undefined)?\s*$/i.test(String(value ?? ''));
|
|
133
|
+
|
|
134
|
+
const coerceValue = (rawValue, type) => {
|
|
135
|
+
const raw = String(rawValue ?? '');
|
|
136
|
+
if (isNullToken(raw) && type !== 'string' && type !== 'json') return null;
|
|
137
|
+
if (type === 'boolean') return parseBoolean(raw);
|
|
138
|
+
if (type === 'number') {
|
|
139
|
+
const normalized = raw.replace(',', '.').trim();
|
|
140
|
+
const number = Number(normalized);
|
|
141
|
+
if (!Number.isFinite(number)) throw new Error(`Ungültige Zahl: ${raw}`);
|
|
142
|
+
return number;
|
|
143
|
+
}
|
|
144
|
+
if (type === 'json' || type === 'object') {
|
|
145
|
+
if (isNullToken(raw)) return null;
|
|
146
|
+
return JSON.parse(raw);
|
|
147
|
+
}
|
|
148
|
+
return raw;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
const stateToString = value => {
|
|
152
|
+
if (value === null || value === undefined) return 'null';
|
|
153
|
+
if (typeof value === 'object') {
|
|
154
|
+
try { return JSON.stringify(value, null, 2); } catch (_) { return String(value); }
|
|
155
|
+
}
|
|
156
|
+
return String(value);
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
const hasNativeWriteDialog = () => {
|
|
160
|
+
const dialogs = Array.from(document.querySelectorAll('.MuiDialog-root,[role="dialog"]'));
|
|
161
|
+
return dialogs.some(dialog => /write value|wert schreiben|set value|wert setzen/i.test(dialog.textContent || ''));
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
const injectDialogStyle = () => {
|
|
165
|
+
if (document.getElementById('eos-dp-write-style')) return;
|
|
166
|
+
const style = document.createElement('style');
|
|
167
|
+
style.id = 'eos-dp-write-style';
|
|
168
|
+
style.textContent = `
|
|
169
|
+
.eos-dp-write-backdrop{position:fixed;inset:0;z-index:9000;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:18px;font-family:Roboto,Arial,sans-serif}.eos-dp-write-dialog{width:min(620px,calc(100vw - 36px));max-height:calc(100vh - 36px);overflow:auto;background:#061827;color:#fff;border:1px solid rgba(0,255,180,.45);border-radius:16px;box-shadow:0 18px 60px rgba(0,0,0,.65),0 0 34px rgba(0,255,180,.22);padding:18px}.eos-dp-write-dialog h3{margin:0 0 8px;font-size:19px;color:#18f4c0}.eos-dp-write-id{font-family:monospace;font-size:12px;opacity:.82;word-break:break-all;margin-bottom:12px}.eos-dp-write-meta{font-size:12px;opacity:.76;margin-bottom:12px}.eos-dp-write-dialog label{display:block;font-size:13px;margin:12px 0 6px}.eos-dp-write-dialog input[type=text],.eos-dp-write-dialog textarea,.eos-dp-write-dialog select{box-sizing:border-box;width:100%;background:#07111d;color:#fff;border:1px solid rgba(255,255,255,.28);border-radius:8px;padding:10px;font-size:15px;outline:none}.eos-dp-write-dialog textarea{min-height:130px;font-family:monospace}.eos-dp-write-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}.eos-dp-write-actions button{border:0;border-radius:10px;padding:9px 16px;font-weight:700;cursor:pointer}.eos-dp-write-primary{background:#00d6a1;color:#03130f}.eos-dp-write-secondary{background:#273746;color:#fff}.eos-dp-write-actions button:disabled{opacity:.55;cursor:wait}.eos-dp-write-error{color:#ff7676;margin-top:10px;font-size:13px;white-space:pre-wrap}.eos-object-value-cell.eos-dp-write-pulse{outline:2px solid #00d6a1;outline-offset:-2px}`;
|
|
170
|
+
document.head.appendChild(style);
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
const closeExistingDialog = () => document.querySelector('.eos-dp-write-backdrop')?.remove();
|
|
174
|
+
|
|
175
|
+
const openWriteDialog = async (cell, event) => {
|
|
176
|
+
const id = cell?.getAttribute('data-eos-object-value-cell') || cell?.closest?.('[id]')?.id || '';
|
|
177
|
+
if (!id || busyIds.has(id)) return;
|
|
178
|
+
const socket = getSocket();
|
|
179
|
+
if (!socket || typeof socket.setState !== 'function') {
|
|
180
|
+
window.alert('EOS: Socket für Datenpunkt-Schreiben ist noch nicht bereit. Bitte Seite einmal hart neu laden (Strg+F5).');
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
busyIds.add(id);
|
|
185
|
+
cell?.classList.add('eos-dp-write-pulse');
|
|
186
|
+
window.setTimeout(() => cell?.classList.remove('eos-dp-write-pulse'), 900);
|
|
187
|
+
|
|
188
|
+
try {
|
|
189
|
+
const [objResult, stateResult] = await Promise.allSettled([
|
|
190
|
+
typeof socket.getObject === 'function' ? socket.getObject(id) : Promise.resolve(null),
|
|
191
|
+
typeof socket.getState === 'function' ? socket.getState(id) : Promise.resolve(null),
|
|
192
|
+
]);
|
|
193
|
+
const obj = objResult.status === 'fulfilled' ? objResult.value : null;
|
|
194
|
+
const state = stateResult.status === 'fulfilled' ? stateResult.value : null;
|
|
195
|
+
const common = obj?.common || {};
|
|
196
|
+
const role = String(common.role || '');
|
|
197
|
+
let type = common.type || typeof state?.val;
|
|
198
|
+
if (!type || type === 'undefined') type = 'string';
|
|
199
|
+
if (type === 'object') type = 'json';
|
|
200
|
+
const current = state?.val;
|
|
201
|
+
const states = common.states && typeof common.states === 'object' ? common.states : null;
|
|
202
|
+
|
|
203
|
+
if (/^button/.test(role)) {
|
|
204
|
+
await socket.setState(id, { val: true, ack: false, q: 0 });
|
|
205
|
+
busyIds.delete(id);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
injectDialogStyle();
|
|
210
|
+
closeExistingDialog();
|
|
211
|
+
|
|
212
|
+
const backdrop = document.createElement('div');
|
|
213
|
+
backdrop.className = 'eos-dp-write-backdrop';
|
|
214
|
+
const dialog = document.createElement('div');
|
|
215
|
+
dialog.className = 'eos-dp-write-dialog';
|
|
216
|
+
dialog.setAttribute('role', 'dialog');
|
|
217
|
+
dialog.setAttribute('aria-modal', 'true');
|
|
218
|
+
dialog.innerHTML = `
|
|
219
|
+
<h3>Datenpunkt schreiben</h3>
|
|
220
|
+
<div class="eos-dp-write-id"></div>
|
|
221
|
+
<div class="eos-dp-write-meta"></div>
|
|
222
|
+
<label class="eos-dp-write-label">Neuer Wert</label>
|
|
223
|
+
<div class="eos-dp-write-input-wrap"></div>
|
|
224
|
+
<label style="display:flex;align-items:center;gap:8px;margin-top:12px"><input class="eos-dp-write-ack" type="checkbox"> ack=true schreiben</label>
|
|
225
|
+
<div class="eos-dp-write-error" hidden></div>
|
|
226
|
+
<div class="eos-dp-write-actions"><button class="eos-dp-write-secondary" type="button">Abbrechen</button><button class="eos-dp-write-primary" type="button">Schreiben</button></div>`;
|
|
227
|
+
backdrop.appendChild(dialog);
|
|
228
|
+
document.body.appendChild(backdrop);
|
|
229
|
+
|
|
230
|
+
dialog.querySelector('.eos-dp-write-id').textContent = id;
|
|
231
|
+
dialog.querySelector('.eos-dp-write-meta').textContent = `Typ: ${type}${role ? ` · Rolle: ${role}` : ''}${common.unit ? ` · Einheit: ${common.unit}` : ''}`;
|
|
232
|
+
|
|
233
|
+
const inputWrap = dialog.querySelector('.eos-dp-write-input-wrap');
|
|
234
|
+
let input;
|
|
235
|
+
if (states) {
|
|
236
|
+
input = document.createElement('select');
|
|
237
|
+
Object.keys(states).forEach(key => {
|
|
238
|
+
const option = document.createElement('option');
|
|
239
|
+
option.value = key;
|
|
240
|
+
option.textContent = `${states[key]} (${key})`;
|
|
241
|
+
input.appendChild(option);
|
|
242
|
+
});
|
|
243
|
+
input.value = current == null ? Object.keys(states)[0] || '' : String(current);
|
|
244
|
+
} else if (type === 'boolean') {
|
|
245
|
+
input = document.createElement('select');
|
|
246
|
+
input.innerHTML = '<option value="true">true</option><option value="false">false</option>';
|
|
247
|
+
input.value = parseBoolean(current) ? 'true' : 'false';
|
|
248
|
+
} else if (type === 'json') {
|
|
249
|
+
input = document.createElement('textarea');
|
|
250
|
+
input.value = stateToString(current);
|
|
251
|
+
} else {
|
|
252
|
+
input = document.createElement('input');
|
|
253
|
+
input.type = 'text';
|
|
254
|
+
input.value = stateToString(current);
|
|
255
|
+
}
|
|
256
|
+
input.className = 'eos-dp-write-input';
|
|
257
|
+
inputWrap.appendChild(input);
|
|
258
|
+
|
|
259
|
+
const errorEl = dialog.querySelector('.eos-dp-write-error');
|
|
260
|
+
const cancelBtn = dialog.querySelector('.eos-dp-write-secondary');
|
|
261
|
+
const writeBtn = dialog.querySelector('.eos-dp-write-primary');
|
|
262
|
+
const ackInput = dialog.querySelector('.eos-dp-write-ack');
|
|
263
|
+
|
|
264
|
+
const close = () => {
|
|
265
|
+
backdrop.remove();
|
|
266
|
+
busyIds.delete(id);
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
const write = async () => {
|
|
270
|
+
errorEl.hidden = true;
|
|
271
|
+
writeBtn.disabled = true;
|
|
272
|
+
cancelBtn.disabled = true;
|
|
273
|
+
try {
|
|
274
|
+
let value = input.value;
|
|
275
|
+
const effectiveType = states ? (common.type || type) : type;
|
|
276
|
+
value = coerceValue(value, effectiveType);
|
|
277
|
+
await socket.setState(id, { val: value, ack: !!ackInput.checked, q: 0 });
|
|
278
|
+
close();
|
|
279
|
+
} catch (error) {
|
|
280
|
+
errorEl.textContent = `Schreiben fehlgeschlagen: ${error?.message || error}`;
|
|
281
|
+
errorEl.hidden = false;
|
|
282
|
+
writeBtn.disabled = false;
|
|
283
|
+
cancelBtn.disabled = false;
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
cancelBtn.addEventListener('click', close);
|
|
288
|
+
writeBtn.addEventListener('click', write);
|
|
289
|
+
backdrop.addEventListener('click', e => { if (e.target === backdrop) close(); });
|
|
290
|
+
input.addEventListener('keydown', e => {
|
|
291
|
+
if ((e.key === 'Enter' && type !== 'json') || (e.key === 'Enter' && e.ctrlKey)) {
|
|
292
|
+
e.preventDefault();
|
|
293
|
+
write();
|
|
294
|
+
}
|
|
295
|
+
if (e.key === 'Escape') close();
|
|
296
|
+
});
|
|
297
|
+
window.setTimeout(() => input.focus(), 30);
|
|
298
|
+
} catch (error) {
|
|
299
|
+
busyIds.delete(id);
|
|
300
|
+
window.alert(`EOS: Datenpunkt konnte nicht geschrieben werden: ${error?.message || error}`);
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
|
|
112
304
|
const run = root => {
|
|
113
305
|
if (!setSurfaceState()) return;
|
|
114
306
|
releaseNativeControls(root);
|
|
@@ -126,7 +318,7 @@
|
|
|
126
318
|
scheduled = false;
|
|
127
319
|
const roots = pendingRoots.size ? Array.from(pendingRoots) : [document];
|
|
128
320
|
pendingRoots.clear();
|
|
129
|
-
roots.slice(0,
|
|
321
|
+
roots.slice(0, 80).forEach(run);
|
|
130
322
|
};
|
|
131
323
|
if ('requestIdleCallback' in window) window.requestIdleCallback(execute, { timeout: 500 });
|
|
132
324
|
else window.requestAnimationFrame(execute);
|
|
@@ -135,26 +327,48 @@
|
|
|
135
327
|
const handlePointerAssist = event => {
|
|
136
328
|
if (!setSurfaceState()) return;
|
|
137
329
|
const cell = event.target?.closest?.('.eos-object-value-cell');
|
|
138
|
-
if (cell
|
|
330
|
+
if (isWritableCell(cell)) cell.classList.add('eos-object-value-hover');
|
|
139
331
|
};
|
|
140
332
|
|
|
141
333
|
const handlePointerLeave = event => {
|
|
142
334
|
event.target?.closest?.('.eos-object-value-cell')?.classList.remove('eos-object-value-hover');
|
|
143
335
|
};
|
|
144
336
|
|
|
337
|
+
const shouldSkipFallback = cell => !!cell?.querySelector?.('.MuiSwitch-root,.admin-button,button,.copyButton');
|
|
338
|
+
|
|
339
|
+
const scheduleFallbackWriter = event => {
|
|
340
|
+
if (!setSurfaceState()) return;
|
|
341
|
+
const cell = event.target?.closest?.('.eos-object-value-cell,[data-eos-object-value-cell]');
|
|
342
|
+
if (!cell || !isWritableCell(cell) || shouldSkipFallback(cell)) return;
|
|
343
|
+
const id = cell.getAttribute('data-eos-object-value-cell') || '';
|
|
344
|
+
window.setTimeout(() => {
|
|
345
|
+
if (!setSurfaceState()) return;
|
|
346
|
+
if (!cell.isConnected || hasNativeWriteDialog()) return;
|
|
347
|
+
openWriteDialog(cell, event);
|
|
348
|
+
}, 260);
|
|
349
|
+
};
|
|
350
|
+
|
|
145
351
|
window.addEventListener('hashchange', () => window.setTimeout(() => schedule(document), 30));
|
|
146
352
|
window.addEventListener('popstate', () => window.setTimeout(() => schedule(document), 30));
|
|
147
353
|
document.addEventListener('mouseover', handlePointerAssist, true);
|
|
148
354
|
document.addEventListener('mouseout', handlePointerLeave, true);
|
|
149
355
|
document.addEventListener('click', event => {
|
|
150
356
|
if (!setSurfaceState()) return;
|
|
151
|
-
const nativeInteractive = event.target?.closest?.(`${interactiveSelector},${nativeLayerSelector},.eos-object-value-cell`);
|
|
357
|
+
const nativeInteractive = event.target?.closest?.(`${interactiveSelector},${nativeLayerSelector},.eos-object-value-cell,[data-eos-object-value-cell]`);
|
|
152
358
|
if (nativeInteractive) {
|
|
153
|
-
// Keep native React/ObjectBrowser handlers untouched; only repair stale CSS/attributes after the click.
|
|
154
359
|
releaseNativeControls(nativeInteractive);
|
|
360
|
+
scheduleFallbackWriter(event);
|
|
155
361
|
window.setTimeout(() => schedule(nativeInteractive), 80);
|
|
156
362
|
}
|
|
157
363
|
}, false);
|
|
364
|
+
document.addEventListener('keydown', event => {
|
|
365
|
+
if (!setSurfaceState()) return;
|
|
366
|
+
if (event.key !== 'Enter') return;
|
|
367
|
+
const cell = event.target?.closest?.('.eos-object-value-cell,[data-eos-object-value-cell]');
|
|
368
|
+
if (!cell || !isWritableCell(cell) || shouldSkipFallback(cell)) return;
|
|
369
|
+
event.preventDefault();
|
|
370
|
+
openWriteDialog(cell, event);
|
|
371
|
+
}, true);
|
|
158
372
|
|
|
159
373
|
const observer = new MutationObserver(records => {
|
|
160
374
|
if (!setSurfaceState()) return;
|
|
@@ -169,8 +383,7 @@
|
|
|
169
383
|
setSurfaceState();
|
|
170
384
|
schedule(document);
|
|
171
385
|
observer.observe(document.documentElement, { childList: true, subtree: true });
|
|
172
|
-
|
|
173
|
-
window.setInterval(() => schedule(document), 15000);
|
|
386
|
+
window.setInterval(() => schedule(document), 60000);
|
|
174
387
|
};
|
|
175
388
|
|
|
176
389
|
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start, { once: true });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
window.NEXOWATT_EOS_ROLE_UI_VERSION = '
|
|
4
|
+
window.NEXOWATT_EOS_ROLE_UI_VERSION = 'v50-dp-write-hardfix';
|
|
5
5
|
|
|
6
6
|
const ASSET_BASE = (() => {
|
|
7
7
|
const script = document.currentScript?.src || document.querySelector('script[src*="eos-role-ui.js"]')?.src || window.location.href;
|
|
@@ -38,6 +38,8 @@
|
|
|
38
38
|
|
|
39
39
|
const stripTab = value => String(value || '').replace(/^#?\/?/, '').replace(/^tab-/, '');
|
|
40
40
|
|
|
41
|
+
const isObjectsRoute = () => /#\/?tab-objects\b|#tab-objects\b/.test(String(window.location.hash || '')) || /[?&]tab=objects/.test(String(window.location.href || ''));
|
|
42
|
+
|
|
41
43
|
const hashTab = () => {
|
|
42
44
|
const hash = decodeURIComponent(window.location.hash || '');
|
|
43
45
|
const match = hash.match(/#\/?(tab-[a-z0-9_-]+(?:-\d+)?)\b/i);
|
|
@@ -279,7 +281,12 @@
|
|
|
279
281
|
|
|
280
282
|
const startObserver = () => safe(() => {
|
|
281
283
|
if (state.observer || !document.documentElement) return;
|
|
282
|
-
state.observer = new MutationObserver(
|
|
284
|
+
state.observer = new MutationObserver(records => {
|
|
285
|
+
// Large object lists change row classes constantly. Role filtering only needs
|
|
286
|
+
// to react to structural/nav changes there, not every selection highlight.
|
|
287
|
+
if (isObjectsRoute() && records.every(record => record.type === 'attributes' && record.attributeName === 'class')) return;
|
|
288
|
+
scheduleApply();
|
|
289
|
+
});
|
|
283
290
|
state.observer.observe(document.documentElement, { childList: true, subtree: true, attributes: true, attributeFilter: ['href', 'class', 'aria-label'] });
|
|
284
291
|
});
|
|
285
292
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
const VERSION = '
|
|
4
|
+
const VERSION = 'v50-dp-write-hardfix';
|
|
5
5
|
const LEGACY_ADMIN = 'admin';
|
|
6
6
|
const LEGACY_ADMIN_INSTANCE = 'admin.0';
|
|
7
7
|
const CORE_PROTECTED_ADAPTERS = ['admin', 'eos-admin', 'backitup', 'nexowatt-devices', 'nexowatt-device', 'nexowatt-dev', 'nexowatt-ui'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"iobroker_admin","name":"iobroker_admin","metaData":{"name":"iobroker_admin","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_admin"},"remoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"iobroker_admin","pluginVersion":"0.2.5","publicPath":"./"},"shared":[{"id":"iobroker_admin:@emotion/react","name":"@emotion/react","version":"11.14.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/emotion-react.browser.esm-DrKG52pD.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@emotion/styled","name":"@emotion/styled","version":"11.14.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/emotion-styled.browser.esm-DOdpWCne.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/adapter-react-v5","name":"@iobroker/adapter-react-v5","version":"8.2.9","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-
|
|
1
|
+
{"id":"iobroker_admin","name":"iobroker_admin","metaData":{"name":"iobroker_admin","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_admin"},"remoteEntry":{"name":"remoteEntry-DPWrite50.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry-DPWrite50.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"iobroker_admin","pluginVersion":"0.2.5","publicPath":"./"},"shared":[{"id":"iobroker_admin:@emotion/react","name":"@emotion/react","version":"11.14.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/emotion-react.browser.esm-DrKG52pD.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@emotion/styled","name":"@emotion/styled","version":"11.14.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/emotion-styled.browser.esm-DOdpWCne.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/adapter-react-v5","name":"@iobroker/adapter-react-v5","version":"8.2.9","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-DPAdapter50.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/json-config","name":"@iobroker/json-config","version":"8.4.7","requiredVersion":"*","assets":{"js":{"async":["assets/index-D9Ej0pc9.js"],"sync":["assets/index-mSK_krgD.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/dm-gui-components","name":"@iobroker/dm-gui-components","version":"9.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-bCuipom1.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:date-fns","name":"date-fns","version":"4.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Cqq5gIUF.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:date-fns/locale","name":"date-fns/locale","version":"4.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/locale-CLe3aX4T.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:leaflet","name":"leaflet","version":"1.9.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/leaflet-src-B651YTWC.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:leaflet-geosearch","name":"leaflet-geosearch","version":"4.2.2","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/geosearch.module-BA4ww39P.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-ace","name":"react-ace","version":"13.0.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-C_anklzA.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-dropzone","name":"react-dropzone","version":"15.0.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CXZCHHB6.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:semver","name":"semver","version":"7.7.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CkI9667U.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/x-date-pickers","name":"@mui/x-date-pickers","version":"7.29.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-uASdmaE6.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react","name":"react","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-4wMOc304.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-dom","name":"react-dom","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-D2Em8S_O.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/material","name":"@mui/material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-8JYjTPhv.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/icons-material","name":"@mui/icons-material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-jy_3EbfW.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./assets/emotion-react.browser.esm-DrKG52pD.js","./assets/iobroker_admin__loadShare__react__loadShare__-LM7uyL45.js","./assets/_commonjsHelpers-CE1G-McA.js","./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js","./assets/emotion-cache.browser.esm-BgJfNZJN.js","./assets/extends-CF3RwP-h.js","./assets/emotion-use-insertion-effect-with-fallbacks.browser.esm-D9zECpgL.js","./assets/emotion-serialize.esm-Q4o_CgeF.js","./assets/emotion-styled.browser.esm-DOdpWCne.js","./assets/iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-BywLg1Xe.js","./assets/index-DPAdapter50.js","./assets/createTheme-DFX8CY6F.js","./assets/blue-CagzI6CQ.js","./assets/sdk-C-e-e2gd.js","./assets/iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-CJO5yP3h.js","./assets/Google-Cq8JZDSn.js","./assets/index-DcK0RDrH.js","./assets/pl-Dib-_u5L.js","./assets/iobroker_admin__loadShare__react_mf_2_dropzone__loadShare__-CwjnV48g.js","./assets/useTheme-CUNq4tF-.js","./assets/defaultTheme-Cx_JJUAa.js","./assets/useTheme-Bl-M1DYp.js","./assets/index-bCuipom1.js","./assets/iobroker_admin__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-LFZoiUTt.js","./assets/iobroker_admin__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__-CpA7pnS5.js","./assets/index-mSK_krgD.js","./assets/index-8HslT92O.js","./assets/_commonjs-dynamic-modules-TDtrdbi3.js","./assets/___vite-browser-external_commonjs-proxy-DMh1aSo_.js","./assets/iobroker_admin__loadShare__react_mf_2_dom__loadShare__-CVeAXnkk.js","./assets/ext-language_tools-ylAoucDh.js","./assets/preload-helper-BDBacUwf.js","./assets/index-jy_3EbfW.js","./assets/DefaultPropsProvider-BiXBMQYQ.js","./assets/createSvgIcon-CfRgdNUH.js","./assets/index-8JYjTPhv.js","./assets/amber-D7aVlNg3.js","./assets/TextField-CqVU6uzA.js","./assets/assertThisInitialized-B0aQ9eG_.js","./assets/ThemeProvider-BOFFjWAF.js","./assets/index-uASdmaE6.js","./assets/index-Cqq5gIUF.js","./assets/setYear-3ufv5yRD.js","./assets/en-US-DBFJNIH6.js","./assets/isSameWeek-DzRXk46v.js","./assets/locale-CLe3aX4T.js","./assets/leaflet-src-B651YTWC.js","./assets/geosearch.module-BA4ww39P.js","./assets/iobroker_admin__loadShare__leaflet__loadShare__-CNUAG3AH.js","./assets/index-4wMOc304.js","./assets/index-C_anklzA.js","./assets/ace-DEUjyTIn.js","./assets/index-D2Em8S_O.js","./assets/index-CXZCHHB6.js","./assets/index-CkI9667U.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{i as m,a as p}from"./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js";import s from"./assets/virtualExposes-BIHI7g3E.js";import{_ as a}from"./assets/preload-helper-BDBacUwf.js";const n={"@emotion/react":async()=>await a(()=>import("./assets/emotion-react.browser.esm-DrKG52pD.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url),"@emotion/styled":async()=>await a(()=>import("./assets/emotion-styled.browser.esm-DOdpWCne.js"),__vite__mapDeps([8,5,9,3,7,6,1,2]),import.meta.url),"@iobroker/adapter-react-v5":async()=>await a(()=>import("./assets/index-DPAdapter50.js"),__vite__mapDeps([10,11,12,1,2,3,13,14,15,16,17,18,19,20,21,9]),import.meta.url),"@iobroker/dm-gui-components":async()=>await a(()=>import("./assets/index-bCuipom1.js"),__vite__mapDeps([22,1,2,3,14,23,24]),import.meta.url),"@iobroker/json-config":async()=>await a(()=>import("./assets/index-mSK_krgD.js"),__vite__mapDeps([25,1,2,3,26,27,28,14,23,29,12,15,16,30,18,31]),import.meta.url),"@mui/icons-material":async()=>await a(()=>import("./assets/index-jy_3EbfW.js"),__vite__mapDeps([32,33,2,3,7,9,1,34,11,12,20]),import.meta.url),"@mui/material":async()=>await a(()=>import("./assets/index-8JYjTPhv.js"),__vite__mapDeps([35,11,12,1,2,3,36,34,33,7,9,20,37,21,38,19,5,29,16,39,4]),import.meta.url),"@mui/x-date-pickers":async()=>await a(()=>import("./assets/index-uASdmaE6.js"),__vite__mapDeps([40,1,2,3,33,7,9,34,11,12,20,5,37,21,38,19,29,16]),import.meta.url),"date-fns":async()=>await a(()=>import("./assets/index-Cqq5gIUF.js"),__vite__mapDeps([41,42,43,44]),import.meta.url),"date-fns/locale":async()=>await a(()=>import("./assets/locale-CLe3aX4T.js"),__vite__mapDeps([45,43,44]),import.meta.url),leaflet:async()=>await a(()=>import("./assets/leaflet-src-B651YTWC.js").then(t=>t.l),__vite__mapDeps([46,2]),import.meta.url),"leaflet-geosearch":async()=>await a(()=>import("./assets/geosearch.module-BA4ww39P.js"),__vite__mapDeps([47,48,3]),import.meta.url),react:async()=>await a(()=>import("./assets/index-4wMOc304.js").then(t=>t.i),__vite__mapDeps([49,2]),import.meta.url),"react-ace":async()=>await a(()=>import("./assets/index-C_anklzA.js").then(t=>t.i),__vite__mapDeps([50,51,16,2,1,3]),import.meta.url),"react-dom":async()=>await a(()=>import("./assets/index-D2Em8S_O.js").then(t=>t.i),__vite__mapDeps([52,2,1,3]),import.meta.url),"react-dropzone":async()=>await a(()=>import("./assets/index-CXZCHHB6.js"),__vite__mapDeps([53,1,2,3,16]),import.meta.url),semver:async()=>await a(()=>import("./assets/index-CkI9667U.js").then(t=>t.i),__vite__mapDeps([54,2]),import.meta.url)},o={"@emotion/react":{name:"@emotion/react",version:"11.14.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@emotion/react"].loaded=!0;const{"@emotion/react":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@emotion/styled":{name:"@emotion/styled",version:"11.14.1",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@emotion/styled"].loaded=!0;const{"@emotion/styled":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@iobroker/adapter-react-v5":{name:"@iobroker/adapter-react-v5",version:"8.2.9",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@iobroker/adapter-react-v5"].loaded=!0;const{"@iobroker/adapter-react-v5":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@iobroker/dm-gui-components":{name:"@iobroker/dm-gui-components",version:"9.1.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@iobroker/dm-gui-components"].loaded=!0;const{"@iobroker/dm-gui-components":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@iobroker/json-config":{name:"@iobroker/json-config",version:"8.4.7",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@iobroker/json-config"].loaded=!0;const{"@iobroker/json-config":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/icons-material":{name:"@mui/icons-material",version:"6.5.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@mui/icons-material"].loaded=!0;const{"@mui/icons-material":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/material":{name:"@mui/material",version:"6.5.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@mui/material"].loaded=!0;const{"@mui/material":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/x-date-pickers":{name:"@mui/x-date-pickers",version:"7.29.4",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@mui/x-date-pickers"].loaded=!0;const{"@mui/x-date-pickers":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"date-fns":{name:"date-fns",version:"4.1.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["date-fns"].loaded=!0;const{"date-fns":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"date-fns/locale":{name:"date-fns/locale",version:"4.1.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["date-fns/locale"].loaded=!0;const{"date-fns/locale":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},leaflet:{name:"leaflet",version:"1.9.4",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o.leaflet.loaded=!0;const{leaflet:e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"leaflet-geosearch":{name:"leaflet-geosearch",version:"4.2.2",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["leaflet-geosearch"].loaded=!0;const{"leaflet-geosearch":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},react:{name:"react",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o.react.loaded=!0;const{react:e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-ace":{name:"react-ace",version:"13.0.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["react-ace"].loaded=!0;const{"react-ace":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-dom":{name:"react-dom",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["react-dom"].loaded=!0;const{"react-dom":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-dropzone":{name:"react-dropzone",version:"15.0.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["react-dropzone"].loaded=!0;const{"react-dropzone":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},semver:{name:"semver",version:"7.7.4",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o.semver.loaded=!0;const{semver:e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}}},f=[],u={},l="default",d="iobroker_admin";async function y(e={},t=[]){const r=m({name:d,remotes:f,shared:o,plugins:[],shareStrategy:"version-first"});var i=u[l];if(i||(i=u[l]={from:d}),!(t.indexOf(i)>=0)){t.push(i),r.initShareScopeMap("default",e);try{await Promise.all(await r.initializeSharing("default",{strategy:"version-first",from:"build",initScope:t}))}catch(c){console.error(c)}return p.initResolve(r),r}}function b(e){if(!(e in s))throw new Error(`Module ${e} does not exist in container.`);return s[e]().then(t=>()=>t)}export{b as get,y as init};
|
package/io-package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "eos-admin",
|
|
4
|
-
"version": "7.9.
|
|
4
|
+
"version": "7.9.50",
|
|
5
5
|
"titleLang": {
|
|
6
6
|
"en": "NexoWatt EOS Admin",
|
|
7
7
|
"de": "NexoWatt EOS Admin",
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
"connectionType": "local",
|
|
19
19
|
"dataSource": "push",
|
|
20
20
|
"news": {
|
|
21
|
+
"7.9.50": {
|
|
22
|
+
"en": "Hardfix for manual writes in the objects/datapoints view: patched ObjectBrowser, direct fallback write dialog, cache-busted frontend chunks and lighter observers.",
|
|
23
|
+
"de": "Hardfix für manuelles Schreiben in der Datenpunkte-Ansicht: gepatchter ObjectBrowser, direkter Fallback-Schreibdialog, Cache-Busting der Frontend-Bundles und leichtere Observer."
|
|
24
|
+
},
|
|
21
25
|
"7.9.49": {
|
|
22
26
|
"en": "Reliable manual writes for writable states, corrected boolean switch handling and faster objects page updates.",
|
|
23
27
|
"de": "Zuverlässiges manuelles Beschreiben beschreibbarer Datenpunkte, korrigierte Boolean-/Switch-Behandlung und schnellere Datenpunkte-Oberfläche."
|
|
@@ -255,7 +259,7 @@
|
|
|
255
259
|
"icon": "admin.svg",
|
|
256
260
|
"messagebox": true,
|
|
257
261
|
"enabled": true,
|
|
258
|
-
"extIcon": "https://unpkg.com/iobroker.eos-admin@7.9.
|
|
262
|
+
"extIcon": "https://unpkg.com/iobroker.eos-admin@7.9.50/admin/admin.svg",
|
|
259
263
|
"keywords": [
|
|
260
264
|
"NexoWatt",
|
|
261
265
|
"EOS",
|
|
@@ -266,7 +270,7 @@
|
|
|
266
270
|
"licensed"
|
|
267
271
|
],
|
|
268
272
|
"compact": true,
|
|
269
|
-
"readme": "https://unpkg.com/iobroker.eos-admin@7.9.
|
|
273
|
+
"readme": "https://unpkg.com/iobroker.eos-admin@7.9.50/README.md",
|
|
270
274
|
"authors": [
|
|
271
275
|
"bluefox <bluefox@ccu.io>",
|
|
272
276
|
"hobbyquaker <hq@ccu.io>"
|
|
@@ -335,7 +339,7 @@
|
|
|
335
339
|
"nondeletable": false,
|
|
336
340
|
"allowAdapterUpdate": true,
|
|
337
341
|
"allowAdapterDelete": false,
|
|
338
|
-
"meta": "https://unpkg.com/iobroker.eos-admin@7.9.
|
|
342
|
+
"meta": "https://unpkg.com/iobroker.eos-admin@7.9.50/io-package.json",
|
|
339
343
|
"npmPackage": "iobroker.eos-admin",
|
|
340
344
|
"packetName": "iobroker.eos-admin"
|
|
341
345
|
},
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.eos-admin",
|
|
3
3
|
"description": "NexoWatt EOS Admin interface with reliable repository update mapping and technical log preservation.",
|
|
4
|
-
"version": "7.9.
|
|
4
|
+
"version": "7.9.50",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"bluefox <dogafox@gmail.com>",
|
|
7
7
|
"apollon77",
|