Skip to content

Commit bec3d02

Browse files
committed
Save as dot is now working for all three graph types.
1 parent 3ce551d commit bec3d02

File tree

6 files changed

+29
-17
lines changed

6 files changed

+29
-17
lines changed

src/commands/generateDependencyInjectionGraph.ts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ export class GenerateDependencyInjectionGraph extends ShowHierarchyBase {
1818
case 'saveAsDgml':
1919
this.saveAsDgml(this.config.dependencyInjectionDgmlGraphFilename, message.text, `'The components hierarchy has been analyzed and a Directed Graph Markup Language (dgml) file '${this.config.dependencyInjectionDgmlGraphFilename}' has been created'`);
2020
return;
21+
case 'saveAsDot':
22+
this.saveAsDot(this.config.dependencyInjectionDotGraphFilename, message.text, 'dependencyInjectionGraph', `'The components hierarchy has been analyzed and a GraphViz (dot) file '${this.config.dependencyInjectionDotGraphFilename}' has been created'`);
23+
return;
2124
}
2225
},
2326
undefined,
@@ -36,8 +39,8 @@ export class GenerateDependencyInjectionGraph extends ShowHierarchyBase {
3639
const edgesJson = this.edges
3740
.map((edge, index, arr) => { return edge.toJsonString(); })
3841
.join(',\n');
39-
40-
try {
42+
43+
try {
4144
const jsContent = this.generateJavascriptContent(nodesJson, edgesJson);
4245
const outputJsFilename = this.showModuleHierarchyJsFilename;
4346
let htmlContent = this.generateHtmlContent(webview, this.showModuleHierarchyJsFilename);
@@ -61,29 +64,29 @@ export class GenerateDependencyInjectionGraph extends ShowHierarchyBase {
6164
generatedComponentNode(component: Component): string {
6265
let nodeContent: string = '';
6366
nodeContent = `<b>${component.name}</b>`;
64-
if(component.inputs.length > 0) {
67+
if (component.inputs.length > 0) {
6568
const inputs = component.inputs.map(i => i.name).join(", ");
66-
nodeContent += `\\n<b>Inputs:</b> ${inputs}`;
69+
nodeContent += `\\n<b>Inputs: </b> ${inputs}`;
6770
}
68-
if(component.outputs.length > 0) {
71+
if (component.outputs.length > 0) {
6972
const outputs = component.outputs.map(i => i.name).join(", ");
70-
nodeContent += `\\n<b>Outputs:</b> ${outputs}`;
73+
nodeContent += `\\n<b>Outputs: </b> ${outputs}`;
7174
}
72-
if(component.viewchilds.length > 0) {
75+
if (component.viewchilds.length > 0) {
7376
const viewchilds = component.viewchilds.map(i => i.name).join(", ");
74-
nodeContent += `\\n<b>Viewchilds:</b> ${viewchilds}`;
77+
nodeContent += `\\n<b>Viewchilds: </b> ${viewchilds}`;
7578
}
76-
if(component.viewchildren.length > 0) {
79+
if (component.viewchildren.length > 0) {
7780
const viewchildren = component.viewchildren.map(i => i.name).join(", ");
78-
nodeContent += `\\n<b>Viewchildren:</b> ${viewchildren}`;
81+
nodeContent += `\\n<b>Viewchildren: </b> ${viewchildren}`;
7982
}
80-
if(component.contentchilds.length > 0) {
83+
if (component.contentchilds.length > 0) {
8184
const contentchilds = component.contentchilds.map(i => i.name).join(", ");
82-
nodeContent += `\\n<b>Contentchilds:</b> ${contentchilds}`;
85+
nodeContent += `\\n<b>Contentchilds: </b> ${contentchilds}`;
8386
}
84-
if(component.contentchildren.length > 0) {
87+
if (component.contentchildren.length > 0) {
8588
const contentchildren = component.contentchildren.map(i => i.name).join(", ");
86-
nodeContent += `\\n<b>Contentchildren:</b> ${contentchildren}`;
89+
nodeContent += `\\n<b>Contentchildren: </b> ${contentchildren}`;
8790
}
8891
return nodeContent;
8992
}

src/commands/showComponentHierarchy.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ export class ShowComponentHierarchy extends ShowHierarchyBase {
2121
case 'saveAsDgml':
2222
this.saveAsDgml(this.config.componentHierarchyDgmlGraphFilename, message.text, `'The component hierarchy has been analyzed and a Directed Graph Markup Language (dgml) file '${this.config.componentHierarchyDgmlGraphFilename}' has been created'`);
2323
return;
24+
case 'saveAsDot':
25+
this.saveAsDot(this.config.componentHierarchyDotGraphFilename, message.text, 'componentHierarchy', `'The component hierarchy has been analyzed and a GraphViz (dot) file '${this.config.componentHierarchyDotGraphFilename}' has been created'`);
26+
return;
2427
}
2528
},
2629
undefined,
@@ -78,7 +81,7 @@ export class ShowComponentHierarchy extends ShowHierarchyBase {
7881
appendNodes([new Node(component.selector, component.selector, componentFilename, isRoot, isRoot ? NodeType.rootNode : NodeType.component)]);
7982
if (components.length > 0) {
8083
components.forEach((subComponent) => {
81-
if(parentSelector !== subComponent.selector) {
84+
if (parentSelector !== subComponent.selector) {
8285
this.generateDirectedGraphNodes(subComponent.subComponents, subComponent, subComponent.isRoot, component.selector, appendNodes);
8386
}
8487
});

src/commands/showHierarchyBase.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ export class ShowHierarchyBase extends CommandBase {
111111
return fixedDirection;
112112
}
113113

114-
protected saveAsGraphViz(graphVizFilename: string, messageText: string, graphType: string, popMessageText: string) {
114+
protected saveAsDot(graphVizFilename: string, messageText: string, graphType: string, popMessageText: string) {
115115
const message = JSON.parse(messageText);
116116
const graphVizManager = new GraphVizManager();
117117
const fileContent = graphVizManager.createGraphVizDiagram(graphType, this.nodes, message.nodes, this.edges);

src/commands/showModuleHierarchy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export class ShowModuleHierarchy extends ShowHierarchyBase {
1919
this.saveAsDgml(this.config.moduleHierarchyDgmlGraphFilename, message.text, `'The modules hierarchy has been analyzed and a Directed Graph Markup Language (dgml) file '${this.config.moduleHierarchyDgmlGraphFilename}' has been created'`);
2020
return;
2121
case 'saveAsDot':
22-
this.saveAsGraphViz('ModuleHierarchy.dot', message.text, 'moduleHierarchy', `'The modules hierarchy has been analyzed and a Directed Graph Markup Language (dgml) file 'ModuleHierarchy.dot' has been created'`);
22+
this.saveAsDot(this.config.moduleHierarchyDotGraphFilename, message.text, 'moduleHierarchy', `'The modules hierarchy has been analyzed and a GraphViz (dot) file '${this.config.moduleHierarchyDotGraphFilename}' has been created'`);
2323
return;
2424
}
2525
},

src/config.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,19 @@ export class Config {
2929
// DependencyInjectionGraph
3030
public get dependencyInjectionPngFilename(): string { return this.getSetting<string>('dependencyInjectionGraph.pngGraphFilename', 'DependencyInjectionGraph.png'); }
3131
public get dependencyInjectionDgmlGraphFilename(): string { return this.getSetting<string>('dependencyInjectionGraph.dgmlGraphFilename', 'DependencyInjectionGraph.dgml'); }
32+
public get dependencyInjectionDotGraphFilename(): string { return this.getSetting<string>('dependencyInjectionGraph.dotGraphFilename', 'DependencyInjectionGraph.dot'); }
3233
public get dependencyInjectionEdgeArrowToType(): string { return this.getSetting<string>('dependencyInjectionGraph.edgeArrowToType', 'triangle'); }
3334

3435
// ShowComponentHierarchy
3536
public get componentHierarchyPngFilename(): string { return this.getSetting<string>('showComponentHierarchy.componentHierarchyPngFilename', 'ComponentHierarchy.png'); }
3637
public get componentHierarchyDgmlGraphFilename(): string { return this.getSetting<string>('showComponentHierarchy.componentHierarchyDgmlGraphFilename', 'ComponentHierarchy.dgml'); }
38+
public get componentHierarchyDotGraphFilename(): string { return this.getSetting<string>('showComponentHierarchy.componentHierarchyDotGraphFilename', 'ComponentHierarchy.dot'); }
3739
public get componentHierarchyEdgeArrowToType(): string { return this.getSetting<string>('showComponentHierarchy.edgeArrowToType', 'triangle'); }
3840

3941
// ShowModuleHierarchy
4042
public get moduleHierarchyPngFilename(): string { return this.getSetting<string>('showModuleHierarchy.moduleHierarchyPngFilename', 'ModuleHierarchy.png'); }
4143
public get moduleHierarchyDgmlGraphFilename(): string { return this.getSetting<string>('showModuleHierarchy.moduleHierarchyDgmlGraphFilename', 'ModuleHierarchy.dgml'); }
44+
public get moduleHierarchyDotGraphFilename(): string { return this.getSetting<string>('showModuleHierarchy.moduleHierarchyDotGraphFilename', 'ModuleHierarchy.dot'); }
4245
public get moduleHierarchyEdgeArrowToType(): string { return this.getSetting<string>('showModuleHierarchy.edgeArrowToType', 'triangle'); }
4346

4447
// GraphSelection

src/extension.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export function activate(context: vscode.ExtensionContext) {
6363
componentHierarchyPanel.onDidDispose(() => {
6464
}, null, context.subscriptions);
6565
}
66+
componentHierarchyPanel.onDidDispose(() => componentHierarchyPanel = undefined, undefined, context.subscriptions);
6667
const command = new ShowComponentHierarchy(context);
6768
command.execute(componentHierarchyPanel.webview);
6869
});
@@ -84,6 +85,7 @@ export function activate(context: vscode.ExtensionContext) {
8485
moduleHierarchyPanel.onDidDispose(() => {
8586
}, null, context.subscriptions);
8687
}
88+
moduleHierarchyPanel.onDidDispose(() => moduleHierarchyPanel = undefined, undefined, context.subscriptions);
8789
const command = new ShowModuleHierarchy(context);
8890
command.execute(moduleHierarchyPanel.webview);
8991
});
@@ -105,6 +107,7 @@ export function activate(context: vscode.ExtensionContext) {
105107
dependencyInjectionGraphPanel.onDidDispose(() => {
106108
}, null, context.subscriptions);
107109
}
110+
dependencyInjectionGraphPanel.onDidDispose(() => dependencyInjectionGraphPanel = undefined, undefined, context.subscriptions);
108111
const command = new GenerateDependencyInjectionGraph(context);
109112
command.execute(dependencyInjectionGraphPanel.webview);
110113
});

0 commit comments

Comments
 (0)