You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2014/08/04 17:50:49 UTC

svn commit: r1615629 - in /qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources: js/qpid/common/util.js js/qpid/management/VirtualHost.js js/qpid/management/VirtualHostNode.js showVirtualHost.html

Author: orudyy
Date: Mon Aug  4 15:50:49 2014
New Revision: 1615629

URL: http://svn.apache.org/r1615629
Log:
QPID-5928: [Java Broker] Modify web management console to hide queues and exchanges when virtualhost host is stopped or unavailable

Modified:
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js?rev=1615629&r1=1615628&r2=1615629&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js Mon Aug  4 15:50:49 2014
@@ -620,5 +620,21 @@ define(["dojo/_base/xhr",
                return values;
            }
 
+           util.updateUpdatableStore = function(updatableStore, data)
+           {
+               var currentRowCount = updatableStore.grid.rowCount;
+               updatableStore.grid.domNode.style.display = data ? "block" : "none";
+               updatableStore.update(data || []);
+               if (data)
+               {
+                   if (currentRowCount == 0 && data.length == 1)
+                   {
+                       // grid with a single row is not rendering properly after being hidden
+                       // force rendering
+                       updatableStore.grid.render();
+                   }
+               }
+           }
+
            return util;
        });

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js?rev=1615629&r1=1615628&r2=1615629&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js Mon Aug  4 15:50:49 2014
@@ -187,7 +187,9 @@ define(["dojo/_base/xhr",
                            "storeTransactionIdleTimeoutClose",
                            "storeTransactionIdleTimeoutWarn",
                            "storeTransactionOpenTimeoutClose",
-                           "storeTransactionOpenTimeoutWarn"
+                           "storeTransactionOpenTimeoutWarn",
+                           "virtualHostConnections",
+                           "virtualHostChildren"
                            ]);
 
                this.query = "api/latest/virtualhost/"+ encodeURIComponent(vhost.parent.name) + "/" + encodeURIComponent(vhost.name);
