Skip to content

Commit 56ecd1a

Browse files
committed
hide unmodeled apis
1 parent 84ab602 commit 56ecd1a

5 files changed

Lines changed: 45 additions & 17 deletions

File tree

extensions/ql-vscode/src/data-extensions-editor/data-extensions-editor-view.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@ export class DataExtensionsEditorView extends AbstractWebview<
6464
private readonly extensionPack: ExtensionPack,
6565
private mode: Mode,
6666
private readonly updateModelDetailsPanelState: (
67-
externalApiUsages: ExternalApiUsage[],
68-
databaseItem: DatabaseItem,
67+
externalApiUsages?: ExternalApiUsage[],
68+
databaseItem?: DatabaseItem,
69+
hideModeledApis?: boolean,
6970
) => Promise<void>,
7071
private readonly revealItemInDetailsPanel: (usage: Usage) => Promise<void>,
7172
private readonly handleViewBecameActive: (
@@ -237,7 +238,11 @@ export class DataExtensionsEditorView extends AbstractWebview<
237238

238239
break;
239240
case "hideModeledApis":
240-
// do something
241+
await this.updateModelDetailsPanelState(
242+
undefined,
243+
undefined,
244+
msg.hideModeledApis,
245+
);
241246
break;
242247
default:
243248
assertNever(msg);

extensions/ql-vscode/src/data-extensions-editor/model-details/model-details-data-provider.ts

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { ExternalApiUsage, Usage } from "../external-api-usage";
1313
import { DatabaseItem } from "../../databases/local-databases";
1414
import { relative } from "path";
1515
import { CodeQLCliServer } from "../../codeql-cli/cli";
16+
import { INITIAL_HIDE_MODELED_APIS_VALUE } from "../shared/initial-hide-modeled-apis-value";
1617

1718
export class ModelDetailsDataProvider
1819
extends DisposableObject
@@ -21,6 +22,7 @@ export class ModelDetailsDataProvider
2122
private externalApiUsages: ExternalApiUsage[] = [];
2223
private databaseItem: DatabaseItem | undefined = undefined;
2324
private sourceLocationPrefix: string | undefined = undefined;
25+
private hideModeledApis: boolean = INITIAL_HIDE_MODELED_APIS_VALUE;
2426

2527
private readonly onDidChangeTreeDataEmitter = this.push(
2628
new EventEmitter<void>(),
@@ -42,19 +44,25 @@ export class ModelDetailsDataProvider
4244
* method and instead always pass new objects/arrays.
4345
*/
4446
public async setState(
45-
externalApiUsages: ExternalApiUsage[],
46-
databaseItem: DatabaseItem,
47+
externalApiUsages?: ExternalApiUsage[],
48+
databaseItem?: DatabaseItem,
49+
hideModeledApis?: boolean,
4750
): Promise<void> {
4851
if (
49-
this.externalApiUsages !== externalApiUsages ||
50-
this.databaseItem !== databaseItem
52+
externalApiUsages &&
53+
databaseItem &&
54+
(this.externalApiUsages !== externalApiUsages ||
55+
this.databaseItem !== databaseItem)
5156
) {
5257
this.externalApiUsages = externalApiUsages;
5358
this.databaseItem = databaseItem;
5459
this.sourceLocationPrefix =
5560
await this.databaseItem.getSourceLocationPrefix(this.cliServer);
56-
this.onDidChangeTreeDataEmitter.fire();
5761
}
62+
if (hideModeledApis !== undefined) {
63+
this.hideModeledApis = hideModeledApis;
64+
}
65+
this.onDidChangeTreeDataEmitter.fire();
5866
}
5967

6068
getTreeItem(item: ModelDetailsTreeViewItem): TreeItem {
@@ -92,7 +100,11 @@ export class ModelDetailsDataProvider
92100

93101
getChildren(item?: ModelDetailsTreeViewItem): ModelDetailsTreeViewItem[] {
94102
if (item === undefined) {
95-
return this.externalApiUsages;
103+
if (this.hideModeledApis) {
104+
return this.externalApiUsages.filter((api) => !api.supported);
105+
} else {
106+
return this.externalApiUsages;
107+
}
96108
} else if (isExternalApiUsage(item)) {
97109
return item.usages;
98110
} else {

extensions/ql-vscode/src/data-extensions-editor/model-details/model-details-panel.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,21 @@ export class ModelDetailsPanel extends DisposableObject {
2424
}
2525

2626
public async setState(
27-
externalApiUsages: ExternalApiUsage[],
28-
databaseItem: DatabaseItem,
27+
externalApiUsages?: ExternalApiUsage[],
28+
databaseItem?: DatabaseItem,
29+
hideModeledApis?: boolean,
2930
): Promise<void> {
30-
await this.dataProvider.setState(externalApiUsages, databaseItem);
31-
this.treeView.badge = {
32-
value: externalApiUsages.length,
33-
tooltip: "Number of external APIs",
34-
};
31+
await this.dataProvider.setState(
32+
externalApiUsages,
33+
databaseItem,
34+
hideModeledApis,
35+
);
36+
if (externalApiUsages) {
37+
this.treeView.badge = {
38+
value: externalApiUsages.length,
39+
tooltip: "Number of external APIs",
40+
};
41+
}
3542
}
3643

3744
public async revealItem(usage: Usage): Promise<void> {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const INITIAL_HIDE_MODELED_APIS_VALUE = true;

extensions/ql-vscode/src/view/data-extensions-editor/DataExtensionsEditor.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { percentFormatter } from "./formatters";
1919
import { Mode } from "../../data-extensions-editor/shared/mode";
2020
import { InProgressMethods } from "../../data-extensions-editor/shared/in-progress-methods";
2121
import { getLanguageDisplayName } from "../../common/query-language";
22+
import { INITIAL_HIDE_MODELED_APIS_VALUE } from "../../data-extensions-editor/shared/initial-hide-modeled-apis-value";
2223

2324
const LoadingContainer = styled.div`
2425
text-align: center;
@@ -96,7 +97,9 @@ export function DataExtensionsEditor({
9697
new InProgressMethods(),
9798
);
9899

99-
const [hideModeledApis, setHideModeledApis] = useState(true);
100+
const [hideModeledApis, setHideModeledApis] = useState(
101+
INITIAL_HIDE_MODELED_APIS_VALUE,
102+
);
100103

101104
const [modeledMethods, setModeledMethods] = useState<
102105
Record<string, ModeledMethod>

0 commit comments

Comments
 (0)