Convert SetSelectedMethodMessage to include multiple modeled methods
This commit is contained in:
@@ -577,6 +577,11 @@ interface SetModeledMethodMessage {
|
||||
method: ModeledMethod;
|
||||
}
|
||||
|
||||
interface SetMultipleModeledMethodsMessage {
|
||||
t: "setMultipleModeledMethods";
|
||||
modeledMethods: ModeledMethod[];
|
||||
}
|
||||
|
||||
interface SetInModelingModeMessage {
|
||||
t: "setInModelingMode";
|
||||
inModelingMode: boolean;
|
||||
@@ -643,14 +648,14 @@ interface SetMethodModifiedMessage {
|
||||
interface SetSelectedMethodMessage {
|
||||
t: "setSelectedMethod";
|
||||
method: Method;
|
||||
modeledMethod?: ModeledMethod;
|
||||
modeledMethods: ModeledMethod[];
|
||||
isModified: boolean;
|
||||
}
|
||||
|
||||
export type ToMethodModelingMessage =
|
||||
| SetMethodModelingPanelViewStateMessage
|
||||
| SetMethodMessage
|
||||
| SetModeledMethodMessage
|
||||
| SetMultipleModeledMethodsMessage
|
||||
| SetMethodModifiedMessage
|
||||
| SetSelectedMethodMessage
|
||||
| SetInModelingModeMessage;
|
||||
|
||||
@@ -14,10 +14,7 @@ import { assertNever } from "../../common/helpers-pure";
|
||||
import { ModelEditorViewTracker } from "../model-editor-view-tracker";
|
||||
import { ModelConfigListener } from "../../config";
|
||||
import { DatabaseItem } from "../../databases/local-databases";
|
||||
import {
|
||||
convertFromLegacyModeledMethod,
|
||||
convertToLegacyModeledMethod,
|
||||
} from "../shared/modeled-methods-legacy";
|
||||
import { convertFromLegacyModeledMethod } from "../shared/modeled-methods-legacy";
|
||||
|
||||
export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
|
||||
ToMethodModelingMessage,
|
||||
@@ -77,9 +74,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
|
||||
await this.postMessage({
|
||||
t: "setSelectedMethod",
|
||||
method: selectedMethod.method,
|
||||
modeledMethod: convertToLegacyModeledMethod(
|
||||
selectedMethod.modeledMethods,
|
||||
),
|
||||
modeledMethods: selectedMethod.modeledMethods,
|
||||
isModified: selectedMethod.isModified,
|
||||
});
|
||||
}
|
||||
@@ -165,13 +160,10 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
|
||||
if (this.webviewView && e.isActiveDb) {
|
||||
const modeledMethods = e.modeledMethods[this.method?.signature ?? ""];
|
||||
if (modeledMethods) {
|
||||
const modeledMethod = convertToLegacyModeledMethod(modeledMethods);
|
||||
if (modeledMethod) {
|
||||
await this.postMessage({
|
||||
t: "setModeledMethod",
|
||||
method: modeledMethod,
|
||||
});
|
||||
}
|
||||
await this.postMessage({
|
||||
t: "setMultipleModeledMethods",
|
||||
modeledMethods,
|
||||
});
|
||||
}
|
||||
}
|
||||
}),
|
||||
@@ -198,7 +190,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
|
||||
await this.postMessage({
|
||||
t: "setSelectedMethod",
|
||||
method: e.method,
|
||||
modeledMethod: convertToLegacyModeledMethod(e.modeledMethods),
|
||||
modeledMethods: e.modeledMethods,
|
||||
isModified: e.isModified,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -68,12 +68,12 @@ export function getArgumentsList(methodParameters: string): string[] {
|
||||
|
||||
export function canMethodBeModeled(
|
||||
method: Method,
|
||||
modeledMethod: ModeledMethod | undefined,
|
||||
modeledMethods: ModeledMethod[],
|
||||
methodIsUnsaved: boolean,
|
||||
): boolean {
|
||||
return (
|
||||
!method.supported ||
|
||||
(modeledMethod && modeledMethod?.type !== "none") ||
|
||||
modeledMethods.some((modeledMethod) => modeledMethod.type !== "none") ||
|
||||
methodIsUnsaved
|
||||
);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ import { vscode } from "../vscode-api";
|
||||
import { NotInModelingMode } from "./NotInModelingMode";
|
||||
import { NoMethodSelected } from "./NoMethodSelected";
|
||||
import { MethodModelingPanelViewState } from "../../model-editor/shared/view-state";
|
||||
import { convertFromLegacyModeledMethod } from "../../model-editor/shared/modeled-methods-legacy";
|
||||
import { MethodAlreadyModeled } from "./MethodAlreadyModeled";
|
||||
|
||||
type Props = {
|
||||
@@ -25,19 +24,13 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
|
||||
|
||||
const [method, setMethod] = useState<Method | undefined>(undefined);
|
||||
|
||||
const [modeledMethod, setModeledMethod] = React.useState<
|
||||
ModeledMethod | undefined
|
||||
>(undefined);
|
||||
const [modeledMethods, setModeledMethods] = useState<ModeledMethod[]>([]);
|
||||
|
||||
const [isMethodModified, setIsMethodModified] = useState<boolean>(false);
|
||||
|
||||
const modelingStatus = useMemo(
|
||||
() =>
|
||||
getModelingStatus(
|
||||
convertFromLegacyModeledMethod(modeledMethod),
|
||||
isMethodModified,
|
||||
),
|
||||
[modeledMethod, isMethodModified],
|
||||
() => getModelingStatus(modeledMethods, isMethodModified),
|
||||
[modeledMethods, isMethodModified],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -54,15 +47,15 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
|
||||
case "setMethod":
|
||||
setMethod(msg.method);
|
||||
break;
|
||||
case "setModeledMethod":
|
||||
setModeledMethod(msg.method);
|
||||
case "setMultipleModeledMethods":
|
||||
setModeledMethods(msg.modeledMethods);
|
||||
break;
|
||||
case "setMethodModified":
|
||||
setIsMethodModified(msg.isModified);
|
||||
break;
|
||||
case "setSelectedMethod":
|
||||
setMethod(msg.method);
|
||||
setModeledMethod(msg.modeledMethod);
|
||||
setModeledMethods(msg.modeledMethods);
|
||||
setIsMethodModified(msg.isModified);
|
||||
break;
|
||||
default:
|
||||
@@ -89,7 +82,7 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
|
||||
return <NoMethodSelected />;
|
||||
}
|
||||
|
||||
if (!canMethodBeModeled(method, modeledMethod, isMethodModified)) {
|
||||
if (!canMethodBeModeled(method, modeledMethods, isMethodModified)) {
|
||||
return <MethodAlreadyModeled />;
|
||||
}
|
||||
|
||||
@@ -104,7 +97,7 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
|
||||
<MethodModeling
|
||||
modelingStatus={modelingStatus}
|
||||
method={method}
|
||||
modeledMethods={convertFromLegacyModeledMethod(modeledMethod)}
|
||||
modeledMethods={modeledMethods}
|
||||
showMultipleModels={viewState?.showMultipleModels}
|
||||
onChange={onChange}
|
||||
/>
|
||||
|
||||
@@ -12,6 +12,7 @@ import { sortMethods } from "../../model-editor/shared/sorting";
|
||||
import { InProgressMethods } from "../../model-editor/shared/in-progress-methods";
|
||||
import { HiddenMethodsRow } from "./HiddenMethodsRow";
|
||||
import { ModelEditorViewState } from "../../model-editor/shared/view-state";
|
||||
import { convertFromLegacyModeledMethod } from "../../model-editor/shared/modeled-methods-legacy";
|
||||
|
||||
export const GRID_TEMPLATE_COLUMNS = "0.5fr 0.125fr 0.125fr 0.125fr 0.125fr";
|
||||
|
||||
@@ -49,7 +50,7 @@ export const ModeledMethodDataGrid = ({
|
||||
const methodIsUnsaved = modifiedSignatures.has(method.signature);
|
||||
const methodCanBeModeled = canMethodBeModeled(
|
||||
method,
|
||||
modeledMethod,
|
||||
convertFromLegacyModeledMethod(modeledMethod),
|
||||
methodIsUnsaved,
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user