Skip to content

Commit 87f4797

Browse files
hawkgsamishne
authored andcommitted
refactor(devtools): drop dagre graph type
Drop Dagre graph type since v7.0.14 introduces better typing.
1 parent 7210947 commit 87f4797

3 files changed

Lines changed: 13 additions & 22 deletions

File tree

devtools/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/signals-view/signals-visualizer/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ sass_binary(
1313
ng_project(
1414
name = "signals-visualizer",
1515
srcs = [
16-
"dagre-d3-types.ts",
1716
"signals-visualizer.component.ts",
1817
"signals-visualizer.ts",
18+
"visualizer-types.ts",
1919
],
2020
angular_assets = [
2121
"signals-visualizer.component.html",

devtools/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/signals-view/signals-visualizer/signals-visualizer.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
DevtoolsSignalNode,
1818
} from '../../signal-graph';
1919
import {DebugSignalGraphNode} from '../../../../../../../protocol';
20-
import type {DagreGraph, DagreGraphCluster, DagreGraphNode} from './dagre-d3-types';
20+
import type {DagreCluster, DagreEdge, DagreNode, DagreRegularNode} from './visualizer-types';
2121

2222
const KIND_CLASS_MAP: {[key in DebugSignalGraphNode['kind']]: string} = {
2323
'signal': 'kind-signal',
@@ -65,7 +65,7 @@ const CLUSTER_EXPAND_ANIM_DURATION = 1100; // Empirical value based on Dagre's b
6565
// - Standard cluster node – A cluster node, visualized as a standard node (i.e. collapsed)
6666
// - Expanded cluster node – A cluster node, visualized as a container of its child nodes (i.e. expanded)
6767
export class SignalsGraphVisualizer {
68-
private graph: DagreGraph;
68+
private graph: graphlib.Graph<any, DagreNode, DagreEdge>;
6969
private drender: ReturnType<typeof dagreRender>;
7070

7171
zoomController: d3.ZoomBehavior<SVGSVGElement, unknown>;
@@ -302,7 +302,7 @@ export class SignalsGraphVisualizer {
302302
// Add new/update existing nodes
303303
for (const n of signalGraph.nodes) {
304304
const isSignal = isSignalNode(n);
305-
const existingNode = this.graph.node(n.id) as DagreGraphNode | undefined;
305+
const existingNode = this.graph.node(n.id) as DagreRegularNode | undefined;
306306

307307
if (existingNode) {
308308
if (isSignal && n.epoch !== existingNode.epoch) {
@@ -408,7 +408,7 @@ export class SignalsGraphVisualizer {
408408

409409
private updateDagreNode(
410410
newNode: DevtoolsSignalNode,
411-
existingNode: DagreGraphNode,
411+
existingNode: DagreRegularNode,
412412
signalGraph: DevtoolsSignalGraph,
413413
) {
414414
const count = this.animatedNodesMap.get(newNode.id) ?? 0;
@@ -548,7 +548,7 @@ export class SignalsGraphVisualizer {
548548
.each((nodeId, idx, group) => {
549549
const node = group[idx];
550550
const d3Node = d3.select(node);
551-
const {width, height} = this.graph.node(nodeId as string) as DagreGraphNode;
551+
const {width, height} = this.graph.node(nodeId as string) as DagreRegularNode;
552552

553553
d3Node
554554
.select('g')
@@ -600,8 +600,6 @@ function convertNodesToMap(nodes: DevtoolsSignalGraphNode[]): Map<string, Devtoo
600600
return new Map(nodes.map((n) => [n.id, n]));
601601
}
602602

603-
function isDagreClusterNode(
604-
node: DagreGraphCluster | DagreGraphNode | undefined,
605-
): node is DagreGraphCluster {
606-
return !!(node as DagreGraphCluster)?.clusterLabelPos;
603+
function isDagreClusterNode(node: DagreNode | undefined): node is DagreCluster {
604+
return !!(node as DagreCluster)?.clusterLabelPos;
607605
}

devtools/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/signals-view/signals-visualizer/dagre-d3-types.ts renamed to devtools/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/signals-view/signals-visualizer/visualizer-types.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66
* found in the LICENSE file at https://angular.dev/license
77
*/
88

9-
import {graphlib} from 'dagre-d3-es';
10-
119
// Non-exhaustive; Alter based on Dagre D3 docs if required
12-
export interface DagreGraphNode {
10+
export interface DagreRegularNode {
1311
label: HTMLDivElement;
1412
labelType: string;
1513
shape: string;
@@ -21,24 +19,19 @@ export interface DagreGraphNode {
2119
}
2220

2321
// Non-exhaustive; Alter based on Dagre D3 docs if required
24-
export interface DagreGraphCluster {
22+
export interface DagreCluster {
2523
label: string;
2624
clusterLabelPos: string;
2725
class?: string;
2826
style?: string;
2927
}
3028

29+
export type DagreNode = DagreRegularNode | DagreCluster;
30+
3131
// Non-exhaustive; Alter based on Dagre D3 docs if required
32-
export interface DagreGraphEdge {
32+
export interface DagreEdge {
3333
curve: any;
3434
style?: string;
3535
arrowheadStyle?: string;
3636
class?: string;
3737
}
38-
39-
// Improve Graphlib types
40-
export declare class DagreGraph extends graphlib.Graph {
41-
override setNode(id: string, value: DagreGraphNode | DagreGraphCluster, ...args: any[]): this;
42-
override node(id: string): DagreGraphNode | DagreGraphCluster;
43-
override edges(): {v: string; w: string}[];
44-
}

0 commit comments

Comments
 (0)