Author: kwall
Date: Tue Aug  2 10:55:51 2016
New Revision: 1754865

URL: http://svn.apache.org/viewvc?rev=1754865&view=rev
Log:
QPID-7118: [Java Broker] [Web Management Console] Add dashboard menu/tab

Added:
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/dashboard/
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/dashboard/DashboardCreateDialogForm.html
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/DashboardTab.js
      - copied, changed from r1754791, 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/QueryTab.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/dashboard/
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/dashboard/DashboardCreateDialogForm.js
      - copied, changed from r1754791, 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryCreateDialogForm.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showDashboardTab.html
Modified:
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/index.html
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ConsoleHelper.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/Structure.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/QueryTab.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryCreateDialogForm.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showQueryTab.html

Added: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/dashboard/DashboardCreateDialogForm.html
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/dashboard/DashboardCreateDialogForm.html?rev=1754865&view=auto
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/dashboard/DashboardCreateDialogForm.html
 (added)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/dashboard/DashboardCreateDialogForm.html
 Tue Aug  2 10:55:51 2016
@@ -0,0 +1,45 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  ~
+  -->
+<div>
+    <form data-dojo-attach-point="createDashboardForm" 
data-dojo-type="dijit/form/Form" id="${id}_createDashboardForm">
+        <div>
+            <div class="clear">
+                <label class="formLabel-labelCell tableContainer-labelCell" 
for="${id}_dashboardScope">Scope*: </label>
+                <select id="${id}_dashboardScope" class="formLabel-controlCell 
tableContainer-valueCell"
+                        data-dojo-attach-point="scope"
+                        data-dojo-type='dijit/form/FilteringSelect'
+                        data-dojo-props="name: 'scope', placeHolder: 
'Dashboard scope', required: true, title: 'Select dashboard scope', 
intermediateChanges: true">
+                </select>
+            </div>
+            <div class="clear"></div>
+        </div>
+        <div class="dijitDialogPaneActionBar">
+            <input id="${id}_cancelButton"
+                   data-dojo-attach-point="cancelButton"
+                   data-dojo-type="dijit/form/Button"
+                   type="button"
+                   label="Cancel"/>
+            <input id="${id}_okButton"
+                   data-dojo-attach-point="okButton"
+                   data-dojo-type="dijit/form/Button"
+                   type="submit" label="Ok"/>
+        </div>
+    </form>
+</div>

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/index.html
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/index.html?rev=1754865&r1=1754864&r2=1754865&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/index.html
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/index.html
 Tue Aug  2 10:55:51 2016
@@ -19,14 +19,14 @@
 <head>
     <meta charset="utf-8">
     <title>Qpid Management</title>
-    <link rel="icon" type="image/png" href="images/qpid-favicon.png" />
+    <link rel="icon" type="image/png" href="images/qpid-favicon.png"/>
     <link rel="stylesheet" href="dojo/dojo/resources/dojo.css"/>
     <link rel="stylesheet" href="dojo/dijit/themes/claro/claro.css"/>
     <link rel="stylesheet" href="dojo/dojox/grid/resources/claroGrid.css"/>
     <link rel="stylesheet" 
href="dojo/dojox/grid/enhanced/resources/claro/EnhancedGrid.css"/>
     <link rel="stylesheet" 
href="dojo/dojox/grid/enhanced/resources/EnhancedGrid_rtl.css"/>
     <link rel="stylesheet" 
href="dojo/dojox/form/resources/CheckedMultiSelect.css"/>
-    <link rel="stylesheet" href="dojo/dojox/form/resources/FileInput.css" />
+    <link rel="stylesheet" href="dojo/dojox/form/resources/FileInput.css"/>
     <link rel="stylesheet" href="dojo/dijit/themes/claro/document.css"/>
     <link rel="stylesheet" href="dojo/dgrid/css/dgrid.css"/>
     <link rel="stylesheet" href="dojo/dgrid/css/skins/claro.css"/>
@@ -114,54 +114,86 @@
 </head>
 <body class="claro qpid">
 
-<div id="pageLayout" data-dojo-type="dijit.layout.BorderContainer" 
data-dojo-props="design: 'headline', gutters: false, isLayoutContainer:false">
+<div id="pageLayout" data-dojo-type="dijit.layout.BorderContainer"
+     data-dojo-props="design: 'headline', gutters: false, 
isLayoutContainer:false">
     <div data-dojo-type="dijit.layout.ContentPane" 
