Skip to content

Commit a8f8990

Browse files
Hook query discovery results up to query panel
1 parent 0a534ae commit a8f8990

File tree

3 files changed

+35
-24
lines changed

3 files changed

+35
-24
lines changed

extensions/ql-vscode/src/queries-panel/queries-module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export class QueriesModule extends DisposableObject {
2626
this.push(this.queryDiscovery);
2727
this.queryDiscovery.refresh();
2828

29-
this.queriesPanel = new QueriesPanel();
29+
this.queriesPanel = new QueriesPanel(this.queryDiscovery);
3030
this.push(this.queriesPanel);
3131
}
3232

extensions/ql-vscode/src/queries-panel/queries-panel.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@ import * as vscode from "vscode";
22
import { DisposableObject } from "../pure/disposable-object";
33
import { QueryTreeDataProvider } from "./query-tree-data-provider";
44
import { QueryTreeViewItem } from "./query-tree-view-item";
5+
import { QueryDiscovery } from "./query-discovery";
56

67
export class QueriesPanel extends DisposableObject {
78
private readonly dataProvider: QueryTreeDataProvider;
89
private readonly treeView: vscode.TreeView<QueryTreeViewItem>;
910

10-
public constructor() {
11+
public constructor(queryDiscovery: QueryDiscovery) {
1112
super();
1213

13-
this.dataProvider = new QueryTreeDataProvider();
14+
this.dataProvider = new QueryTreeDataProvider(queryDiscovery);
1415

1516
this.treeView = vscode.window.createTreeView("codeQLQueries", {
1617
treeDataProvider: this.dataProvider,

extensions/ql-vscode/src/queries-panel/query-tree-data-provider.ts

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,55 @@
1-
import * as vscode from "vscode";
1+
import { Event, EventEmitter, TreeDataProvider, TreeItem } from "vscode";
22
import { QueryTreeViewItem } from "./query-tree-view-item";
33
import { DisposableObject } from "../pure/disposable-object";
4+
import { QueryDiscovery } from "./query-discovery";
5+
import { FileTreeNode } from "../common/file-tree-nodes";
46

57
export class QueryTreeDataProvider
68
extends DisposableObject
7-
implements vscode.TreeDataProvider<QueryTreeViewItem>
9+
implements TreeDataProvider<QueryTreeViewItem>
810
{
911
private queryTreeItems: QueryTreeViewItem[];
1012

11-
public constructor() {
13+
private readonly onDidChangeTreeDataEmitter = this.push(
14+
new EventEmitter<void>(),
15+
);
16+
17+
public constructor(private readonly queryDiscovery: QueryDiscovery) {
1218
super();
1319

20+
queryDiscovery.onDidChangeQueries(() => {
21+
this.queryTreeItems = this.createTree();
22+
this.onDidChangeTreeDataEmitter.fire();
23+
});
24+
1425
this.queryTreeItems = this.createTree();
1526
}
1627

28+
public get onDidChangeTreeData(): Event<void> {
29+
return this.onDidChangeTreeDataEmitter.event;
30+
}
31+
1732
private createTree(): QueryTreeViewItem[] {
18-
// Temporary mock data, just to populate the tree view.
19-
return [
20-
new QueryTreeViewItem("custom-pack", [
21-
new QueryTreeViewItem("custom-pack/example.ql", []),
22-
]),
23-
new QueryTreeViewItem("ql", [
24-
new QueryTreeViewItem("ql/javascript", [
25-
new QueryTreeViewItem("ql/javascript/example.ql", []),
26-
]),
27-
new QueryTreeViewItem("ql/go", [
28-
new QueryTreeViewItem("ql/go/security", [
29-
new QueryTreeViewItem("ql/go/security/query1.ql", []),
30-
new QueryTreeViewItem("ql/go/security/query2.ql", []),
31-
]),
32-
]),
33-
]),
34-
];
33+
return (this.queryDiscovery.queries || []).map(
34+
this.convertFileTreeNode.bind(this),
35+
);
36+
}
37+
38+
private convertFileTreeNode(
39+
fileTreeDirectory: FileTreeNode,
40+
): QueryTreeViewItem {
41+
return new QueryTreeViewItem(
42+
fileTreeDirectory.path,
43+
fileTreeDirectory.children.map(this.convertFileTreeNode.bind(this)),
44+
);
3545
}
3646

3747
/**
3848
* Returns the UI presentation of the element that gets displayed in the view.
3949
* @param item The item to represent.
4050
* @returns The UI presentation of the item.
4151
*/
42-
public getTreeItem(item: QueryTreeViewItem): vscode.TreeItem {
52+
public getTreeItem(item: QueryTreeViewItem): TreeItem {
4353
return item;
4454
}
4555

0 commit comments

Comments
 (0)