diff options
| author | Alex Rudyy <orudyy@apache.org> | 2014-08-04 15:50:49 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2014-08-04 15:50:49 +0000 |
| commit | 50df04164f38eb08b0d3919c7b420462efcf3124 (patch) | |
| tree | 107aa75c6190048c8643a11b19fcb28a4b68cd32 /qpid/java/broker-plugins | |
| parent | 70165e5ee01fcd070aa0a67deaa3b79d5b3d326a (diff) | |
| download | qpid-python-50df04164f38eb08b0d3919c7b420462efcf3124.tar.gz | |
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
Diffstat (limited to 'qpid/java/broker-plugins')
4 files changed, 88 insertions, 47 deletions
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 @@ </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> |
