From e6b6de2c446606f3be8114002ee37e1cd89d7b3c Mon Sep 17 00:00:00 2001 From: "burnettk (aider)" Date: Mon, 10 Feb 2025 17:29:23 -0500 Subject: [PATCH] refactor: Convert ProcessGroup to ProcessGroupLite for type safety. --- .../StartProcess/ProcessModelTreePage.tsx | 40 +++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/spiffworkflow-frontend/src/a-spiffui-v3/views/StartProcess/ProcessModelTreePage.tsx b/spiffworkflow-frontend/src/a-spiffui-v3/views/StartProcess/ProcessModelTreePage.tsx index 9584f2637..8b7d04b2e 100644 --- a/spiffworkflow-frontend/src/a-spiffui-v3/views/StartProcess/ProcessModelTreePage.tsx +++ b/spiffworkflow-frontend/src/a-spiffui-v3/views/StartProcess/ProcessModelTreePage.tsx @@ -36,6 +36,22 @@ type OwnProps = { processModelAction: ProcessModelAction; navigateToPage?: boolean; }; + +/** + * Converts a ProcessGroup to a ProcessGroupLite. + */ +const processGroupToLite = (group: ProcessGroup): ProcessGroupLite => { + return { + id: group.id, + display_name: group.display_name, + description: group.description || '', // Ensure description is not undefined + process_models: group.process_models, + process_groups: group.process_groups + ? group.process_groups.map(processGroupToLite) + : undefined, + }; +}; + /** * Top level layout and control container for this view, * feeds various streams, data and callbacks to children. @@ -243,7 +259,7 @@ export default function ProcessModelTreePage({ }; function findProcessGroupByPath( - groupsToProcess: ProcessGroup[] | ProcessGroupLite[] | null, + groupsToProcess: ProcessGroupLite[] | null, path: string, ): ProcessGroupLite | undefined { const levels = path.split('/'); @@ -257,24 +273,13 @@ export default function ProcessModelTreePage({ assembledGroups = `${assembledGroups}/${level}`; } - // let newGroups = currentGroup - // ? currentGroup.process_groups - // : groupsToProcess; - - // works - // let newGroups = currentGroup ? currentGroup.process_groups : []; - - let newGroups: ProcessGroupLite[] | ProcessGroup[] = []; + let newGroups: ProcessGroupLite[] = []; if (currentGroup && currentGroup.process_groups !== undefined) { newGroups = currentGroup.process_groups; } else if (groupsToProcess) { newGroups = groupsToProcess; } - // currentGroup - // ? currentGroup.process_groups - // : groupsToProcess; - if (!newGroups) { newGroups = []; } @@ -319,18 +324,21 @@ export default function ProcessModelTreePage({ const unModifiedProcessGroupId = unModifyProcessIdentifierForPathParam( `${params.process_group_id}`, ); + const processGroupsLite: ProcessGroupLite[] = processGroups.map( + processGroupToLite, + ); const foundProcessGroup = findProcessGroupByPath( - processGroups || [], + processGroupsLite, unModifiedProcessGroupId, ); if (foundProcessGroup) { setGroups(foundProcessGroup.process_groups || null); setCrumbs(processCrumbs(foundProcessGroup, flattened)); } else { - setGroups(processGroups); + setGroups(processGroupsLite); setCrumbs([]); } - setGroupsExpanded(!!processGroups.length); + setGroupsExpanded(!!processGroupsLite.length); if (setNavElementCallback) { setNavElementCallback(