Untitled
private handleData( section: PageSection, node: EditorTreeNode, data: any, nodeIsItemChild: boolean, layout: PageLayout ) { if (!data) { this.handleNoData(section, node); return; } const { relItemData: relatedItem, pageSection } = data; this.updateSectionProperties(section, pageSection, node.key); if (relatedItem) { this.processRelatedItem(section, relatedItem, nodeIsItemChild); } } private handleNoData(section: PageSection, node: EditorTreeNode) { section.messages = [ ...(section.messages ?? []), { severity: 'error', detail: this.i18nService.translate( 'editor.EDITORPAGE.MESSAGE.ERRORITEMEXISTS', {}, this.i18nService.getActiveLang() ), }, ]; section.header = node.label; section.key = <string>node.key; section.expandedOnce = true; } private updateSectionProperties( section: PageSection, pageSection: any, nodeKey: string ) { section.header = pageSection.header; section.key = <string>nodeKey; section.content = <EditorContent[]>pageSection.content; } private processRelatedItem( section: PageSection, relatedItem: any, nodeIsItemChild: boolean ) { // Populate metadata if (!nodeIsItemChild) { section.metadata = ITEM_METADATA_NODES.map((itemNode) => ({ ...itemNode, value: relatedItem ? relatedItem[`${itemNode.nodeName}` as keyof ItemModel] : undefined, itemId: relatedItem.id, type: EditorFieldInputType.InputText, })); } section.itemName = relatedItem.name; section.valueName = <string>relatedItem.name; section.isItem = true; section.expandedOnce = true; // Update tree nodes const treeNode = this.flattenedTreeNodes?.find( (tNode) => tNode.key === section.key ); if (treeNode && !nodeIsItemChild) { treeNode.label = `${treeNode.label?.split(':')[0]}: ${relatedItem.name ?? ''}`; section.header = treeNode.label; if (treeNode.selectable === false) { treeNode.selectable = true; treeNode.children = treeNode.children?.map((cNode) => ({ ...cNode, selectable: true, })); } } // Sync item values section.content = section.content.map((content) => ({ itemId: relatedItem.id, ...content, })); const itemHasChildSections = this.flattenedTreeNodes?.some((treeNode) => treeNode.key?.includes(`${section.key}-`) ); if (itemHasChildSections) { section.content = []; } else { section.content.forEach((content) => { const itemValue = relatedItem.nodes?.find( (val: TreeNodeModel) => val.nodeName === content.nodeName ); const setupValue = this.setupValues?.find( (val) => val.nodeName === content.nodeName ); if (itemValue && setupValue) { setupValue.value = itemValue.value; } }); } }
Leave a Comment