Skip to content

Commit 0744b25

Browse files
committed
Use new language definitions for the view
1 parent 8e721a6 commit 0744b25

24 files changed

+149
-80
lines changed

extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-view-provider.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { ModelEditorViewTracker } from "../model-editor-view-tracker";
1515
import { ModelConfigListener } from "../../config";
1616
import { DatabaseItem } from "../../databases/local-databases";
1717
import { ModelingEvents } from "../modeling-events";
18+
import { isQueryLanguage, QueryLanguage } from "../../common/query-language";
1819

1920
export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
2021
ToMethodModelingMessage,
@@ -24,6 +25,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
2425

2526
private method: Method | undefined = undefined;
2627
private databaseItem: DatabaseItem | undefined = undefined;
28+
private language: QueryLanguage | undefined = undefined;
2729

2830
constructor(
2931
app: App,
@@ -45,6 +47,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
4547
await this.postMessage({
4648
t: "setMethodModelingPanelViewState",
4749
viewState: {
50+
language: this.language,
4851
showMultipleModels: this.modelConfig.showMultipleModels,
4952
},
5053
});
@@ -56,6 +59,10 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
5659
): Promise<void> {
5760
this.method = method;
5861
this.databaseItem = databaseItem;
62+
this.language =
63+
databaseItem && isQueryLanguage(databaseItem?.language)
64+
? databaseItem.language
65+
: undefined;
5966

6067
if (this.isShowingView) {
6168
await this.postMessage({
@@ -70,6 +77,9 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
7077
const selectedMethod = this.modelingStore.getSelectedMethodDetails();
7178
if (selectedMethod) {
7279
this.databaseItem = selectedMethod.databaseItem;
80+
this.language = isQueryLanguage(selectedMethod.databaseItem.language)
81+
? selectedMethod.databaseItem.language
82+
: undefined;
7383
this.method = selectedMethod.method;
7484

7585
await this.postMessage({
@@ -185,6 +195,9 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
185195
if (this.webviewView) {
186196
this.method = e.method;
187197
this.databaseItem = e.databaseItem;
198+
this.language = isQueryLanguage(e.databaseItem.language)
199+
? e.databaseItem.language
200+
: undefined;
188201

189202
await this.postMessage({
190203
t: "setSelectedMethod",

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,7 @@ export class ModelEditorView extends AbstractWebview<
373373
t: "setModelEditorViewState",
374374
viewState: {
375375
extensionPack: this.extensionPack,
376+
language: this.language,
376377
showFlowGeneration: this.modelConfig.flowGeneration,
377378
showLlmButton,
378379
showMultipleModels: this.modelConfig.showMultipleModels,

extensions/ql-vscode/src/model-editor/shared/view-state.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { ExtensionPack } from "./extension-pack";
22
import { Mode } from "./mode";
3+
import { QueryLanguage } from "../../common/query-language";
34

45
export interface ModelEditorViewState {
56
extensionPack: ExtensionPack;
7+
language: QueryLanguage;
68
showFlowGeneration: boolean;
79
showLlmButton: boolean;
810
showMultipleModels: boolean;
@@ -11,5 +13,6 @@ export interface ModelEditorViewState {
1113
}
1214

1315
export interface MethodModelingPanelViewState {
16+
language: QueryLanguage | undefined;
1417
showMultipleModels: boolean;
1518
}

extensions/ql-vscode/src/stories/model-editor/LibraryRow.stories.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ import * as React from "react";
22

33
import { Meta, StoryFn } from "@storybook/react";
44

5-
import { Mode } from "../../model-editor/shared/mode";
65
import { LibraryRow as LibraryRowComponent } from "../../view/model-editor/LibraryRow";
76
import { CallClassification } from "../../model-editor/method";
8-
import { createMockExtensionPack } from "../../../test/factories/model-editor/extension-pack";
7+
import { createMockModelEditorViewState } from "../../../test/factories/model-editor/view-state";
98

109
export default {
1110
title: "CodeQL Model Editor/Library Row",
@@ -219,13 +218,10 @@ LibraryRow.args = {
219218
},
220219
modifiedSignatures: new Set(["org.sql2o.Sql2o#Sql2o(String)"]),
221220
inProgressMethods: new Set(),
222-
viewState: {
223-
extensionPack: createMockExtensionPack(),
221+
viewState: createMockModelEditorViewState({
224222
showFlowGeneration: true,
225223
showLlmButton: true,
226224
showMultipleModels: true,
227-
mode: Mode.Application,
228-
sourceArchiveAvailable: true,
229-
},
225+
}),
230226
hideModeledMethods: false,
231227
};

extensions/ql-vscode/src/stories/model-editor/MethodRow.stories.tsx

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@ import {
1010
MULTIPLE_MODELS_GRID_TEMPLATE_COLUMNS,
1111
SINGLE_MODEL_GRID_TEMPLATE_COLUMNS,
1212
} from "../../view/model-editor/ModeledMethodDataGrid";
13-
import { ModelEditorViewState } from "../../model-editor/shared/view-state";
14-
import { createMockExtensionPack } from "../../../test/factories/model-editor/extension-pack";
15-
import { Mode } from "../../model-editor/shared/mode";
1613
import { DataGrid } from "../../view/common/DataGrid";
14+
import { createMockModelEditorViewState } from "../../../test/factories/model-editor/view-state";
1715

1816
export default {
1917
title: "CodeQL Model Editor/Method Row",
@@ -99,14 +97,11 @@ const modeledMethod: ModeledMethod = {
9997
methodParameters: "()",
10098
};
10199

102-
const viewState: ModelEditorViewState = {
103-
extensionPack: createMockExtensionPack(),
100+
const viewState = createMockModelEditorViewState({
104101
showFlowGeneration: true,
105102
showLlmButton: true,
106103
showMultipleModels: true,
107-
mode: Mode.Application,
108-
sourceArchiveAvailable: true,
109-
};
104+
});
110105

111106
export const Unmodeled = Template.bind({});
112107
Unmodeled.args = {

extensions/ql-vscode/src/stories/model-editor/ModelEditor.stories.tsx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import * as React from "react";
22

33
import { Meta, StoryFn } from "@storybook/react";
44

5-
import { Mode } from "../../model-editor/shared/mode";
65
import { ModelEditor as ModelEditorComponent } from "../../view/model-editor/ModelEditor";
76
import { CallClassification } from "../../model-editor/method";
7+
import { createMockModelEditorViewState } from "../../../test/factories/model-editor/view-state";
88

99
export default {
1010
title: "CodeQL Model Editor/CodeQL Model Editor",
@@ -17,7 +17,7 @@ const Template: StoryFn<typeof ModelEditorComponent> = (args) => (
1717

1818
export const ModelEditor = Template.bind({});
1919
ModelEditor.args = {
20-
initialViewState: {
20+
initialViewState: createMockModelEditorViewState({
2121
extensionPack: {
2222
path: "/home/user/vscode-codeql-starter/codeql-custom-queries-java/sql2o",
2323
yamlPath:
@@ -31,9 +31,7 @@ ModelEditor.args = {
3131
showFlowGeneration: true,
3232
showLlmButton: true,
3333
showMultipleModels: true,
34-
mode: Mode.Application,
35-
sourceArchiveAvailable: true,
36-
},
34+
}),
3735
initialMethods: [
3836
{
3937
library: "sql2o",

extensions/ql-vscode/src/view/method-modeling/MethodModeling.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { ModeledMethod } from "../../model-editor/modeled-method";
88
import { VSCodeTag } from "@vscode/webview-ui-toolkit/react";
99
import { ReviewInEditorButton } from "./ReviewInEditorButton";
1010
import { ModeledMethodsPanel } from "./ModeledMethodsPanel";
11+
import { QueryLanguage } from "../../common/query-language";
1112

1213
const Container = styled.div`
1314
padding-top: 0.5rem;
@@ -49,6 +50,7 @@ const UnsavedTag = ({ modelingStatus }: { modelingStatus: ModelingStatus }) => (
4950
);
5051

5152
export type MethodModelingProps = {
53+
language: QueryLanguage;
5254
modelingStatus: ModelingStatus;
5355
method: Method;
5456
modeledMethods: ModeledMethod[];
@@ -58,6 +60,7 @@ export type MethodModelingProps = {
5860
};
5961

6062
export const MethodModeling = ({
63+
language,
6164
modelingStatus,
6265
modeledMethods,
6366
method,
@@ -77,6 +80,7 @@ export const MethodModeling = ({
7780
<MethodName {...method} />
7881
</DependencyContainer>
7982
<ModeledMethodsPanel
83+
language={language}
8084
method={method}
8185
modeledMethods={modeledMethods}
8286
showMultipleModels={showMultipleModels}

extensions/ql-vscode/src/view/method-modeling/MethodModelingInputs.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { ModelInputDropdown } from "../model-editor/ModelInputDropdown";
77
import { ModelOutputDropdown } from "../model-editor/ModelOutputDropdown";
88
import { ModelKindDropdown } from "../model-editor/ModelKindDropdown";
99
import { InProgressDropdown } from "../model-editor/InProgressDropdown";
10+
import { QueryLanguage } from "../../common/query-language";
1011

1112
const Container = styled.div`
1213
padding-top: 0.5rem;
@@ -23,13 +24,15 @@ const Name = styled.span`
2324
`;
2425

2526
export type MethodModelingInputsProps = {
27+
language: QueryLanguage;
2628
method: Method;
2729
modeledMethod: ModeledMethod | undefined;
2830
isModelingInProgress: boolean;
2931
onChange: (modeledMethod: ModeledMethod) => void;
3032
};
3133

3234
export const MethodModelingInputs = ({
35+
language,
3336
method,
3437
modeledMethod,
3538
isModelingInProgress,
@@ -79,7 +82,7 @@ export const MethodModelingInputs = ({
7982
{isModelingInProgress ? (
8083
<InProgressDropdown />
8184
) : (
82-
<ModelKindDropdown {...inputProps} />
85+
<ModelKindDropdown language={language} {...inputProps} />
8386
)}
8487
</Input>
8588
</Container>

extensions/ql-vscode/src/view/method-modeling/MethodModelingView.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
8080
};
8181
}, []);
8282

83-
if (!inModelingMode) {
83+
if (!inModelingMode || !viewState?.language) {
8484
return <NotInModelingMode />;
8585
}
8686

@@ -105,6 +105,7 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
105105

106106
return (
107107
<MethodModeling
108+
language={viewState?.language}
108109
modelingStatus={modelingStatus}
109110
method={method}
110111
modeledMethods={modeledMethods}

extensions/ql-vscode/src/view/method-modeling/ModeledMethodsPanel.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import { Method } from "../../model-editor/method";
66
import { styled } from "styled-components";
77
import { MultipleModeledMethodsPanel } from "./MultipleModeledMethodsPanel";
88
import { convertToLegacyModeledMethod } from "../../model-editor/shared/modeled-methods-legacy";
9+
import { QueryLanguage } from "../../common/query-language";
910

1011
export type ModeledMethodsPanelProps = {
12+
language: QueryLanguage;
1113
method: Method;
1214
modeledMethods: ModeledMethod[];
1315
isModelingInProgress: boolean;
@@ -20,6 +22,7 @@ const SingleMethodModelingInputs = styled(MethodModelingInputs)`
2022
`;
2123

2224
export const ModeledMethodsPanel = ({
25+
language,
2326
method,
2427
modeledMethods,
2528
isModelingInProgress,
@@ -36,6 +39,7 @@ export const ModeledMethodsPanel = ({
3639
if (!showMultipleModels) {
3740
return (
3841
<SingleMethodModelingInputs
42+
language={language}
3943
method={method}
4044
modeledMethod={convertToLegacyModeledMethod(modeledMethods)}
4145
isModelingInProgress={isModelingInProgress}
@@ -46,6 +50,7 @@ export const ModeledMethodsPanel = ({
4650

4751
return (
4852
<MultipleModeledMethodsPanel
53+
language={language}
4954
method={method}
5055
modeledMethods={modeledMethods}
5156
isModelingInProgress={isModelingInProgress}

0 commit comments

Comments
 (0)