diff options
Diffstat (limited to 'qpid/java')
5 files changed, 187 insertions, 14 deletions
diff --git a/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js index de0b5567ec..d3578df60e 100644 --- a/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js +++ b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js @@ -17,6 +17,7 @@ * under the License. */ define(["dojo/_base/xhr", + "dojo/_base/window", "dojo/parser", "dojo/dom", "dojo/dom-construct", @@ -24,9 +25,10 @@ define(["dojo/_base/xhr", "dijit/registry", "dojo/text!virtualhostnode/bdb_ha/add/newgroup/add.html", "dijit/form/ValidationTextBox", - "dijit/form/CheckBox", + "dijit/form/MultiSelect", + "dijit/form/Button", "dojo/domReady!"], - function (xhr, parser, dom, domConstruct, json, registry, template) + function (xhr, win, parser, dom, domConstruct, json, registry, template) { return { show: function(data) @@ -42,10 +44,126 @@ define(["dojo/_base/xhr", // add callback virtualHostNodeAddress.on("change", function(address){that._addressChanged(address, that.virtualHostNodeHelperAddress);}); + + // list objects html node and dojo object + this.addVirtualHostNodePermittedNodesList = dom.byId("addVirtualHostNode.permittedNodesList"); + this.addVirtualHostNodePermittedNodesListDojo = registry.byId("addVirtualHostNode.permittedNodesList"); + this.addVirtualHostNodePermittedNodesListDojo.on("change", function(value){that._changePermittedNodeList(value);}); + + // permitted node text field + this.addVirtualHostNodePermittedNode = registry.byId("addVirtualHostNode.permittedNode"); + this.addVirtualHostNodePermittedNode.on("input", function(event){that._inputPermittedNode(event);}); + + // add and remove buttons & click handlers + this.addVirtualHostNodePermittedNodeAddButton = registry.byId("addVirtualHostNode.permittedNodeAdd"); + this.addVirtualHostNodePermittedNodeAddButton.set("disabled", true); + this.addVirtualHostNodePermittedNodeRemoveButton = registry.byId("addVirtualHostNode.permittedNodeRemove"); + this.addVirtualHostNodePermittedNodeRemoveButton.set("disabled", true); + this.addVirtualHostNodePermittedNodeAddButton.on("click", function(e){that._clickAddPermittedNodeButton(e);}); + this.addVirtualHostNodePermittedNodeRemoveButton.on("click", function(e){that._clickRemovePermittedNodeButton(e);}); + + // This will contain the serialised form that will go to the server + this.addVirtualHostNodeVirtualhostBlueprint = registry.byId("addVirtualHostNode.virtualhostBlueprint"); + this.addVirtualHostNodeAddress = registry.byId("addVirtualHostNode.address"); + this.addVirtualHostNodeAddress.on("click", function(e){that._updatePermittedNodesJson();}); + }, + _updatePermittedNodesJson: function () + { + var nodeAddress = this.addVirtualHostNodeAddress.get("value"); + var permittedNodes = [ ]; + if (nodeAddress) + { + permittedNodes.push(nodeAddress); + } + var children = this.addVirtualHostNodePermittedNodesList.children; + var i; + for (i = 0; i < children.length; i++) + { + var child = children.item(i); + if (child.value != nodeAddress) + { + permittedNodes.push(child.value); + } + } + + this.addVirtualHostNodeVirtualhostBlueprint.set("value",json.stringify({"permittedNodes" : permittedNodes})); + }, + _changePermittedNodeList: function(value) + { + var hasSelection = this.addVirtualHostNodePermittedNodesListDojo.get("value").length > 0; + this.addVirtualHostNodePermittedNodeRemoveButton.set("disabled", !hasSelection); + }, + _inputPermittedNode: function(event) + { + this.addVirtualHostNodePermittedNodeAddButton.set("disabled", false); + return true; }, _addressChanged: function(address, virtualHostNodeHelperAddress) { virtualHostNodeHelperAddress.set("value", address); + }, + _clickAddPermittedNodeButton: function(e) + { + // check the text box is valid and not empty + if(this.addVirtualHostNodePermittedNode.isValid() && + this.addVirtualHostNodePermittedNode.value && + this.addVirtualHostNodePermittedNode.value != "") + { + // read value to add from text box + var newAddress = this.addVirtualHostNodePermittedNode.value; + + // clear UI value + this.addVirtualHostNodePermittedNode.set("value", ""); + this.addVirtualHostNodePermittedNodeAddButton.set("disabled", true); + + //check entry not already present in list + var alreadyPresent = false; + var children = this.addVirtualHostNodePermittedNodesList.children; + var i; + for (i = 0; i < children.length; i++) + { + var child = children.item(i); + if (child.value == newAddress) + { + alreadyPresent = true; + break; + } + } + + if (!alreadyPresent) + { + // construct new option for list + var newOption = win.doc.createElement('option'); + newOption.innerHTML = newAddress; + newOption.value = newAddress; + + // add new option to list + this.addVirtualHostNodePermittedNodesList.appendChild(newOption); + } + } + this._updatePermittedNodesJson(); + }, + _clickRemovePermittedNodeButton: function(e) + { + var selectedValues = this.addVirtualHostNodePermittedNodesListDojo.get("value"); + var v; + for (v in selectedValues) + { + var children = this.addVirtualHostNodePermittedNodesList.children; + var i; + for (i = 0; i < children.length; i++) + { + var child = children.item(i); + if (child.value == selectedValues[v]) + { + this.addVirtualHostNodePermittedNodesList.removeChild(child); + } + } + } + this.addVirtualHostNodePermittedNodeRemoveButton.set("disabled", true); + + this._updatePermittedNodesJson(); + } }; } diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html index eca6a41bb8..a7889eb225 100644 --- a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html @@ -22,7 +22,7 @@ <fieldset> <legend>Existing details</legend> <div style="clear:both"> - <div class="formLabel-labelCell tableContainer-labelCell" style="float:left; width: 300px;">Group Name*:</div> + <div class="formLabel-labelCell tableContainer-labelCell" style="float:left; width: 300px;">Group name*:</div> <div class="formLabel-controlCell tableContainer-valueCell" style="float:left;"> <input type="text" id="addVirtualHostNode.groupName" data-dojo-type="dijit/form/ValidationTextBox" @@ -42,7 +42,7 @@ data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props=" name: 'name', - placeHolder: 'existing node name from the group', + placeHolder: 'node name from group', required: true, missingMessage: 'A node name must be supplied', title: 'Enter a node name', @@ -56,7 +56,7 @@ data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props=" name: 'helperAddress', - placeHolder: 'existing node address from the group', + placeHolder: 'node address from group', required: true, missingMessage: 'Node host and port must be supplied', title: 'Enter address', diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html index 4d0edd5fc7..f98e2d8616 100644 --- a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html @@ -18,7 +18,7 @@ --> <div> <div style="clear:both"> - <div class="formLabel-labelCell tableContainer-labelCell" style="float:left; width: 300px;">Node Name*:</div> + <div class="formLabel-labelCell tableContainer-labelCell" style="float:left; width: 300px;">Node name*:</div> <div class="formLabel-controlCell tableContainer-valueCell" style="float:left;"> <input type="text" id="addVirtualHostNode.nodeName" data-dojo-type="dijit/form/ValidationTextBox" @@ -32,7 +32,7 @@ </div> </div> <div style="clear:both"> - <div class="formLabel-labelCell tableContainer-labelCell" style="float:left; width: 300px;">Group Name*:</div> + <div class="formLabel-labelCell tableContainer-labelCell" style="float:left; width: 300px;">Group name*:</div> <div class="formLabel-controlCell tableContainer-valueCell" style="float:left;"> <input type="text" id="addVirtualHostNode.groupName" data-dojo-type="dijit/form/ValidationTextBox" @@ -72,6 +72,48 @@ title: 'Enter store path'" /> </div> </div> + <div class="formBox" style="clear:both"> + <fieldset> + <legend>Permitted group nodes</legend> + <div style="clear:both"> + <div class="formLabel-labelCell tableContainer-labelCell" style="float:left; width: 300px;">Permitted addresses*:</div> + <div class="formLabel-controlCell tableContainer-valueCell addPermittedNodeList" style="float:left;"> + <select type="text" id="addVirtualHostNode.permittedNodesList" + data-dojo-type="dijit/form/MultiSelect" + data-dojo-props=" + name: 'permittedNodesList', + readOnly : 'true', + title: 'Enter permitted nodes'"> + </select> <!-- must use closing tag rather than shorthand - dojo bug? --> + </div> + <div class="formBoxButtons"> + <button data-dojo-type="dijit/form/Button" id="addVirtualHostNode.permittedNodeRemove" data-dojo-props="label: '-'" ></button> + </div> + </div> + + <div style="clear:both"></div> + <div style="clear:both"> + <div class="formLabel-labelCell tableContainer-labelCell" style="float:left; width: 300px;">Address:</div> + <div class="formLabel-controlCell tableContainer-valueCell" style="float:left;"> + <input type="text" id="addVirtualHostNode.permittedNode" + data-dojo-type="dijit/form/ValidationTextBox" + data-dojo-props=" + name: 'permittedNode', + placeHolder: 'host:port', + title: 'Enter address', + pattern: '([0-9a-zA-Z.-_]|::)+:[0-9]{1,5}'" /> + </div> + <div class="formBoxButtons"> + <button data-dojo-type="dijit/form/Button" id="addVirtualHostNode.permittedNodeAdd" data-dojo-props="label: '+'"></button> + </div> + </div> + </fieldset> + </div> + + <input type="hidden" id="addVirtualHostNode.virtualhostBlueprint" + data-dojo-type="dijit/form/ValidationTextBox" + data-dojo-props="name: 'virtualhostBlueprint'" + contextvar="true"/> <input type="hidden" id="addVirtualHostNode.helperAddress" data-dojo-type="dijit/form/ValidationTextBox" diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css b/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css index 2291fdf816..8a0ea792f5 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css @@ -91,31 +91,41 @@ div .messages { } .formBox { - border: .1em solid lightgrey; margin: 10px 5px; - border-radius: 5px; } .formBox legend { font-weight: bold; - margin-top: -10px; margin-left: 5px; background-color: white; } .formBox fieldset { padding: 5px; + border: .1em solid lightgrey; + border-radius: 5px; } .formBox .formLabel-labelCell { margin-left: 5px; } +.formBox .addPermittedNodeList { + width: 15em; +} + +.formBox .addPermittedNodeList select { + width: 100%; +} + +.formBoxButtons { + float : right; +} + .formLabel-labelCell { font-weight: bold; } - .formLabel-controlCell { padding: 1px; } @@ -193,4 +203,6 @@ div .messages { { padding: 5px; font-style: italic; -}
\ No newline at end of file +} + + diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js index 1b1b2914e3..19854d92cf 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js @@ -27,6 +27,7 @@ define(["dojo/_base/xhr", "dojo/json", "dojo/parser", "dojo/store/Memory", + "dojox/lang/functional/object", "dijit/registry", "dijit/Dialog", "dijit/form/Button", @@ -39,7 +40,7 @@ define(["dojo/_base/xhr", "dojox/validate/us", "dojox/validate/web", "dojo/domReady!"], - function (xhr, event, lang, array, dom, domConstruct, json, parser, Memory, registry, Dialog, Button, FilteringSelect, properties, template) + function (xhr, event, lang, array, dom, domConstruct, json, parser, Memory, fobject, registry, Dialog, Button, FilteringSelect, properties, template) { var addVirtualHostNodeAndVirtualHost = @@ -320,7 +321,7 @@ define(["dojo/_base/xhr", } // One or more context variables were defined on form - if (Object.keys(contextMap).length > 0) + if (fobject.keys(contextMap).length > 0) { values ["context"] = contextMap; } |
