From 50df04164f38eb08b0d3919c7b420462efcf3124 Mon Sep 17 00:00:00 2001 From: Alex Rudyy Date: Mon, 4 Aug 2014 15:50:49 +0000 Subject: QPID-5928: [Java Broker] Modify web management console to hide queues and exchanges when virtualhost host is stopped or unavailable git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1615629 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/java/resources/js/qpid/common/util.js | 16 +++++ .../resources/js/qpid/management/VirtualHost.js | 82 ++++++++++++++-------- .../js/qpid/management/VirtualHostNode.js | 7 +- .../src/main/java/resources/showVirtualHost.html | 30 ++++---- 4 files changed, 88 insertions(+), 47 deletions(-) (limited to 'qpid/java') diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js index 5ba7cc7b2c..e4b3ed5dbc 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js @@ -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; }); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js index 12ac5602ad..cdc7890209 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js @@ -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; }); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js index a2343fa6cc..455cfbb410 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js @@ -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; diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html index 9dd6330d01..f031d84458 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html @@ -118,20 +118,22 @@
-
-
- - -
-
-
-
- - -
-
-
-
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
-- cgit v1.2.1