Select requested form in IDE designer
CI / python (push) Has been cancelled
CI / rust (push) Has been cancelled

This commit is contained in:
2026-05-21 06:32:19 +03:00
parent af900e4e34
commit 7d4d9917dd
2 changed files with 29 additions and 4 deletions
@@ -3041,12 +3041,23 @@ function FormDesignerPanel({
const [elementDrafts, setElementDrafts] = useState<Record<string, IdeFormElementDraft[]>>({}); const [elementDrafts, setElementDrafts] = useState<Record<string, IdeFormElementDraft[]>>({});
const [newElementName, setNewElementName] = useState(""); const [newElementName, setNewElementName] = useState("");
const [newElementKind, setNewElementKind] = useState<IdeFormElementDraft["controlKind"]>("input"); const [newElementKind, setNewElementKind] = useState<IdeFormElementDraft["controlKind"]>("input");
const selectedFormQualifiedName = data.editorSelectedForm;
useEffect(() => { 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)) { if (objectForms.length > 0 && !objectForms.some((item) => item.form.lineage_id === selectedFormId)) {
setSelectedFormId(objectForms[0].form.lineage_id); setSelectedFormId(objectForms[0].form.lineage_id);
} }
}, [objectForms, selectedFormId]); }, [objectForms, selectedFormId, selectedFormQualifiedName]);
const form = objectForms.find((item) => item.form.lineage_id === selectedFormId) ?? objectForms[0]; 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 commands = form?.commands.slice(0, 6) ?? [];
const formKey = form?.form.lineage_id ?? "draft"; const formKey = form?.form.lineage_id ?? "draft";
const baseElements = useMemo(() => buildIdeFormElements(form), [form]); const baseElements = useMemo(() => buildIdeFormElements(form), [form]);
+16 -2
View File
@@ -817,6 +817,11 @@ export async function getBslCompletions(
return getJson<BslCompletionItem[]>(apiUrl, `/projects/${projectId}/bsl/completions?${params.toString()}`); 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) { export async function getProjectWorkspaceData(projectId: string, apiUrl = resolveApiUrl(), selectedRoutine?: string | null, activeMode?: string | null) {
const selectedRoutineName = selectedRoutine?.trim() ?? null; const selectedRoutineName = selectedRoutine?.trim() ?? null;
const workspaceMode = activeMode?.trim() || "overview"; const workspaceMode = activeMode?.trim() || "overview";
@@ -851,7 +856,15 @@ export async function getProjectWorkspaceData(projectId: string, apiUrl = resolv
); );
selectedTreeNode = firstCommonModulePage?.children[0] ?? null; 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 const selectedObjectModules = selectedObjectName
? getOptionalJson<WorkspaceModuleSource[]>( ? getOptionalJson<WorkspaceModuleSource[]>(
apiUrl, apiUrl,
@@ -957,7 +970,7 @@ export async function getProjectWorkspaceData(projectId: string, apiUrl = resolv
apiUrl, apiUrl,
metadataCatalog, metadataCatalog,
metadataTree, metadataTree,
selectedMetadataNode: selectedMetadataSearch?.results[0] ?? null, selectedMetadataNode: selectedTreeNode,
selectedObjectSchema, selectedObjectSchema,
selectedObjectUi, selectedObjectUi,
selectedObjectImpact, selectedObjectImpact,
@@ -978,6 +991,7 @@ export async function getProjectWorkspaceData(projectId: string, apiUrl = resolv
editorProposedText: authoringProposedText, editorProposedText: authoringProposedText,
editorSelectedObject, editorSelectedObject,
editorSelectedRoutine, editorSelectedRoutine,
editorSelectedForm: selectedFormQualifiedName,
editorModules: objectModules, editorModules: objectModules,
editorModuleName: selectedObjectModule?.name ?? snapshotModule?.name ?? null, editorModuleName: selectedObjectModule?.name ?? snapshotModule?.name ?? null,
editorSourcePath: selectedObjectModule?.source_path ?? snapshotModule?.source_path ?? null editorSourcePath: selectedObjectModule?.source_path ?? snapshotModule?.source_path ?? null