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