Skip to content

Commit 409c896

Browse files
committed
Add processed by auto model state to method modeling panel
1 parent 899b159 commit 409c896

File tree

8 files changed

+82
-2
lines changed

8 files changed

+82
-2
lines changed

extensions/ql-vscode/src/common/interface-types.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,11 @@ interface SetInProgressMessage {
615615
inProgress: boolean;
616616
}
617617

618+
interface SetProcessedByAutoModelMessage {
619+
t: "setProcessedByAutoModel";
620+
processedByAutoModel: boolean;
621+
}
622+
618623
interface RevealMethodMessage {
619624
t: "revealMethod";
620625
methodSignature: string;
@@ -686,6 +691,7 @@ interface SetSelectedMethodMessage {
686691
modeledMethods: ModeledMethod[];
687692
isModified: boolean;
688693
isInProgress: boolean;
694+
processedByAutoModel: boolean;
689695
}
690696

691697
export type ToMethodModelingMessage =
@@ -695,4 +701,5 @@ export type ToMethodModelingMessage =
695701
| SetMethodModifiedMessage
696702
| SetSelectedMethodMessage
697703
| SetInModelingModeMessage
698-
| SetInProgressMessage;
704+
| SetInProgressMessage
705+
| SetProcessedByAutoModelMessage;

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
8282
modeledMethods: selectedMethod.modeledMethods,
8383
isModified: selectedMethod.isModified,
8484
isInProgress: selectedMethod.isInProgress,
85+
processedByAutoModel: selectedMethod.processedByAutoModel,
8586
});
8687
}
8788

@@ -200,6 +201,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
200201
modeledMethods: e.modeledMethods,
201202
isModified: e.isModified,
202203
isInProgress: e.isInProgress,
204+
processedByAutoModel: e.processedByAutoModel,
203205
});
204206
}
205207
}),
@@ -248,6 +250,21 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
248250
}
249251
}),
250252
);
253+
254+
this.push(
255+
this.modelingEvents.onProcessedByAutoModelMethodsChanged(async (e) => {
256+
if (this.method && this.databaseItem) {
257+
const dbUri = this.databaseItem.databaseUri.toString();
258+
if (e.dbUri === dbUri) {
259+
const processedByAutoModel = e.methods.has(this.method.signature);
260+
await this.postMessage({
261+
t: "setProcessedByAutoModel",
262+
processedByAutoModel,
263+
});
264+
}
265+
}
266+
}),
267+
);
251268
}
252269

253270
private registerToModelConfigEvents(): void {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ export function modeledMethodSupportsProvenance(
114114
export function isModelPending(
115115
modeledMethod: ModeledMethod | undefined,
116116
modelingStatus: ModelingStatus,
117-
processedByAutoModel?: boolean,
117+
processedByAutoModel: boolean,
118118
): boolean {
119119
if (
120120
(!modeledMethod || modeledMethod.type === "none") &&

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export type MethodModelingProps = {
5454
method: Method;
5555
modeledMethods: ModeledMethod[];
5656
isModelingInProgress: boolean;
57+
isProcessedByAutoModel: boolean;
5758
onChange: (methodSignature: string, modeledMethods: ModeledMethod[]) => void;
5859
};
5960

@@ -63,6 +64,7 @@ export const MethodModeling = ({
6364
modeledMethods,
6465
method,
6566
isModelingInProgress,
67+
isProcessedByAutoModel,
6668
onChange,
6769
}: MethodModelingProps): React.JSX.Element => {
6870
return (
@@ -81,6 +83,7 @@ export const MethodModeling = ({
8183
method={method}
8284
modeledMethods={modeledMethods}
8385
isModelingInProgress={isModelingInProgress}
86+
isProcessedByAutoModel={isProcessedByAutoModel}
8487
modelingStatus={modelingStatus}
8588
onChange={onChange}
8689
/>

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ export function MethodModelingView({
3333
const [isModelingInProgress, setIsModelingInProgress] =
3434
useState<boolean>(false);
3535

36+
const [isProcessedByAutoModel, setIsProcessedByAutoModel] =
37+
useState<boolean>(false);
38+
3639
const modelingStatus = useMemo(
3740
() => getModelingStatus(modeledMethods, isMethodModified),
3841
[modeledMethods, isMethodModified],
@@ -62,10 +65,15 @@ export function MethodModelingView({
6265
setMethod(msg.method);
6366
setModeledMethods(msg.modeledMethods);
6467
setIsMethodModified(msg.isModified);
68+
setIsModelingInProgress(msg.isInProgress);
69+
setIsProcessedByAutoModel(msg.processedByAutoModel);
6570
break;
6671
case "setInProgress":
6772
setIsModelingInProgress(msg.inProgress);
6873
break;
74+
case "setProcessedByAutoModel":
75+
setIsProcessedByAutoModel(msg.processedByAutoModel);
76+
break;
6977
default:
7078
assertNever(msg);
7179
}
@@ -112,6 +120,7 @@ export function MethodModelingView({
112120
method={method}
113121
modeledMethods={modeledMethods}
114122
isModelingInProgress={isModelingInProgress}
123+
isProcessedByAutoModel={isProcessedByAutoModel}
115124
onChange={onChange}
116125
/>
117126
);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export type MultipleModeledMethodsPanelProps = {
2323
modeledMethods: ModeledMethod[];
2424
modelingStatus: ModelingStatus;
2525
isModelingInProgress: boolean;
26+
isProcessedByAutoModel: boolean;
2627
onChange: (methodSignature: string, modeledMethods: ModeledMethod[]) => void;
2728
};
2829

@@ -64,6 +65,7 @@ export const MultipleModeledMethodsPanel = ({
6465
modeledMethods,
6566
modelingStatus,
6667
isModelingInProgress,
68+
isProcessedByAutoModel,
6769
onChange,
6870
}: MultipleModeledMethodsPanelProps) => {
6971
const [selectedIndex, setSelectedIndex] = useState<number>(0);
@@ -160,6 +162,7 @@ export const MultipleModeledMethodsPanel = ({
160162
modelPending={isModelPending(
161163
modeledMethods[selectedIndex],
162164
modelingStatus,
165+
isProcessedByAutoModel,
163166
)}
164167
isModelingInProgress={isModelingInProgress}
165168
onChange={handleChange}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ describe(MethodModeling.name, () => {
1313
const method = createMethod();
1414
const modeledMethod = createSinkModeledMethod();
1515
const isModelingInProgress = false;
16+
const isProcessedByAutoModel = false;
1617
const onChange = jest.fn();
1718

1819
render({
@@ -21,6 +22,7 @@ describe(MethodModeling.name, () => {
2122
method,
2223
modeledMethods: [modeledMethod],
2324
isModelingInProgress,
25+
isProcessedByAutoModel,
2426
onChange,
2527
});
2628

0 commit comments

Comments
 (0)