Browse Source

Merge pull request #7023 from GordonSmith/HPCC-13093_5_2

HPCC-13093 Nested Results + XPath

Reviewed-By: Miguel Vazquez <miguel.vazquez@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 10 years ago
parent
commit
b2eee68d86
1 changed files with 33 additions and 29 deletions
  1. 33 29
      esp/src/eclwatch/ESPResult.js

+ 33 - 29
esp/src/eclwatch/ESPResult.js

@@ -158,43 +158,47 @@ define([
 
         rowToTable: function (cell, __row, node) {
             var table = domConstruct.create("table", { border: 1, cellspacing: 0, width: "100%" }, node);
-            if (lang.exists("Row", cell)) {
-                cell = cell.Row;
-            }
             if (Object.prototype.toString.call(cell) === '[object Object]') {
-                //  Set of Scalar  ---
-                if (cell.Item && Object.prototype.toString.call(cell.Item) === '[object Array]') {
-                    for (var i = 0; i < cell.Item.length; ++i) {
-                        var tr = domConstruct.create("tr", null, table);
-                        domConstruct.create("td", { innerHTML: cell.Item[i] }, tr);
-                    }
+                //  Set of Scalar or "Row" ---
+                for (var key in cell) {
+                    this.rowToTable(cell[key], __row, node);
                 }
             } else if (Object.prototype.toString.call(cell) === '[object Array]') {
-                //  Child Dataset  ---
                 for (var i = 0; i < cell.length; ++i) {
-                    if (i == 0) {
+                    switch (Object.prototype.toString.call(cell[i])) {
+                    case "[object Boolean]":
+                    case "[object Number]":
+                    case "[object String]":
+                        //  Item in Scalar  ---
                         var tr = domConstruct.create("tr", null, table);
-                        for (var key in cell[i]) {
-                            var th = domConstruct.create("th", { innerHTML: entities.encode(key) }, tr);
+                        domConstruct.create("td", { innerHTML: cell[i] }, tr);
+                        break;
+                    default:
+                        //  Child Dataset  ---
+                        if (i === 0) {
+                            var tr = domConstruct.create("tr", null, table);
+                            for (var key in cell[i]) {
+                                var th = domConstruct.create("th", { innerHTML: entities.encode(key) }, tr);
+                            }
                         }
-                    }
-                    var tr = domConstruct.create("tr", null, table);
-                    for (var key in cell[i]) {
-                        if (cell[i][key]) {
-                            if (Object.prototype.toString.call(cell[i][key]) === '[object Object]' || Object.prototype.toString.call(cell[i][key]) === '[object Array]') {
-                                var td = domConstruct.create("td", null, tr);
-                                this.rowToTable(cell[i][key], cell[i], td);
-                            } else if (key.indexOf("__html", key.length - "__html".length) !== -1) {
-                                var td = domConstruct.create("td", { innerHTML : cell[i][key] }, tr);
-                            } else if (key.indexOf("__javascript", key.length - "__javascript".length) !== -1) {
-                                var td = domConstruct.create("td", null, tr);
-                                this.injectJavascript(cell[i][key], cell[i], td);
+                        var tr = domConstruct.create("tr", null, table);
+                        for (var key in cell[i]) {
+                            if (cell[i][key]) {
+                                if (Object.prototype.toString.call(cell[i][key]) === '[object Object]' || Object.prototype.toString.call(cell[i][key]) === '[object Array]') {
+                                    var td = domConstruct.create("td", null, tr);
+                                    this.rowToTable(cell[i][key], cell[i], td);
+                                } else if (key.indexOf("__html", key.length - "__html".length) !== -1) {
+                                    var td = domConstruct.create("td", { innerHTML: cell[i][key] }, tr);
+                                } else if (key.indexOf("__javascript", key.length - "__javascript".length) !== -1) {
+                                    var td = domConstruct.create("td", null, tr);
+                                    this.injectJavascript(cell[i][key], cell[i], td);
+                                } else {
+                                    var val = cell[i][key];
+                                    var td = domConstruct.create("td", { innerHTML: Object.prototype.toString.call(val) === '[object String]' ? entities.encode(val) : val }, tr);
+                                }
                             } else {
-                                var val = cell[i][key];
-                                var td = domConstruct.create("td", { innerHTML: Object.prototype.toString.call(val) === '[object String]' ? entities.encode(val) : val }, tr);
+                                var td = domConstruct.create("td", { innerHTML: "" }, tr);
                             }
-                        } else {
-                            var td = domConstruct.create("td", { innerHTML: "" }, tr);
                         }
                     }
                 }