FELIX-614 display left array with "go back to full list" functionality
on single bundle/component display

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@671917 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/webconsole/src/main/resources/res/imgs/left.gif b/webconsole/src/main/resources/res/imgs/left.gif
new file mode 100644
index 0000000..72d9618
--- /dev/null
+++ b/webconsole/src/main/resources/res/imgs/left.gif
Binary files differ
diff --git a/webconsole/src/main/resources/res/ui/datatable.js b/webconsole/src/main/resources/res/ui/datatable.js
index 7573306..05fcdb6 100644
--- a/webconsole/src/main/resources/res/ui/datatable.js
+++ b/webconsole/src/main/resources/res/ui/datatable.js
@@ -65,9 +65,15 @@
 function data( /* Array of Object */ dataArray )
 {
     // render components
-    for ( var idx in dataArray )
+    if (dataArray.length == 1)
     {
-        entry( dataArray[idx] );
+        entry( dataArray[0], true );
+    }
+    else {
+        for ( var idx in dataArray )
+        {
+            entry( dataArray[idx] );
+        }
     }
 }
 
@@ -82,10 +88,10 @@
 }
 
 
-function entry( /* Object */ dataEntry )
+function entry( /* Object */ dataEntry, /* boolean */ singleEntry )
 {
     var trElement = tr( null, { id: "entry" + dataEntry.id } );
-    entryInternal( trElement,  dataEntry );
+    entryInternal( trElement,  dataEntry, singleEntry );
     document.write( serialize( trElement ) );
 
     // dataEntry detailed properties
@@ -98,28 +104,32 @@
 }
 
 
-function entryInternal( /* Element */ parent, /* Object */ dataEntry )
+function entryInternal( /* Element */ parent, /* Object */ dataEntry, /* boolean */ singleEntry )
 {
 
     var id = dataEntry.id;
     var name = dataEntry.name;
     var state = dataEntry.state;
-    var icon = (dataEntry.props) ? "down" : "right";
+    var icon = singleEntry ? "left" : (dataEntry.props ? "down" : "right");
+    var event = singleEntry ? "history.back()" : "showDataEntryDetails(" + id + ")"; 
 
-    parent.appendChild( addText( td( "content right" ), id ) );
+    parent.appendChild( td( "content right", null, [ text( id ) ] ) );
     
-    var tdEl = td( "content" );
-    tdEl.appendChild( createElement( "img", null, {
-            src: appRoot + "/res/imgs/" + icon + ".gif",
-            onClick: "showDataEntryDetails(" + id + ")",
-            id: "entry" + id + "_inline"
-        } ) );
-    tdEl.appendChild( addText( createElement( "a", null, {
-            href: pluginRoot + "/" + id
-        } ), name ) );
-    parent.appendChild( tdEl );
+    parent.appendChild( td( "content", null, [
+            createElement( "img", null, {
+                src: appRoot + "/res/imgs/" + icon + ".gif",
+                onClick: event,
+                id: "entry" + id + "_inline"
+            } ),
+            text( "\u00a0" ),
+            createElement( "a", null, {
+                href: pluginRoot + "/" + id
+            }, [ text( name ) ]
+            )]
+        )
+    );
 
-    parent.appendChild( addText( td( "content center" ), state ) );
+    parent.appendChild( td( "content center", null, [ text( state ) ] ) );
 
     for ( var aidx in dataEntry.actions )
     {
@@ -196,7 +206,8 @@
  }
 
  
-function showDetails(bundleId) {
+function showDetails(bundleId)
+{
     var span = document.getElementById('bundle' + bundleId + '_details');
 }