@matter-server/dashboard 0.6.2-alpha.0-20260422-4efb179 → 0.6.2-alpha.0-20260426-e2eae3d
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/dist/esm/components/dialogs/dev/command-invoke-dialog.d.ts +2 -1
- package/dist/esm/components/dialogs/dev/command-invoke-dialog.d.ts.map +1 -1
- package/dist/esm/components/dialogs/dev/command-invoke-dialog.js +33 -6
- package/dist/esm/components/dialogs/dev/command-invoke-dialog.js.map +1 -1
- package/dist/esm/components/dialogs/dev/show-command-invoke-dialog.d.ts +1 -1
- package/dist/esm/components/dialogs/dev/show-command-invoke-dialog.d.ts.map +1 -1
- package/dist/esm/components/dialogs/dev/show-command-invoke-dialog.js +1 -1
- package/dist/esm/components/dialogs/dev/show-command-invoke-dialog.js.map +1 -1
- package/dist/esm/pages/matter-cluster-view.d.ts.map +1 -1
- package/dist/esm/pages/matter-cluster-view.js +12 -6
- package/dist/esm/pages/matter-cluster-view.js.map +1 -1
- package/dist/web/index.html +2 -0
- package/dist/web/js/{attribute-write-dialog-BjBvI9Vg.js → attribute-write-dialog-g4B6BoRt.js} +1 -1
- package/dist/web/js/{command-invoke-dialog-GfZXZjFc.js → command-invoke-dialog-D6G704VK.js} +30 -7
- package/dist/web/js/{commission-node-dialog-BAEMNaRj.js → commission-node-dialog-Bg3oo5ub.js} +4 -4
- package/dist/web/js/{commission-node-existing-NbcOLhCW.js → commission-node-existing-DO3g1aQJ.js} +2 -2
- package/dist/web/js/{commission-node-thread-CPS6eA4_.js → commission-node-thread-DM432aH1.js} +2 -2
- package/dist/web/js/{commission-node-wifi-DgnCq_XI.js → commission-node-wifi-Bx40FXij.js} +2 -2
- package/dist/web/js/{dialog-box-CRmSjFmJ.js → dialog-box-DjyfULWB.js} +1 -1
- package/dist/web/js/{fire_event-CMN0BnIt.js → fire_event-BstgNPuh.js} +1 -1
- package/dist/web/js/main.js +1 -1
- package/dist/web/js/{matter-dashboard-app-Cne9OvsE.js → matter-dashboard-app-Cj88TtbZ.js} +26 -20
- package/dist/web/js/{node-binding-dialog-C3d1oHJA.js → node-binding-dialog-9yy2LE3_.js} +1 -1
- package/dist/web/js/{settings-dialog-WGqWo_ox.js → settings-dialog-Cs2xMsXb.js} +1 -1
- package/package.json +4 -4
- package/src/components/dialogs/dev/command-invoke-dialog.ts +28 -4
- package/src/components/dialogs/dev/show-command-invoke-dialog.ts +2 -2
- package/src/pages/matter-cluster-view.ts +13 -5
|
@@ -12,11 +12,12 @@ export declare class CommandInvokeDialog extends LitElement {
|
|
|
12
12
|
nodeId: number | bigint;
|
|
13
13
|
endpointId: number;
|
|
14
14
|
clusterId: number;
|
|
15
|
+
commandId: number;
|
|
15
16
|
commandName: string;
|
|
16
|
-
commandLabel: string;
|
|
17
17
|
private _busy;
|
|
18
18
|
private _error;
|
|
19
19
|
private _response;
|
|
20
|
+
private _success;
|
|
20
21
|
private _textarea;
|
|
21
22
|
protected firstUpdated(): void;
|
|
22
23
|
private _close;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-invoke-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/dev/command-invoke-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,kCAAkC,CAAC;AAC1C,OAAO,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAqB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAOrD,qBACa,mBAAoB,SAAQ,UAAU;IAExC,MAAM,EAAG,YAAY,CAAC;IAEM,MAAM,EAAG,MAAM,GAAG,MAAM,CAAC;IACzB,UAAU,EAAG,MAAM,CAAC;IACpB,SAAS,EAAG,MAAM,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"command-invoke-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/dev/command-invoke-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,kCAAkC,CAAC;AAC1C,OAAO,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAqB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAOrD,qBACa,mBAAoB,SAAQ,UAAU;IAExC,MAAM,EAAG,YAAY,CAAC;IAEM,MAAM,EAAG,MAAM,GAAG,MAAM,CAAC;IACzB,UAAU,EAAG,MAAM,CAAC;IACpB,SAAS,EAAG,MAAM,CAAC;IACnB,SAAS,EAAG,MAAM,CAAC;IACnB,WAAW,EAAG,MAAM,CAAC;IAE/C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAS;IAEf,OAAO,CAAC,SAAS,CAAuB;IAE3D,UAAmB,YAAY,SAM9B;IAED,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,aAAa;YAIP,OAAO;IAyCrB,UAAmB,MAAM,yCAyCxB;IAED,OAAgB,MAAM,0BAqFpB;CACL;AAED,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,qBAAqB;QAC3B,uBAAuB,EAAE,mBAAmB,CAAC;KAChD;CACJ"}
|
|
@@ -28,6 +28,7 @@ let CommandInvokeDialog = class extends LitElement {
|
|
|
28
28
|
this._busy = false;
|
|
29
29
|
this._error = null;
|
|
30
30
|
this._response = null;
|
|
31
|
+
this._success = false;
|
|
31
32
|
}
|
|
32
33
|
firstUpdated() {
|
|
33
34
|
if (this._textarea && this._textarea.value === "") {
|
|
@@ -42,6 +43,7 @@ let CommandInvokeDialog = class extends LitElement {
|
|
|
42
43
|
}
|
|
43
44
|
async _invoke() {
|
|
44
45
|
this._error = null;
|
|
46
|
+
this._success = false;
|
|
45
47
|
const parsed = parseJsonPayload(this._textarea.value);
|
|
46
48
|
if (!parsed.ok) {
|
|
47
49
|
this._error = `Invalid JSON: ${parsed.error}`;
|
|
@@ -63,11 +65,18 @@ let CommandInvokeDialog = class extends LitElement {
|
|
|
63
65
|
this.commandName,
|
|
64
66
|
payload
|
|
65
67
|
);
|
|
66
|
-
|
|
68
|
+
if (result === null || result === void 0) {
|
|
69
|
+
this._success = true;
|
|
70
|
+
this._response = null;
|
|
71
|
+
} else {
|
|
72
|
+
this._response = toBigIntAwareJson(result, 2);
|
|
73
|
+
this._success = false;
|
|
74
|
+
}
|
|
67
75
|
this._error = null;
|
|
68
76
|
} catch (err) {
|
|
69
77
|
this._error = err instanceof Error ? err.message : String(err);
|
|
70
78
|
this._response = null;
|
|
79
|
+
this._success = false;
|
|
71
80
|
} finally {
|
|
72
81
|
this._busy = false;
|
|
73
82
|
}
|
|
@@ -75,11 +84,14 @@ let CommandInvokeDialog = class extends LitElement {
|
|
|
75
84
|
render() {
|
|
76
85
|
return html`
|
|
77
86
|
<md-dialog open @cancel=${preventDefault} @closed=${this._handleClosed}>
|
|
78
|
-
<div slot="headline">Invoke ${this.
|
|
87
|
+
<div slot="headline">Invoke ${this.commandName}</div>
|
|
79
88
|
<div slot="content">
|
|
80
89
|
<p class="path" id="invoke-path">
|
|
81
90
|
Cluster <code>${this.clusterId}</code> (${formatHex(this.clusterId)}) · Endpoint
|
|
82
|
-
<code>${this.endpointId}</code> · Command <code>${this.
|
|
91
|
+
<code>${this.endpointId}</code> · Command <code>${this.commandId}</code> (${formatHex(
|
|
92
|
+
this.commandId
|
|
93
|
+
)})
|
|
94
|
+
· <code>${this.commandName}</code>
|
|
83
95
|
</p>
|
|
84
96
|
<label class="textarea-label" for="payload">Payload (JSON)</label>
|
|
85
97
|
<textarea
|
|
@@ -92,6 +104,7 @@ let CommandInvokeDialog = class extends LitElement {
|
|
|
92
104
|
rows="8"
|
|
93
105
|
></textarea>
|
|
94
106
|
${this._error ? html`<div id="invoke-error" class="error" role="alert">${this._error}</div>` : nothing}
|
|
107
|
+
${this._success ? html`<div class="success" role="status">Success</div>` : nothing}
|
|
95
108
|
${this._response !== null ? html`
|
|
96
109
|
<label class="textarea-label">Response</label>
|
|
97
110
|
<pre class="response"><code>${this._response}</code></pre>
|
|
@@ -164,6 +177,17 @@ CommandInvokeDialog.styles = css`
|
|
|
164
177
|
word-break: break-word;
|
|
165
178
|
}
|
|
166
179
|
|
|
180
|
+
.success {
|
|
181
|
+
margin-top: 10px;
|
|
182
|
+
padding: 10px 12px;
|
|
183
|
+
background: color-mix(in srgb, var(--success-color) 18%, transparent);
|
|
184
|
+
color: var(--success-color);
|
|
185
|
+
border: 1px solid color-mix(in srgb, var(--success-color) 40%, transparent);
|
|
186
|
+
border-radius: 6px;
|
|
187
|
+
font-size: 0.9rem;
|
|
188
|
+
font-weight: 500;
|
|
189
|
+
}
|
|
190
|
+
|
|
167
191
|
.response {
|
|
168
192
|
margin: 6px 0 0 0;
|
|
169
193
|
padding: 10px 12px;
|
|
@@ -195,11 +219,11 @@ __decorateClass([
|
|
|
195
219
|
property({ type: Number })
|
|
196
220
|
], CommandInvokeDialog.prototype, "clusterId", 2);
|
|
197
221
|
__decorateClass([
|
|
198
|
-
property({ type:
|
|
199
|
-
], CommandInvokeDialog.prototype, "
|
|
222
|
+
property({ type: Number })
|
|
223
|
+
], CommandInvokeDialog.prototype, "commandId", 2);
|
|
200
224
|
__decorateClass([
|
|
201
225
|
property({ type: String })
|
|
202
|
-
], CommandInvokeDialog.prototype, "
|
|
226
|
+
], CommandInvokeDialog.prototype, "commandName", 2);
|
|
203
227
|
__decorateClass([
|
|
204
228
|
state()
|
|
205
229
|
], CommandInvokeDialog.prototype, "_busy", 2);
|
|
@@ -209,6 +233,9 @@ __decorateClass([
|
|
|
209
233
|
__decorateClass([
|
|
210
234
|
state()
|
|
211
235
|
], CommandInvokeDialog.prototype, "_response", 2);
|
|
236
|
+
__decorateClass([
|
|
237
|
+
state()
|
|
238
|
+
], CommandInvokeDialog.prototype, "_success", 2);
|
|
212
239
|
__decorateClass([
|
|
213
240
|
query("textarea")
|
|
214
241
|
], CommandInvokeDialog.prototype, "_textarea", 2);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/components/dialogs/dev/command-invoke-dialog.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AAEP,SAAuB,yBAAyB;AAChD,SAAS,KAAK,MAAM,YAAY,eAAe;AAC/C,SAAS,eAAe,UAAU,OAAO,aAAa;AACtD,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB;AAC1B,SAAS,sBAAsB;AAC/B,SAAS,eAAe,wBAAwB;AAGzC,IAAM,sBAAN,cAAkC,WAAW;AAAA,EAA7C;AAAA;AAUM,SAAQ,QAAQ;AAChB,SAAQ,SAAwB;AAChC,SAAQ,YAA2B;AAAA;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -9,8 +9,8 @@ export interface ShowCommandInvokeDialogOptions {
|
|
|
9
9
|
nodeId: number | bigint;
|
|
10
10
|
endpointId: number;
|
|
11
11
|
clusterId: number;
|
|
12
|
+
commandId: number;
|
|
12
13
|
commandName: string;
|
|
13
|
-
commandLabel: string;
|
|
14
14
|
}
|
|
15
15
|
export declare const showCommandInvokeDialog: (options: ShowCommandInvokeDialogOptions) => Promise<void>;
|
|
16
16
|
//# sourceMappingURL=show-command-invoke-dialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show-command-invoke-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/dev/show-command-invoke-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,MAAM,WAAW,8BAA8B;IAC3C,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"show-command-invoke-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/dev/show-command-invoke-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,MAAM,WAAW,8BAA8B;IAC3C,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,uBAAuB,YAAmB,8BAA8B,kBAUpF,CAAC"}
|
|
@@ -10,8 +10,8 @@ const showCommandInvokeDialog = async (options) => {
|
|
|
10
10
|
dialog.nodeId = options.nodeId;
|
|
11
11
|
dialog.endpointId = options.endpointId;
|
|
12
12
|
dialog.clusterId = options.clusterId;
|
|
13
|
+
dialog.commandId = options.commandId;
|
|
13
14
|
dialog.commandName = options.commandName;
|
|
14
|
-
dialog.commandLabel = options.commandLabel;
|
|
15
15
|
document.querySelector("matter-dashboard-app")?.renderRoot.appendChild(dialog);
|
|
16
16
|
};
|
|
17
17
|
export {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/components/dialogs/dev/show-command-invoke-dialog.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAiBO,MAAM,0BAA0B,OAAO,YAA4C;AACtF,QAAM,OAAO,4BAA4B;AACzC,QAAM,SAAS,SAAS,cAAc,uBAAuB;AAC7D,SAAO,SAAS,QAAQ;AACxB,SAAO,SAAS,QAAQ;AACxB,SAAO,aAAa,QAAQ;AAC5B,SAAO,YAAY,QAAQ;AAC3B,SAAO,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAiBO,MAAM,0BAA0B,OAAO,YAA4C;AACtF,QAAM,OAAO,4BAA4B;AACzC,QAAM,SAAS,SAAS,cAAc,uBAAuB;AAC7D,SAAO,SAAS,QAAQ;AACxB,SAAO,SAAS,QAAQ;AACxB,SAAO,aAAa,QAAQ;AAC5B,SAAO,YAAY,QAAQ;AAC3B,SAAO,YAAY,QAAQ;AAC3B,SAAO,cAAc,QAAQ;AAC7B,WAAS,cAAc,sBAAsB,GAAG,WAAW,YAAY,MAAM;AACjF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matter-cluster-view.d.ts","sourceRoot":"","sources":["../../../src/pages/matter-cluster-view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+CAA+C,CAAC;AACvD,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAgB,YAAY,EAAE,UAAU,EAAqB,MAAM,0BAA0B,CAAC;AAErG,OAAO,EAAa,UAAU,EAAW,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAO1E,OAAO,2BAA2B,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAQ1C,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,qBAAqB;QAC3B,qBAAqB,EAAE,iBAAiB,CAAC;KAC5C;CACJ;AAuCD,cACM,iBAAkB,SAAQ,UAAU;IAC/B,MAAM,EAAG,YAAY,CAAC;IAGtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAIlB,QAAQ,EAAG,MAAM,CAAC;IAGlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,QAAQ,CAAyB;IAGzC,OAAO,CAAC,aAAa,CAAoC;IAElE,OAAO,CAAC,eAAe,CAAC,CAAa;IAE5B,iBAAiB,SAKzB;IAEQ,oBAAoB,SAG5B;IAEQ,MAAM,
|
|
1
|
+
{"version":3,"file":"matter-cluster-view.d.ts","sourceRoot":"","sources":["../../../src/pages/matter-cluster-view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+CAA+C,CAAC;AACvD,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAgB,YAAY,EAAE,UAAU,EAAqB,MAAM,0BAA0B,CAAC;AAErG,OAAO,EAAa,UAAU,EAAW,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAO1E,OAAO,2BAA2B,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAQ1C,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,qBAAqB;QAC3B,qBAAqB,EAAE,iBAAiB,CAAC;KAC5C;CACJ;AAuCD,cACM,iBAAkB,SAAQ,UAAU;IAC/B,MAAM,EAAG,YAAY,CAAC;IAGtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAIlB,QAAQ,EAAG,MAAM,CAAC;IAGlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,QAAQ,CAAyB;IAGzC,OAAO,CAAC,aAAa,CAAoC;IAElE,OAAO,CAAC,eAAe,CAAC,CAAa;IAE5B,iBAAiB,SAKzB;IAEQ,oBAAoB,SAG5B;IAEQ,MAAM,sBAmFd;IAED,OAAO,CAAC,0BAA0B;YAkCpB,iBAAiB;IAmC/B,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,uBAAuB;IAqD/B,OAAO,CAAC,wBAAwB;YAYlB,mBAAmB;IAQjC,OAAO,CAAC,sBAAsB;IAkBrB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,QAmBvD;IAED,OAAO,CAAC,OAAO;IAIf,OAAgB,MAAM,4BA8NpB;CACL"}
|
|
@@ -88,9 +88,10 @@ let MatterClusterView = class extends LitElement {
|
|
|
88
88
|
isTestNodeId(this.node.node_id)
|
|
89
89
|
);
|
|
90
90
|
const nodeHex = formatNodeAddress(fabricIndex, this.node.node_id);
|
|
91
|
+
const clusterName = clusters[this.cluster]?.label ?? "Custom/Unknown Cluster";
|
|
91
92
|
return html`
|
|
92
93
|
<dashboard-header
|
|
93
|
-
.title=${`Node ${this.node.node_id} ${nodeHex} | Endpoint ${this.endpoint} | Cluster ${this.cluster}`}
|
|
94
|
+
.title=${`Node ${this.node.node_id} ${nodeHex} | Endpoint ${this.endpoint} | Cluster ${this.cluster} (${clusterName})`}
|
|
94
95
|
.backButton=${`#node/${this.node.node_id}/${this.endpoint}`}
|
|
95
96
|
.client=${this.client}
|
|
96
97
|
></dashboard-header>
|
|
@@ -221,7 +222,7 @@ let MatterClusterView = class extends LitElement {
|
|
|
221
222
|
const clusterMeta = this.cluster !== void 0 ? clusters[this.cluster] : void 0;
|
|
222
223
|
const rawAcceptedList = this.node?.attributes[`${this.endpoint}/${this.cluster}/${ACCEPTED_COMMAND_LIST_ATTR}`];
|
|
223
224
|
const acceptedList = Array.isArray(rawAcceptedList) ? rawAcceptedList : [];
|
|
224
|
-
const commands = acceptedList.map((id) => clusterMeta?.commands[id]).filter((cmd) => cmd !== void 0);
|
|
225
|
+
const commands = acceptedList.map((id) => clusterMeta?.commands[id]).filter((cmd) => cmd !== void 0).sort((a, b) => a.id - b.id);
|
|
225
226
|
const online = this.node?.available === true;
|
|
226
227
|
return html`
|
|
227
228
|
<div class="container">
|
|
@@ -246,7 +247,7 @@ let MatterClusterView = class extends LitElement {
|
|
|
246
247
|
<md-outlined-button
|
|
247
248
|
class="dev-invoke-button"
|
|
248
249
|
?disabled=${!online}
|
|
249
|
-
@click=${() => this._openCommandInvokeDialog(cmd.
|
|
250
|
+
@click=${() => this._openCommandInvokeDialog(cmd.id, cmd.name)}
|
|
250
251
|
>
|
|
251
252
|
<ha-svg-icon slot="icon" .path=${mdiPlay}></ha-svg-icon>
|
|
252
253
|
Invoke
|
|
@@ -261,15 +262,15 @@ let MatterClusterView = class extends LitElement {
|
|
|
261
262
|
</div>
|
|
262
263
|
`;
|
|
263
264
|
}
|
|
264
|
-
_openCommandInvokeDialog(
|
|
265
|
+
_openCommandInvokeDialog(commandId, commandName) {
|
|
265
266
|
if (!this.node || this.cluster === void 0) return;
|
|
266
267
|
showCommandInvokeDialog({
|
|
267
268
|
client: this.client,
|
|
268
269
|
nodeId: this.node.node_id,
|
|
269
270
|
endpointId: this.endpoint,
|
|
270
271
|
clusterId: this.cluster,
|
|
271
|
-
|
|
272
|
-
|
|
272
|
+
commandId,
|
|
273
|
+
commandName
|
|
273
274
|
});
|
|
274
275
|
}
|
|
275
276
|
async _showAttributeValue(value) {
|
|
@@ -491,6 +492,11 @@ MatterClusterView.styles = [
|
|
|
491
492
|
padding: 8px 12px;
|
|
492
493
|
background: var(--md-sys-color-surface-container-low);
|
|
493
494
|
border-radius: 8px;
|
|
495
|
+
transition: background 120ms ease-out;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
.command-row:hover {
|
|
499
|
+
background: color-mix(in srgb, var(--dev-color) 12%, var(--md-sys-color-surface-container-low));
|
|
494
500
|
}
|
|
495
501
|
|
|
496
502
|
.dev-invoke-button {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/pages/matter-cluster-view.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,eAAe;AACxB,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,SAAS,cAAwC,yBAAyB;AAC1E,SAAS,uBAAuB,WAAW,SAAS,kBAAkB;AACtE,SAAS,KAAK,MAAM,YAAY,eAAoC;AACpE,SAAS,eAAe,UAAU,aAAa;AAC/C,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC,SAAS,gCAAgC;AACzC,SAAS,+BAA+B;AACxC,OAAO;AACP,OAAO;AAEP,SAAS,sBAAsB;AAC/B,SAAS,WAAW,mBAAmB,+BAA+B;AACtE,SAAS,sBAAsB;AAC/B,SAAS,6BAA6B;AACtC,SAAS,sBAAsB;AAS/B,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAG7B,MAAM,6BAA6B;AAGnC,MAAM,qBAAqB;AAI3B,SAAS,kBAAkB,IAAqB;AAC5C,SAAO,MAAM,wBAAwB,MAAM;AAC/C;AAEA,SAAS,kBAAkB,YAAoC,UAAkB,SAAiB;AAE9F,SAAO,OAAO,KAAK,UAAU,EACxB,OAAO,SAAO,IAAI,WAAW,GAAG,QAAQ,IAAI,OAAO,GAAG,CAAC,EACvD,IAAI,SAAO;AACR,UAAM,eAAe,OAAO,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;AAC7C,WAAO,EAAE,KAAK,cAAc,OAAO,WAAW,GAAG,EAAE;AAAA,EACvD,CAAC,EACA,KAAK,CAAC,GAAG,MAAM;AACZ,UAAM,YAAY,kBAAkB,EAAE,GAAG;AACzC,UAAM,YAAY,kBAAkB,EAAE,GAAG;AAGzC,QAAI,cAAc,WAAW;AACzB,aAAO,YAAY,IAAI;AAAA,IAC3B;AAEA,WAAO,EAAE,MAAM,EAAE;AAAA,EACrB,CAAC;AACT;AAGA,IAAM,oBAAN,cAAgC,WAAW;AAAA,EAA3C;AAAA;AAaa,SAAQ,WAAW,eAAe;AAGlC,SAAQ,gBAA8C,CAAC;AAAA;AAAA,EAIvD,oBAAoB;AACzB,UAAM,kBAAkB;AACxB,SAAK,kBAAkB,eAAe,UAAU,YAAU;AACtD,WAAK,WAAW;AAAA,IACpB,CAAC;AAAA,EACL;AAAA,EAES,uBAAuB;AAC5B,UAAM,qBAAqB;AAC3B,SAAK,kBAAkB;AAAA,EAC3B;AAAA,EAES,SAAS;AACd,QAAI,CAAC,KAAK,QAAQ,KAAK,YAAY,UAAa,KAAK,WAAW,QAAW;AACvE,aAAO;AAAA,8DAC2C,KAAK,MAAM;AAAA;AAAA,yCAEhC,qBAAqB;AAAA;AAAA,iDAEb,KAAK,OAAO;AAAA;AAAA;AAAA,IAGrD;AAGA,UAAM,cAAc;AAAA,MAChB,KAAK,OAAO,WAAW;AAAA,MACvB,aAAa,KAAK,KAAK,OAAO;AAAA,IAClC;AACA,UAAM,UAAU,kBAAkB,aAAa,KAAK,KAAK,OAAO;AAEhE,WAAO;AAAA;AAAA,yBAEU,QAAQ,KAAK,KAAK,OAAO,IAAI,OAAO,iBAAiB,KAAK,QAAQ,gBAAgB,KAAK,OAAO,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["state"]
|
|
6
6
|
}
|
package/dist/web/index.html
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
--roboto-font: Roboto, system-ui;
|
|
19
19
|
--text-color: rgba(0, 0, 0, 0.6);
|
|
20
20
|
--danger-color: #db4437;
|
|
21
|
+
--success-color: #2e7d32;
|
|
21
22
|
|
|
22
23
|
--md-sys-color-primary: #03a9f4;
|
|
23
24
|
--md-sys-color-on-primary: #fff;
|
|
@@ -123,6 +124,7 @@
|
|
|
123
124
|
--graph-node-fallback: #999999;
|
|
124
125
|
--text-color: rgba(255, 255, 255, 0.6);
|
|
125
126
|
--danger-color: #ff7961;
|
|
127
|
+
--success-color: #66bb6a;
|
|
126
128
|
--primary-color: #4fc3f7;
|
|
127
129
|
color-scheme: dark;
|
|
128
130
|
}
|
package/dist/web/js/{attribute-write-dialog-BjBvI9Vg.js → attribute-write-dialog-g4B6BoRt.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { q as i, n, u as r, d as e, i as i$1, A, O as formatHex, j as b, K as handleAsync, t } from './matter-dashboard-app-
|
|
1
|
+
import { q as i, n, u as r, d as e, i as i$1, A, O as formatHex, j as b, K as handleAsync, t } from './matter-dashboard-app-Cj88TtbZ.js';
|
|
2
2
|
import { t as toBigIntAwareJson } from './main.js';
|
|
3
3
|
import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
|
|
4
4
|
import { p as parseJsonPayload } from './parse-json-payload-DU9TWKdu.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { q as i, n, u as r, d as e, i as i$1, A, O as formatHex, j as b, K as handleAsync, t } from './matter-dashboard-app-
|
|
1
|
+
import { q as i, n, u as r, d as e, i as i$1, A, O as formatHex, j as b, K as handleAsync, t } from './matter-dashboard-app-Cj88TtbZ.js';
|
|
2
2
|
import { t as toBigIntAwareJson } from './main.js';
|
|
3
3
|
import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
|
|
4
4
|
import { p as parseJsonPayload, i as isPlainObject } from './parse-json-payload-DU9TWKdu.js';
|
|
@@ -17,6 +17,7 @@ let CommandInvokeDialog = class extends i$1 {
|
|
|
17
17
|
this._busy = false;
|
|
18
18
|
this._error = null;
|
|
19
19
|
this._response = null;
|
|
20
|
+
this._success = false;
|
|
20
21
|
}
|
|
21
22
|
firstUpdated() {
|
|
22
23
|
if (this._textarea && this._textarea.value === "") {
|
|
@@ -31,6 +32,7 @@ let CommandInvokeDialog = class extends i$1 {
|
|
|
31
32
|
}
|
|
32
33
|
async _invoke() {
|
|
33
34
|
this._error = null;
|
|
35
|
+
this._success = false;
|
|
34
36
|
const parsed = parseJsonPayload(this._textarea.value);
|
|
35
37
|
if (!parsed.ok) {
|
|
36
38
|
this._error = `Invalid JSON: ${parsed.error}`;
|
|
@@ -46,11 +48,18 @@ let CommandInvokeDialog = class extends i$1 {
|
|
|
46
48
|
this._busy = true;
|
|
47
49
|
try {
|
|
48
50
|
const result = await this.client.deviceCommand(this.nodeId, this.endpointId, this.clusterId, this.commandName, payload);
|
|
49
|
-
|
|
51
|
+
if (result === null || result === void 0) {
|
|
52
|
+
this._success = true;
|
|
53
|
+
this._response = null;
|
|
54
|
+
} else {
|
|
55
|
+
this._response = toBigIntAwareJson(result, 2);
|
|
56
|
+
this._success = false;
|
|
57
|
+
}
|
|
50
58
|
this._error = null;
|
|
51
59
|
} catch (err) {
|
|
52
60
|
this._error = err instanceof Error ? err.message : String(err);
|
|
53
61
|
this._response = null;
|
|
62
|
+
this._success = false;
|
|
54
63
|
} finally {
|
|
55
64
|
this._busy = false;
|
|
56
65
|
}
|
|
@@ -58,11 +67,12 @@ let CommandInvokeDialog = class extends i$1 {
|
|
|
58
67
|
render() {
|
|
59
68
|
return b`
|
|
60
69
|
<md-dialog open @cancel=${preventDefault} @closed=${this._handleClosed}>
|
|
61
|
-
<div slot="headline">Invoke ${this.
|
|
70
|
+
<div slot="headline">Invoke ${this.commandName}</div>
|
|
62
71
|
<div slot="content">
|
|
63
72
|
<p class="path" id="invoke-path">
|
|
64
73
|
Cluster <code>${this.clusterId}</code> (${formatHex(this.clusterId)}) · Endpoint
|
|
65
|
-
<code>${this.endpointId}</code> · Command <code>${this.
|
|
74
|
+
<code>${this.endpointId}</code> · Command <code>${this.commandId}</code> (${formatHex(this.commandId)})
|
|
75
|
+
· <code>${this.commandName}</code>
|
|
66
76
|
</p>
|
|
67
77
|
<label class="textarea-label" for="payload">Payload (JSON)</label>
|
|
68
78
|
<textarea
|
|
@@ -75,6 +85,7 @@ let CommandInvokeDialog = class extends i$1 {
|
|
|
75
85
|
rows="8"
|
|
76
86
|
></textarea>
|
|
77
87
|
${this._error ? b`<div id="invoke-error" class="error" role="alert">${this._error}</div>` : A}
|
|
88
|
+
${this._success ? b`<div class="success" role="status">Success</div>` : A}
|
|
78
89
|
${this._response !== null ? b`
|
|
79
90
|
<label class="textarea-label">Response</label>
|
|
80
91
|
<pre class="response"><code>${this._response}</code></pre>
|
|
@@ -147,6 +158,17 @@ CommandInvokeDialog.styles = i`
|
|
|
147
158
|
word-break: break-word;
|
|
148
159
|
}
|
|
149
160
|
|
|
161
|
+
.success {
|
|
162
|
+
margin-top: 10px;
|
|
163
|
+
padding: 10px 12px;
|
|
164
|
+
background: color-mix(in srgb, var(--success-color) 18%, transparent);
|
|
165
|
+
color: var(--success-color);
|
|
166
|
+
border: 1px solid color-mix(in srgb, var(--success-color) 40%, transparent);
|
|
167
|
+
border-radius: 6px;
|
|
168
|
+
font-size: 0.9rem;
|
|
169
|
+
font-weight: 500;
|
|
170
|
+
}
|
|
171
|
+
|
|
150
172
|
.response {
|
|
151
173
|
margin: 6px 0 0 0;
|
|
152
174
|
padding: 10px 12px;
|
|
@@ -178,14 +200,15 @@ __decorateClass([n({
|
|
|
178
200
|
type: Number
|
|
179
201
|
})], CommandInvokeDialog.prototype, "clusterId", 2);
|
|
180
202
|
__decorateClass([n({
|
|
181
|
-
type:
|
|
182
|
-
})], CommandInvokeDialog.prototype, "
|
|
203
|
+
type: Number
|
|
204
|
+
})], CommandInvokeDialog.prototype, "commandId", 2);
|
|
183
205
|
__decorateClass([n({
|
|
184
206
|
type: String
|
|
185
|
-
})], CommandInvokeDialog.prototype, "
|
|
207
|
+
})], CommandInvokeDialog.prototype, "commandName", 2);
|
|
186
208
|
__decorateClass([r()], CommandInvokeDialog.prototype, "_busy", 2);
|
|
187
209
|
__decorateClass([r()], CommandInvokeDialog.prototype, "_error", 2);
|
|
188
210
|
__decorateClass([r()], CommandInvokeDialog.prototype, "_response", 2);
|
|
211
|
+
__decorateClass([r()], CommandInvokeDialog.prototype, "_success", 2);
|
|
189
212
|
__decorateClass([e("textarea")], CommandInvokeDialog.prototype, "_textarea", 2);
|
|
190
213
|
CommandInvokeDialog = __decorateClass([t("command-invoke-dialog")], CommandInvokeDialog);
|
|
191
214
|
|
package/dist/web/js/{commission-node-dialog-BAEMNaRj.js → commission-node-dialog-Bg3oo5ub.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { u as r, n, t, i, j as b } from './matter-dashboard-app-
|
|
1
|
+
import { u as r, n, t, i, j as b } from './matter-dashboard-app-Cj88TtbZ.js';
|
|
2
2
|
import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
@@ -44,18 +44,18 @@ let ComissionNodeDialog = class extends i {
|
|
|
44
44
|
if (!this.client.serverInfo.bluetooth_enabled) {
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
|
-
import('./commission-node-wifi-
|
|
47
|
+
import('./commission-node-wifi-Bx40FXij.js');
|
|
48
48
|
this._mode = "wifi";
|
|
49
49
|
}
|
|
50
50
|
_commissionThread() {
|
|
51
51
|
if (!this.client.serverInfo.bluetooth_enabled) {
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
|
-
import('./commission-node-thread-
|
|
54
|
+
import('./commission-node-thread-DM432aH1.js');
|
|
55
55
|
this._mode = "thread";
|
|
56
56
|
}
|
|
57
57
|
_commissionExisting() {
|
|
58
|
-
import('./commission-node-existing-
|
|
58
|
+
import('./commission-node-existing-DO3g1aQJ.js');
|
|
59
59
|
this._mode = "existing";
|
|
60
60
|
}
|
|
61
61
|
_nodeCommissioned(ev) {
|
package/dist/web/js/{commission-node-existing-NbcOLhCW.js → commission-node-existing-DO3g1aQJ.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { u as r, P as c, Q as clientContext, n, d as e, t, i, A, K as handleAsync, j as b, J as showAlertDialog } from './matter-dashboard-app-
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
1
|
+
import { u as r, P as c, Q as clientContext, n, d as e, t, i, A, K as handleAsync, j as b, J as showAlertDialog } from './matter-dashboard-app-Cj88TtbZ.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-BstgNPuh.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
package/dist/web/js/{commission-node-thread-CPS6eA4_.js → commission-node-thread-DM432aH1.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { u as r, P as c, Q as clientContext, n, d as e, t, i, A, K as handleAsync, j as b, J as showAlertDialog } from './matter-dashboard-app-
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
1
|
+
import { u as r, P as c, Q as clientContext, n, d as e, t, i, A, K as handleAsync, j as b, J as showAlertDialog } from './matter-dashboard-app-Cj88TtbZ.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-BstgNPuh.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { u as r, P as c, Q as clientContext, n, d as e, t, i, A, K as handleAsync, j as b, J as showAlertDialog } from './matter-dashboard-app-
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
1
|
+
import { u as r, P as c, Q as clientContext, n, d as e, t, i, A, K as handleAsync, j as b, J as showAlertDialog } from './matter-dashboard-app-Cj88TtbZ.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-BstgNPuh.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { m as mixinDelegatesAria, i, _ as __decorate, n, A, h as e, j as b, q as i$1, t } from './matter-dashboard-app-
|
|
1
|
+
import { m as mixinDelegatesAria, i, _ as __decorate, n, A, h as e, j as b, q as i$1, t } from './matter-dashboard-app-Cj88TtbZ.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @license
|
package/dist/web/js/main.js
CHANGED
|
@@ -757,7 +757,7 @@ const ThemeService = new ThemeServiceImpl();
|
|
|
757
757
|
* SPDX-License-Identifier: Apache-2.0
|
|
758
758
|
*/
|
|
759
759
|
async function main() {
|
|
760
|
-
import('./matter-dashboard-app-
|
|
760
|
+
import('./matter-dashboard-app-Cj88TtbZ.js').then(function (n) { return n.S; });
|
|
761
761
|
let url = "";
|
|
762
762
|
const isProductionServer = window.__MATTERJS_PRODUCTION_MODE__ === true || location.origin.includes(":5580") || location.href.includes("hassio_ingress") || location.href.includes("/api/ingress/");
|
|
763
763
|
if (!isProductionServer) {
|
|
@@ -4025,7 +4025,7 @@ MdListItem = __decorate([t$1('md-list-item')], MdListItem);
|
|
|
4025
4025
|
*/
|
|
4026
4026
|
const showSettingsDialog = async client => {
|
|
4027
4027
|
var _document$querySelect;
|
|
4028
|
-
await import('./settings-dialog-
|
|
4028
|
+
await import('./settings-dialog-Cs2xMsXb.js');
|
|
4029
4029
|
const dialog = document.createElement("settings-dialog");
|
|
4030
4030
|
dialog.client = client;
|
|
4031
4031
|
(_document$querySelect = document.querySelector("matter-dashboard-app")) === null || _document$querySelect === void 0 || _document$querySelect.renderRoot.appendChild(dialog);
|
|
@@ -19697,7 +19697,7 @@ const clusters = {
|
|
|
19697
19697
|
* SPDX-License-Identifier: Apache-2.0
|
|
19698
19698
|
*/
|
|
19699
19699
|
const showDialogBox = async (type, dialogParams) => {
|
|
19700
|
-
await import('./dialog-box-
|
|
19700
|
+
await import('./dialog-box-DjyfULWB.js');
|
|
19701
19701
|
return new Promise(resolve => {
|
|
19702
19702
|
const dialog = document.createElement("dialog-box");
|
|
19703
19703
|
dialog.params = dialogParams;
|
|
@@ -19716,7 +19716,7 @@ const showPromptDialog = dialogParams => showDialogBox("prompt", dialogParams);
|
|
|
19716
19716
|
*/
|
|
19717
19717
|
const showAttributeWriteDialog = async options => {
|
|
19718
19718
|
var _document$querySelect;
|
|
19719
|
-
await import('./attribute-write-dialog-
|
|
19719
|
+
await import('./attribute-write-dialog-g4B6BoRt.js');
|
|
19720
19720
|
const dialog = document.createElement("attribute-write-dialog");
|
|
19721
19721
|
dialog.client = options.client;
|
|
19722
19722
|
dialog.nodeId = options.nodeId;
|
|
@@ -19735,14 +19735,14 @@ const showAttributeWriteDialog = async options => {
|
|
|
19735
19735
|
*/
|
|
19736
19736
|
const showCommandInvokeDialog = async options => {
|
|
19737
19737
|
var _document$querySelect;
|
|
19738
|
-
await import('./command-invoke-dialog-
|
|
19738
|
+
await import('./command-invoke-dialog-D6G704VK.js');
|
|
19739
19739
|
const dialog = document.createElement("command-invoke-dialog");
|
|
19740
19740
|
dialog.client = options.client;
|
|
19741
19741
|
dialog.nodeId = options.nodeId;
|
|
19742
19742
|
dialog.endpointId = options.endpointId;
|
|
19743
19743
|
dialog.clusterId = options.clusterId;
|
|
19744
|
+
dialog.commandId = options.commandId;
|
|
19744
19745
|
dialog.commandName = options.commandName;
|
|
19745
|
-
dialog.commandLabel = options.commandLabel;
|
|
19746
19746
|
(_document$querySelect = document.querySelector("matter-dashboard-app")) === null || _document$querySelect === void 0 || _document$querySelect.renderRoot.appendChild(dialog);
|
|
19747
19747
|
};
|
|
19748
19748
|
|
|
@@ -19908,7 +19908,7 @@ MdTextButton = __decorate([t$1('md-text-button')], MdTextButton);
|
|
|
19908
19908
|
*/
|
|
19909
19909
|
const showNodeBindingDialog = async (client, node, endpoint) => {
|
|
19910
19910
|
var _document$querySelect;
|
|
19911
|
-
await import('./node-binding-dialog-
|
|
19911
|
+
await import('./node-binding-dialog-9yy2LE3_.js');
|
|
19912
19912
|
const dialog = document.createElement("node-binding-dialog");
|
|
19913
19913
|
dialog.client = client;
|
|
19914
19914
|
dialog.node = node;
|
|
@@ -23286,7 +23286,7 @@ let MatterClusterView = class extends i$4 {
|
|
|
23286
23286
|
(_this$_unsubscribeDev = this._unsubscribeDev) === null || _this$_unsubscribeDev === void 0 || _this$_unsubscribeDev.call(this);
|
|
23287
23287
|
}
|
|
23288
23288
|
render() {
|
|
23289
|
-
var _clusters$this$cluste;
|
|
23289
|
+
var _clusters$this$cluste, _clusters$this$cluste2;
|
|
23290
23290
|
if (!this.node || this.endpoint == void 0 || this.cluster == void 0) {
|
|
23291
23291
|
return b`
|
|
23292
23292
|
<dashboard-header title="Not found" .client=${this.client} backButton="#"></dashboard-header>
|
|
@@ -23299,9 +23299,10 @@ let MatterClusterView = class extends i$4 {
|
|
|
23299
23299
|
}
|
|
23300
23300
|
const fabricIndex = getEffectiveFabricIndex(this.client.serverInfo.fabric_index, isTestNodeId(this.node.node_id));
|
|
23301
23301
|
const nodeHex = formatNodeAddress(fabricIndex, this.node.node_id);
|
|
23302
|
+
const clusterName = ((_clusters$this$cluste = clusters[this.cluster]) === null || _clusters$this$cluste === void 0 ? void 0 : _clusters$this$cluste.label) ?? "Custom/Unknown Cluster";
|
|
23302
23303
|
return b`
|
|
23303
23304
|
<dashboard-header
|
|
23304
|
-
.title=${`Node ${this.node.node_id} ${nodeHex} | Endpoint ${this.endpoint} | Cluster ${this.cluster}`}
|
|
23305
|
+
.title=${`Node ${this.node.node_id} ${nodeHex} | Endpoint ${this.endpoint} | Cluster ${this.cluster} (${clusterName})`}
|
|
23305
23306
|
.backButton=${`#node/${this.node.node_id}/${this.endpoint}`}
|
|
23306
23307
|
.client=${this.client}
|
|
23307
23308
|
></dashboard-header>
|
|
@@ -23323,7 +23324,7 @@ let MatterClusterView = class extends i$4 {
|
|
|
23323
23324
|
<md-list-item>
|
|
23324
23325
|
<div slot="headline">
|
|
23325
23326
|
<b
|
|
23326
|
-
>Attributes of ${((_clusters$this$
|
|
23327
|
+
>Attributes of ${((_clusters$this$cluste2 = clusters[this.cluster]) === null || _clusters$this$cluste2 === void 0 ? void 0 : _clusters$this$cluste2.label) ?? "Custom/Unknown Cluster"} Cluster on
|
|
23327
23328
|
Endpoint ${this.endpoint}</b
|
|
23328
23329
|
>
|
|
23329
23330
|
</div>
|
|
@@ -23331,15 +23332,15 @@ let MatterClusterView = class extends i$4 {
|
|
|
23331
23332
|
</md-list-item>
|
|
23332
23333
|
<md-divider></md-divider>
|
|
23333
23334
|
${clusterAttributes(this.node.attributes, this.endpoint, this.cluster).map((attribute, index) => {
|
|
23334
|
-
var _clusters$this$
|
|
23335
|
+
var _clusters$this$cluste3, _clusters$this$cluste4;
|
|
23335
23336
|
return b`
|
|
23336
23337
|
<md-list-item class=${index % 2 === 1 ? "alternate-row" : ""}>
|
|
23337
23338
|
<div slot="headline">
|
|
23338
|
-
${((_clusters$this$
|
|
23339
|
+
${((_clusters$this$cluste3 = clusters[this.cluster]) === null || _clusters$this$cluste3 === void 0 || (_clusters$this$cluste3 = _clusters$this$cluste3.attributes[attribute.key]) === null || _clusters$this$cluste3 === void 0 ? void 0 : _clusters$this$cluste3.label) ?? "Custom/Unknown Attribute"}
|
|
23339
23340
|
</div>
|
|
23340
23341
|
<div slot="supporting-text">
|
|
23341
23342
|
AttributeId: ${attribute.key} (${formatHex(attribute.key)}) - Value type:
|
|
23342
|
-
${((_clusters$this$
|
|
23343
|
+
${((_clusters$this$cluste4 = clusters[this.cluster]) === null || _clusters$this$cluste4 === void 0 || (_clusters$this$cluste4 = _clusters$this$cluste4.attributes[attribute.key]) === null || _clusters$this$cluste4 === void 0 ? void 0 : _clusters$this$cluste4.type) ?? "unknown"}
|
|
23343
23344
|
</div>
|
|
23344
23345
|
<div slot="end" class="row-end">
|
|
23345
23346
|
${this._devMode ? this._renderAttributeDevActions(attribute.key, attribute.value) : A}
|
|
@@ -23359,8 +23360,8 @@ let MatterClusterView = class extends i$4 {
|
|
|
23359
23360
|
`;
|
|
23360
23361
|
}
|
|
23361
23362
|
_renderAttributeDevActions(attributeId, currentValue) {
|
|
23362
|
-
var _clusters$this$
|
|
23363
|
-
const meta = (_clusters$this$
|
|
23363
|
+
var _clusters$this$cluste5, _this$node;
|
|
23364
|
+
const meta = (_clusters$this$cluste5 = clusters[this.cluster]) === null || _clusters$this$cluste5 === void 0 ? void 0 : _clusters$this$cluste5.attributes[attributeId];
|
|
23364
23365
|
const online = ((_this$node = this.node) === null || _this$node === void 0 ? void 0 : _this$node.available) === true;
|
|
23365
23366
|
const state2 = this._refreshState[attributeId] ?? "idle";
|
|
23366
23367
|
const refreshClasses = `dev-action refresh refresh-${state2}`;
|
|
@@ -23453,7 +23454,7 @@ let MatterClusterView = class extends i$4 {
|
|
|
23453
23454
|
const clusterMeta = this.cluster !== void 0 ? clusters[this.cluster] : void 0;
|
|
23454
23455
|
const rawAcceptedList = (_this$node3 = this.node) === null || _this$node3 === void 0 ? void 0 : _this$node3.attributes[`${this.endpoint}/${this.cluster}/${ACCEPTED_COMMAND_LIST_ATTR}`];
|
|
23455
23456
|
const acceptedList = Array.isArray(rawAcceptedList) ? rawAcceptedList : [];
|
|
23456
|
-
const commands = acceptedList.map(id => clusterMeta === null || clusterMeta === void 0 ? void 0 : clusterMeta.commands[id]).filter(cmd => cmd !== void 0);
|
|
23457
|
+
const commands = acceptedList.map(id => clusterMeta === null || clusterMeta === void 0 ? void 0 : clusterMeta.commands[id]).filter(cmd => cmd !== void 0).sort((a, b) => a.id - b.id);
|
|
23457
23458
|
const online = ((_this$node4 = this.node) === null || _this$node4 === void 0 ? void 0 : _this$node4.available) === true;
|
|
23458
23459
|
return b`
|
|
23459
23460
|
<div class="container">
|
|
@@ -23477,7 +23478,7 @@ let MatterClusterView = class extends i$4 {
|
|
|
23477
23478
|
<md-outlined-button
|
|
23478
23479
|
class="dev-invoke-button"
|
|
23479
23480
|
?disabled=${!online}
|
|
23480
|
-
@click=${() => this._openCommandInvokeDialog(cmd.
|
|
23481
|
+
@click=${() => this._openCommandInvokeDialog(cmd.id, cmd.name)}
|
|
23481
23482
|
>
|
|
23482
23483
|
<ha-svg-icon slot="icon" .path=${mdiPlay}></ha-svg-icon>
|
|
23483
23484
|
Invoke
|
|
@@ -23491,15 +23492,15 @@ let MatterClusterView = class extends i$4 {
|
|
|
23491
23492
|
</div>
|
|
23492
23493
|
`;
|
|
23493
23494
|
}
|
|
23494
|
-
_openCommandInvokeDialog(
|
|
23495
|
+
_openCommandInvokeDialog(commandId, commandName) {
|
|
23495
23496
|
if (!this.node || this.cluster === void 0) return;
|
|
23496
23497
|
showCommandInvokeDialog({
|
|
23497
23498
|
client: this.client,
|
|
23498
23499
|
nodeId: this.node.node_id,
|
|
23499
23500
|
endpointId: this.endpoint,
|
|
23500
23501
|
clusterId: this.cluster,
|
|
23501
|
-
|
|
23502
|
-
|
|
23502
|
+
commandId,
|
|
23503
|
+
commandName
|
|
23503
23504
|
});
|
|
23504
23505
|
}
|
|
23505
23506
|
async _showAttributeValue(value) {
|
|
@@ -23721,6 +23722,11 @@ MatterClusterView.styles = [notFoundStyles, i$7`
|
|
|
23721
23722
|
padding: 8px 12px;
|
|
23722
23723
|
background: var(--md-sys-color-surface-container-low);
|
|
23723
23724
|
border-radius: 8px;
|
|
23725
|
+
transition: background 120ms ease-out;
|
|
23726
|
+
}
|
|
23727
|
+
|
|
23728
|
+
.command-row:hover {
|
|
23729
|
+
background: color-mix(in srgb, var(--dev-color) 12%, var(--md-sys-color-surface-container-low));
|
|
23724
23730
|
}
|
|
23725
23731
|
|
|
23726
23732
|
.dev-invoke-button {
|
|
@@ -36067,7 +36073,7 @@ MatterNodeView = __decorateClass$3([t$1("matter-node-view")], MatterNodeView);
|
|
|
36067
36073
|
*/
|
|
36068
36074
|
const showCommissionNodeDialog = async client => {
|
|
36069
36075
|
var _document$querySelect;
|
|
36070
|
-
await import('./commission-node-dialog-
|
|
36076
|
+
await import('./commission-node-dialog-Bg3oo5ub.js');
|
|
36071
36077
|
const dialog = document.createElement("commission-node-dialog");
|
|
36072
36078
|
dialog.client = client;
|
|
36073
36079
|
(_document$querySelect = document.querySelector("matter-dashboard-app")) === null || _document$querySelect === void 0 || _document$querySelect.renderRoot.appendChild(dialog);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { q as i, P as c, Q as clientContext, n, d as e, i as i$1, R as showPromptDialog, J as showAlertDialog, A, j as b, K as handleAsync, t } from './matter-dashboard-app-
|
|
1
|
+
import { q as i, P as c, Q as clientContext, n, d as e, i as i$1, R as showPromptDialog, J as showAlertDialog, A, j as b, K as handleAsync, t } from './matter-dashboard-app-Cj88TtbZ.js';
|
|
2
2
|
import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e, m as mixinDelegatesAria, a as mixinConstraintValidation, b as mixinFormAssociated, c as mixinElementInternals, i, _ as __decorate, n as n$1, d as e$1, f as isActivationClick, g as dispatchActivationClick, A, h as e$2, j as b, r as redispatchEvent, k as getFormValue, l as getFormState, o as createValidator, C as CheckboxValidator, p as getValidityAnchor, q as i$1, t, N as NavigableKeys, s as o, u as r, v as createAnimationSignal, L as ListController, w as getActiveItem, x as getLastActivatableItem, y as getFirstActivatableItem, z as o$1, E as EASING, V as Validator, D, B as mixinOnReportValidity, F as onReportValidity, G as u, H as i$2, I as fireAndForget, J as showAlertDialog, K as handleAsync, M as DevModeService } from './matter-dashboard-app-
|
|
1
|
+
import { e, m as mixinDelegatesAria, a as mixinConstraintValidation, b as mixinFormAssociated, c as mixinElementInternals, i, _ as __decorate, n as n$1, d as e$1, f as isActivationClick, g as dispatchActivationClick, A, h as e$2, j as b, r as redispatchEvent, k as getFormValue, l as getFormState, o as createValidator, C as CheckboxValidator, p as getValidityAnchor, q as i$1, t, N as NavigableKeys, s as o, u as r, v as createAnimationSignal, L as ListController, w as getActiveItem, x as getLastActivatableItem, y as getFirstActivatableItem, z as o$1, E as EASING, V as Validator, D, B as mixinOnReportValidity, F as onReportValidity, G as u, H as i$2, I as fireAndForget, J as showAlertDialog, K as handleAsync, M as DevModeService } from './matter-dashboard-app-Cj88TtbZ.js';
|
|
2
2
|
import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter-server/dashboard",
|
|
3
|
-
"version": "0.6.2-alpha.0-
|
|
3
|
+
"version": "0.6.2-alpha.0-20260426-e2eae3d",
|
|
4
4
|
"description": "Dashboard for OHF Matter Server",
|
|
5
5
|
"homepage": "https://github.com/matter-js/matterjs-server",
|
|
6
6
|
"bugs": {
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@lit/context": "^1.1.6",
|
|
35
35
|
"@material/web": "^2.4.1",
|
|
36
|
-
"@matter-server/custom-clusters": "0.6.2-alpha.0-
|
|
37
|
-
"@matter-server/ws-client": "0.6.2-alpha.0-
|
|
36
|
+
"@matter-server/custom-clusters": "0.6.2-alpha.0-20260426-e2eae3d",
|
|
37
|
+
"@matter-server/ws-client": "0.6.2-alpha.0-20260426-e2eae3d",
|
|
38
38
|
"@mdi/js": "^7.4.47",
|
|
39
39
|
"lit": "^3.3.2",
|
|
40
40
|
"tslib": "^2.8.1",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@babel/preset-env": "^7.29.2",
|
|
45
|
-
"@matter/main": "0.17.0-alpha.0-
|
|
45
|
+
"@matter/main": "0.17.0-alpha.0-20260424-020222527",
|
|
46
46
|
"@rollup/plugin-babel": "^7.0.0",
|
|
47
47
|
"@rollup/plugin-commonjs": "^29.0.2",
|
|
48
48
|
"@rollup/plugin-json": "^6.1.0",
|
|
@@ -23,12 +23,13 @@ export class CommandInvokeDialog extends LitElement {
|
|
|
23
23
|
@property({ type: Number }) public nodeId!: number | bigint;
|
|
24
24
|
@property({ type: Number }) public endpointId!: number;
|
|
25
25
|
@property({ type: Number }) public clusterId!: number;
|
|
26
|
+
@property({ type: Number }) public commandId!: number;
|
|
26
27
|
@property({ type: String }) public commandName!: string;
|
|
27
|
-
@property({ type: String }) public commandLabel!: string;
|
|
28
28
|
|
|
29
29
|
@state() private _busy = false;
|
|
30
30
|
@state() private _error: string | null = null;
|
|
31
31
|
@state() private _response: string | null = null;
|
|
32
|
+
@state() private _success = false;
|
|
32
33
|
|
|
33
34
|
@query("textarea") private _textarea!: HTMLTextAreaElement;
|
|
34
35
|
|
|
@@ -50,6 +51,7 @@ export class CommandInvokeDialog extends LitElement {
|
|
|
50
51
|
|
|
51
52
|
private async _invoke() {
|
|
52
53
|
this._error = null;
|
|
54
|
+
this._success = false;
|
|
53
55
|
const parsed = parseJsonPayload(this._textarea.value);
|
|
54
56
|
if (!parsed.ok) {
|
|
55
57
|
this._error = `Invalid JSON: ${parsed.error}`;
|
|
@@ -71,11 +73,18 @@ export class CommandInvokeDialog extends LitElement {
|
|
|
71
73
|
this.commandName,
|
|
72
74
|
payload,
|
|
73
75
|
);
|
|
74
|
-
|
|
76
|
+
if (result === null || result === undefined) {
|
|
77
|
+
this._success = true;
|
|
78
|
+
this._response = null;
|
|
79
|
+
} else {
|
|
80
|
+
this._response = toBigIntAwareJson(result, 2);
|
|
81
|
+
this._success = false;
|
|
82
|
+
}
|
|
75
83
|
this._error = null;
|
|
76
84
|
} catch (err) {
|
|
77
85
|
this._error = err instanceof Error ? err.message : String(err);
|
|
78
86
|
this._response = null;
|
|
87
|
+
this._success = false;
|
|
79
88
|
} finally {
|
|
80
89
|
this._busy = false;
|
|
81
90
|
}
|
|
@@ -84,11 +93,14 @@ export class CommandInvokeDialog extends LitElement {
|
|
|
84
93
|
protected override render() {
|
|
85
94
|
return html`
|
|
86
95
|
<md-dialog open @cancel=${preventDefault} @closed=${this._handleClosed}>
|
|
87
|
-
<div slot="headline">Invoke ${this.
|
|
96
|
+
<div slot="headline">Invoke ${this.commandName}</div>
|
|
88
97
|
<div slot="content">
|
|
89
98
|
<p class="path" id="invoke-path">
|
|
90
99
|
Cluster <code>${this.clusterId}</code> (${formatHex(this.clusterId)}) · Endpoint
|
|
91
|
-
<code>${this.endpointId}</code> · Command <code>${this.
|
|
100
|
+
<code>${this.endpointId}</code> · Command <code>${this.commandId}</code> (${formatHex(
|
|
101
|
+
this.commandId,
|
|
102
|
+
)})
|
|
103
|
+
· <code>${this.commandName}</code>
|
|
92
104
|
</p>
|
|
93
105
|
<label class="textarea-label" for="payload">Payload (JSON)</label>
|
|
94
106
|
<textarea
|
|
@@ -103,6 +115,7 @@ export class CommandInvokeDialog extends LitElement {
|
|
|
103
115
|
${this._error
|
|
104
116
|
? html`<div id="invoke-error" class="error" role="alert">${this._error}</div>`
|
|
105
117
|
: nothing}
|
|
118
|
+
${this._success ? html`<div class="success" role="status">Success</div>` : nothing}
|
|
106
119
|
${this._response !== null
|
|
107
120
|
? html`
|
|
108
121
|
<label class="textarea-label">Response</label>
|
|
@@ -177,6 +190,17 @@ export class CommandInvokeDialog extends LitElement {
|
|
|
177
190
|
word-break: break-word;
|
|
178
191
|
}
|
|
179
192
|
|
|
193
|
+
.success {
|
|
194
|
+
margin-top: 10px;
|
|
195
|
+
padding: 10px 12px;
|
|
196
|
+
background: color-mix(in srgb, var(--success-color) 18%, transparent);
|
|
197
|
+
color: var(--success-color);
|
|
198
|
+
border: 1px solid color-mix(in srgb, var(--success-color) 40%, transparent);
|
|
199
|
+
border-radius: 6px;
|
|
200
|
+
font-size: 0.9rem;
|
|
201
|
+
font-weight: 500;
|
|
202
|
+
}
|
|
203
|
+
|
|
180
204
|
.response {
|
|
181
205
|
margin: 6px 0 0 0;
|
|
182
206
|
padding: 10px 12px;
|
|
@@ -11,8 +11,8 @@ export interface ShowCommandInvokeDialogOptions {
|
|
|
11
11
|
nodeId: number | bigint;
|
|
12
12
|
endpointId: number;
|
|
13
13
|
clusterId: number;
|
|
14
|
+
commandId: number;
|
|
14
15
|
commandName: string;
|
|
15
|
-
commandLabel: string;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export const showCommandInvokeDialog = async (options: ShowCommandInvokeDialogOptions) => {
|
|
@@ -22,7 +22,7 @@ export const showCommandInvokeDialog = async (options: ShowCommandInvokeDialogOp
|
|
|
22
22
|
dialog.nodeId = options.nodeId;
|
|
23
23
|
dialog.endpointId = options.endpointId;
|
|
24
24
|
dialog.clusterId = options.clusterId;
|
|
25
|
+
dialog.commandId = options.commandId;
|
|
25
26
|
dialog.commandName = options.commandName;
|
|
26
|
-
dialog.commandLabel = options.commandLabel;
|
|
27
27
|
document.querySelector("matter-dashboard-app")?.renderRoot.appendChild(dialog);
|
|
28
28
|
};
|
|
@@ -124,9 +124,11 @@ class MatterClusterView extends LitElement {
|
|
|
124
124
|
);
|
|
125
125
|
const nodeHex = formatNodeAddress(fabricIndex, this.node.node_id);
|
|
126
126
|
|
|
127
|
+
const clusterName = clusters[this.cluster]?.label ?? "Custom/Unknown Cluster";
|
|
128
|
+
|
|
127
129
|
return html`
|
|
128
130
|
<dashboard-header
|
|
129
|
-
.title=${`Node ${this.node.node_id} ${nodeHex} | Endpoint ${this.endpoint} | Cluster ${this.cluster}`}
|
|
131
|
+
.title=${`Node ${this.node.node_id} ${nodeHex} | Endpoint ${this.endpoint} | Cluster ${this.cluster} (${clusterName})`}
|
|
130
132
|
.backButton=${`#node/${this.node.node_id}/${this.endpoint}`}
|
|
131
133
|
.client=${this.client}
|
|
132
134
|
></dashboard-header>
|
|
@@ -277,7 +279,8 @@ class MatterClusterView extends LitElement {
|
|
|
277
279
|
|
|
278
280
|
const commands = acceptedList
|
|
279
281
|
.map(id => clusterMeta?.commands[id])
|
|
280
|
-
.filter((cmd): cmd is NonNullable<typeof cmd> => cmd !== undefined)
|
|
282
|
+
.filter((cmd): cmd is NonNullable<typeof cmd> => cmd !== undefined)
|
|
283
|
+
.sort((a, b) => a.id - b.id);
|
|
281
284
|
|
|
282
285
|
const online = this.node?.available === true;
|
|
283
286
|
|
|
@@ -306,7 +309,7 @@ class MatterClusterView extends LitElement {
|
|
|
306
309
|
<md-outlined-button
|
|
307
310
|
class="dev-invoke-button"
|
|
308
311
|
?disabled=${!online}
|
|
309
|
-
@click=${() => this._openCommandInvokeDialog(cmd.
|
|
312
|
+
@click=${() => this._openCommandInvokeDialog(cmd.id, cmd.name)}
|
|
310
313
|
>
|
|
311
314
|
<ha-svg-icon slot="icon" .path=${mdiPlay}></ha-svg-icon>
|
|
312
315
|
Invoke
|
|
@@ -322,15 +325,15 @@ class MatterClusterView extends LitElement {
|
|
|
322
325
|
`;
|
|
323
326
|
}
|
|
324
327
|
|
|
325
|
-
private _openCommandInvokeDialog(
|
|
328
|
+
private _openCommandInvokeDialog(commandId: number, commandName: string) {
|
|
326
329
|
if (!this.node || this.cluster === undefined) return;
|
|
327
330
|
showCommandInvokeDialog({
|
|
328
331
|
client: this.client,
|
|
329
332
|
nodeId: this.node.node_id,
|
|
330
333
|
endpointId: this.endpoint,
|
|
331
334
|
clusterId: this.cluster,
|
|
335
|
+
commandId,
|
|
332
336
|
commandName,
|
|
333
|
-
commandLabel,
|
|
334
337
|
});
|
|
335
338
|
}
|
|
336
339
|
|
|
@@ -564,6 +567,11 @@ class MatterClusterView extends LitElement {
|
|
|
564
567
|
padding: 8px 12px;
|
|
565
568
|
background: var(--md-sys-color-surface-container-low);
|
|
566
569
|
border-radius: 8px;
|
|
570
|
+
transition: background 120ms ease-out;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
.command-row:hover {
|
|
574
|
+
background: color-mix(in srgb, var(--dev-color) 12%, var(--md-sys-color-surface-container-low));
|
|
567
575
|
}
|
|
568
576
|
|
|
569
577
|
.dev-invoke-button {
|