@matter-server/dashboard 0.6.2 → 0.6.3
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 +15 -0
- package/dist/esm/pages/matter-network-view.d.ts.map +1 -1
- package/dist/esm/pages/matter-network-view.js +171 -1
- package/dist/esm/pages/matter-network-view.js.map +1 -1
- package/dist/esm/pages/network/base-network-graph.d.ts +4 -0
- package/dist/esm/pages/network/base-network-graph.d.ts.map +1 -1
- package/dist/esm/pages/network/base-network-graph.js +9 -0
- package/dist/esm/pages/network/base-network-graph.js.map +1 -1
- package/dist/esm/pages/network/border-router-store.d.ts +20 -0
- package/dist/esm/pages/network/border-router-store.d.ts.map +1 -0
- package/dist/esm/pages/network/border-router-store.js +29 -0
- package/dist/esm/pages/network/border-router-store.js.map +6 -0
- package/dist/esm/pages/network/network-details.d.ts +40 -12
- package/dist/esm/pages/network/network-details.d.ts.map +1 -1
- package/dist/esm/pages/network/network-details.js +440 -112
- package/dist/esm/pages/network/network-details.js.map +1 -1
- package/dist/esm/pages/network/network-types.d.ts +76 -0
- package/dist/esm/pages/network/network-types.d.ts.map +1 -1
- package/dist/esm/pages/network/network-types.js.map +1 -1
- package/dist/esm/pages/network/network-utils.d.ts +89 -22
- package/dist/esm/pages/network/network-utils.d.ts.map +1 -1
- package/dist/esm/pages/network/network-utils.js +233 -95
- package/dist/esm/pages/network/network-utils.js.map +1 -1
- package/dist/esm/pages/network/thread-graph.d.ts +68 -9
- package/dist/esm/pages/network/thread-graph.d.ts.map +1 -1
- package/dist/esm/pages/network/thread-graph.js +388 -50
- package/dist/esm/pages/network/thread-graph.js.map +2 -2
- package/dist/esm/util/device-icons.d.ts +6 -0
- package/dist/esm/util/device-icons.d.ts.map +1 -1
- package/dist/esm/util/device-icons.js +6 -0
- package/dist/esm/util/device-icons.js.map +1 -1
- package/dist/web/js/{attribute-write-dialog-g4B6BoRt.js → attribute-write-dialog-DlMTUiLK.js} +1 -1
- package/dist/web/js/{command-invoke-dialog-D6G704VK.js → command-invoke-dialog-DO3IyFcm.js} +1 -1
- package/dist/web/js/{commission-node-dialog-Bg3oo5ub.js → commission-node-dialog-CMSvCm0i.js} +4 -4
- package/dist/web/js/{commission-node-existing-DO3g1aQJ.js → commission-node-existing-D08jghFu.js} +2 -2
- package/dist/web/js/{commission-node-thread-DM432aH1.js → commission-node-thread-D5waY758.js} +2 -2
- package/dist/web/js/{commission-node-wifi-Bx40FXij.js → commission-node-wifi-ClBlCFTZ.js} +2 -2
- package/dist/web/js/{dialog-box-DjyfULWB.js → dialog-box-D9vS2SmP.js} +1 -1
- package/dist/web/js/{fire_event-BstgNPuh.js → fire_event-BPhROjTC.js} +1 -1
- package/dist/web/js/main.js +1 -1
- package/dist/web/js/{matter-dashboard-app-Cj88TtbZ.js → matter-dashboard-app-C9zTE5uH.js} +1359 -302
- package/dist/web/js/{node-binding-dialog-9yy2LE3_.js → node-binding-dialog-B5p-gbim.js} +1 -1
- package/dist/web/js/{settings-dialog-Cs2xMsXb.js → settings-dialog-BMFhom0W.js} +1 -1
- package/package.json +4 -4
- package/src/pages/matter-network-view.ts +185 -1
- package/src/pages/network/base-network-graph.ts +10 -0
- package/src/pages/network/border-router-store.ts +38 -0
- package/src/pages/network/network-details.ts +535 -140
- package/src/pages/network/network-types.ts +76 -0
- package/src/pages/network/network-utils.ts +390 -171
- package/src/pages/network/thread-graph.ts +532 -73
- package/src/util/device-icons.ts +13 -0
|
@@ -222,11 +222,13 @@ function buildRloc16Map(nodes) {
|
|
|
222
222
|
}
|
|
223
223
|
return rloc16Map;
|
|
224
224
|
}
|
|
225
|
-
function findUnknownDevices(nodes, extAddrMap, rloc16Map) {
|
|
226
|
-
const
|
|
225
|
+
function findUnknownDevices(nodes, extAddrMap, rloc16Map, borderRouters) {
|
|
226
|
+
const aggregates = /* @__PURE__ */ new Map();
|
|
227
227
|
for (const node of Object.values(nodes)) {
|
|
228
228
|
const nodeId = String(node.node_id);
|
|
229
229
|
const neighbors = parseNeighborTable(node);
|
|
230
|
+
const observerXp = getThreadExtendedPanId(node);
|
|
231
|
+
const observerXpHex = observerXp !== void 0 ? observerXp.toString(16).padStart(16, "0").toUpperCase() : void 0;
|
|
230
232
|
for (const neighbor of neighbors) {
|
|
231
233
|
if (extAddrMap.has(neighbor.extAddress)) {
|
|
232
234
|
continue;
|
|
@@ -235,31 +237,127 @@ function findUnknownDevices(nodes, extAddrMap, rloc16Map) {
|
|
|
235
237
|
continue;
|
|
236
238
|
}
|
|
237
239
|
const extAddressHex = neighbor.extAddress.toString(16).padStart(16, "0").toUpperCase();
|
|
238
|
-
|
|
239
|
-
if (
|
|
240
|
-
|
|
241
|
-
id,
|
|
240
|
+
let agg = aggregates.get(extAddressHex);
|
|
241
|
+
if (agg === void 0) {
|
|
242
|
+
agg = {
|
|
242
243
|
extAddressHex,
|
|
243
244
|
extAddress: neighbor.extAddress,
|
|
244
245
|
seenBy: [],
|
|
245
246
|
isRouter: false,
|
|
246
|
-
bestRssi: null
|
|
247
|
-
|
|
247
|
+
bestRssi: null,
|
|
248
|
+
extendedPanIdHex: observerXpHex
|
|
249
|
+
};
|
|
250
|
+
aggregates.set(extAddressHex, agg);
|
|
251
|
+
} else if (agg.extendedPanIdHex === void 0 && observerXpHex !== void 0) {
|
|
252
|
+
agg.extendedPanIdHex = observerXpHex;
|
|
248
253
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
unknown.seenBy.push(nodeId);
|
|
254
|
+
if (!agg.seenBy.includes(nodeId)) {
|
|
255
|
+
agg.seenBy.push(nodeId);
|
|
252
256
|
}
|
|
253
257
|
if (neighbor.rxOnWhenIdle) {
|
|
254
|
-
|
|
258
|
+
agg.isRouter = true;
|
|
255
259
|
}
|
|
256
260
|
const rssi = neighbor.avgRssi ?? neighbor.lastRssi;
|
|
257
|
-
if (rssi !== null && (
|
|
258
|
-
|
|
261
|
+
if (rssi !== null && (agg.bestRssi === null || rssi > agg.bestRssi)) {
|
|
262
|
+
agg.bestRssi = rssi;
|
|
259
263
|
}
|
|
260
264
|
}
|
|
261
265
|
}
|
|
262
|
-
|
|
266
|
+
const networkNameByXp = /* @__PURE__ */ new Map();
|
|
267
|
+
if (borderRouters !== void 0) {
|
|
268
|
+
for (const br of borderRouters.values()) {
|
|
269
|
+
if (br.extendedPanIdHex !== void 0 && br.networkName !== void 0) {
|
|
270
|
+
networkNameByXp.set(br.extendedPanIdHex, br.networkName);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
const out = new Array();
|
|
275
|
+
for (const agg of aggregates.values()) {
|
|
276
|
+
const br = borderRouters?.get(agg.extAddressHex);
|
|
277
|
+
if (br !== void 0) {
|
|
278
|
+
out.push({
|
|
279
|
+
kind: "br",
|
|
280
|
+
...br,
|
|
281
|
+
id: `br_${agg.extAddressHex}`,
|
|
282
|
+
extAddressHex: agg.extAddressHex,
|
|
283
|
+
extAddress: agg.extAddress,
|
|
284
|
+
seenBy: agg.seenBy,
|
|
285
|
+
isRouter: agg.isRouter,
|
|
286
|
+
bestRssi: agg.bestRssi
|
|
287
|
+
});
|
|
288
|
+
} else {
|
|
289
|
+
const networkName = agg.extendedPanIdHex !== void 0 ? networkNameByXp.get(agg.extendedPanIdHex) : void 0;
|
|
290
|
+
out.push({
|
|
291
|
+
kind: "unknown",
|
|
292
|
+
id: `unknown_${agg.extAddressHex}`,
|
|
293
|
+
extAddressHex: agg.extAddressHex,
|
|
294
|
+
extAddress: agg.extAddress,
|
|
295
|
+
seenBy: agg.seenBy,
|
|
296
|
+
isRouter: agg.isRouter,
|
|
297
|
+
bestRssi: agg.bestRssi,
|
|
298
|
+
extendedPanIdHex: agg.extendedPanIdHex,
|
|
299
|
+
networkName
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return out;
|
|
304
|
+
}
|
|
305
|
+
const CONNECTION_MODE_LABELS = {
|
|
306
|
+
0: "disabled",
|
|
307
|
+
1: "PSKc / DTLS",
|
|
308
|
+
2: "PSKd / DTLS",
|
|
309
|
+
3: "vendor-defined",
|
|
310
|
+
4: "X.509"
|
|
311
|
+
};
|
|
312
|
+
const THREAD_INTERFACE_STATUS_LABELS = {
|
|
313
|
+
0: "not initialized",
|
|
314
|
+
1: "initialized, inactive",
|
|
315
|
+
2: "initialized, active"
|
|
316
|
+
};
|
|
317
|
+
const AVAILABILITY_LABELS = {
|
|
318
|
+
0: "infrequent",
|
|
319
|
+
1: "high"
|
|
320
|
+
};
|
|
321
|
+
const THREAD_ROLE_LABELS = {
|
|
322
|
+
0: "detached",
|
|
323
|
+
1: "child",
|
|
324
|
+
2: "router",
|
|
325
|
+
3: "leader"
|
|
326
|
+
};
|
|
327
|
+
const MULTI_AIL_STATE_LABELS = {
|
|
328
|
+
0: "disabled",
|
|
329
|
+
1: "not detected",
|
|
330
|
+
2: "detected"
|
|
331
|
+
};
|
|
332
|
+
function decodeMeshcopStateBitmap(hex) {
|
|
333
|
+
if (hex === void 0 || !/^[0-9a-fA-F]{1,8}$/.test(hex)) return void 0;
|
|
334
|
+
const value = parseInt(hex, 16);
|
|
335
|
+
if (!Number.isFinite(value)) return void 0;
|
|
336
|
+
const connectionModeValue = value & 7;
|
|
337
|
+
const threadInterfaceStatusValue = value >> 3 & 3;
|
|
338
|
+
const availabilityValue = value >> 5 & 3;
|
|
339
|
+
const bbr = (value >> 7 & 1) === 1;
|
|
340
|
+
const bbrIsPrimary = (value >> 8 & 1) === 1;
|
|
341
|
+
const threadRoleValue = value >> 9 & 3;
|
|
342
|
+
const epskcSupported = (value >> 11 & 1) === 1;
|
|
343
|
+
const multiAilStateValue = value >> 12 & 3;
|
|
344
|
+
const reserved = value >>> 14 >>> 0;
|
|
345
|
+
return {
|
|
346
|
+
connectionModeValue,
|
|
347
|
+
connectionMode: CONNECTION_MODE_LABELS[connectionModeValue],
|
|
348
|
+
threadInterfaceStatusValue,
|
|
349
|
+
threadInterfaceStatus: THREAD_INTERFACE_STATUS_LABELS[threadInterfaceStatusValue],
|
|
350
|
+
availabilityValue,
|
|
351
|
+
availability: AVAILABILITY_LABELS[availabilityValue],
|
|
352
|
+
bbr,
|
|
353
|
+
bbrFunction: bbr ? bbrIsPrimary ? "primary" : "secondary" : void 0,
|
|
354
|
+
threadRoleValue,
|
|
355
|
+
threadRole: THREAD_ROLE_LABELS[threadRoleValue],
|
|
356
|
+
epskcSupported,
|
|
357
|
+
multiAilStateValue,
|
|
358
|
+
multiAilState: MULTI_AIL_STATE_LABELS[multiAilStateValue],
|
|
359
|
+
reservedHex: reserved !== 0 ? reserved.toString(16).toUpperCase() : void 0
|
|
360
|
+
};
|
|
263
361
|
}
|
|
264
362
|
function getSignalLevel(neighbor) {
|
|
265
363
|
const rssi = neighbor.avgRssi ?? neighbor.lastRssi;
|
|
@@ -268,8 +366,11 @@ function getSignalLevel(neighbor) {
|
|
|
268
366
|
if (rssi > SIGNAL_MEDIUM_THRESHOLD) return "medium";
|
|
269
367
|
return "weak";
|
|
270
368
|
}
|
|
271
|
-
|
|
272
|
-
|
|
369
|
+
return getSignalLevelFromLqi(neighbor.lqi);
|
|
370
|
+
}
|
|
371
|
+
function getSignalLevelFromLqi(lqi) {
|
|
372
|
+
if (lqi > LQI_STRONG_THRESHOLD) return "strong";
|
|
373
|
+
if (lqi > LQI_MEDIUM_THRESHOLD) return "medium";
|
|
273
374
|
return "weak";
|
|
274
375
|
}
|
|
275
376
|
function signalLevelToColor(level) {
|
|
@@ -414,9 +515,16 @@ function getWiFiVersionName(version) {
|
|
|
414
515
|
return "Unknown";
|
|
415
516
|
}
|
|
416
517
|
}
|
|
417
|
-
function
|
|
418
|
-
|
|
419
|
-
|
|
518
|
+
function makePairKey(a, b) {
|
|
519
|
+
return a < b ? `${a}|${b}` : `${b}|${a}`;
|
|
520
|
+
}
|
|
521
|
+
function getEdgeSignalScore(conn) {
|
|
522
|
+
const levelScore = conn.signalLevel === "strong" ? 3e3 : conn.signalLevel === "medium" ? 2e3 : conn.signalLevel === "weak" ? 1e3 : 0;
|
|
523
|
+
const detail = conn.rssi !== null ? conn.rssi + 200 : conn.lqi;
|
|
524
|
+
return levelScore + detail;
|
|
525
|
+
}
|
|
526
|
+
function buildThreadEdgePairs(nodes, extAddrMap, rloc16Map, unknownDevices) {
|
|
527
|
+
const pairs = /* @__PURE__ */ new Map();
|
|
420
528
|
const unknownExtAddrMap = /* @__PURE__ */ new Map();
|
|
421
529
|
for (const unknown of unknownDevices) {
|
|
422
530
|
unknownExtAddrMap.set(unknown.extAddress, unknown.id);
|
|
@@ -432,29 +540,33 @@ function buildThreadConnections(nodes, extAddrMap, rloc16Map, unknownDevices) {
|
|
|
432
540
|
if (toNodeId === void 0) {
|
|
433
541
|
toNodeId = unknownExtAddrMap.get(neighbor.extAddress);
|
|
434
542
|
}
|
|
435
|
-
if (toNodeId === void 0)
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
}
|
|
441
|
-
const connectionKey = `${fromNodeId}-${toNodeId}`;
|
|
442
|
-
const reverseKey = `${toNodeId}-${fromNodeId}`;
|
|
443
|
-
if (seenConnections.has(connectionKey) || seenConnections.has(reverseKey)) {
|
|
444
|
-
continue;
|
|
543
|
+
if (toNodeId === void 0 || fromNodeId === toNodeId) continue;
|
|
544
|
+
const pairKey = makePairKey(fromNodeId, toNodeId);
|
|
545
|
+
if (!pairs.has(pairKey)) {
|
|
546
|
+
const [nodeA, nodeB] = fromNodeId < toNodeId ? [fromNodeId, toNodeId] : [toNodeId, fromNodeId];
|
|
547
|
+
pairs.set(pairKey, { pairKey, nodeA, nodeB });
|
|
445
548
|
}
|
|
446
|
-
|
|
549
|
+
const pair = pairs.get(pairKey);
|
|
550
|
+
const isFromA = fromNodeId === pair.nodeA;
|
|
551
|
+
if (isFromA && pair.edgeAB) continue;
|
|
552
|
+
if (!isFromA && pair.edgeBA) continue;
|
|
447
553
|
const routeEntry = findRouteByExtAddress(node, neighbor.extAddress);
|
|
448
554
|
const bidirectionalLqi = routeEntry ? getRouteBidirectionalLqi(routeEntry) : void 0;
|
|
449
|
-
|
|
555
|
+
const edge = {
|
|
450
556
|
fromNodeId,
|
|
451
557
|
toNodeId,
|
|
452
558
|
signalColor: getSignalColor(neighbor),
|
|
559
|
+
signalLevel: getSignalLevel(neighbor),
|
|
453
560
|
lqi: neighbor.lqi,
|
|
454
561
|
rssi: neighbor.avgRssi ?? neighbor.lastRssi,
|
|
455
562
|
pathCost: routeEntry?.pathCost,
|
|
456
563
|
bidirectionalLqi
|
|
457
|
-
}
|
|
564
|
+
};
|
|
565
|
+
if (isFromA) {
|
|
566
|
+
pair.edgeAB = edge;
|
|
567
|
+
} else {
|
|
568
|
+
pair.edgeBA = edge;
|
|
569
|
+
}
|
|
458
570
|
}
|
|
459
571
|
const routes = parseRouteTable(node);
|
|
460
572
|
for (const route of routes) {
|
|
@@ -467,104 +579,129 @@ function buildThreadConnections(nodes, extAddrMap, rloc16Map, unknownDevices) {
|
|
|
467
579
|
toNodeId = unknownExtAddrMap.get(route.extAddress);
|
|
468
580
|
}
|
|
469
581
|
if (toNodeId === void 0 || toNodeId === fromNodeId) continue;
|
|
470
|
-
const
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
582
|
+
const pairKey = makePairKey(fromNodeId, toNodeId);
|
|
583
|
+
if (!pairs.has(pairKey)) {
|
|
584
|
+
const [nodeA, nodeB] = fromNodeId < toNodeId ? [fromNodeId, toNodeId] : [toNodeId, fromNodeId];
|
|
585
|
+
pairs.set(pairKey, { pairKey, nodeA, nodeB });
|
|
474
586
|
}
|
|
475
|
-
|
|
587
|
+
const pair = pairs.get(pairKey);
|
|
588
|
+
const isFromA = fromNodeId === pair.nodeA;
|
|
589
|
+
if (isFromA && pair.edgeAB) continue;
|
|
590
|
+
if (!isFromA && pair.edgeBA) continue;
|
|
476
591
|
const bidirectionalLqi = getRouteBidirectionalLqi(route);
|
|
477
592
|
const signalColor = bidirectionalLqi !== void 0 ? getSignalColorFromLqi(bidirectionalLqi) : "var(--md-sys-color-outline, grey)";
|
|
478
|
-
|
|
593
|
+
const edge = {
|
|
479
594
|
fromNodeId,
|
|
480
595
|
toNodeId,
|
|
481
596
|
signalColor,
|
|
597
|
+
signalLevel: bidirectionalLqi !== void 0 ? getSignalLevelFromLqi(bidirectionalLqi) : void 0,
|
|
482
598
|
lqi: bidirectionalLqi ?? 0,
|
|
483
599
|
rssi: null,
|
|
484
600
|
pathCost: route.pathCost,
|
|
485
601
|
bidirectionalLqi,
|
|
486
602
|
fromRouteTable: true
|
|
487
|
-
}
|
|
603
|
+
};
|
|
604
|
+
if (isFromA) {
|
|
605
|
+
pair.edgeAB = edge;
|
|
606
|
+
} else {
|
|
607
|
+
pair.edgeBA = edge;
|
|
608
|
+
}
|
|
488
609
|
}
|
|
489
610
|
}
|
|
490
|
-
return
|
|
611
|
+
return pairs;
|
|
491
612
|
}
|
|
492
|
-
function
|
|
613
|
+
function getNodeConnectionsFromPairs(nodeId, edgePairs, nodes, filters) {
|
|
493
614
|
const connections = [];
|
|
494
|
-
const
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
let connectedNodeId = extAddrMap.get(neighbor.extAddress);
|
|
501
|
-
if (connectedNodeId === void 0 && rloc16Map && neighbor.rloc16 !== 0) {
|
|
502
|
-
connectedNodeId = rloc16Map.get(neighbor.rloc16);
|
|
615
|
+
const hiddenNodeIds = /* @__PURE__ */ new Set();
|
|
616
|
+
if (filters?.hideOfflineNodes) {
|
|
617
|
+
for (const node of Object.values(nodes)) {
|
|
618
|
+
if (node.available === false) {
|
|
619
|
+
hiddenNodeIds.add(String(node.node_id));
|
|
620
|
+
}
|
|
503
621
|
}
|
|
504
|
-
const connectedNode = connectedNodeId ? nodes[connectedNodeId] : void 0;
|
|
505
|
-
const isUnknown = connectedNodeId === void 0;
|
|
506
|
-
const displayId = connectedNodeId ?? `unknown_${neighbor.extAddress.toString(16).toUpperCase().padStart(16, "0")}`;
|
|
507
|
-
seenConnectedIds.add(displayId);
|
|
508
|
-
const routeEntry = findRouteByExtAddress(node, neighbor.extAddress);
|
|
509
|
-
const bidirectionalLqi = routeEntry ? getRouteBidirectionalLqi(routeEntry) : void 0;
|
|
510
|
-
connections.push({
|
|
511
|
-
connectedNodeId: displayId,
|
|
512
|
-
connectedNode,
|
|
513
|
-
extAddressHex: neighbor.extAddress.toString(16).toUpperCase().padStart(16, "0"),
|
|
514
|
-
signalColor: getSignalColor(neighbor),
|
|
515
|
-
lqi: neighbor.lqi,
|
|
516
|
-
rssi: neighbor.avgRssi ?? neighbor.lastRssi,
|
|
517
|
-
isOutgoing: true,
|
|
518
|
-
isUnknown,
|
|
519
|
-
pathCost: routeEntry?.pathCost,
|
|
520
|
-
bidirectionalLqi
|
|
521
|
-
});
|
|
522
622
|
}
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
isUnknown: false,
|
|
544
|
-
pathCost: routeEntry?.pathCost,
|
|
545
|
-
bidirectionalLqi
|
|
546
|
-
});
|
|
623
|
+
for (const pair of edgePairs.values()) {
|
|
624
|
+
const isA = pair.nodeA === nodeId;
|
|
625
|
+
const isB = pair.nodeB === nodeId;
|
|
626
|
+
if (!isA && !isB) continue;
|
|
627
|
+
const remoteId = isA ? pair.nodeB : pair.nodeA;
|
|
628
|
+
const outgoing = isA ? pair.edgeAB : pair.edgeBA;
|
|
629
|
+
const incoming = isA ? pair.edgeBA : pair.edgeAB;
|
|
630
|
+
const survivors = [];
|
|
631
|
+
for (const [conn, isOut] of [
|
|
632
|
+
[outgoing, true],
|
|
633
|
+
[incoming, false]
|
|
634
|
+
]) {
|
|
635
|
+
if (!conn) continue;
|
|
636
|
+
if (filters) {
|
|
637
|
+
const fromId = String(conn.fromNodeId);
|
|
638
|
+
const toId = String(conn.toNodeId);
|
|
639
|
+
if (hiddenNodeIds.has(fromId) || hiddenNodeIds.has(toId)) continue;
|
|
640
|
+
if (filters.hideWeakSignalEdges && conn.signalLevel === "weak") continue;
|
|
641
|
+
if (filters.hideMediumSignalEdges && conn.signalLevel === "medium") continue;
|
|
642
|
+
if (filters.hideStrongSignalEdges && conn.signalLevel === "strong") continue;
|
|
547
643
|
}
|
|
644
|
+
survivors.push({ conn, isOutgoing: isOut });
|
|
548
645
|
}
|
|
646
|
+
if (survivors.length === 0) continue;
|
|
647
|
+
let winner;
|
|
648
|
+
const outgoingSurvivor = survivors.find((s) => s.isOutgoing);
|
|
649
|
+
if (outgoingSurvivor) {
|
|
650
|
+
winner = outgoingSurvivor;
|
|
651
|
+
} else {
|
|
652
|
+
survivors.sort((a, b) => getEdgeSignalScore(a.conn) - getEdgeSignalScore(b.conn));
|
|
653
|
+
winner = survivors[0];
|
|
654
|
+
}
|
|
655
|
+
const remoteNode = nodes[remoteId];
|
|
656
|
+
const isExternalUnknown = remoteId.startsWith("unknown_");
|
|
657
|
+
const isExternalBr = remoteId.startsWith("br_");
|
|
658
|
+
const isUnknown = isExternalUnknown || isExternalBr;
|
|
659
|
+
let extAddressHex;
|
|
660
|
+
if (isExternalUnknown) {
|
|
661
|
+
extAddressHex = remoteId.slice("unknown_".length);
|
|
662
|
+
} else if (isExternalBr) {
|
|
663
|
+
extAddressHex = remoteId.slice("br_".length);
|
|
664
|
+
} else if (remoteNode) {
|
|
665
|
+
extAddressHex = getThreadExtendedAddressHex(remoteNode) ?? "Unknown";
|
|
666
|
+
} else {
|
|
667
|
+
extAddressHex = "Unknown";
|
|
668
|
+
}
|
|
669
|
+
connections.push({
|
|
670
|
+
connectedNodeId: remoteId,
|
|
671
|
+
connectedNode: remoteNode,
|
|
672
|
+
extAddressHex,
|
|
673
|
+
signalColor: winner.conn.signalColor,
|
|
674
|
+
signalLevel: winner.conn.signalLevel,
|
|
675
|
+
lqi: winner.conn.lqi,
|
|
676
|
+
rssi: winner.conn.rssi,
|
|
677
|
+
isOutgoing: winner.isOutgoing,
|
|
678
|
+
isReverseOnly: !outgoing,
|
|
679
|
+
isUnknown,
|
|
680
|
+
pathCost: winner.conn.pathCost,
|
|
681
|
+
bidirectionalLqi: winner.conn.bidirectionalLqi
|
|
682
|
+
});
|
|
549
683
|
}
|
|
550
684
|
return connections;
|
|
551
685
|
}
|
|
552
686
|
export {
|
|
553
687
|
buildExtAddrMap,
|
|
554
688
|
buildRloc16Map,
|
|
555
|
-
|
|
689
|
+
buildThreadEdgePairs,
|
|
556
690
|
categorizeDevices,
|
|
691
|
+
decodeMeshcopStateBitmap,
|
|
557
692
|
findRouteByExtAddress,
|
|
558
693
|
findUnknownDevices,
|
|
559
694
|
getDeviceName,
|
|
695
|
+
getEdgeSignalScore,
|
|
560
696
|
getNetworkType,
|
|
561
|
-
|
|
697
|
+
getNodeConnectionsFromPairs,
|
|
562
698
|
getRoutableDestinationsCount,
|
|
563
699
|
getRouteBidirectionalLqi,
|
|
564
700
|
getSignalColor,
|
|
565
701
|
getSignalColorFromLqi,
|
|
566
702
|
getSignalColorFromRssi,
|
|
567
703
|
getSignalLevel,
|
|
704
|
+
getSignalLevelFromLqi,
|
|
568
705
|
getThreadChannel,
|
|
569
706
|
getThreadExtendedAddress,
|
|
570
707
|
getThreadExtendedAddressHex,
|
|
@@ -575,6 +712,7 @@ export {
|
|
|
575
712
|
getWiFiDiagnostics,
|
|
576
713
|
getWiFiSecurityTypeName,
|
|
577
714
|
getWiFiVersionName,
|
|
715
|
+
makePairKey,
|
|
578
716
|
parseNeighborTable,
|
|
579
717
|
parseRouteTable,
|
|
580
718
|
signalLevelToColor
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/pages/network/network-utils.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -3,24 +3,37 @@
|
|
|
3
3
|
* Copyright 2025-2026 Open Home Foundation
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import type { BorderRouterEntry } from "@matter-server/ws-client";
|
|
6
7
|
import { BaseNetworkGraph } from "./base-network-graph.js";
|
|
8
|
+
import type { ThreadEdgePair, ThreadExternalDevice } from "./network-types.js";
|
|
7
9
|
declare global {
|
|
8
10
|
interface HTMLElementTagNameMap {
|
|
9
11
|
"thread-graph": ThreadGraph;
|
|
10
12
|
}
|
|
11
13
|
}
|
|
12
14
|
export declare class ThreadGraph extends BaseNetworkGraph {
|
|
13
|
-
|
|
15
|
+
borderRouters: ReadonlyMap<string, BorderRouterEntry>;
|
|
16
|
+
hideOfflineNodes: boolean;
|
|
17
|
+
hideWeakSignalEdges: boolean;
|
|
18
|
+
hideMediumSignalEdges: boolean;
|
|
19
|
+
hideStrongSignalEdges: boolean;
|
|
20
|
+
/** Cache of external Thread devices (Border Routers and unknown) for the current render */
|
|
14
21
|
private _unknownDevices;
|
|
15
|
-
/** Cached map of
|
|
22
|
+
/** Cached map of external Thread devices (rebuilt in _updateGraph) */
|
|
16
23
|
private _unknownDevicesMapCache;
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
/** All computed edge pairs (rebuilt in _updateGraph) */
|
|
25
|
+
private _edgePairs;
|
|
26
|
+
/** Base state of each edge after filter+dedup, before highlight */
|
|
27
|
+
private _edgeBaseState;
|
|
28
|
+
/** Whether highlight is currently active */
|
|
29
|
+
private _isHighlighted;
|
|
30
|
+
/** Node ID currently highlighted (for icon restoration on clear) */
|
|
31
|
+
private _highlightedNodeId;
|
|
32
|
+
/** Get external Thread devices as a map for use by details panel */
|
|
33
|
+
get unknownDevicesMap(): ReadonlyMap<string, ThreadExternalDevice>;
|
|
34
|
+
/** Get computed edge pairs (for potential use by other components) */
|
|
35
|
+
get edgePairs(): Map<string, ThreadEdgePair>;
|
|
36
|
+
updated(changedProperties: Map<string, unknown>): void;
|
|
24
37
|
/**
|
|
25
38
|
* Searches for a Thread node (known or unknown) by extended address and selects it.
|
|
26
39
|
* Accepts formats like:
|
|
@@ -31,6 +44,52 @@ export declare class ThreadGraph extends BaseNetworkGraph {
|
|
|
31
44
|
*/
|
|
32
45
|
selectByExtendedAddress(address: string): boolean;
|
|
33
46
|
protected _updateGraph(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Highlights edges connected to the selected node with swap/arrow logic.
|
|
49
|
+
*
|
|
50
|
+
* For each visible edge connected to the highlighted node:
|
|
51
|
+
* - If the visible edge comes from the remote node AND there is a
|
|
52
|
+
* dedup-hidden edge from the highlighted node → SWAP: show the
|
|
53
|
+
* highlighted node's edge instead (its signal is better or equal,
|
|
54
|
+
* but we prefer the highlighted node's perspective).
|
|
55
|
+
* - Otherwise → thicken the edge. If the pair is truly one-way (only
|
|
56
|
+
* one of edgeAB/edgeBA exists), also draw an arrow in the data
|
|
57
|
+
* direction so asymmetric visibility is visible at a glance.
|
|
58
|
+
*/
|
|
59
|
+
protected _highlightConnections(nodeId: number | string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Thicken a connected edge and add a directional arrow when the pair is
|
|
62
|
+
* truly one-way in data (only one of edgeAB/edgeBA exists). Used for the
|
|
63
|
+
* highlighted-reports-peer branch where filter-hidden peer directions
|
|
64
|
+
* should not draw an arrow on the user's own perspective.
|
|
65
|
+
*
|
|
66
|
+
* Explicit arrow object (vs the shorthand "to") keeps the head visible
|
|
67
|
+
* on dashed offline edges where some vis.js builds skip the shorthand.
|
|
68
|
+
*/
|
|
69
|
+
private _asymmetricEdgeUpdate;
|
|
70
|
+
/**
|
|
71
|
+
* Thicken a connected edge and always add a directional arrow. Used for
|
|
72
|
+
* the remote-reports-highlighted branch where the displayed edge is the
|
|
73
|
+
* peer's direction (no swap target available); the user sees the same
|
|
74
|
+
* single line whether the outgoing direction is filter-hidden or absent.
|
|
75
|
+
*/
|
|
76
|
+
private _reverseEdgeUpdate;
|
|
77
|
+
/**
|
|
78
|
+
* Swap a node's icon between the default and highlighted variants.
|
|
79
|
+
* Kept separate so both `_highlightConnections` (switching target) and
|
|
80
|
+
* `_clearHighlights` (fully unselecting) reach the same end state.
|
|
81
|
+
*/
|
|
82
|
+
private _setNodeIconHighlight;
|
|
83
|
+
/**
|
|
84
|
+
* Clears all highlights and restores the graph to its base state
|
|
85
|
+
* (after filter+dedup, before highlight modifications).
|
|
86
|
+
*/
|
|
87
|
+
protected _clearHighlights(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Restores all edges to their base state (undoes highlight modifications).
|
|
90
|
+
* This resets hidden/visible state, width, color, and dashes.
|
|
91
|
+
*/
|
|
92
|
+
private _restoreEdgeBaseState;
|
|
34
93
|
render(): import("lit-html").TemplateResult<1>;
|
|
35
94
|
}
|
|
36
95
|
//# sourceMappingURL=thread-graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-graph.d.ts","sourceRoot":"","sources":["../../../../src/pages/network/thread-graph.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"thread-graph.d.ts","sourceRoot":"","sources":["../../../../src/pages/network/thread-graph.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAQlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAIR,cAAc,EACd,oBAAoB,EACvB,MAAM,oBAAoB,CAAC;AAa5B,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,qBAAqB;QAC3B,cAAc,EAAE,WAAW,CAAC;KAC/B;CACJ;AAaD,qBACa,WAAY,SAAQ,gBAAgB;IACb,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAa;IAG3F,gBAAgB,UAAS;IAGzB,mBAAmB,UAAS;IAG5B,qBAAqB,UAAS;IAG9B,qBAAqB,UAAS;IAErC,2FAA2F;IAC3F,OAAO,CAAC,eAAe,CAA8B;IAErD,sEAAsE;IACtE,OAAO,CAAC,uBAAuB,CAAgD;IAE/E,wDAAwD;IACxD,OAAO,CAAC,UAAU,CAA0C;IAE5D,mEAAmE;IACnE,OAAO,CAAC,cAAc,CAAkD;IAExE,4CAA4C;IAC5C,OAAO,CAAC,cAAc,CAAS;IAE/B,oEAAoE;IACpE,OAAO,CAAC,kBAAkB,CAAuB;IAEjD,oEAAoE;IACpE,IAAW,iBAAiB,IAAI,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAExE;IAED,sEAAsE;IACtE,IAAW,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAElD;IAEQ,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAe9D;IAED;;;;;;;OAOG;IACI,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CA4BvD;IAED,UAAmB,YAAY,IAAI,IAAI,CAkOtC;IAED;;;;;;;;;;;OAWG;IACH,UAAmB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwItE;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IA0B7B;;;OAGG;IACH,UAAmB,gBAAgB,IAAI,IAAI,CA0B1C;IAED;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAiBpB,MAAM,yCAqBd;CACJ"}
|