data-dojo-props="region:'top', isLayoutContainer:false">
         <div id="header"></div>
         <div class="alignRight">
-          <div id="login" class="hidden" data-dojo-type="dijit/Toolbar">
-            <div id="query" data-dojo-type="dijit/form/DropDownButton" 
data-dojo-props="iconClass: 'dijitIconApplication'">
-                <span>Query</span>
-                <div data-dojo-type="dijit/Menu">
-                    <div data-dojo-type="dijit/MenuItem"
-                      data-dojo-props="onClick: 
function(e){qpidManagementHelper.showQueryCreateDialog(e);}">Create Query</div>
-                      <div data-dojo-type="dijit/MenuItem"
-                             data-dojo-props="onClick: 
function(e){qpidManagementHelper.showQueryBrowser(e);}">Show Query Browser</div>
+            <div id="login" class="hidden" data-dojo-type="dijit/Toolbar">
+                <div data-dojo-type="dijit/form/DropDownButton">
+                    <span>Dashboard</span>
+                    <div data-dojo-type="dijit/Menu">
+                        <div data-dojo-type="dijit/MenuItem"
+                             data-dojo-props="onClick: 
function(e){qpidManagementHelper.showDashboardCreateDialog(e);}">
+                            Create Dashboard
+                        </div>
+                        <div data-dojo-type="dijit/MenuItem"
+                             data-dojo-props="onClick: 
function(e){qpidManagementHelper.showDashboardBrowser(e);}">
+                            Show Dashboard Browser
+                        </div>
+                    </div>
                 </div>
-            </div>
-            <div data-dojo-type="dijit/form/DropDownButton" 
data-dojo-props="iconClass: 'helpIcon', showLabel: false">
-                <span>Help</span>
-                <div data-dojo-type="dijit/Menu">
-                  <div data-dojo-type="dijit/MenuItem" 
data-dojo-props="onClick: function(){qpidManagementHelper.showAPI();}">REST 
API</div>
-                  <div data-dojo-type="dijit/MenuItem"
-                       data-dojo-props="iconClass: 'helpIcon', onClick: 
function(){qpidManagementHelper.showDocumentation();}">Documentation</div>
+                <div data-dojo-type="dijit/form/DropDownButton" 
data-dojo-props="iconClass: 'dijitIconApplication'">
+                    <span>Query</span>
+                    <div data-dojo-type="dijit/Menu">
+                        <div data-dojo-type="dijit/MenuItem"
+                             data-dojo-props="onClick: 
function(e){qpidManagementHelper.showQueryCreateDialog(e);}">
+                            Create Query
+                        </div>
+                        <div data-dojo-type="dijit/MenuItem"
+                             data-dojo-props="onClick: 
function(e){qpidManagementHelper.showQueryBrowser(e);}">
+                            Show Query Browser
+                        </div>
+                    </div>
                 </div>
-            </div>
-            <span data-dojo-type="dijit/ToolbarSeparator"></span>
-            <div id="authenticatedUserControls" 
data-dojo-type="dijit/form/DropDownButton" data-dojo-props="iconClass: 
'userIcon ui-icon'">
-                <div data-dojo-type="dijit/Menu">
-                    <div data-dojo-type="dijit/MenuItem" 
data-dojo-props="onClick: function(){qpidManagementHelper.logout();}" >Log 
out</div>
-                    <div data-dojo-type="dijit/MenuItem"
-                        
data-dojo-props="iconClass:'dijitIconFunction',onClick: 
function(){qpidManagementHelper.showPreferencesDialog();}">Preferences</div>
+                <div data-dojo-type="dijit/form/DropDownButton"
+                     data-dojo-props="iconClass: 'helpIcon', showLabel: false">
+                    <span>Help</span>
+                    <div data-dojo-type="dijit/Menu">
+                        <div data-dojo-type="dijit/MenuItem"
+                             data-dojo-props="onClick: 
function(){qpidManagementHelper.showAPI();}">REST API
+                        </div>
+                        <div data-dojo-type="dijit/MenuItem"
+                             data-dojo-props="iconClass: 'helpIcon', onClick: 
function(){qpidManagementHelper.showDocumentation();}">
+                            Documentation
+                        </div>
+                    </div>
+                </div>
+                <span data-dojo-type="dijit/ToolbarSeparator"></span>
+                <div id="authenticatedUserControls" 
data-dojo-type="dijit/form/DropDownButton"
+                     data-dojo-props="iconClass: 'userIcon ui-icon'">
+                    <div data-dojo-type="dijit/Menu">
+                        <div data-dojo-type="dijit/MenuItem"
+                             data-dojo-props="onClick: 
function(){qpidManagementHelper.logout();}">Log out
+                        </div>
+                        <div data-dojo-type="dijit/MenuItem"
+                             
data-dojo-props="iconClass:'dijitIconFunction',onClick: 
function(){qpidManagementHelper.showPreferencesDialog();}">
+                            Preferences
+                        </div>
+                    </div>
                 </div>
             </div>
