You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2014/07/21 13:08:10 UTC

svn commit: r1612247 - in /qpid/trunk/qpid/java: bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/ bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/ bdbstore/src/main/java/resources/virtua...

Author: kwall
Date: Mon Jul 21 11:08:09 2014
New Revision: 1612247

URL: http://svn.apache.org/r1612247
Log:
QPID-5413: [Java Broker] BDB HA VHN/VH UI

* Fix fieldset border styling and use dojo's object.keys() [IE7/8 does not support Object.keys()]
* Add support for permitted node list

Work completed by Andrew MacBean <ma...@apache.org> and me.

Modified:
    qpid/trunk/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js
    qpid/trunk/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html
    qpid/trunk/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js

Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js?rev=1612247&r1=1612246&r2=1612247&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js Mon Jul 21 11:08:09 2014
@@ -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();
+
         }
     };
   }

Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html?rev=1612247&r1=1612246&r2=1612247&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html Mon Jul 21 11:08:09 2014
@@ -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',

Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html?rev=1612247&r1=1612246&r2=1612247&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html Mon Jul 21 11:08:09 2014
@@ -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"

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css?rev=1612247&r1=1612246&r2=1612247&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css Mon Jul 21 11:08:09 2014
@@ -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
+}
+
+

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js?rev=1612247&r1=1612246&r2=1612247&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js Mon Jul 21 11:08:09 2014
@@ -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;
         }



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