@@ -204,7 +206,7 @@ define(["dojo/_base/xhr",
                                keepSelection: true,
                                plugins: {
                                          pagination: {
-                                             pageSizes: ["10", "25", "50", "100"],
+                                             pageSizes: [10, 25, 50, 100],
                                              description: true,
                                              sizeSwitch: true,
                                              pageStepper: true,
@@ -218,9 +220,9 @@ define(["dojo/_base/xhr",
 
                    that.updateHeader();
                    that.queuesGrid = new UpdatableStore(that.vhostData.queues, findNode("queues"),
-                                                        [ { name: "Name",    field: "name",      width: "20%"},
+                                                        [ { name: "Name",    field: "name",      width: "30%"},
                                                           { name: "Type",    field: "type",      width: "20%"},
-                                                          { name: "Consumers", field: "consumerCount", width: "20%"},
+                                                          { name: "Consumers", field: "consumerCount", width: "10%"},
                                                           { name: "Depth (msgs)", field: "queueDepthMessages", width: "20%"},
                                                           { name: "Depth (bytes)", field: "queueDepthBytes", width: "20%",
                                                             get: function(rowIndex, item)
@@ -248,9 +250,9 @@ define(["dojo/_base/xhr",
 
                    that.exchangesGrid = new UpdatableStore(that.vhostData.exchanges, findNode("exchanges"),
                                                            [
-                                                             { name: "Name",    field: "name", width: "40%"},
+                                                             { name: "Name",    field: "name", width: "50%"},
                                                              { name: "Type", field: "type", width: "30%"},
-                                                             { name: "Binding Count", field: "bindingCount", width: "30%"}
+                                                             { name: "Binding Count", field: "bindingCount", width: "20%"}
                                                            ],
                                                            function(obj)
                                                            {
@@ -321,11 +323,28 @@ define(["dojo/_base/xhr",
 
                xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"})
                    .then(function(data) {
-                       thisObj.vhostData = data[0];
+                       thisObj.vhostData = data[0] || {name: thisObj.virtualHost.name,statistics:{messagesIn:0,bytesIn:0,messagesOut:0,bytesOut:0}};
+                       try
+                       {
+                            thisObj._update();
+                       }
+                       catch(e)
+                       {
+                            if (console && console.error)
+                            {
+                                console.error(e);
+                            }
+                       }
+                   });
+           }
 
-                       thisObj.virtualHost.startButton.set("disabled", thisObj.vhostData.state != "STOPPED");
-                       thisObj.virtualHost.stopButton.set("disabled", thisObj.vhostData.state != "ACTIVE");
-                       thisObj.virtualHost.editButton.set("disabled", thisObj.vhostData.state == "UNAVAILABLE");
+           Updater.prototype._update = function()
+           {
+                var thisObj = this;
+                this.virtualHost.startButton.set("disabled", !this.vhostData.state || this.vhostData.state != "STOPPED");
+                this.virtualHost.stopButton.set("disabled", !this.vhostData.state || this.vhostData.state != "ACTIVE");
+                this.virtualHost.editButton.set("disabled", !this.vhostData.state || this.vhostData.state == "UNAVAILABLE");
+                this.virtualHost.deleteButton.set("disabled", !this.vhostData.state);
 
                        util.flattenStatistics( thisObj.vhostData );
                        var connections = thisObj.vhostData[ "connections" ];
@@ -405,26 +424,7 @@ define(["dojo/_base/xhr",
                        thisObj.bytesOut = bytesOut;
                        thisObj.connections = connections;
 
-                       // update queues
-                       thisObj.queuesGrid.update(thisObj.vhostData.queues);
-
-                       // update exchanges
-                       thisObj.exchangesGrid.update(thisObj.vhostData.exchanges);
-
-                       var exchangesGrid = thisObj.exchangesGrid.grid;
-                       for(var i=0; i< thisObj.vhostData.exchanges.length; i++)
-                       {
-                           var data = exchangesGrid.getItem(i);
-                           var isStandard = false;
-                           if (data && data.name)
-                           {
-                               isStandard = util.isReservedExchangeName(data.name);
-                           }
-                           exchangesGrid.rowSelectCell.setDisabled(i, isStandard);
-                       }
-
-                       // update connections
-                       thisObj.connectionsGrid.update(thisObj.vhostData.connections)
+                        this._updateGrids(thisObj.vhostData)
 
                         if (thisObj.details)
                         {
@@ -440,9 +440,29 @@ define(["dojo/_base/xhr",
                                  }
                                );
                         }
-                   });
+
            };
 
+            Updater.prototype._updateGrids = function(data)
+            {
+                this.virtualHostChildren.style.display = data.state == "ACTIVE" ? "block" : "none";
+                if (data.state == "ACTIVE" )
+                {
+                    util.updateUpdatableStore(this.queuesGrid, data.queues);
+                    util.updateUpdatableStore(this.exchangesGrid, data.exchanges);
+
+                    var exchangesGrid = this.exchangesGrid.grid;
+                    for(var i=0; i< data.exchanges.length; i++)
+                    {
+                        var item = exchangesGrid.getItem(i);
+                        var isStandard = item && item.name && util.isReservedExchangeName(item.name);
+                        exchangesGrid.rowSelectCell.setDisabled(i, isStandard);
+                    }
+                    this.virtualHostConnections.style.display = data.connections ? "block" : "none";
+                    util.updateUpdatableStore(this.connectionsGrid, data.connections);
+                }
+            };
+
 
            return VirtualHost;
        });

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js?rev=1615629&r1=1615628&r2=1615629&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js Mon Aug  4 15:50:49 2014
@@ -69,6 +69,7 @@ define(["dojo/_base/xhr",
              this.startNodeButton = registry.byNode(query(".startNodeButton", containerNode)[0]);
              this.editNodeButton = registry.byNode(query(".editNodeButton", containerNode)[0]);
              this.deleteNodeButton = registry.byNode(query(".deleteNodeButton", containerNode)[0]);
+             this.virtualHostGridPanel = registry.byNode(query(".virtualHostGridPanel", containerNode)[0]);
              this.deleteNodeButton.on("click",
                  function(e)
                  {
@@ -122,7 +123,7 @@ define(["dojo/_base/xhr",
                             theItem = this.getItem(idx);
                             that.showVirtualHost(theItem);
                         });
-                    }, {height: 200, canSort : function(col) {return false;} });
+                    }, {height: 200, canSort : function(col) {return false;} }, EnhancedGrid);
 
              this.vhostNodeUpdater = new Updater(containerNode, this.modelObj, this);
              this.vhostNodeUpdater.update();
@@ -207,7 +208,9 @@ define(["dojo/_base/xhr",
                this.details.update(data);
              }
 
-             this.virtualHostNode.vhostsGrid.update(data.virtualhosts || []);
+
+             this.virtualHostNode.virtualHostGridPanel.domNode.style.display = data.virtualhosts? "block" : "none";
+             util.updateUpdatableStore(this.virtualHostNode.vhostsGrid, data.virtualhosts);
            }
 
            return VirtualHostNode;

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html?rev=1615629&r1=1615628&r2=1615629&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html Mon Aug  4 15:50:49 2014
@@ -118,20 +118,22 @@
     </div>
 
     <br/>
-    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Exchanges'">
-        <div class="exchanges"></div>
-        <button data-dojo-type="dijit.form.Button" class="addExchangeButton">Add Exchange</button>
-        <button data-dojo-type="dijit.form.Button" class="deleteExchangeButton">Delete Exchange</button>
-    </div>
-    <br/>
-    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Queues'">
-        <div class="queues"></div>
-        <button data-dojo-type="dijit.form.Button" class="addQueueButton">Add Queue</button>
-        <button data-dojo-type="dijit.form.Button" class="deleteQueueButton">Delete Queue</button>
-    </div>
-    <br/>
-    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Connections'">
-        <div class="connections"></div>
+    <div class="virtualHostChildren">
+        <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Exchanges'">
+            <div class="exchanges"></div>
+            <button data-dojo-type="dijit.form.Button" class="addExchangeButton">Add Exchange</button>
+            <button data-dojo-type="dijit.form.Button" class="deleteExchangeButton">Delete Exchange</button>
+        </div>
+        <br/>
+        <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Queues'">
+            <div class="queues"></div>
+            <button data-dojo-type="dijit.form.Button" class="addQueueButton">Add Queue</button>
+            <button data-dojo-type="dijit.form.Button" class="deleteQueueButton">Delete Queue</button>
+        </div>
+        <br/>
+        <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Connections'" class="virtualHostConnections">
+            <div class="connections"></div>
+        </div>
     </div>
 </div>
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org