From 5d67ba276bcea859f7e2d2bfd156911c9ba28f63 Mon Sep 17 00:00:00 2001
From: Eduard Czimbalmos <Eduard.Czimbalmos@ericsson.com>
Date: Wed, 30 Apr 2025 09:41:17 +0200
Subject: [PATCH] Fix UnionTable getResponseElement: handle node elements
 correctly

---
 .../ViewModels/ViewModel_UnionTable.js        | 26 ++++++++++---------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/htdocs/WebApplications/CustomizableApp/ViewModels/ViewModel_UnionTable.js b/htdocs/WebApplications/CustomizableApp/ViewModels/ViewModel_UnionTable.js
index abdd796..e2b4e6c 100644
--- a/htdocs/WebApplications/CustomizableApp/ViewModels/ViewModel_UnionTable.js
+++ b/htdocs/WebApplications/CustomizableApp/ViewModels/ViewModel_UnionTable.js
@@ -73,7 +73,7 @@ function CViewModel_UnionTable(aViewModel, aOptions) {
         return mViewModel.getRequestFromPath(mResponseDataPaths[0]).getData.element;
     };
 
-    this.getResponseElement = function (aReponseDataPath, aFullTableSelection) {
+    this.getResponseElement = function (aReponseDataPath, aFullTableSelection) {
         var lElement;
         if (aFullTableSelection) {
             aFullTableSelection.parents = [];
@@ -86,9 +86,9 @@ function CViewModel_UnionTable(aViewModel, aOptions) {
                 lElement = lElement[aReponseDataPath[0]];
             }
             if (lElement) {
-                var lRq = mViewModel.getRequest()[aReponseDataPath[0]];
-                for (var i = 1; i < aReponseDataPath.length && lElement; ++i) {
-                    if (lElement.list && lRq.getData.selection && lRq.getData.selection.length > 0) {
+                var lRq = mViewModel.getRequest()[aReponseDataPath[0]];
+                for (var i = 1; i < aReponseDataPath.length && lElement; ++i) {
+                    if (lElement.list && lRq.getData.selection && lRq.getData.selection.length > 0) {
                         if (aFullTableSelection) {
                             aFullTableSelection.depth--;
                             if (lElement.list[lRq.getData.selection[0]] != undefined) {
@@ -104,19 +104,21 @@ function CViewModel_UnionTable(aViewModel, aOptions) {
                             lElement = undefined;
                             break;
                         }
-                    } else if (!lRq.getData.selection || lRq.getData.selection.length === 0) {
-                        /**/
-                    } else if (lElement.node && lElement.node.childVals) {
-                        lElement = lElement.node.childVals[aReponseDataPath[i]];
-                    } else
+                    } else if (lElement.node && lElement.node.childVals) {
+                        lElement = lElement.node.childVals[aReponseDataPath[i]];
+                        aFullTableSelection.depth--;
+                        aFullTableSelection.path = aFullTableSelection.path.slice(1);
+                    } else if (!lRq.getData.selection || lRq.getData.selection.length === 0) {
+                         /**/
+                     } else
                         lElement = {
                             "error" : "cannot determine node"
                         };
-                    if (lRq.getData.children)
-                        lRq = lRq.getData.children[aReponseDataPath[i]];
+                    if (lRq.getData.children)
+                        lRq = lRq.getData.children[aReponseDataPath[i]];
                 }
             }
-        }
+        }
         return lElement;
     };
 
-- 
GitLab