-          </div>
-       </div>
+        </div>
     </div>
-    <div id="tree" data-dojo-type="dijit.layout.ContentPane" 
data-dojo-props="region:'leading', splitter: true, isLayoutContainer:false">
-        <div qpid-type="treeView" qpid-props="query: 'service/structure'" 
></div>
+    <div id="tree" data-dojo-type="dijit.layout.ContentPane"
+         data-dojo-props="region:'leading', splitter: true, 
isLayoutContainer:false">
+        <div qpid-type="treeView"></div>
     </div>
-    <div id="main" data-dojo-type="dijit.layout.ContentPane" 
data-dojo-props="region:'center', gutters: true, isLayoutContainer:false">
-        <div id="managedViews" data-dojo-type="dijit.layout.TabContainer" 
data-dojo-props="tabPosition: 'top', doLayout:false, isLayoutContainer:false">
+    <div id="main" data-dojo-type="dijit.layout.ContentPane"
+         data-dojo-props="region:'center', gutters: true, 
isLayoutContainer:false">
+        <div id="managedViews" data-dojo-type="dijit.layout.TabContainer"
+             data-dojo-props="tabPosition: 'top', doLayout:false, 
isLayoutContainer:false">
         </div>
         <div>
-            <div qpid-type="footer" ></div>
+            <div qpid-type="footer"></div>
         </div>
     </div>
     <div class="dijitHidden">
         <div data-dojo-type="dijit.Dialog" data-dojo-props="title: 'Error'" 
id="errorDialog">
             <div>
                 <div class="errorDialogErrorPrimary">
-                    <span 
id="errorDialog.statusCode">000</span>&nbsp;-&nbsp;<span 
id="errorDialog.errorMessage">error</span>
+                    <span 
id="errorDialog.statusCode">000</span>&nbsp;-&nbsp;<span
+                        id="errorDialog.errorMessage">error</span>
                 </div>
 
                 <div class="clear" class="errorDialogErrorSecondary">
@@ -174,8 +206,10 @@
                 </div>
             </div>
             <div class="dijitDialogPaneActionBar qpidDialogPaneActionBar">
-                <input type="button" id="errorDialog.button.cancel" 
value="Cancel" label="Cancel" dojoType="dijit.form.Button" 
onClick="dijit.byId('errorDialog').hide();"/>
-                <input type="button" id="errorDialog.button.relogin"  
value="Login" label="Login" dojoType="dijit.form.Button" 
onClick="dijit.byId('errorDialog').hide(); window.location='/';"/>
+                <input type="button" id="errorDialog.button.cancel" 
value="Cancel" label="Cancel"
+                       dojoType="dijit.form.Button" 
onClick="dijit.byId('errorDialog').hide();"/>
+                <input type="button" id="errorDialog.button.relogin" 
value="Login" label="Login"
+                       dojoType="dijit.form.Button" 
onClick="dijit.byId('errorDialog').hide(); window.location='/';"/>
             </div>
         </div>
     </div>

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ConsoleHelper.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ConsoleHelper.js?rev=1754865&r1=1754864&r2=1754865&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ConsoleHelper.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ConsoleHelper.js
 Tue Aug  2 10:55:51 2016
