Allow editing multiple models in model editor
This commit is contained in:
@@ -614,7 +614,7 @@ export type FromModelEditorMessage =
|
|||||||
| StopGeneratingMethodsFromLlmMessage
|
| StopGeneratingMethodsFromLlmMessage
|
||||||
| ModelDependencyMessage
|
| ModelDependencyMessage
|
||||||
| HideModeledMethodsMessage
|
| HideModeledMethodsMessage
|
||||||
| SetModeledMethodMessage;
|
| SetMultipleModeledMethodsMessage;
|
||||||
|
|
||||||
interface RevealInEditorMessage {
|
interface RevealInEditorMessage {
|
||||||
t: "revealInModelEditor";
|
t: "revealInModelEditor";
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ import { AutoModeler } from "./auto-modeler";
|
|||||||
import { telemetryListener } from "../common/vscode/telemetry";
|
import { telemetryListener } from "../common/vscode/telemetry";
|
||||||
import { ModelingStore } from "./modeling-store";
|
import { ModelingStore } from "./modeling-store";
|
||||||
import { ModelEditorViewTracker } from "./model-editor-view-tracker";
|
import { ModelEditorViewTracker } from "./model-editor-view-tracker";
|
||||||
import { convertFromLegacyModeledMethod } from "./shared/modeled-methods-legacy";
|
|
||||||
|
|
||||||
export class ModelEditorView extends AbstractWebview<
|
export class ModelEditorView extends AbstractWebview<
|
||||||
ToModelEditorMessage,
|
ToModelEditorMessage,
|
||||||
@@ -309,11 +308,8 @@ export class ModelEditorView extends AbstractWebview<
|
|||||||
"model-editor-hide-modeled-methods",
|
"model-editor-hide-modeled-methods",
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case "setModeledMethod": {
|
case "setMultipleModeledMethods": {
|
||||||
this.setModeledMethods(
|
this.setModeledMethods(msg.methodSignature, msg.modeledMethods);
|
||||||
msg.method.signature,
|
|
||||||
convertFromLegacyModeledMethod(msg.method),
|
|
||||||
);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "telemetry":
|
case "telemetry":
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ export type LibraryRowProps = {
|
|||||||
viewState: ModelEditorViewState;
|
viewState: ModelEditorViewState;
|
||||||
hideModeledMethods: boolean;
|
hideModeledMethods: boolean;
|
||||||
revealedMethodSignature: string | null;
|
revealedMethodSignature: string | null;
|
||||||
onChange: (modeledMethod: ModeledMethod) => void;
|
onChange: (methodSignature: string, modeledMethods: ModeledMethod[]) => void;
|
||||||
onSaveModelClick: (methodSignatures: string[]) => void;
|
onSaveModelClick: (methodSignatures: string[]) => void;
|
||||||
onGenerateFromLlmClick: (
|
onGenerateFromLlmClick: (
|
||||||
dependencyName: string,
|
dependencyName: string,
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ export type MethodRowProps = {
|
|||||||
modelingInProgress: boolean;
|
modelingInProgress: boolean;
|
||||||
viewState: ModelEditorViewState;
|
viewState: ModelEditorViewState;
|
||||||
revealedMethodSignature: string | null;
|
revealedMethodSignature: string | null;
|
||||||
onChange: (modeledMethod: ModeledMethod) => void;
|
onChange: (methodSignature: string, modeledMethods: ModeledMethod[]) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MethodRow = (props: MethodRowProps) => {
|
export const MethodRow = (props: MethodRowProps) => {
|
||||||
@@ -113,6 +113,21 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
|
|||||||
[modeledMethodsProp, viewState],
|
[modeledMethodsProp, viewState],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const modeledMethodChangedHandlers = useMemo(
|
||||||
|
() =>
|
||||||
|
modeledMethods.map((_, index) => (modeledMethod: ModeledMethod) => {
|
||||||
|
const newModeledMethods = [...modeledMethods];
|
||||||
|
newModeledMethods[index] = modeledMethod;
|
||||||
|
onChange(
|
||||||
|
method.signature,
|
||||||
|
newModeledMethods.filter(
|
||||||
|
(m): m is ModeledMethod => m !== undefined,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
[method, modeledMethods, onChange],
|
||||||
|
);
|
||||||
|
|
||||||
const jumpToMethod = useCallback(
|
const jumpToMethod = useCallback(
|
||||||
() => sendJumpToMethodMessage(method),
|
() => sendJumpToMethodMessage(method),
|
||||||
[method],
|
[method],
|
||||||
@@ -164,7 +179,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
|
|||||||
key={index}
|
key={index}
|
||||||
method={method}
|
method={method}
|
||||||
modeledMethod={modeledMethod}
|
modeledMethod={modeledMethod}
|
||||||
onChange={onChange}
|
onChange={modeledMethodChangedHandlers[index]}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</MultiModelColumn>
|
</MultiModelColumn>
|
||||||
@@ -174,7 +189,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
|
|||||||
key={index}
|
key={index}
|
||||||
method={method}
|
method={method}
|
||||||
modeledMethod={modeledMethod}
|
modeledMethod={modeledMethod}
|
||||||
onChange={onChange}
|
onChange={modeledMethodChangedHandlers[index]}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</MultiModelColumn>
|
</MultiModelColumn>
|
||||||
@@ -184,7 +199,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
|
|||||||
key={index}
|
key={index}
|
||||||
method={method}
|
method={method}
|
||||||
modeledMethod={modeledMethod}
|
modeledMethod={modeledMethod}
|
||||||
onChange={onChange}
|
onChange={modeledMethodChangedHandlers[index]}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</MultiModelColumn>
|
</MultiModelColumn>
|
||||||
@@ -194,7 +209,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
|
|||||||
key={index}
|
key={index}
|
||||||
method={method}
|
method={method}
|
||||||
modeledMethod={modeledMethod}
|
modeledMethod={modeledMethod}
|
||||||
onChange={onChange}
|
onChange={modeledMethodChangedHandlers[index]}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</MultiModelColumn>
|
</MultiModelColumn>
|
||||||
|
|||||||
@@ -180,12 +180,16 @@ export function ModelEditor({
|
|||||||
[methods],
|
[methods],
|
||||||
);
|
);
|
||||||
|
|
||||||
const onChange = useCallback((model: ModeledMethod) => {
|
const onChange = useCallback(
|
||||||
vscode.postMessage({
|
(methodSignature: string, modeledMethods: ModeledMethod[]) => {
|
||||||
t: "setModeledMethod",
|
vscode.postMessage({
|
||||||
method: model,
|
t: "setMultipleModeledMethods",
|
||||||
});
|
methodSignature,
|
||||||
}, []);
|
modeledMethods,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
|
||||||
const onRefreshClick = useCallback(() => {
|
const onRefreshClick = useCallback(() => {
|
||||||
vscode.postMessage({
|
vscode.postMessage({
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export type ModeledMethodDataGridProps = {
|
|||||||
viewState: ModelEditorViewState;
|
viewState: ModelEditorViewState;
|
||||||
hideModeledMethods: boolean;
|
hideModeledMethods: boolean;
|
||||||
revealedMethodSignature: string | null;
|
revealedMethodSignature: string | null;
|
||||||
onChange: (modeledMethod: ModeledMethod) => void;
|
onChange: (methodSignature: string, modeledMethods: ModeledMethod[]) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ModeledMethodDataGrid = ({
|
export const ModeledMethodDataGrid = ({
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ export type ModeledMethodsListProps = {
|
|||||||
revealedMethodSignature: string | null;
|
revealedMethodSignature: string | null;
|
||||||
viewState: ModelEditorViewState;
|
viewState: ModelEditorViewState;
|
||||||
hideModeledMethods: boolean;
|
hideModeledMethods: boolean;
|
||||||
onChange: (modeledMethod: ModeledMethod) => void;
|
onChange: (methodSignature: string, modeledMethods: ModeledMethod[]) => void;
|
||||||
onSaveModelClick: (methodSignatures: string[]) => void;
|
onSaveModelClick: (methodSignatures: string[]) => void;
|
||||||
onGenerateFromLlmClick: (
|
onGenerateFromLlmClick: (
|
||||||
packageName: string,
|
packageName: string,
|
||||||
|
|||||||
Reference in New Issue
Block a user