Select requested form in IDE designer
This commit is contained in:
@@ -3041,12 +3041,23 @@ function FormDesignerPanel({
|
||||
const [elementDrafts, setElementDrafts] = useState<Record<string, IdeFormElementDraft[]>>({});
|
||||
const [newElementName, setNewElementName] = useState("");
|
||||
const [newElementKind, setNewElementKind] = useState<IdeFormElementDraft["controlKind"]>("input");
|
||||
const selectedFormQualifiedName = data.editorSelectedForm;
|
||||
useEffect(() => {
|
||||
if (selectedFormQualifiedName) {
|
||||
const requestedForm = objectForms.find((item) => item.form.qualified_name === selectedFormQualifiedName);
|
||||
if (requestedForm && requestedForm.form.lineage_id !== selectedFormId) {
|
||||
setSelectedFormId(requestedForm.form.lineage_id);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (objectForms.length > 0 && !objectForms.some((item) => item.form.lineage_id === selectedFormId)) {
|
||||
setSelectedFormId(objectForms[0].form.lineage_id);
|
||||
}
|
||||
}, [objectForms, selectedFormId]);
|
||||
const form = objectForms.find((item) => item.form.lineage_id === selectedFormId) ?? objectForms[0];
|
||||
}, [objectForms, selectedFormId, selectedFormQualifiedName]);
|
||||
const form =
|
||||
objectForms.find((item) => item.form.lineage_id === selectedFormId) ??
|
||||
objectForms.find((item) => item.form.qualified_name === selectedFormQualifiedName) ??
|
||||
objectForms[0];
|
||||
const commands = form?.commands.slice(0, 6) ?? [];
|
||||
const formKey = form?.form.lineage_id ?? "draft";
|
||||
const baseElements = useMemo(() => buildIdeFormElements(form), [form]);
|
||||
|
||||
@@ -817,6 +817,11 @@ export async function getBslCompletions(
|
||||
return getJson<BslCompletionItem[]>(apiUrl, `/projects/${projectId}/bsl/completions?${params.toString()}`);
|
||||
}
|
||||
|
||||
function ownerQualifiedNameForForm(formQualifiedName: string) {
|
||||
const parts = formQualifiedName.split(".");
|
||||
return parts.length > 1 ? parts.slice(0, -1).join(".") : formQualifiedName;
|
||||
}
|
||||
|
||||
export async function getProjectWorkspaceData(projectId: string, apiUrl = resolveApiUrl(), selectedRoutine?: string | null, activeMode?: string | null) {
|
||||
const selectedRoutineName = selectedRoutine?.trim() ?? null;
|
||||
const workspaceMode = activeMode?.trim() || "overview";
|
||||
@@ -851,7 +856,15 @@ export async function getProjectWorkspaceData(projectId: string, apiUrl = resolv
|
||||
);
|
||||
selectedTreeNode = firstCommonModulePage?.children[0] ?? null;
|
||||
}
|
||||
const selectedObjectName = selectedRoutineName ?? selectedTreeNode?.qualified_name ?? null;
|
||||
const selectedFormQualifiedName =
|
||||
selectedTreeNode?.kind === "FORM"
|
||||
? selectedTreeNode.qualified_name
|
||||
: selectedRoutineName && selectedRoutineName.split(".").at(-1)?.toLocaleLowerCase("ru-RU").includes("форма")
|
||||
? selectedRoutineName
|
||||
: null;
|
||||
const selectedObjectName = selectedFormQualifiedName
|
||||
? ownerQualifiedNameForForm(selectedFormQualifiedName)
|
||||
: selectedRoutineName ?? selectedTreeNode?.qualified_name ?? null;
|
||||
const selectedObjectModules = selectedObjectName
|
||||
? getOptionalJson<WorkspaceModuleSource[]>(
|
||||
apiUrl,
|
||||
@@ -957,7 +970,7 @@ export async function getProjectWorkspaceData(projectId: string, apiUrl = resolv
|
||||
apiUrl,
|
||||
metadataCatalog,
|
||||
metadataTree,
|
||||
selectedMetadataNode: selectedMetadataSearch?.results[0] ?? null,
|
||||
selectedMetadataNode: selectedTreeNode,
|
||||
selectedObjectSchema,
|
||||
selectedObjectUi,
|
||||
selectedObjectImpact,
|
||||
@@ -978,6 +991,7 @@ export async function getProjectWorkspaceData(projectId: string, apiUrl = resolv
|
||||
editorProposedText: authoringProposedText,
|
||||
editorSelectedObject,
|
||||
editorSelectedRoutine,
|
||||
editorSelectedForm: selectedFormQualifiedName,
|
||||
editorModules: objectModules,
|
||||
editorModuleName: selectedObjectModule?.name ?? snapshotModule?.name ?? null,
|
||||
editorSourcePath: selectedObjectModule?.source_path ?? snapshotModule?.source_path ?? null
|
||||
|
||||
Reference in New Issue
Block a user