@@ -32,6 +32,8 @@ define(["dojo/query",
     var documentationUrl = null;
     var queryCreateDialog = null;
     var queryCreateDialogForm = null;
+    var dashboardCreateDialog = null;
+    var dashboardCreateDialogForm = null;
 
     var openWindow = function (url, title)
     {
@@ -121,6 +123,51 @@ define(["dojo/query",
                 tabType: "queryBrowser"
             });
         },
+        showDashboardCreateDialog: function (e)
+        {
+            var management = this.management;
+            var controller = this.controller;
+            if (dashboardCreateDialog == null)
+            {
+                
require(["qpid/management/dashboard/DashboardCreateDialogForm", "dojo/ready"],
+                    function (DashboardCreateDialogForm, ready)
+                    {
+                        ready(function ()
+                        {
+                            dashboardCreateDialogForm =
+                                new DashboardCreateDialogForm({management: 
management, structure: controller.structure});
+                            dashboardCreateDialogForm.on("create", function (e)
+                            {
+                                dashboardCreateDialog.hide();
+                                var tabData = {
+                                    tabType: "dashboard",
+                                    modelObject: e.parentObject,
+                                    data: e.preference,
+                                    preferenceId: e.preference.id
+                                };
+                                controller.showTab(tabData);
+                            });
+                            dashboardCreateDialogForm.on("cancel", function (e)
+                            {
+                                dashboardCreateDialog.hide();
+                            });
+                            dashboardCreateDialog = new Dialog({title: "Create 
dashboard", content: dashboardCreateDialogForm});
+                            dashboardCreateDialog.show();
+                        });
+                    });
+            }
+            else
+            {
+                dashboardCreateDialogForm.initScope();
+                dashboardCreateDialog.show();
+            }
+        },
+        showDashboardBrowser: function (e)
+        {
+            this.controller.showTab({
+                tabType: "dashboardBrowser"
+            });
+        },
         init: function (controller, TreeView)
         {
             this.controller = controller;

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/Structure.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/Structure.js?rev=1754865&r1=1754864&r2=1754865&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/Structure.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/Structure.js
 Tue Aug  2 10:55:51 2016
@@ -113,5 +113,53 @@ define(["dojo/_base/lang"],
             return findObjectsByType(this.structure, type);
         };
 
+        Structure.prototype.getScopeItems = function ()
+        {
+            var brokers = this.findByType("broker");
+            var virtualHosts = this.findByType("virtualhost");
+            var objects = brokers.concat(virtualHosts);
+
+            var items = [];
+            var scopeModelObjects = {};
+            for (var i = 0; i < objects.length; i++)
+            {
+                if (objects[i].type === "broker")
+                {
+                    name = objects[i].name;
+                    brokerId = objects[i].id;
+                }
+                else
+                {
+                    name = "VH:" + objects[i].parent.name + "/" + 
objects[i].name;
+                }
+                var id = objects[i].id;
+                items.push({
+                    id: id,
+                    name: name
+                });
+                scopeModelObjects[id] = objects[i];
+            }
+
+            return {
+                scopeModelObjects: scopeModelObjects,
+                items: items
+            };
+        };
+
+        Structure.prototype.getHierarchicalName = function (object)
+        {
+            if (object && object.parent)
+            {
+                var type = object.type.charAt(0).toUpperCase() + 
object.type.substring(1);
+                var val = object.name;
+                for (var i = object.parent; i && i.parent; i = i.parent)
+                {
+                    val = i.name + "/" + val;
+                }
+                return " (" + type + ":" + val + ")" ;
+            }
+            return "";
+        };
+
         return Structure;
     });

Copied: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/DashboardTab.js
 (from r1754791, 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/QueryTab.js)
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/DashboardTab.js?p2=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/DashboardTab.js&p1=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/QueryTab.js&r1=1754791&r2=1754865&rev=1754865&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/QueryTab.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/DashboardTab.js
 Tue Aug  2 10:55:51 2016
@@ -1,5 +1,4 @@
 /*
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -25,27 +24,12 @@ define(["dojo/parser",
         "dojo/query",
         "dojo/json",
         "qpid/common/util",
-        "dojo/text!showQueryTab.html",
-        "qpid/management/query/QueryWidget",
+        "dojo/text!showDashboardTab.html",
         "dojo/domReady!"],
-    function (parser, lang, all, Deferred, query, json, util, template, 
QueryWidget)
+    function (parser, lang, all, Deferred, query, json, util, template)
     {
-        function getPath(object)
-        {
-            if (object && object.parent)
-            {
-                var type = object.type.charAt(0).toUpperCase() + 
object.type.substring(1);
-                var val = object.name;
-                for (var i = object.parent; i && i.parent; i = i.parent)
-                {
-                    val = i.name + "/" + val;
-                }
-                return " (" + type + ":" + val + ")" ;
-            }
-            return "";
-        }
 
-        function QueryTab(kwArgs)
+        function DashboardTab(kwArgs)
         {
             this.controller = kwArgs.controller;
             this.tabData = kwArgs.tabData;
@@ -53,25 +37,19 @@ define(["dojo/parser",
             this.management = this.controller.management;
         }
 
-        QueryTab.prototype.getTitle = function (changed)
+        DashboardTab.prototype.getTitle = function (changed)
         {
             if (this.tabData.preferenceId && !this.tabData.data)
             {
                 return "Loading...";
             }
-            var category = "";
-            if (this.tabData.data && this.tabData.data.value && 
this.tabData.data.value.category)
-            {
-                category = this.tabData.data.value.category;
-                category = category.charAt(0).toUpperCase() + 
category.substring(1);
-            }
             var name = this.tabData.data.name ? this.tabData.data.name : "New";
             var prefix = this.tabData.data.name && !changed ? "" : "*";
-            var path = getPath(this.parent);
-            return prefix + category + " query:" + name + path;
+            var path = 
this.controller.structure.getHierarchicalName(this.parent);
+            return prefix + "Dashboard:" + name + path;
         };
 
-        QueryTab.prototype.open = function (contentPane)
+        DashboardTab.prototype.open = function (contentPane)
         {
             this.contentPane = contentPane;
             contentPane.containerNode.innerHTML = template;
@@ -122,53 +100,21 @@ define(["dojo/parser",
                 }));
         };
 
-        QueryTab.prototype.onOpen = function (containerNode)
+        DashboardTab.prototype.onOpen = function (containerNode)
         {
-            this.queryWidgetNode = query(".queryWidgetNode", containerNode)[0];
-            this.queryWidget = new QueryWidget({
-                management: this.management,
-                parentObject: this.parent,
-                preference: this.tabData.data,
-                controller: this.controller
-            }, this.queryWidgetNode);
-            this.contentPane.set("title", this.getTitle());
-            this.queryWidget.on("save", lang.hitch(this, function(e)
-            {
-                this.tabData.data = e.preference;
-                var title = this.getTitle();
-                this.contentPane.set("title", title);
-            }));
-            this.queryWidget.on("change", lang.hitch(this, function(e)
-            {
-                var title = this.getTitle(true);
-                this.contentPane.set("title", title);
-            }));
-            this.queryWidget.on("delete", lang.hitch(this, function(e)
-            {
-                this.management.userPreferences.removeTab(this.tabData);
-                this.destroy();
-            }));
-            this.queryWidget.on("clone", lang.hitch(this, function(e)
-            {
-                this.controller.showTab({
-                    tabType: "query",
-                    data: e.preference,
-                    modelObject: e.parentObject
-                });
-            }));
-            this.queryWidget.startup();
+            this.dashboardWidgetNode = query(".dashboardWidgetNode", 
containerNode)[0];
         };
 
-        QueryTab.prototype.close = function ()
+        DashboardTab.prototype.close = function ()
         {
-            if (this.queryWidget != null)
+            if (this.dashboardWidget != null)
             {
-                this.queryWidget.destroyRecursive();
-                this.queryWidget = null;
+                this.dashboardWidget.destroyRecursive();
+                this.dashboardWidget = null;
             }
         };
 
-        QueryTab.prototype.destroy = function ()
+        DashboardTab.prototype.destroy = function ()
         {
             this.close();
             this.contentPane.onClose();
@@ -176,5 +122,5 @@ define(["dojo/parser",
             this.contentPane.destroyRecursive();
         };
 
-        return QueryTab;
+        return DashboardTab;
     });

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/QueryTab.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/QueryTab.js?rev=1754865&r1=1754864&r2=1754865&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/QueryTab.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/QueryTab.js
 Tue Aug  2 10:55:51 2016
@@ -30,21 +30,6 @@ define(["dojo/parser",
         "dojo/domReady!"],
     function (parser, lang, all, Deferred, query, json, util, template, 
QueryWidget)
     {
-        function getPath(object)
-        {
-            if (object && object.parent)
-            {
-                var type = object.type.charAt(0).toUpperCase() + 
object.type.substring(1);
-                var val = object.name;
-                for (var i = object.parent; i && i.parent; i = i.parent)
-                {
-                    val = i.name + "/" + val;
-                }
-                return " (" + type + ":" + val + ")" ;
-            }
-            return "";
-        }
-
         function QueryTab(kwArgs)
         {
             this.controller = kwArgs.controller;
@@ -67,7 +52,7 @@ define(["dojo/parser",
             }
             var name = this.tabData.data.name ? this.tabData.data.name : "New";
             var prefix = this.tabData.data.name && !changed ? "" : "*";
-            var path = getPath(this.parent);
+            var path = 
this.controller.structure.getHierarchicalName(this.parent);
             return prefix + category + " query:" + name + path;
         };
 
@@ -151,6 +136,7 @@ define(["dojo/parser",
             this.queryWidget.on("clone", lang.hitch(this, function(e)
             {
                 this.controller.showTab({
+                    preferenceId: e.preference.id,
                     tabType: "query",
                     data: e.preference,
                     modelObject: e.parentObject

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js?rev=1754865&r1=1754864&r2=1754865&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
 Tue Aug  2 10:55:51 2016
@@ -42,6 +42,7 @@ define(["dojo/dom",
         "qpid/management/Logger",
         "qpid/management/QueryTab",
         "qpid/management/QueryBrowserTab",
+        "qpid/management/DashboardTab",
         "qpid/common/util",
         "dojo/ready",
         "dojox/uuid/generateRandomUuid",
@@ -70,6 +71,7 @@ define(["dojo/dom",
               Logger,
               QueryTab,
               QueryBrowserTab,
+              DashboardTab,
               util,
               ready)
     {
@@ -93,6 +95,7 @@ define(["dojo/dom",
             brokerlogger: Logger,
             virtualhostlogger: Logger,
             query: QueryTab,
+            dashboard: DashboardTab,
             queryBrowser: QueryBrowserTab
         };
 

Copied: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/dashboard/DashboardCreateDialogForm.js
 (from r1754791, 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryCreateDialogForm.js)
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/dashboard/DashboardCreateDialogForm.js?p2=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/dashboard/DashboardCreateDialogForm.js&p1=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryCreateDialogForm.js&r1=1754791&r2=1754865&rev=1754865&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryCreateDialogForm.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/dashboard/DashboardCreateDialogForm.js
 Tue Aug  2 10:55:51 2016
@@ -1,5 +1,4 @@
 /*
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -21,7 +20,7 @@
 
 define(["dojo/_base/declare",
         "dojo/_base/lang",
-        "dojo/text!query/QueryCreateDialogForm.html",
+        "dojo/text!dashboard/DashboardCreateDialogForm.html",
         "dojo/Evented",
         "dojo/store/Memory",
         "dojox/uuid/generateRandomUuid",
@@ -36,21 +35,8 @@ define(["dojo/_base/declare",
         "dojox/validate/web",
         "dojo/domReady!"], function (declare, lang, template, Evented, Memory, 
generateRandomUuid)
 {
-    var getCategoryMetadata = function (management, value)
-    {
-        if (value)
-        {
-            var category = value.charAt(0)
-                               .toUpperCase() + value.substring(1);
-            return management.metadata.metadata[category];
-        }
-        else
-        {
-            return undefined;
-        }
-    };
 
-    return declare("qpid.management.query.QueryCreateDialogForm",
+    return declare("qpid.management.dashboard.DashboardCreateDialogForm",
         [dijit._WidgetBase, dijit._TemplatedMixin, 
dijit._WidgetsInTemplateMixin, Evented],
         {
             /**
@@ -66,10 +52,9 @@ define(["dojo/_base/declare",
              * template attach points
              */
             scope: null,
-            category: null,
             okButton: null,
             cancelButton: null,
-            createQueryForm: null,
+            createDashboardForm: null,
 
             postCreate: function ()
             {
@@ -78,38 +63,15 @@ define(["dojo/_base/declare",
             },
             initScope: function ()
             {
-                var brokers = this.structure.findByType("broker");
-                var virtualHosts = this.structure.findByType("virtualhost");
-                var objects = brokers.concat(virtualHosts);
-
-                var items = [];
-                var brokerId = null;
-                this._scopeModelObjects = {};
-                for (var i = 0; i < objects.length; i++)
-                {
-                    if (objects[i].type === "broker")
-                    {
-                        name = objects[i].name;
-                        brokerId = objects[i].id;
-                    }
-                    else
-                    {
-                        name = "VH:" + objects[i].parent.name + "/" + 
objects[i].name;
-                    }
-                    var id = objects[i].id;
-                    items.push({
-                        id: id,
-                        name: name
-                    });
-                    this._scopeModelObjects[id] = objects[i];
-                }
+                var scopeItems = this.structure.getScopeItems();
+                this._scopeModelObjects = scopeItems.scopeModelObjects;
 
                 var scopeStore = new Memory({
-                    data: items,
+                    data: scopeItems.items,
                     idProperty: 'id'
                 });
                 this.scope.set("store", scopeStore);
-                this.scope.set("value", brokerId);
+                this.scope.set("value", scopeItems.items[0].id);
                 this._onChange();
             },
             _postCreate: function ()
@@ -118,7 +80,6 @@ define(["dojo/_base/declare",
                 this.cancelButton.on("click", lang.hitch(this, 
this._onCancel));
                 this.okButton.on("click", lang.hitch(this, 
this._onFormSubmit));
                 this.scope.on("change", lang.hitch(this, this._onChange));
-                this.category.on("change", lang.hitch(this, this._onChange));
             },
             _onCancel: function (data)
             {
@@ -126,27 +87,18 @@ define(["dojo/_base/declare",
             },
             _onChange: function (e)
             {
-                var invalid = !getCategoryMetadata(this.management, 
this.category.value)
-                              || !this._scopeModelObjects[this.scope.value];
+                var invalid = !this._scopeModelObjects[this.scope.value];
                 this.okButton.set("disabled", invalid);
             },
             _onFormSubmit: function (e)
             {
-                if (this.createQueryForm.validate())
+                if (this.createDashboardForm.validate())
                 {
-                    var category = this.category.value;
-                    if (getCategoryMetadata(this.management, category))
-                    {
-                        var data = {
-                            preference: {value: {category: category}, id : 
generateRandomUuid()},
-                            parentObject: 
this._scopeModelObjects[this.scope.value]
-                        };
-                        this.emit("create", data);
-                    }
-                    else
-                    {
-                        alert('Specified category does not exist. Please enter 
valid category');
-                    }
+                    var data = {
+                        preference: {id : generateRandomUuid()},
+                        parentObject: this._scopeModelObjects[this.scope.value]
+                    };
+                    this.emit("create", data);
                 }
                 else
                 {

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryCreateDialogForm.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryCreateDialogForm.js?rev=1754865&r1=1754864&r2=1754865&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryCreateDialogForm.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryCreateDialogForm.js
 Tue Aug  2 10:55:51 2016
@@ -78,38 +78,15 @@ define(["dojo/_base/declare",
             },
             initScope: function ()
             {
-                var brokers = this.structure.findByType("broker");
-                var virtualHosts = this.structure.findByType("virtualhost");
-                var objects = brokers.concat(virtualHosts);
-
-                var items = [];
-                var brokerId = null;
-                this._scopeModelObjects = {};
-                for (var i = 0; i < objects.length; i++)
-                {
-                    if (objects[i].type === "broker")
-                    {
-                        name = objects[i].name;
-                        brokerId = objects[i].id;
-                    }
-                    else
-                    {
-                        name = "VH:" + objects[i].parent.name + "/" + 
objects[i].name;
-                    }
-                    var id = objects[i].id;
-                    items.push({
-                        id: id,
-                        name: name
-                    });
-                    this._scopeModelObjects[id] = objects[i];
-                }
+                var scopeItems = this.structure.getScopeItems();
+                this._scopeModelObjects = scopeItems.scopeModelObjects;
 
                 var scopeStore = new Memory({
-                    data: items,
+                    data: scopeItems.items,
                     idProperty: 'id'
                 });
                 this.scope.set("store", scopeStore);
-                this.scope.set("value", brokerId);
+                this.scope.set("value", scopeItems.items[0].id);
                 this._onChange();
             },
             _postCreate: function ()

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js?rev=1754865&r1=1754864&r2=1754865&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js
 Tue Aug  2 10:55:51 2016
@@ -30,6 +30,7 @@ define(["dojo/_base/declare",
         "dojo/store/Memory",
         "dijit/registry",
         "dojox/html/entities",
+        "dojox/uuid/generateRandomUuid",
         "dgrid/extensions/ColumnReorder",
         "dgrid/extensions/ColumnHider",
         "qpid/management/query/QueryGrid",
@@ -56,6 +57,7 @@ define(["dojo/_base/declare",
               Memory,
               registry,
               entities,
+              generateRandomUuid,
               ColumnReorder,
               ColumnHider,
               QueryGrid)
@@ -183,6 +185,11 @@ define(["dojo/_base/declare",
                 okButton: null,
                 cancelButton: null,
 
+                /**
+                 * constructor
+                 */
+                structure: null,
+
                 // internal fields
                 _scopeModelObjects: {},
 
@@ -197,41 +204,23 @@ define(["dojo/_base/declare",
                     this.cloneQueryForm.on("submit", lang.hitch(this, 
this._onFormSubmit));
                     this.scope.on("change", lang.hitch(this, this._onChange));
                 },
-                _setScopeItemsAttr: function (items)
+                _initScopeItems: function (defaultValue)
                 {
-                    this._scopeModelObjects = {};
-                    var options = [];
-                    for (var i = 0; i < items.length; i++)
-                    {
-                        var name = null, id = items[i].id;
-                        if (items[i].type === "broker")
-                        {
-                            name = items[i].name;
-                        }
-                        else
-                        {
-                            name = "VH:" + items[i].parent.name + "/" + 
items[i].name;
-                        }
-
-                        this._scopeModelObjects[id] = items[i];
-                        options.push({id: id, name: name});
-                    }
+                    var scopeItems = this.structure.getScopeItems();
+                    this._scopeModelObjects = scopeItems.scopeModelObjects;
 
                     var scopeStore = new Memory({
-                        data: options,
+                        data: scopeItems.items,
                         idProperty: 'id'
                     });
                     this.scope.set("store", scopeStore);
-                },
-                _setDefaultScopeItemAttr: function (defaultValue)
-                {
+
                     if (defaultValue)
                     {
                         for (var field in this._scopeModelObjects)
                         {
                             var item = this._scopeModelObjects[field];
-                            if (item.id === defaultValue.id || (item.type === 
"broker" && defaultValue.type
-                                                                               
           === "broker"))
+                            if (item.id === defaultValue.id)
                             {
                                 this.scope.set("value", item.id);
                                 break;
@@ -239,7 +228,6 @@ define(["dojo/_base/declare",
                         }
                     }
                 },
-
                 _onCancel: function (data)
                 {
                     this.emit("cancel");
@@ -342,7 +330,7 @@ define(["dojo/_base/declare",
                     this._lastHeaders = [];
 
                     // lifecycle UI
-                    this._queryCloneDialogForm = new QueryCloneDialogForm();
+                    this._queryCloneDialogForm = new 
QueryCloneDialogForm({structure : this.controller.structure});
                     this._queryCloneDialog =
                         new dijit.Dialog({title: "Clone query", content: 
this._queryCloneDialogForm});
                     this._queryCloneDialogForm.on("clone", lang.hitch(this, 
this._onQueryClone));
@@ -1051,16 +1039,12 @@ define(["dojo/_base/declare",
                 },
                 _cloneQuery: function ()
                 {
-                    var brokers = 
this.controller.structure.findByType("broker");
-                    var virtualHosts = 
this.controller.structure.findByType("virtualhost");
-                    var objects = brokers.concat(virtualHosts);
-                    this._queryCloneDialogForm.set("scopeItems", objects);
-                    this._queryCloneDialogForm.set("defaultScopeItem", 
this.parentObject);
+                    
this._queryCloneDialogForm._initScopeItems(this.parentObject);
                     this._queryCloneDialog.show();
                 },
                 _onQueryClone: function (e)
                 {
-                    var preference = {type: "query", value: this._getQuery()};
+                    var preference = {id : generateRandomUuid(), type: 
"query", value: this._getQuery()};
                     this._queryCloneDialog.hide();
                     this.emit("clone", {preference: preference, parentObject: 
e.parentObject});
                 },

Added: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showDashboardTab.html
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showDashboardTab.html?rev=1754865&view=auto
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showDashboardTab.html
 (added)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showDashboardTab.html
 Tue Aug  2 10:55:51 2016
@@ -0,0 +1,20 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  ~
+  -->
+<div class="dashboardWidgetNode"></div>

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showQueryTab.html
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showQueryTab.html?rev=1754865&r1=1754864&r2=1754865&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showQueryTab.html
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showQueryTab.html
 Tue Aug  2 10:55:51 2016
@@ -18,7 +18,5 @@
  - under the License.
  -
  -->
-<div class="query">
-    <div class="queryWidgetNode"></div>
-</div>
+<div class="queryWidgetNode"></div>
 




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to