Skip to content

Commit 545311f

Browse files
committed
Switch from model accepted to model pending
1 parent 4727e0e commit 545311f

File tree

13 files changed

+126
-133
lines changed

13 files changed

+126
-133
lines changed

extensions/ql-vscode/src/model-editor/modeled-method.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,19 @@ export function modeledMethodSupportsProvenance(
111111
);
112112
}
113113

114-
export function isModelAccepted(
114+
export function isModelPending(
115115
modeledMethod: ModeledMethod | undefined,
116116
modelingStatus: ModelingStatus,
117117
): boolean {
118118
if (!modeledMethod) {
119-
return true;
119+
return false;
120120
}
121121

122122
return (
123-
modelingStatus !== "unsaved" ||
124-
modeledMethod.type === "none" ||
125-
!modeledMethodSupportsProvenance(modeledMethod) ||
126-
modeledMethod.provenance !== "ai-generated"
123+
modelingStatus === "unsaved" &&
124+
modeledMethod.type !== "none" &&
125+
modeledMethodSupportsProvenance(modeledMethod) &&
126+
modeledMethod.provenance === "ai-generated"
127127
);
128128
}
129129

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,5 +66,5 @@ export const ModelingNotAccepted = Template.bind({});
6666
ModelingNotAccepted.args = {
6767
method,
6868
modeledMethod: generatedModeledMethod,
69-
modelingStatus: "unsaved",
69+
modelPending: true,
7070
};

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { ModelOutputDropdown } from "../model-editor/ModelOutputDropdown";
77
import { ModelKindDropdown } from "../model-editor/ModelKindDropdown";
88
import { InProgressDropdown } from "../model-editor/InProgressDropdown";
99
import type { QueryLanguage } from "../../common/query-language";
10-
import type { ModelingStatus } from "../../model-editor/shared/modeling-status";
1110

1211
const Container = styled.div`
1312
padding-top: 0.5rem;
@@ -27,7 +26,7 @@ export type MethodModelingInputsProps = {
2726
language: QueryLanguage;
2827
method: Method;
2928
modeledMethod: ModeledMethod | undefined;
30-
modelingStatus: ModelingStatus;
29+
modelPending: boolean;
3130
isModelingInProgress: boolean;
3231
onChange: (modeledMethod: ModeledMethod) => void;
3332
};
@@ -36,15 +35,15 @@ export const MethodModelingInputs = ({
3635
language,
3736
method,
3837
modeledMethod,
39-
modelingStatus,
38+
modelPending,
4039
isModelingInProgress,
4140
onChange,
4241
}: MethodModelingInputsProps): React.JSX.Element => {
4342
const inputProps = {
4443
language,
4544
method,
4645
modeledMethod,
47-
modelingStatus,
46+
modelPending,
4847
onChange,
4948
};
5049

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
22
import type { Method } from "../../model-editor/method";
33
import type { ModeledMethod } from "../../model-editor/modeled-method";
4+
import { isModelPending } from "../../model-editor/modeled-method";
45
import {
56
canAddNewModeledMethod,
67
canRemoveModeledMethod,
@@ -156,7 +157,10 @@ export const MultipleModeledMethodsPanel = ({
156157
language={language}
157158
method={method}
158159
modeledMethod={modeledMethods[selectedIndex]}
159-
modelingStatus={modelingStatus}
160+
modelPending={isModelPending(
161+
modeledMethods[selectedIndex],
162+
modelingStatus,
163+
)}
160164
isModelingInProgress={isModelingInProgress}
161165
onChange={handleChange}
162166
/>
@@ -165,7 +169,7 @@ export const MultipleModeledMethodsPanel = ({
165169
language={language}
166170
method={method}
167171
modeledMethod={undefined}
168-
modelingStatus={modelingStatus}
172+
modelPending={false}
169173
isModelingInProgress={isModelingInProgress}
170174
onChange={handleChange}
171175
/>

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ describe(MethodModelingInputs.name, () => {
1717
const language = QueryLanguage.Java;
1818
const method = createMethod();
1919
const modeledMethod = createSinkModeledMethod();
20-
const modelingStatus = "unmodeled";
20+
const modelPending = false;
2121
const isModelingInProgress = false;
2222
const onChange = jest.fn();
2323

@@ -26,7 +26,7 @@ describe(MethodModelingInputs.name, () => {
2626
language,
2727
method,
2828
modeledMethod,
29-
modelingStatus,
29+
modelPending,
3030
isModelingInProgress,
3131
onChange,
3232
});
@@ -53,7 +53,7 @@ describe(MethodModelingInputs.name, () => {
5353
language,
5454
method,
5555
modeledMethod,
56-
modelingStatus,
56+
modelPending,
5757
isModelingInProgress,
5858
onChange,
5959
});
@@ -76,7 +76,7 @@ describe(MethodModelingInputs.name, () => {
7676
language,
7777
method,
7878
modeledMethod,
79-
modelingStatus,
79+
modelPending,
8080
isModelingInProgress,
8181
onChange,
8282
});
@@ -91,7 +91,7 @@ describe(MethodModelingInputs.name, () => {
9191
language={language}
9292
method={method}
9393
modeledMethod={updatedModeledMethod}
94-
modelingStatus={modelingStatus}
94+
modelPending={modelPending}
9595
isModelingInProgress={isModelingInProgress}
9696
onChange={onChange}
9797
/>,
@@ -121,7 +121,7 @@ describe(MethodModelingInputs.name, () => {
121121
language,
122122
method,
123123
modeledMethod,
124-
modelingStatus,
124+
modelPending,
125125
isModelingInProgress: true,
126126
onChange,
127127
});
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { styled } from "styled-components";
22
import { Dropdown } from "../common/Dropdown";
33

4-
export const InputDropdown = styled(Dropdown)<{ $accepted: boolean }>`
5-
font-style: ${(props) => (props.$accepted ? "normal" : "italic")};
4+
export const InputDropdown = styled(Dropdown)<{ $pending: boolean }>`
5+
font-style: ${(props) => (props.$pending ? "italic" : "normal")};
66
`;

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

Lines changed: 81 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { vscode } from "../vscode-api";
1616

1717
import type { Method } from "../../model-editor/method";
1818
import type { ModeledMethod } from "../../model-editor/modeled-method";
19+
import { isModelPending } from "../../model-editor/modeled-method";
1920
import { ModelKindDropdown } from "./ModelKindDropdown";
2021
import { Mode } from "../../model-editor/shared/mode";
2122
import { MethodClassifications } from "./MethodClassifications";
@@ -255,88 +256,95 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
255256
)}
256257
{!props.modelingInProgress && (
257258
<>
258-
{modeledMethods.map((modeledMethod, index) => (
259-
<DataGridRow key={index} focused={focusedIndex === index}>
260-
<DataGridCell>
261-
<ModelTypeDropdown
262-
language={viewState.language}
263-
method={method}
264-
modeledMethod={modeledMethod}
265-
modelingStatus={modelingStatus}
266-
onChange={modeledMethodChangedHandlers[index]}
267-
/>
268-
</DataGridCell>
269-
<DataGridCell>
270-
{inputAccessPathSuggestions === undefined ? (
271-
<ModelInputDropdown
259+
{modeledMethods.map((modeledMethod, index) => {
260+
const modelPending = isModelPending(
261+
modeledMethod,
262+
modelingStatus,
263+
);
264+
265+
return (
266+
<DataGridRow key={index} focused={focusedIndex === index}>
267+
<DataGridCell>
268+
<ModelTypeDropdown
272269
language={viewState.language}
273270
method={method}
274271
modeledMethod={modeledMethod}
275-
modelingStatus={modelingStatus}
272+
modelPending={modelPending}
276273
onChange={modeledMethodChangedHandlers[index]}
277274
/>
278-
) : (
279-
<ModelInputSuggestBox
280-
modeledMethod={modeledMethod}
281-
suggestions={inputAccessPathSuggestions}
282-
typePathSuggestions={outputAccessPathSuggestions ?? []}
283-
onChange={modeledMethodChangedHandlers[index]}
284-
/>
285-
)}
286-
</DataGridCell>
287-
<DataGridCell>
288-
{outputAccessPathSuggestions === undefined ? (
289-
<ModelOutputDropdown
275+
</DataGridCell>
276+
<DataGridCell>
277+
{inputAccessPathSuggestions === undefined ? (
278+
<ModelInputDropdown
279+
language={viewState.language}
280+
method={method}
281+
modeledMethod={modeledMethod}
282+
modelPending={modelPending}
283+
onChange={modeledMethodChangedHandlers[index]}
284+
/>
285+
) : (
286+
<ModelInputSuggestBox
287+
modeledMethod={modeledMethod}
288+
suggestions={inputAccessPathSuggestions}
289+
typePathSuggestions={outputAccessPathSuggestions ?? []}
290+
onChange={modeledMethodChangedHandlers[index]}
291+
/>
292+
)}
293+
</DataGridCell>
294+
<DataGridCell>
295+
{outputAccessPathSuggestions === undefined ? (
296+
<ModelOutputDropdown
297+
language={viewState.language}
298+
method={method}
299+
modeledMethod={modeledMethod}
300+
modelPending={modelPending}
301+
onChange={modeledMethodChangedHandlers[index]}
302+
/>
303+
) : (
304+
<ModelOutputSuggestBox
305+
modeledMethod={modeledMethod}
306+
suggestions={outputAccessPathSuggestions}
307+
onChange={modeledMethodChangedHandlers[index]}
308+
/>
309+
)}
310+
</DataGridCell>
311+
<DataGridCell>
312+
<ModelKindDropdown
290313
language={viewState.language}
291-
method={method}
292314
modeledMethod={modeledMethod}
293-
modelingStatus={modelingStatus}
315+
modelPending={modelPending}
294316
onChange={modeledMethodChangedHandlers[index]}
295317
/>
296-
) : (
297-
<ModelOutputSuggestBox
298-
modeledMethod={modeledMethod}
299-
suggestions={outputAccessPathSuggestions}
300-
onChange={modeledMethodChangedHandlers[index]}
301-
/>
302-
)}
303-
</DataGridCell>
304-
<DataGridCell>
305-
<ModelKindDropdown
306-
language={viewState.language}
307-
modeledMethod={modeledMethod}
308-
modelingStatus={modelingStatus}
309-
onChange={modeledMethodChangedHandlers[index]}
310-
/>
311-
</DataGridCell>
312-
<DataGridCell>
313-
{index === 0 ? (
314-
<CodiconRow
315-
appearance="icon"
316-
aria-label="Add new model"
317-
onClick={(event: React.MouseEvent) => {
318-
event.stopPropagation();
319-
handleAddModelClick();
320-
}}
321-
disabled={addModelButtonDisabled}
322-
>
323-
<Codicon name="add" />
324-
</CodiconRow>
325-
) : (
326-
<CodiconRow
327-
appearance="icon"
328-
aria-label="Remove model"
329-
onClick={(event: React.MouseEvent) => {
330-
event.stopPropagation();
331-
removeModelClickedHandlers[index]();
332-
}}
333-
>
334-
<Codicon name="trash" />
335-
</CodiconRow>
336-
)}
337-
</DataGridCell>
338-
</DataGridRow>
339-
))}
318+
</DataGridCell>
319+
<DataGridCell>
320+
{index === 0 ? (
321+
<CodiconRow
322+
appearance="icon"
323+
aria-label="Add new model"
324+
onClick={(event: React.MouseEvent) => {
325+
event.stopPropagation();
326+
handleAddModelClick();
327+
}}
328+
disabled={addModelButtonDisabled}
329+
>
330+
<Codicon name="add" />
331+
</CodiconRow>
332+
) : (
333+
<CodiconRow
334+
appearance="icon"
335+
aria-label="Remove model"
336+
onClick={(event: React.MouseEvent) => {
337+
event.stopPropagation();
338+
removeModelClickedHandlers[index]();
339+
}}
340+
>
341+
<Codicon name="trash" />
342+
</CodiconRow>
343+
)}
344+
</DataGridCell>
345+
</DataGridRow>
346+
);
347+
})}
340348
{validationErrors.map((error, index) => (
341349
<DataGridCell gridColumn="span 5" key={index}>
342350
<ModeledMethodAlert

extensions/ql-vscode/src/view/model-editor/ModelInputDropdown.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,27 @@ import { useCallback, useMemo } from "react";
33
import type { ModeledMethod } from "../../model-editor/modeled-method";
44
import {
55
calculateNewProvenance,
6-
isModelAccepted,
76
modeledMethodSupportsInput,
87
} from "../../model-editor/modeled-method";
98
import type { Method } from "../../model-editor/method";
109
import type { QueryLanguage } from "../../common/query-language";
1110
import { getModelsAsDataLanguage } from "../../model-editor/languages";
12-
import type { ModelingStatus } from "../../model-editor/shared/modeling-status";
1311
import { InputDropdown } from "./InputDropdown";
1412
import { ModelTypeTextbox } from "./ModelTypeTextbox";
1513

1614
type Props = {
1715
language: QueryLanguage;
1816
method: Method;
1917
modeledMethod: ModeledMethod | undefined;
20-
modelingStatus: ModelingStatus;
18+
modelPending: boolean;
2119
onChange: (modeledMethod: ModeledMethod) => void;
2220
};
2321

2422
export const ModelInputDropdown = ({
2523
language,
2624
method,
2725
modeledMethod,
28-
modelingStatus,
26+
modelPending,
2927
onChange,
3028
}: Props): React.JSX.Element => {
3129
const options = useMemo(() => {
@@ -77,14 +75,12 @@ export const ModelInputDropdown = ({
7775
);
7876
}
7977

80-
const modelAccepted = isModelAccepted(modeledMethod, modelingStatus);
81-
8278
return (
8379
<InputDropdown
8480
value={value}
8581
options={options}
8682
disabled={!enabled}
87-
$accepted={modelAccepted}
83+
$pending={modelPending}
8884
onChange={handleChange}
8985
aria-label="Input"
9086
/>

0 commit comments

Comments
 (0)