From 1710574ff5d0ea8f747f7312b1671f7b342ec557 Mon Sep 17 00:00:00 2001 From: AMMAR Date: Thu, 4 Aug 2022 12:31:36 +0200 Subject: [PATCH] #78 - Releasing members from the dataElementGroup dialog leads to errors - Allow releasing members from the dataElementGroup dialog without errors. --- pages/all-elements.vue | 108 +++++++++++++++++++++-------------------- 1 file changed, 55 insertions(+), 53 deletions(-) diff --git a/pages/all-elements.vue b/pages/all-elements.vue index 103904a..cb6b0a3 100644 --- a/pages/all-elements.vue +++ b/pages/all-elements.vue @@ -308,64 +308,66 @@ export default { } const currentElement = this.getJsonObjects(this.treeItems, 'urn', element.previousUrn)[0] const parentElement = this.getJsonObjects(this.treeItems, 'urn', this.dialog.parentUrn)[0] - const item = { - id: this.generateItemId(), - urn: element.identification.urn, - editable: true, - name: element.definitions[0].designation, - elementType: element.identification.elementType, - children: element.identification.elementType === 'DATAELEMENT' ? undefined : [], - isPreferredLanguage: Ajax.preferredLanguage.includes(element.definitions[0].language) - } - switch (element.identification.elementType) { - case 'NAMESPACE': { - if (element.action === 'CREATE') { - item.children = [] - this.treeItems.push(item) - } else if (element.action === 'UPDATE') { - const previousItem = - this.getJsonObjects(this.treeItems, 'urn', element.previousUrn)[0] - item.children = previousItem.children - item.id = previousItem.id - this.treeItems = - findAnd.replaceObject(this.treeItems, { urn: element.previousUrn }, item) - this.changeActiveElement(item.urn) - } else { - this.treeItems = - findAnd.removeObject(this.treeItems, { urn: element.identification.urn }) - } - break + if (currentElement !== undefined && parentElement !== undefined) { + const item = { + id: this.generateItemId(), + urn: element.identification.urn, + editable: true, + name: element.definitions[0].designation, + elementType: element.identification.elementType, + children: element.identification.elementType === 'DATAELEMENT' ? undefined : [], + isPreferredLanguage: Ajax.preferredLanguage.includes(element.definitions[0].language) } - case 'RECORD': - case 'DATAELEMENTGROUP': - case 'DATAELEMENT': { - item.parentUrn = this.dialog.parentUrn - if (element.action === 'UPDATE') { - const parentElement = this.getJsonObjects(this.treeItems, 'urn', currentElement.parentUrn)[0] - item.parentUrn = currentElement.parentUrn - item.id = currentElement.id - parentElement.children = - findAnd.replaceObject(parentElement.children, { urn: element.previousUrn }, item) - this.treeItems = - findAnd.changeProps(this.treeItems, { urn: parentElement.urn }, parentElement.children) - if (element.identification.elementType === 'DATAELEMENTGROUP' || - element.identification.elementType === 'RECORD') { - this.fetchAndReplaceMembers(item) - this.openNodes = findAnd.replaceObject(this.openNodes, { urn: element.previousUrn }, item) + switch (element.identification.elementType) { + case 'NAMESPACE': { + if (element.action === 'CREATE') { + item.children = [] + this.treeItems.push(item) + } else if (element.action === 'UPDATE') { + const previousItem = + this.getJsonObjects(this.treeItems, 'urn', element.previousUrn)[0] + item.children = previousItem.children + item.id = previousItem.id + this.treeItems = + findAnd.replaceObject(this.treeItems, { urn: element.previousUrn }, item) + this.changeActiveElement(item.urn) + } else { + this.treeItems = + findAnd.removeObject(this.treeItems, { urn: element.identification.urn }) } - this.changeActiveElement(item.urn) + break } - if (element.action === 'CREATE') { - parentElement.children.push(item) - if (parentElement.children.length === 1) { - this.fetchAndReplaceMembers(parentElement) + case 'RECORD': + case 'DATAELEMENTGROUP': + case 'DATAELEMENT': { + item.parentUrn = this.dialog.parentUrn + if (element.action === 'UPDATE') { + const parentElement = this.getJsonObjects(this.treeItems, 'urn', currentElement.parentUrn)[0] + item.parentUrn = currentElement.parentUrn + item.id = currentElement.id + parentElement.children = + findAnd.replaceObject(parentElement.children, { urn: element.previousUrn }, item) + this.treeItems = + findAnd.changeProps(this.treeItems, { urn: parentElement.urn }, parentElement.children) + if (element.identification.elementType === 'DATAELEMENTGROUP' || + element.identification.elementType === 'RECORD') { + this.fetchAndReplaceMembers(item) + this.openNodes = findAnd.replaceObject(this.openNodes, { urn: element.previousUrn }, item) + } + this.changeActiveElement(item.urn) } - this.treeItems = - findAnd.changeProps(this.treeItems, - { urn: this.dialog.parentUrn }, - { children: parentElement.children }) + if (element.action === 'CREATE') { + parentElement.children.push(item) + if (parentElement.children.length === 1) { + this.fetchAndReplaceMembers(parentElement) + } + this.treeItems = + findAnd.changeProps(this.treeItems, + { urn: this.dialog.parentUrn }, + { children: parentElement.children }) + } + break } - break } } this.UpdateAllOpenNodes()