Table/Tree: improve error message

jQuery objects don't have a good toString(), so the error message would
only contain "[object Object]", which is not very helpful. Use graphics.
debugOutput() instead.

Change-Id: I451d6a900d8b29c321ca81d779ceff88d21ffced
Reviewed-on: https://git.eclipse.org/r/c/scout/org.eclipse.scout.rt/+/183120
Tested-by: Scout Bot <scout-bot@eclipse.org>
Reviewed-by: Beat Schwarzentrub <bsh@bsiag.com>
diff --git a/eclipse-scout-core/src/table/Table.js b/eclipse-scout-core/src/table/Table.js
index 57a9a70..71629e4 100644
--- a/eclipse-scout-core/src/table/Table.js
+++ b/eclipse-scout-core/src/table/Table.js
@@ -4930,7 +4930,10 @@
       var firstRow = rows[this.viewRangeRendered.from];
       var lastRow = rows[this.viewRangeRendered.to - 1];
       if (!firstRow.$row || !lastRow.$row) {
-        throw new Error('Rows not rendered as expected. ' + this.viewRangeRendered + '. First: ' + firstRow.$row + '. Last: ' + lastRow.$row);
+        throw new Error('Rows not rendered as expected. ' + this.viewRangeRendered +
+          '. First: ' + graphics.debugOutput(firstRow.$row) +
+          '. Last: ' + graphics.debugOutput(lastRow.$row) +
+          '. Length: visibleRows=' + this.visibleRows.length + ' rows=' + this.rows.length);
       }
     }
 
diff --git a/eclipse-scout-core/src/tree/Tree.js b/eclipse-scout-core/src/tree/Tree.js
index 8bc7d25..dd9bf07 100644
--- a/eclipse-scout-core/src/tree/Tree.js
+++ b/eclipse-scout-core/src/tree/Tree.js
@@ -15,6 +15,7 @@
   Device,
   DoubleClickSupport,
   dragAndDrop,
+  graphics,
   HtmlComponent,
   keys,
   KeyStrokeContext,
@@ -706,13 +707,16 @@
       var lastNode = nodes[this.viewRangeRendered.to - 1];
       if (this.viewRangeDirty) {
         // cleanup nodes before range and after
-        var $nodesBeforFirstNode = firstNode.$node.prevAll('.tree-node');
+        var $nodesBeforeFirstNode = firstNode.$node.prevAll('.tree-node');
         var $nodesAfterLastNode = lastNode.$node.nextAll('.tree-node');
-        this._cleanupNodes($nodesBeforFirstNode);
+        this._cleanupNodes($nodesBeforeFirstNode);
         this._cleanupNodes($nodesAfterLastNode);
       }
       if (!firstNode.attached || !lastNode.attached) {
-        throw new Error('Nodes not rendered as expected. ' + this.viewRangeRendered + '. First: ' + firstNode.$node + '. Last: ' + lastNode.$node);
+        throw new Error('Nodes not rendered as expected. ' + this.viewRangeRendered +
+          '. First: ' + graphics.debugOutput(firstNode.$node) +
+          '. Last: ' + graphics.debugOutput(lastNode.$node) +
+          '. Length: visibleNodesFlat=' + this.visibleNodesFlat.length + ' nodes=' + this.nodes.length + ' nodesMap=' + Object.keys(this.nodesMap).length);
       }
     }