@matter-server/dashboard 0.4.3 → 0.4.4-alpha.1-20260305-5ca8493
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/pages/matter-network-view.d.ts +5 -0
- package/dist/esm/pages/matter-network-view.d.ts.map +1 -1
- package/dist/esm/pages/matter-network-view.js +151 -17
- package/dist/esm/pages/matter-network-view.js.map +1 -1
- package/dist/esm/pages/network/network-details.d.ts.map +1 -1
- package/dist/esm/pages/network/network-details.js +13 -1
- package/dist/esm/pages/network/network-details.js.map +1 -1
- package/dist/esm/pages/network/thread-graph.d.ts +9 -0
- package/dist/esm/pages/network/thread-graph.d.ts.map +1 -1
- package/dist/esm/pages/network/thread-graph.js +44 -0
- package/dist/esm/pages/network/thread-graph.js.map +1 -1
- package/dist/web/js/{commission-node-dialog-B6Ea1C19.js → commission-node-dialog-BHKkNVcj.js} +4 -4
- package/dist/web/js/{commission-node-existing-DVvXIWaS.js → commission-node-existing-Bh-9N-xZ.js} +2 -2
- package/dist/web/js/{commission-node-thread-Xs9aUW8N.js → commission-node-thread-DxT2sLWw.js} +2 -2
- package/dist/web/js/{commission-node-wifi-D7BmNtOv.js → commission-node-wifi-R6LeozCS.js} +2 -2
- package/dist/web/js/{dialog-box-BkoIi0py.js → dialog-box-yU3Oc-AR.js} +1 -1
- package/dist/web/js/{fire_event-BL-qtWHq.js → fire_event-ZsNu_mOn.js} +1 -1
- package/dist/web/js/{log-level-dialog-Cli8wukh.js → log-level-dialog-Bpt-9T42.js} +1 -1
- package/dist/web/js/main.js +1 -1
- package/dist/web/js/{matter-dashboard-app-nMzexef3.js → matter-dashboard-app-D9iOhimm.js} +204 -22
- package/dist/web/js/{node-binding-dialog-zQBMZf8W.js → node-binding-dialog-DnwW3RpY.js} +1 -1
- package/package.json +3 -3
- package/src/pages/matter-network-view.ts +164 -17
- package/src/pages/network/network-details.ts +24 -10
- package/src/pages/network/thread-graph.ts +55 -0
|
@@ -29,6 +29,8 @@ declare class MatterNetworkView extends LitElement {
|
|
|
29
29
|
hasWifiDevices?: boolean;
|
|
30
30
|
private _selectedNodeId;
|
|
31
31
|
private _physicsEnabled;
|
|
32
|
+
private _threadAddressSearch;
|
|
33
|
+
private _threadAddressSearchStatus;
|
|
32
34
|
private _initialSelectionApplied;
|
|
33
35
|
private _selectRetryTimer?;
|
|
34
36
|
private _threadGraph?;
|
|
@@ -48,6 +50,9 @@ declare class MatterNetworkView extends LitElement {
|
|
|
48
50
|
private _handleZoomOut;
|
|
49
51
|
private _handleTogglePhysics;
|
|
50
52
|
private _handlePhysicsChanged;
|
|
53
|
+
private _handleThreadAddressSearchInput;
|
|
54
|
+
private _handleThreadAddressSearchSubmit;
|
|
55
|
+
private _searchThreadAddressWhenReady;
|
|
51
56
|
private _renderThreadView;
|
|
52
57
|
private _renderWifiView;
|
|
53
58
|
render(): import("lit-html").TemplateResult<1>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matter-network-view.d.ts","sourceRoot":"","sources":["../../../src/pages/matter-network-view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAa,UAAU,EAAE,MAAM,KAAK,CAAC;AAE5C,OAAO,2BAA2B,CAAC;AACnC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,wBAAwB,CAAC;AAChC,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAEhC,OAAO,sBAAsB,CAAC;AAG9B,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,qBAAqB,EAAE,iBAAiB,CAAC;KAC5C;CACJ;AAED,cACM,iBAAkB,SAAQ,UAAU;IAC/B,MAAM,EAAG,YAAY,CAAC;IAGtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAM;IAGvC,UAAU,CAAC,EAAE,UAAU,CAAC;IAGxB,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAY;IAEjD,gFAAgF;IAEzE,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,cAAc,CAAC,EAAE,OAAO,CAAC;IAGhC,OAAO,CAAC,eAAe,CAAgC;IAGvD,OAAO,CAAC,eAAe,CAAQ;
|
|
1
|
+
{"version":3,"file":"matter-network-view.d.ts","sourceRoot":"","sources":["../../../src/pages/matter-network-view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAa,UAAU,EAAE,MAAM,KAAK,CAAC;AAE5C,OAAO,2BAA2B,CAAC;AACnC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,wBAAwB,CAAC;AAChC,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAEhC,OAAO,sBAAsB,CAAC;AAG9B,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,qBAAqB,EAAE,iBAAiB,CAAC;KAC5C;CACJ;AAED,cACM,iBAAkB,SAAQ,UAAU;IAC/B,MAAM,EAAG,YAAY,CAAC;IAGtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAM;IAGvC,UAAU,CAAC,EAAE,UAAU,CAAC;IAGxB,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAY;IAEjD,gFAAgF;IAEzE,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,cAAc,CAAC,EAAE,OAAO,CAAC;IAGhC,OAAO,CAAC,eAAe,CAAgC;IAGvD,OAAO,CAAC,eAAe,CAAQ;IAG/B,OAAO,CAAC,oBAAoB,CAAM;IAGlC,OAAO,CAAC,0BAA0B,CAA0C;IAE5E,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,iBAAiB,CAAC,CAAgC;IAG1D,OAAO,CAAC,YAAY,CAAC,CAAc;IAGnC,OAAO,CAAC,UAAU,CAAC,CAAY;IAEtB,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAQzD,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAWtD,oBAAoB,IAAI,IAAI;IAOrC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,+BAA+B;IAKvC,OAAO,CAAC,gCAAgC;IAYxC,OAAO,CAAC,6BAA6B;IAmBrC,OAAO,CAAC,iBAAiB;IAwDzB,OAAO,CAAC,eAAe;IAiCd,MAAM;IAmCf,OAAgB,MAAM,0BAqOpB;CACL"}
|
|
@@ -31,6 +31,8 @@ let MatterNetworkView = class extends LitElement {
|
|
|
31
31
|
this.initialSelectedNodeId = null;
|
|
32
32
|
this._selectedNodeId = null;
|
|
33
33
|
this._physicsEnabled = true;
|
|
34
|
+
this._threadAddressSearch = "";
|
|
35
|
+
this._threadAddressSearchStatus = "idle";
|
|
34
36
|
this._initialSelectionApplied = false;
|
|
35
37
|
}
|
|
36
38
|
willUpdate(changedProperties) {
|
|
@@ -110,30 +112,74 @@ let MatterNetworkView = class extends LitElement {
|
|
|
110
112
|
this._threadGraph?.setPhysicsEnabled(event.detail.enabled);
|
|
111
113
|
this._wifiGraph?.setPhysicsEnabled(event.detail.enabled);
|
|
112
114
|
}
|
|
115
|
+
_handleThreadAddressSearchInput(event) {
|
|
116
|
+
this._threadAddressSearch = event.target.value;
|
|
117
|
+
this._threadAddressSearchStatus = "idle";
|
|
118
|
+
}
|
|
119
|
+
_handleThreadAddressSearchSubmit(event) {
|
|
120
|
+
event.preventDefault();
|
|
121
|
+
const searchValue = this._threadAddressSearch.trim();
|
|
122
|
+
if (!searchValue) {
|
|
123
|
+
this._threadAddressSearchStatus = "idle";
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
this._searchThreadAddressWhenReady(searchValue);
|
|
127
|
+
}
|
|
128
|
+
_searchThreadAddressWhenReady(searchValue, retries = 10) {
|
|
129
|
+
const graph = this._threadGraph;
|
|
130
|
+
if (!graph?.isReady()) {
|
|
131
|
+
if (retries > 0) {
|
|
132
|
+
this._selectRetryTimer = setTimeout(
|
|
133
|
+
() => this._searchThreadAddressWhenReady(searchValue, retries - 1),
|
|
134
|
+
100
|
|
135
|
+
);
|
|
136
|
+
} else {
|
|
137
|
+
this._threadAddressSearchStatus = "not-found";
|
|
138
|
+
}
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const found = graph.selectByExtendedAddress(searchValue);
|
|
142
|
+
this._threadAddressSearchStatus = found ? "found" : "not-found";
|
|
143
|
+
}
|
|
113
144
|
_renderThreadView() {
|
|
114
145
|
return html`
|
|
115
146
|
<div class="graph-section">
|
|
116
147
|
<div class="graph-header">
|
|
117
148
|
<h2>Thread Network Mesh</h2>
|
|
118
|
-
<div class="graph-
|
|
119
|
-
<
|
|
120
|
-
<
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
@click=${this.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
<
|
|
134
|
-
|
|
149
|
+
<div class="graph-actions">
|
|
150
|
+
<form class="thread-search" @submit=${this._handleThreadAddressSearchSubmit}>
|
|
151
|
+
<input
|
|
152
|
+
type="text"
|
|
153
|
+
.value=${this._threadAddressSearch}
|
|
154
|
+
@input=${this._handleThreadAddressSearchInput}
|
|
155
|
+
placeholder="Search extended address"
|
|
156
|
+
title="Find device by Thread extended address (EUI-64)"
|
|
157
|
+
/>
|
|
158
|
+
<button type="submit" class="search-button">Find</button>
|
|
159
|
+
</form>
|
|
160
|
+
<div class="graph-controls">
|
|
161
|
+
<button class="control-button" @click=${this._handleZoomIn} title="Zoom in">
|
|
162
|
+
<ha-svg-icon .path=${mdiMagnifyPlus}></ha-svg-icon>
|
|
163
|
+
</button>
|
|
164
|
+
<button class="control-button" @click=${this._handleZoomOut} title="Zoom out">
|
|
165
|
+
<ha-svg-icon .path=${mdiMagnifyMinus}></ha-svg-icon>
|
|
166
|
+
</button>
|
|
167
|
+
<button class="control-button" @click=${this._handleFitToScreen} title="Fit to screen">
|
|
168
|
+
<ha-svg-icon .path=${mdiFitToScreen}></ha-svg-icon>
|
|
169
|
+
</button>
|
|
170
|
+
<button
|
|
171
|
+
class="control-button ${this._physicsEnabled ? "" : "active"}"
|
|
172
|
+
@click=${this._handleTogglePhysics}
|
|
173
|
+
title="${this._physicsEnabled ? "Freeze layout" : "Unfreeze layout"}"
|
|
174
|
+
>
|
|
175
|
+
<ha-svg-icon .path=${this._physicsEnabled ? mdiPause : mdiPlay}></ha-svg-icon>
|
|
176
|
+
</button>
|
|
177
|
+
</div>
|
|
135
178
|
</div>
|
|
136
179
|
</div>
|
|
180
|
+
${this._threadAddressSearchStatus === "idle" ? "" : html`<div class="thread-search-status ${this._threadAddressSearchStatus}">
|
|
181
|
+
${this._threadAddressSearchStatus === "found" ? "Node highlighted." : "No matching extended address found."}
|
|
182
|
+
</div>`}
|
|
137
183
|
<thread-graph
|
|
138
184
|
.nodes=${this.nodes}
|
|
139
185
|
@node-selected=${this._handleNodeSelected}
|
|
@@ -268,6 +314,63 @@ MatterNetworkView.styles = css`
|
|
|
268
314
|
gap: 4px;
|
|
269
315
|
}
|
|
270
316
|
|
|
317
|
+
.graph-actions {
|
|
318
|
+
display: flex;
|
|
319
|
+
align-items: center;
|
|
320
|
+
gap: 8px;
|
|
321
|
+
min-width: 0;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.thread-search {
|
|
325
|
+
display: flex;
|
|
326
|
+
align-items: center;
|
|
327
|
+
gap: 4px;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.thread-search input {
|
|
331
|
+
width: 260px;
|
|
332
|
+
max-width: 45vw;
|
|
333
|
+
padding: 6px 8px;
|
|
334
|
+
border: 1px solid var(--md-sys-color-outline-variant, #ccc);
|
|
335
|
+
border-radius: 4px;
|
|
336
|
+
background-color: var(--md-sys-color-surface, #fff);
|
|
337
|
+
color: var(--md-sys-color-on-surface, #1c1b1f);
|
|
338
|
+
font: inherit;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.thread-search input:focus {
|
|
342
|
+
outline: 2px solid var(--md-sys-color-primary, #6750a4);
|
|
343
|
+
outline-offset: 1px;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.search-button {
|
|
347
|
+
padding: 6px 10px;
|
|
348
|
+
border: 1px solid var(--md-sys-color-outline-variant, #ccc);
|
|
349
|
+
border-radius: 4px;
|
|
350
|
+
background-color: var(--md-sys-color-surface, #fff);
|
|
351
|
+
color: var(--md-sys-color-on-surface, #1c1b1f);
|
|
352
|
+
cursor: pointer;
|
|
353
|
+
font: inherit;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
.search-button:hover {
|
|
357
|
+
background-color: var(--md-sys-color-surface-container-high, #e8e8e8);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.thread-search-status {
|
|
361
|
+
margin: 0 0 6px;
|
|
362
|
+
font-size: 0.85rem;
|
|
363
|
+
color: var(--md-sys-color-on-surface-variant, #666);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.thread-search-status.found {
|
|
367
|
+
color: #2e7d32;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
.thread-search-status.not-found {
|
|
371
|
+
color: #c62828;
|
|
372
|
+
}
|
|
373
|
+
|
|
271
374
|
.control-button {
|
|
272
375
|
background: none;
|
|
273
376
|
border: 1px solid var(--md-sys-color-outline-variant, #ccc);
|
|
@@ -354,6 +457,31 @@ MatterNetworkView.styles = css`
|
|
|
354
457
|
.content {
|
|
355
458
|
padding: 8px;
|
|
356
459
|
}
|
|
460
|
+
|
|
461
|
+
.graph-header {
|
|
462
|
+
align-items: flex-start;
|
|
463
|
+
gap: 6px;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.graph-actions {
|
|
467
|
+
flex-direction: column;
|
|
468
|
+
align-items: stretch;
|
|
469
|
+
width: 100%;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
.thread-search {
|
|
473
|
+
width: 100%;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
.thread-search input {
|
|
477
|
+
flex: 1 1 auto;
|
|
478
|
+
width: auto;
|
|
479
|
+
max-width: none;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
.graph-controls {
|
|
483
|
+
justify-content: flex-end;
|
|
484
|
+
}
|
|
357
485
|
}
|
|
358
486
|
`;
|
|
359
487
|
__decorateClass([
|
|
@@ -380,6 +508,12 @@ __decorateClass([
|
|
|
380
508
|
__decorateClass([
|
|
381
509
|
state()
|
|
382
510
|
], MatterNetworkView.prototype, "_physicsEnabled", 2);
|
|
511
|
+
__decorateClass([
|
|
512
|
+
state()
|
|
513
|
+
], MatterNetworkView.prototype, "_threadAddressSearch", 2);
|
|
514
|
+
__decorateClass([
|
|
515
|
+
state()
|
|
516
|
+
], MatterNetworkView.prototype, "_threadAddressSearchStatus", 2);
|
|
383
517
|
__decorateClass([
|
|
384
518
|
query("thread-graph")
|
|
385
519
|
], MatterNetworkView.prototype, "_threadGraph", 2);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/pages/matter-network-view.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,gBAAgB,iBAAiB,gBAAgB,UAAU,eAAe;AACnF,SAAS,KAAK,MAAM,kBAAkB;AACtC,SAAS,eAAe,UAAU,OAAO,aAAa;AACtD,OAAO;AACP,OAAO;AACP,OAAO;AAEP,OAAO;AACP,OAAO;AACP,OAAO;AAEP,OAAO;AAUP,IAAM,oBAAN,cAAgC,WAAW;AAAA,EAA3C;AAAA;AAII,SAAO,QAAoC,CAAC;AAM5C,SAAO,cAAiC;AAIxC,SAAO,wBAAuC;AAS9C,SAAQ,kBAA0C;AAGlD,SAAQ,kBAAkB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-details.d.ts","sourceRoot":"","sources":["../../../../src/pages/network/network-details.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,+BAA+B,CAAC;AACvC,OAAO,EAAmC,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAE,cAAc,EAAsB,MAAM,KAAK,CAAC;AAGrE,OAAO,8BAA8B,CAAC;AAsBtC,OAAO,gCAAgC,CAAC;AAExC,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,iBAAiB,EAAE,cAAc,CAAC;KACrC;CACJ;AAED,qBACa,cAAe,SAAQ,UAAU;IAEnC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAQ;IAG9C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAM;IAGvC,cAAc,EAAE,GAAG,CACtB,MAAM,EACN;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAC1F,CAAa;IAGP,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAa;IAG9F,OAAO,CAAC,MAAM,CAAgB;IAG9B,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,iBAAiB;IAUzB,iFAAiF;IACjF,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,uBAAuB;IAM/B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,eAAe;IAkEvB,OAAO,CAAC,iBAAiB;IAsIzB,OAAO,CAAC,eAAe;IA2DvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,wBAAwB;
|
|
1
|
+
{"version":3,"file":"network-details.d.ts","sourceRoot":"","sources":["../../../../src/pages/network/network-details.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,+BAA+B,CAAC;AACvC,OAAO,EAAmC,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAE,cAAc,EAAsB,MAAM,KAAK,CAAC;AAGrE,OAAO,8BAA8B,CAAC;AAsBtC,OAAO,gCAAgC,CAAC;AAExC,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,iBAAiB,EAAE,cAAc,CAAC;KACrC;CACJ;AAED,qBACa,cAAe,SAAQ,UAAU;IAEnC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAQ;IAG9C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAM;IAGvC,cAAc,EAAE,GAAG,CACtB,MAAM,EACN;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAC1F,CAAa;IAGP,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAa;IAG9F,OAAO,CAAC,MAAM,CAAgB;IAG9B,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,iBAAiB;IAUzB,iFAAiF;IACjF,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,uBAAuB;IAM/B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,eAAe;IAkEvB,OAAO,CAAC,iBAAiB;IAsIzB,OAAO,CAAC,eAAe;IA2DvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,wBAAwB;IAoHhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,0BAA0B;IA8EzB,MAAM;IA0If,OAAgB,MAAM,0BAwQpB;CACL"}
|
|
@@ -328,7 +328,19 @@ let NetworkDetails = class extends LitElement {
|
|
|
328
328
|
<div class="section">
|
|
329
329
|
<h4>Neighbors (${unknown.seenBy.length})</h4>
|
|
330
330
|
<div class="neighbors-list">
|
|
331
|
-
${unknown.seenBy.
|
|
331
|
+
${unknown.seenBy.toSorted((a, b) => {
|
|
332
|
+
const score = (nodeId) => {
|
|
333
|
+
const n = this.nodes[nodeId.toString()];
|
|
334
|
+
if (!n) return -Infinity;
|
|
335
|
+
const entry = this._findNeighborEntry(n, unknown.extAddressHex);
|
|
336
|
+
if (!entry) return -Infinity;
|
|
337
|
+
const rssi = entry.avgRssi ?? entry.lastRssi;
|
|
338
|
+
if (rssi !== null && rssi !== void 0) return rssi;
|
|
339
|
+
if (entry.lqi !== null && entry.lqi !== void 0) return entry.lqi;
|
|
340
|
+
return -Infinity;
|
|
341
|
+
};
|
|
342
|
+
return score(b) - score(a);
|
|
343
|
+
}).map((nodeId) => {
|
|
332
344
|
const node = this.nodes[nodeId.toString()];
|
|
333
345
|
if (!node) return nothing;
|
|
334
346
|
const neighborEntry = this._findNeighborEntry(node, unknown.extAddressHex);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/pages/network/network-details.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -21,6 +21,15 @@ export declare class ThreadGraph extends BaseNetworkGraph {
|
|
|
21
21
|
seenBy: string[];
|
|
22
22
|
bestRssi: number | null;
|
|
23
23
|
}>;
|
|
24
|
+
/**
|
|
25
|
+
* Searches for a Thread node (known or unknown) by extended address and selects it.
|
|
26
|
+
* Accepts formats like:
|
|
27
|
+
* - AABBCCDDEEFF0011
|
|
28
|
+
* - AA:BB:CC:DD:EE:FF:00:11
|
|
29
|
+
* - 0xAABBCCDDEEFF0011
|
|
30
|
+
* Returns true when a match is found.
|
|
31
|
+
*/
|
|
32
|
+
selectByExtendedAddress(address: string): boolean;
|
|
24
33
|
protected _updateGraph(): void;
|
|
25
34
|
render(): import("lit-html").TemplateResult<1>;
|
|
26
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-graph.d.ts","sourceRoot":"","sources":["../../../../src/pages/network/thread-graph.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"thread-graph.d.ts","sourceRoot":"","sources":["../../../../src/pages/network/thread-graph.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAa3D,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,cAAc,EAAE,WAAW,CAAC;KAC/B;CACJ;AAED,qBACa,WAAY,SAAQ,gBAAgB;IAC7C,sDAAsD;IACtD,OAAO,CAAC,eAAe,CAA6B;IAEpD,8DAA8D;IAC9D,OAAO,CAAC,uBAAuB,CAGjB;IAEd,4DAA4D;IAC5D,IAAW,iBAAiB,IAAI,GAAG,CAC/B,MAAM,EACN;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAC1F,CAEA;IAED;;;;;;;OAOG;IACI,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;cA8BrC,YAAY,IAAI,IAAI;IAgH9B,MAAM;CAgBlB"}
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
findUnknownDevices,
|
|
25
25
|
getDeviceName,
|
|
26
26
|
getNetworkType,
|
|
27
|
+
getThreadExtendedAddressHex,
|
|
27
28
|
getThreadRole
|
|
28
29
|
} from "./network-utils.js";
|
|
29
30
|
let ThreadGraph = class extends BaseNetworkGraph {
|
|
@@ -38,6 +39,37 @@ let ThreadGraph = class extends BaseNetworkGraph {
|
|
|
38
39
|
get unknownDevicesMap() {
|
|
39
40
|
return this._unknownDevicesMapCache;
|
|
40
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Searches for a Thread node (known or unknown) by extended address and selects it.
|
|
44
|
+
* Accepts formats like:
|
|
45
|
+
* - AABBCCDDEEFF0011
|
|
46
|
+
* - AA:BB:CC:DD:EE:FF:00:11
|
|
47
|
+
* - 0xAABBCCDDEEFF0011
|
|
48
|
+
* Returns true when a match is found.
|
|
49
|
+
*/
|
|
50
|
+
selectByExtendedAddress(address) {
|
|
51
|
+
const normalized = normalizeExtendedAddressInput(address);
|
|
52
|
+
if (!normalized) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
for (const node of Object.values(this.nodes)) {
|
|
56
|
+
if (getNetworkType(node) !== "thread") {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
const extAddressHex = getThreadExtendedAddressHex(node);
|
|
60
|
+
if (extAddressHex && extAddressHex === normalized) {
|
|
61
|
+
this.selectNode(String(node.node_id));
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
for (const [unknownId, unknown] of this._unknownDevicesMapCache) {
|
|
66
|
+
if (normalizeExtendedAddressInput(unknown.extAddressHex) === normalized) {
|
|
67
|
+
this.selectNode(unknownId);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
41
73
|
_updateGraph() {
|
|
42
74
|
if (!this._nodesDataSet || !this._edgesDataSet) return;
|
|
43
75
|
this._clearOriginalEdgeColors();
|
|
@@ -136,6 +168,18 @@ let ThreadGraph = class extends BaseNetworkGraph {
|
|
|
136
168
|
ThreadGraph = __decorateClass([
|
|
137
169
|
customElement("thread-graph")
|
|
138
170
|
], ThreadGraph);
|
|
171
|
+
function normalizeExtendedAddressInput(address) {
|
|
172
|
+
const trimmed = address.trim();
|
|
173
|
+
if (!trimmed) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
const noPrefix = trimmed.startsWith("0x") || trimmed.startsWith("0X") ? trimmed.slice(2) : trimmed;
|
|
177
|
+
const hexOnly = noPrefix.replace(/[^a-fA-F0-9]/g, "");
|
|
178
|
+
if (hexOnly.length !== 16 || !/^[a-fA-F0-9]{16}$/.test(hexOnly)) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
return hexOnly.toUpperCase();
|
|
182
|
+
}
|
|
139
183
|
export {
|
|
140
184
|
ThreadGraph
|
|
141
185
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/pages/network/thread-graph.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/web/js/{commission-node-dialog-B6Ea1C19.js → commission-node-dialog-BHKkNVcj.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r, n, t, i, j as b } from './matter-dashboard-app-
|
|
1
|
+
import { r, n, t, i, j as b } from './matter-dashboard-app-D9iOhimm.js';
|
|
2
2
|
import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
@@ -50,18 +50,18 @@ let ComissionNodeDialog = class extends i {
|
|
|
50
50
|
if (!this.client.serverInfo.bluetooth_enabled) {
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
|
-
import('./commission-node-wifi-
|
|
53
|
+
import('./commission-node-wifi-R6LeozCS.js');
|
|
54
54
|
this._mode = "wifi";
|
|
55
55
|
}
|
|
56
56
|
_commissionThread() {
|
|
57
57
|
if (!this.client.serverInfo.bluetooth_enabled) {
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
|
-
import('./commission-node-thread-
|
|
60
|
+
import('./commission-node-thread-DxT2sLWw.js');
|
|
61
61
|
this._mode = "thread";
|
|
62
62
|
}
|
|
63
63
|
_commissionExisting() {
|
|
64
|
-
import('./commission-node-existing-
|
|
64
|
+
import('./commission-node-existing-Bh-9N-xZ.js');
|
|
65
65
|
this._mode = "existing";
|
|
66
66
|
}
|
|
67
67
|
_nodeCommissioned(ev) {
|
package/dist/web/js/{commission-node-existing-DVvXIWaS.js → commission-node-existing-Bh-9N-xZ.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
1
|
+
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-D9iOhimm.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-ZsNu_mOn.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
package/dist/web/js/{commission-node-thread-Xs9aUW8N.js → commission-node-thread-DxT2sLWw.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
1
|
+
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-D9iOhimm.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-ZsNu_mOn.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
1
|
+
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-D9iOhimm.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-ZsNu_mOn.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, f as e, j as b, k as i$1, t } from './matter-dashboard-app-
|
|
1
|
+
import { m as mixinDelegatesAria, i, _ as __decorate, n, A, f as e, j as b, k as i$1, t } from './matter-dashboard-app-D9iOhimm.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @license
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e, N as NavigableKeys, _ as __decorate, a as e$1, n as n$1, o, r, i, c as createAnimationSignal, L as ListController, g as getActiveItem, b as getLastActivatableItem, d as getFirstActivatableItem, A, f as e$2, h as o$1, j as b, E as EASING, k as i$1, t, V as Validator, D, m as mixinDelegatesAria, l as mixinOnReportValidity, p as mixinConstraintValidation, q as mixinFormAssociated, s as mixinElementInternals, u as onReportValidity, v as u, w as redispatchEvent, x as getFormValue, y as createValidator, z as getValidityAnchor, B as i$2, C as fireAndForget, F as handleAsync } from './matter-dashboard-app-
|
|
1
|
+
import { e, N as NavigableKeys, _ as __decorate, a as e$1, n as n$1, o, r, i, c as createAnimationSignal, L as ListController, g as getActiveItem, b as getLastActivatableItem, d as getFirstActivatableItem, A, f as e$2, h as o$1, j as b, E as EASING, k as i$1, t, V as Validator, D, m as mixinDelegatesAria, l as mixinOnReportValidity, p as mixinConstraintValidation, q as mixinFormAssociated, s as mixinElementInternals, u as onReportValidity, v as u, w as redispatchEvent, x as getFormValue, y as createValidator, z as getValidityAnchor, B as i$2, C as fireAndForget, F as handleAsync } from './matter-dashboard-app-D9iOhimm.js';
|
|
2
2
|
import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
package/dist/web/js/main.js
CHANGED
|
@@ -748,7 +748,7 @@ const ThemeService = new ThemeServiceImpl();
|
|
|
748
748
|
* SPDX-License-Identifier: Apache-2.0
|
|
749
749
|
*/
|
|
750
750
|
async function main() {
|
|
751
|
-
import('./matter-dashboard-app-
|
|
751
|
+
import('./matter-dashboard-app-D9iOhimm.js').then(function (n) { return n.I; });
|
|
752
752
|
let url = "";
|
|
753
753
|
const isProductionServer = window.__MATTERJS_PRODUCTION_MODE__ === true || location.origin.includes(":5580") || location.href.includes("hassio_ingress") || location.href.includes("/api/ingress/");
|
|
754
754
|
if (!isProductionServer) {
|
|
@@ -4026,7 +4026,7 @@ MdListItem = __decorate([t$1('md-list-item')], MdListItem);
|
|
|
4026
4026
|
*/
|
|
4027
4027
|
const showLogLevelDialog = async client => {
|
|
4028
4028
|
var _document$querySelect;
|
|
4029
|
-
await import('./log-level-dialog-
|
|
4029
|
+
await import('./log-level-dialog-Bpt-9T42.js');
|
|
4030
4030
|
const dialog = document.createElement("log-level-dialog");
|
|
4031
4031
|
dialog.client = client;
|
|
4032
4032
|
(_document$querySelect = document.querySelector("matter-dashboard-app")) === null || _document$querySelect === void 0 || _document$querySelect.renderRoot.appendChild(dialog);
|
|
@@ -15728,7 +15728,7 @@ const clusters = {
|
|
|
15728
15728
|
* SPDX-License-Identifier: Apache-2.0
|
|
15729
15729
|
*/
|
|
15730
15730
|
const showDialogBox = async (type, dialogParams) => {
|
|
15731
|
-
await import('./dialog-box-
|
|
15731
|
+
await import('./dialog-box-yU3Oc-AR.js');
|
|
15732
15732
|
return new Promise(resolve => {
|
|
15733
15733
|
const dialog = document.createElement("dialog-box");
|
|
15734
15734
|
dialog.params = dialogParams;
|
|
@@ -15902,7 +15902,7 @@ MdTextButton = __decorate([t$1('md-text-button')], MdTextButton);
|
|
|
15902
15902
|
*/
|
|
15903
15903
|
const showNodeBindingDialog = async (client, node, endpoint) => {
|
|
15904
15904
|
var _document$querySelect;
|
|
15905
|
-
await import('./node-binding-dialog-
|
|
15905
|
+
await import('./node-binding-dialog-DnwW3RpY.js');
|
|
15906
15906
|
const dialog = document.createElement("node-binding-dialog");
|
|
15907
15907
|
dialog.client = client;
|
|
15908
15908
|
dialog.node = node;
|
|
@@ -21688,7 +21688,19 @@ let NetworkDetails = class extends i$4 {
|
|
|
21688
21688
|
<div class="section">
|
|
21689
21689
|
<h4>Neighbors (${unknown.seenBy.length})</h4>
|
|
21690
21690
|
<div class="neighbors-list">
|
|
21691
|
-
${unknown.seenBy.
|
|
21691
|
+
${unknown.seenBy.toSorted((a, b) => {
|
|
21692
|
+
const score = nodeId => {
|
|
21693
|
+
const n = this.nodes[nodeId.toString()];
|
|
21694
|
+
if (!n) return -Infinity;
|
|
21695
|
+
const entry = this._findNeighborEntry(n, unknown.extAddressHex);
|
|
21696
|
+
if (!entry) return -Infinity;
|
|
21697
|
+
const rssi = entry.avgRssi ?? entry.lastRssi;
|
|
21698
|
+
if (rssi !== null && rssi !== void 0) return rssi;
|
|
21699
|
+
if (entry.lqi !== null && entry.lqi !== void 0) return entry.lqi;
|
|
21700
|
+
return -Infinity;
|
|
21701
|
+
};
|
|
21702
|
+
return score(b) - score(a);
|
|
21703
|
+
}).map(nodeId => {
|
|
21692
21704
|
const node = this.nodes[nodeId.toString()];
|
|
21693
21705
|
if (!node) return A;
|
|
21694
21706
|
const neighborEntry = this._findNeighborEntry(node, unknown.extAddressHex);
|
|
@@ -30702,6 +30714,37 @@ let ThreadGraph = class extends BaseNetworkGraph {
|
|
|
30702
30714
|
get unknownDevicesMap() {
|
|
30703
30715
|
return this._unknownDevicesMapCache;
|
|
30704
30716
|
}
|
|
30717
|
+
/**
|
|
30718
|
+
* Searches for a Thread node (known or unknown) by extended address and selects it.
|
|
30719
|
+
* Accepts formats like:
|
|
30720
|
+
* - AABBCCDDEEFF0011
|
|
30721
|
+
* - AA:BB:CC:DD:EE:FF:00:11
|
|
30722
|
+
* - 0xAABBCCDDEEFF0011
|
|
30723
|
+
* Returns true when a match is found.
|
|
30724
|
+
*/
|
|
30725
|
+
selectByExtendedAddress(address) {
|
|
30726
|
+
const normalized = normalizeExtendedAddressInput(address);
|
|
30727
|
+
if (!normalized) {
|
|
30728
|
+
return false;
|
|
30729
|
+
}
|
|
30730
|
+
for (const node of Object.values(this.nodes)) {
|
|
30731
|
+
if (getNetworkType(node) !== "thread") {
|
|
30732
|
+
continue;
|
|
30733
|
+
}
|
|
30734
|
+
const extAddressHex = getThreadExtendedAddressHex(node);
|
|
30735
|
+
if (extAddressHex && extAddressHex === normalized) {
|
|
30736
|
+
this.selectNode(String(node.node_id));
|
|
30737
|
+
return true;
|
|
30738
|
+
}
|
|
30739
|
+
}
|
|
30740
|
+
for (const [unknownId, unknown] of this._unknownDevicesMapCache) {
|
|
30741
|
+
if (normalizeExtendedAddressInput(unknown.extAddressHex) === normalized) {
|
|
30742
|
+
this.selectNode(unknownId);
|
|
30743
|
+
return true;
|
|
30744
|
+
}
|
|
30745
|
+
}
|
|
30746
|
+
return false;
|
|
30747
|
+
}
|
|
30705
30748
|
_updateGraph() {
|
|
30706
30749
|
if (!this._nodesDataSet || !this._edgesDataSet) return;
|
|
30707
30750
|
this._clearOriginalEdgeColors();
|
|
@@ -30798,6 +30841,18 @@ let ThreadGraph = class extends BaseNetworkGraph {
|
|
|
30798
30841
|
}
|
|
30799
30842
|
};
|
|
30800
30843
|
ThreadGraph = __decorateClass$6([t$1("thread-graph")], ThreadGraph);
|
|
30844
|
+
function normalizeExtendedAddressInput(address) {
|
|
30845
|
+
const trimmed = address.trim();
|
|
30846
|
+
if (!trimmed) {
|
|
30847
|
+
return null;
|
|
30848
|
+
}
|
|
30849
|
+
const noPrefix = trimmed.startsWith("0x") || trimmed.startsWith("0X") ? trimmed.slice(2) : trimmed;
|
|
30850
|
+
const hexOnly = noPrefix.replace(/[^a-fA-F0-9]/g, "");
|
|
30851
|
+
if (hexOnly.length !== 16 || !/^[a-fA-F0-9]{16}$/.test(hexOnly)) {
|
|
30852
|
+
return null;
|
|
30853
|
+
}
|
|
30854
|
+
return hexOnly.toUpperCase();
|
|
30855
|
+
}
|
|
30801
30856
|
|
|
30802
30857
|
var __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor;
|
|
30803
30858
|
var __decorateClass$5 = (decorators, target, key, kind) => {
|
|
@@ -30961,6 +31016,8 @@ let MatterNetworkView = class extends i$4 {
|
|
|
30961
31016
|
this.initialSelectedNodeId = null;
|
|
30962
31017
|
this._selectedNodeId = null;
|
|
30963
31018
|
this._physicsEnabled = true;
|
|
31019
|
+
this._threadAddressSearch = "";
|
|
31020
|
+
this._threadAddressSearchStatus = "idle";
|
|
30964
31021
|
this._initialSelectionApplied = false;
|
|
30965
31022
|
}
|
|
30966
31023
|
willUpdate(changedProperties) {
|
|
@@ -31050,30 +31107,71 @@ let MatterNetworkView = class extends i$4 {
|
|
|
31050
31107
|
(_this$_threadGraph6 = this._threadGraph) === null || _this$_threadGraph6 === void 0 || _this$_threadGraph6.setPhysicsEnabled(event.detail.enabled);
|
|
31051
31108
|
(_this$_wifiGraph6 = this._wifiGraph) === null || _this$_wifiGraph6 === void 0 || _this$_wifiGraph6.setPhysicsEnabled(event.detail.enabled);
|
|
31052
31109
|
}
|
|
31110
|
+
_handleThreadAddressSearchInput(event) {
|
|
31111
|
+
this._threadAddressSearch = event.target.value;
|
|
31112
|
+
this._threadAddressSearchStatus = "idle";
|
|
31113
|
+
}
|
|
31114
|
+
_handleThreadAddressSearchSubmit(event) {
|
|
31115
|
+
event.preventDefault();
|
|
31116
|
+
const searchValue = this._threadAddressSearch.trim();
|
|
31117
|
+
if (!searchValue) {
|
|
31118
|
+
this._threadAddressSearchStatus = "idle";
|
|
31119
|
+
return;
|
|
31120
|
+
}
|
|
31121
|
+
this._searchThreadAddressWhenReady(searchValue);
|
|
31122
|
+
}
|
|
31123
|
+
_searchThreadAddressWhenReady(searchValue, retries = 10) {
|
|
31124
|
+
const graph = this._threadGraph;
|
|
31125
|
+
if (!(graph !== null && graph !== void 0 && graph.isReady())) {
|
|
31126
|
+
if (retries > 0) {
|
|
31127
|
+
this._selectRetryTimer = setTimeout(() => this._searchThreadAddressWhenReady(searchValue, retries - 1), 100);
|
|
31128
|
+
} else {
|
|
31129
|
+
this._threadAddressSearchStatus = "not-found";
|
|
31130
|
+
}
|
|
31131
|
+
return;
|
|
31132
|
+
}
|
|
31133
|
+
const found = graph.selectByExtendedAddress(searchValue);
|
|
31134
|
+
this._threadAddressSearchStatus = found ? "found" : "not-found";
|
|
31135
|
+
}
|
|
31053
31136
|
_renderThreadView() {
|
|
31054
31137
|
return b`
|
|
31055
31138
|
<div class="graph-section">
|
|
31056
31139
|
<div class="graph-header">
|
|
31057
31140
|
<h2>Thread Network Mesh</h2>
|
|
31058
|
-
<div class="graph-
|
|
31059
|
-
<
|
|
31060
|
-
<
|
|
31061
|
-
|
|
31062
|
-
|
|
31063
|
-
|
|
31064
|
-
|
|
31065
|
-
|
|
31066
|
-
|
|
31067
|
-
|
|
31068
|
-
|
|
31069
|
-
|
|
31070
|
-
@click=${this.
|
|
31071
|
-
|
|
31072
|
-
|
|
31073
|
-
<
|
|
31074
|
-
|
|
31141
|
+
<div class="graph-actions">
|
|
31142
|
+
<form class="thread-search" @submit=${this._handleThreadAddressSearchSubmit}>
|
|
31143
|
+
<input
|
|
31144
|
+
type="text"
|
|
31145
|
+
.value=${this._threadAddressSearch}
|
|
31146
|
+
@input=${this._handleThreadAddressSearchInput}
|
|
31147
|
+
placeholder="Search extended address"
|
|
31148
|
+
title="Find device by Thread extended address (EUI-64)"
|
|
31149
|
+
/>
|
|
31150
|
+
<button type="submit" class="search-button">Find</button>
|
|
31151
|
+
</form>
|
|
31152
|
+
<div class="graph-controls">
|
|
31153
|
+
<button class="control-button" @click=${this._handleZoomIn} title="Zoom in">
|
|
31154
|
+
<ha-svg-icon .path=${mdiMagnifyPlus}></ha-svg-icon>
|
|
31155
|
+
</button>
|
|
31156
|
+
<button class="control-button" @click=${this._handleZoomOut} title="Zoom out">
|
|
31157
|
+
<ha-svg-icon .path=${mdiMagnifyMinus}></ha-svg-icon>
|
|
31158
|
+
</button>
|
|
31159
|
+
<button class="control-button" @click=${this._handleFitToScreen} title="Fit to screen">
|
|
31160
|
+
<ha-svg-icon .path=${mdiFitToScreen}></ha-svg-icon>
|
|
31161
|
+
</button>
|
|
31162
|
+
<button
|
|
31163
|
+
class="control-button ${this._physicsEnabled ? "" : "active"}"
|
|
31164
|
+
@click=${this._handleTogglePhysics}
|
|
31165
|
+
title="${this._physicsEnabled ? "Freeze layout" : "Unfreeze layout"}"
|
|
31166
|
+
>
|
|
31167
|
+
<ha-svg-icon .path=${this._physicsEnabled ? mdiPause : mdiPlay}></ha-svg-icon>
|
|
31168
|
+
</button>
|
|
31169
|
+
</div>
|
|
31075
31170
|
</div>
|
|
31076
31171
|
</div>
|
|
31172
|
+
${this._threadAddressSearchStatus === "idle" ? "" : b`<div class="thread-search-status ${this._threadAddressSearchStatus}">
|
|
31173
|
+
${this._threadAddressSearchStatus === "found" ? "Node highlighted." : "No matching extended address found."}
|
|
31174
|
+
</div>`}
|
|
31077
31175
|
<thread-graph
|
|
31078
31176
|
.nodes=${this.nodes}
|
|
31079
31177
|
@node-selected=${this._handleNodeSelected}
|
|
@@ -31209,6 +31307,63 @@ MatterNetworkView.styles = i$7`
|
|
|
31209
31307
|
gap: 4px;
|
|
31210
31308
|
}
|
|
31211
31309
|
|
|
31310
|
+
.graph-actions {
|
|
31311
|
+
display: flex;
|
|
31312
|
+
align-items: center;
|
|
31313
|
+
gap: 8px;
|
|
31314
|
+
min-width: 0;
|
|
31315
|
+
}
|
|
31316
|
+
|
|
31317
|
+
.thread-search {
|
|
31318
|
+
display: flex;
|
|
31319
|
+
align-items: center;
|
|
31320
|
+
gap: 4px;
|
|
31321
|
+
}
|
|
31322
|
+
|
|
31323
|
+
.thread-search input {
|
|
31324
|
+
width: 260px;
|
|
31325
|
+
max-width: 45vw;
|
|
31326
|
+
padding: 6px 8px;
|
|
31327
|
+
border: 1px solid var(--md-sys-color-outline-variant, #ccc);
|
|
31328
|
+
border-radius: 4px;
|
|
31329
|
+
background-color: var(--md-sys-color-surface, #fff);
|
|
31330
|
+
color: var(--md-sys-color-on-surface, #1c1b1f);
|
|
31331
|
+
font: inherit;
|
|
31332
|
+
}
|
|
31333
|
+
|
|
31334
|
+
.thread-search input:focus {
|
|
31335
|
+
outline: 2px solid var(--md-sys-color-primary, #6750a4);
|
|
31336
|
+
outline-offset: 1px;
|
|
31337
|
+
}
|
|
31338
|
+
|
|
31339
|
+
.search-button {
|
|
31340
|
+
padding: 6px 10px;
|
|
31341
|
+
border: 1px solid var(--md-sys-color-outline-variant, #ccc);
|
|
31342
|
+
border-radius: 4px;
|
|
31343
|
+
background-color: var(--md-sys-color-surface, #fff);
|
|
31344
|
+
color: var(--md-sys-color-on-surface, #1c1b1f);
|
|
31345
|
+
cursor: pointer;
|
|
31346
|
+
font: inherit;
|
|
31347
|
+
}
|
|
31348
|
+
|
|
31349
|
+
.search-button:hover {
|
|
31350
|
+
background-color: var(--md-sys-color-surface-container-high, #e8e8e8);
|
|
31351
|
+
}
|
|
31352
|
+
|
|
31353
|
+
.thread-search-status {
|
|
31354
|
+
margin: 0 0 6px;
|
|
31355
|
+
font-size: 0.85rem;
|
|
31356
|
+
color: var(--md-sys-color-on-surface-variant, #666);
|
|
31357
|
+
}
|
|
31358
|
+
|
|
31359
|
+
.thread-search-status.found {
|
|
31360
|
+
color: #2e7d32;
|
|
31361
|
+
}
|
|
31362
|
+
|
|
31363
|
+
.thread-search-status.not-found {
|
|
31364
|
+
color: #c62828;
|
|
31365
|
+
}
|
|
31366
|
+
|
|
31212
31367
|
.control-button {
|
|
31213
31368
|
background: none;
|
|
31214
31369
|
border: 1px solid var(--md-sys-color-outline-variant, #ccc);
|
|
@@ -31295,6 +31450,31 @@ MatterNetworkView.styles = i$7`
|
|
|
31295
31450
|
.content {
|
|
31296
31451
|
padding: 8px;
|
|
31297
31452
|
}
|
|
31453
|
+
|
|
31454
|
+
.graph-header {
|
|
31455
|
+
align-items: flex-start;
|
|
31456
|
+
gap: 6px;
|
|
31457
|
+
}
|
|
31458
|
+
|
|
31459
|
+
.graph-actions {
|
|
31460
|
+
flex-direction: column;
|
|
31461
|
+
align-items: stretch;
|
|
31462
|
+
width: 100%;
|
|
31463
|
+
}
|
|
31464
|
+
|
|
31465
|
+
.thread-search {
|
|
31466
|
+
width: 100%;
|
|
31467
|
+
}
|
|
31468
|
+
|
|
31469
|
+
.thread-search input {
|
|
31470
|
+
flex: 1 1 auto;
|
|
31471
|
+
width: auto;
|
|
31472
|
+
max-width: none;
|
|
31473
|
+
}
|
|
31474
|
+
|
|
31475
|
+
.graph-controls {
|
|
31476
|
+
justify-content: flex-end;
|
|
31477
|
+
}
|
|
31298
31478
|
}
|
|
31299
31479
|
`;
|
|
31300
31480
|
__decorateClass$4([n$2({
|
|
@@ -31311,6 +31491,8 @@ __decorateClass$4([n$2({
|
|
|
31311
31491
|
})], MatterNetworkView.prototype, "hasWifiDevices", 2);
|
|
31312
31492
|
__decorateClass$4([r$2()], MatterNetworkView.prototype, "_selectedNodeId", 2);
|
|
31313
31493
|
__decorateClass$4([r$2()], MatterNetworkView.prototype, "_physicsEnabled", 2);
|
|
31494
|
+
__decorateClass$4([r$2()], MatterNetworkView.prototype, "_threadAddressSearch", 2);
|
|
31495
|
+
__decorateClass$4([r$2()], MatterNetworkView.prototype, "_threadAddressSearchStatus", 2);
|
|
31314
31496
|
__decorateClass$4([e$5("thread-graph")], MatterNetworkView.prototype, "_threadGraph", 2);
|
|
31315
31497
|
__decorateClass$4([e$5("wifi-graph")], MatterNetworkView.prototype, "_wifiGraph", 2);
|
|
31316
31498
|
MatterNetworkView = __decorateClass$4([t$1("matter-network-view")], MatterNetworkView);
|
|
@@ -31511,7 +31693,7 @@ MatterNodeView = __decorateClass$3([t$1("matter-node-view")], MatterNodeView);
|
|
|
31511
31693
|
*/
|
|
31512
31694
|
const showCommissionNodeDialog = async client => {
|
|
31513
31695
|
var _document$querySelect;
|
|
31514
|
-
await import('./commission-node-dialog-
|
|
31696
|
+
await import('./commission-node-dialog-BHKkNVcj.js');
|
|
31515
31697
|
const dialog = document.createElement("commission-node-dialog");
|
|
31516
31698
|
dialog.client = client;
|
|
31517
31699
|
(_document$querySelect = document.querySelector("matter-dashboard-app")) === null || _document$querySelect === void 0 || _document$querySelect.renderRoot.appendChild(dialog);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { k as i, G as c, H as clientContext, n, a as e, i as i$1, A, j as b, F as handleAsync, t } from './matter-dashboard-app-
|
|
1
|
+
import { k as i, G as c, H as clientContext, n, a as e, i as i$1, A, j as b, F as handleAsync, t } from './matter-dashboard-app-D9iOhimm.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.4.
|
|
3
|
+
"version": "0.4.4-alpha.1-20260305-5ca8493",
|
|
4
4
|
"description": "Dashboard for OHF Matter Server",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/matter-js/matterjs-server/issues"
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@lit/context": "^1.1.6",
|
|
39
39
|
"@material/web": "^2.4.1",
|
|
40
|
-
"@matter-server/ws-client": "0.4.
|
|
41
|
-
"@matter-server/custom-clusters": "0.4.
|
|
40
|
+
"@matter-server/ws-client": "0.4.4-alpha.1-20260305-5ca8493",
|
|
41
|
+
"@matter-server/custom-clusters": "0.4.4-alpha.1-20260305-5ca8493",
|
|
42
42
|
"@mdi/js": "^7.4.47",
|
|
43
43
|
"lit": "^3.3.2",
|
|
44
44
|
"tslib": "^2.8.1",
|
|
@@ -54,6 +54,12 @@ class MatterNetworkView extends LitElement {
|
|
|
54
54
|
@state()
|
|
55
55
|
private _physicsEnabled = true;
|
|
56
56
|
|
|
57
|
+
@state()
|
|
58
|
+
private _threadAddressSearch = "";
|
|
59
|
+
|
|
60
|
+
@state()
|
|
61
|
+
private _threadAddressSearchStatus: "idle" | "found" | "not-found" = "idle";
|
|
62
|
+
|
|
57
63
|
private _initialSelectionApplied = false;
|
|
58
64
|
private _selectRetryTimer?: ReturnType<typeof setTimeout>;
|
|
59
65
|
|
|
@@ -162,30 +168,89 @@ class MatterNetworkView extends LitElement {
|
|
|
162
168
|
this._wifiGraph?.setPhysicsEnabled(event.detail.enabled);
|
|
163
169
|
}
|
|
164
170
|
|
|
171
|
+
private _handleThreadAddressSearchInput(event: Event): void {
|
|
172
|
+
this._threadAddressSearch = (event.target as HTMLInputElement).value;
|
|
173
|
+
this._threadAddressSearchStatus = "idle";
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
private _handleThreadAddressSearchSubmit(event: Event): void {
|
|
177
|
+
event.preventDefault();
|
|
178
|
+
|
|
179
|
+
const searchValue = this._threadAddressSearch.trim();
|
|
180
|
+
if (!searchValue) {
|
|
181
|
+
this._threadAddressSearchStatus = "idle";
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
this._searchThreadAddressWhenReady(searchValue);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
private _searchThreadAddressWhenReady(searchValue: string, retries: number = 10): void {
|
|
189
|
+
const graph = this._threadGraph;
|
|
190
|
+
|
|
191
|
+
if (!graph?.isReady()) {
|
|
192
|
+
if (retries > 0) {
|
|
193
|
+
this._selectRetryTimer = setTimeout(
|
|
194
|
+
() => this._searchThreadAddressWhenReady(searchValue, retries - 1),
|
|
195
|
+
100,
|
|
196
|
+
);
|
|
197
|
+
} else {
|
|
198
|
+
this._threadAddressSearchStatus = "not-found";
|
|
199
|
+
}
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const found = graph.selectByExtendedAddress(searchValue);
|
|
204
|
+
this._threadAddressSearchStatus = found ? "found" : "not-found";
|
|
205
|
+
}
|
|
206
|
+
|
|
165
207
|
private _renderThreadView() {
|
|
166
208
|
return html`
|
|
167
209
|
<div class="graph-section">
|
|
168
210
|
<div class="graph-header">
|
|
169
211
|
<h2>Thread Network Mesh</h2>
|
|
170
|
-
<div class="graph-
|
|
171
|
-
<
|
|
172
|
-
<
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
@click=${this.
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
<
|
|
186
|
-
|
|
212
|
+
<div class="graph-actions">
|
|
213
|
+
<form class="thread-search" @submit=${this._handleThreadAddressSearchSubmit}>
|
|
214
|
+
<input
|
|
215
|
+
type="text"
|
|
216
|
+
.value=${this._threadAddressSearch}
|
|
217
|
+
@input=${this._handleThreadAddressSearchInput}
|
|
218
|
+
placeholder="Search extended address"
|
|
219
|
+
title="Find device by Thread extended address (EUI-64)"
|
|
220
|
+
/>
|
|
221
|
+
<button type="submit" class="search-button">Find</button>
|
|
222
|
+
</form>
|
|
223
|
+
<div class="graph-controls">
|
|
224
|
+
<button class="control-button" @click=${this._handleZoomIn} title="Zoom in">
|
|
225
|
+
<ha-svg-icon .path=${mdiMagnifyPlus}></ha-svg-icon>
|
|
226
|
+
</button>
|
|
227
|
+
<button class="control-button" @click=${this._handleZoomOut} title="Zoom out">
|
|
228
|
+
<ha-svg-icon .path=${mdiMagnifyMinus}></ha-svg-icon>
|
|
229
|
+
</button>
|
|
230
|
+
<button class="control-button" @click=${this._handleFitToScreen} title="Fit to screen">
|
|
231
|
+
<ha-svg-icon .path=${mdiFitToScreen}></ha-svg-icon>
|
|
232
|
+
</button>
|
|
233
|
+
<button
|
|
234
|
+
class="control-button ${this._physicsEnabled ? "" : "active"}"
|
|
235
|
+
@click=${this._handleTogglePhysics}
|
|
236
|
+
title="${this._physicsEnabled ? "Freeze layout" : "Unfreeze layout"}"
|
|
237
|
+
>
|
|
238
|
+
<ha-svg-icon .path=${this._physicsEnabled ? mdiPause : mdiPlay}></ha-svg-icon>
|
|
239
|
+
</button>
|
|
240
|
+
</div>
|
|
187
241
|
</div>
|
|
188
242
|
</div>
|
|
243
|
+
${
|
|
244
|
+
this._threadAddressSearchStatus === "idle"
|
|
245
|
+
? ""
|
|
246
|
+
: html`<div class="thread-search-status ${this._threadAddressSearchStatus}">
|
|
247
|
+
${
|
|
248
|
+
this._threadAddressSearchStatus === "found"
|
|
249
|
+
? "Node highlighted."
|
|
250
|
+
: "No matching extended address found."
|
|
251
|
+
}
|
|
252
|
+
</div>`
|
|
253
|
+
}
|
|
189
254
|
<thread-graph
|
|
190
255
|
.nodes=${this.nodes}
|
|
191
256
|
@node-selected=${this._handleNodeSelected}
|
|
@@ -323,6 +388,63 @@ class MatterNetworkView extends LitElement {
|
|
|
323
388
|
gap: 4px;
|
|
324
389
|
}
|
|
325
390
|
|
|
391
|
+
.graph-actions {
|
|
392
|
+
display: flex;
|
|
393
|
+
align-items: center;
|
|
394
|
+
gap: 8px;
|
|
395
|
+
min-width: 0;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.thread-search {
|
|
399
|
+
display: flex;
|
|
400
|
+
align-items: center;
|
|
401
|
+
gap: 4px;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
.thread-search input {
|
|
405
|
+
width: 260px;
|
|
406
|
+
max-width: 45vw;
|
|
407
|
+
padding: 6px 8px;
|
|
408
|
+
border: 1px solid var(--md-sys-color-outline-variant, #ccc);
|
|
409
|
+
border-radius: 4px;
|
|
410
|
+
background-color: var(--md-sys-color-surface, #fff);
|
|
411
|
+
color: var(--md-sys-color-on-surface, #1c1b1f);
|
|
412
|
+
font: inherit;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.thread-search input:focus {
|
|
416
|
+
outline: 2px solid var(--md-sys-color-primary, #6750a4);
|
|
417
|
+
outline-offset: 1px;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.search-button {
|
|
421
|
+
padding: 6px 10px;
|
|
422
|
+
border: 1px solid var(--md-sys-color-outline-variant, #ccc);
|
|
423
|
+
border-radius: 4px;
|
|
424
|
+
background-color: var(--md-sys-color-surface, #fff);
|
|
425
|
+
color: var(--md-sys-color-on-surface, #1c1b1f);
|
|
426
|
+
cursor: pointer;
|
|
427
|
+
font: inherit;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
.search-button:hover {
|
|
431
|
+
background-color: var(--md-sys-color-surface-container-high, #e8e8e8);
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.thread-search-status {
|
|
435
|
+
margin: 0 0 6px;
|
|
436
|
+
font-size: 0.85rem;
|
|
437
|
+
color: var(--md-sys-color-on-surface-variant, #666);
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
.thread-search-status.found {
|
|
441
|
+
color: #2e7d32;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
.thread-search-status.not-found {
|
|
445
|
+
color: #c62828;
|
|
446
|
+
}
|
|
447
|
+
|
|
326
448
|
.control-button {
|
|
327
449
|
background: none;
|
|
328
450
|
border: 1px solid var(--md-sys-color-outline-variant, #ccc);
|
|
@@ -409,6 +531,31 @@ class MatterNetworkView extends LitElement {
|
|
|
409
531
|
.content {
|
|
410
532
|
padding: 8px;
|
|
411
533
|
}
|
|
534
|
+
|
|
535
|
+
.graph-header {
|
|
536
|
+
align-items: flex-start;
|
|
537
|
+
gap: 6px;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
.graph-actions {
|
|
541
|
+
flex-direction: column;
|
|
542
|
+
align-items: stretch;
|
|
543
|
+
width: 100%;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
.thread-search {
|
|
547
|
+
width: 100%;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
.thread-search input {
|
|
551
|
+
flex: 1 1 auto;
|
|
552
|
+
width: auto;
|
|
553
|
+
max-width: none;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
.graph-controls {
|
|
557
|
+
justify-content: flex-end;
|
|
558
|
+
}
|
|
412
559
|
}
|
|
413
560
|
`;
|
|
414
561
|
}
|
|
@@ -436,17 +436,31 @@ export class NetworkDetails extends LitElement {
|
|
|
436
436
|
<div class="section">
|
|
437
437
|
<h4>Neighbors (${unknown.seenBy.length})</h4>
|
|
438
438
|
<div class="neighbors-list">
|
|
439
|
-
${unknown.seenBy
|
|
440
|
-
|
|
441
|
-
|
|
439
|
+
${unknown.seenBy
|
|
440
|
+
.toSorted((a, b) => {
|
|
441
|
+
const score = (nodeId: string): number => {
|
|
442
|
+
const n = this.nodes[nodeId.toString()];
|
|
443
|
+
if (!n) return -Infinity;
|
|
444
|
+
const entry = this._findNeighborEntry(n, unknown.extAddressHex);
|
|
445
|
+
if (!entry) return -Infinity;
|
|
446
|
+
const rssi = entry.avgRssi ?? entry.lastRssi;
|
|
447
|
+
if (rssi !== null && rssi !== undefined) return rssi;
|
|
448
|
+
if (entry.lqi !== null && entry.lqi !== undefined) return entry.lqi;
|
|
449
|
+
return -Infinity;
|
|
450
|
+
};
|
|
451
|
+
return score(b) - score(a);
|
|
452
|
+
})
|
|
453
|
+
.map(nodeId => {
|
|
454
|
+
const node = this.nodes[nodeId.toString()];
|
|
455
|
+
if (!node) return nothing;
|
|
442
456
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
457
|
+
// Find the neighbor entry to get RSSI/LQI
|
|
458
|
+
const neighborEntry = this._findNeighborEntry(node, unknown.extAddressHex);
|
|
459
|
+
const signalColor = neighborEntry ? getSignalColor(neighborEntry) : "#999";
|
|
460
|
+
const rssi = neighborEntry?.avgRssi ?? neighborEntry?.lastRssi ?? null;
|
|
461
|
+
const lqi = neighborEntry?.lqi;
|
|
448
462
|
|
|
449
|
-
|
|
463
|
+
return html`
|
|
450
464
|
<div
|
|
451
465
|
class="neighbor-item clickable"
|
|
452
466
|
role="button"
|
|
@@ -483,7 +497,7 @@ export class NetworkDetails extends LitElement {
|
|
|
483
497
|
</div>
|
|
484
498
|
</div>
|
|
485
499
|
`;
|
|
486
|
-
|
|
500
|
+
})}
|
|
487
501
|
</div>
|
|
488
502
|
</div>
|
|
489
503
|
`
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
findUnknownDevices,
|
|
17
17
|
getDeviceName,
|
|
18
18
|
getNetworkType,
|
|
19
|
+
getThreadExtendedAddressHex,
|
|
19
20
|
getThreadRole,
|
|
20
21
|
} from "./network-utils.js";
|
|
21
22
|
|
|
@@ -44,6 +45,44 @@ export class ThreadGraph extends BaseNetworkGraph {
|
|
|
44
45
|
return this._unknownDevicesMapCache;
|
|
45
46
|
}
|
|
46
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Searches for a Thread node (known or unknown) by extended address and selects it.
|
|
50
|
+
* Accepts formats like:
|
|
51
|
+
* - AABBCCDDEEFF0011
|
|
52
|
+
* - AA:BB:CC:DD:EE:FF:00:11
|
|
53
|
+
* - 0xAABBCCDDEEFF0011
|
|
54
|
+
* Returns true when a match is found.
|
|
55
|
+
*/
|
|
56
|
+
public selectByExtendedAddress(address: string): boolean {
|
|
57
|
+
const normalized = normalizeExtendedAddressInput(address);
|
|
58
|
+
if (!normalized) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Search commissioned Thread devices first
|
|
63
|
+
for (const node of Object.values(this.nodes)) {
|
|
64
|
+
if (getNetworkType(node) !== "thread") {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const extAddressHex = getThreadExtendedAddressHex(node);
|
|
69
|
+
if (extAddressHex && extAddressHex === normalized) {
|
|
70
|
+
this.selectNode(String(node.node_id));
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Then search unknown/external Thread devices
|
|
76
|
+
for (const [unknownId, unknown] of this._unknownDevicesMapCache) {
|
|
77
|
+
if (normalizeExtendedAddressInput(unknown.extAddressHex) === normalized) {
|
|
78
|
+
this.selectNode(unknownId);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
|
|
47
86
|
protected override _updateGraph(): void {
|
|
48
87
|
if (!this._nodesDataSet || !this._edgesDataSet) return;
|
|
49
88
|
|
|
@@ -173,3 +212,19 @@ export class ThreadGraph extends BaseNetworkGraph {
|
|
|
173
212
|
`;
|
|
174
213
|
}
|
|
175
214
|
}
|
|
215
|
+
|
|
216
|
+
function normalizeExtendedAddressInput(address: string): string | null {
|
|
217
|
+
const trimmed = address.trim();
|
|
218
|
+
if (!trimmed) {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
const noPrefix = trimmed.startsWith("0x") || trimmed.startsWith("0X") ? trimmed.slice(2) : trimmed;
|
|
223
|
+
const hexOnly = noPrefix.replace(/[^a-fA-F0-9]/g, "");
|
|
224
|
+
|
|
225
|
+
if (hexOnly.length !== 16 || !/^[a-fA-F0-9]{16}$/.test(hexOnly)) {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
return hexOnly.toUpperCase();
|
|
230
|
+
}
|