Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryBuilder.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryBuilder.js?rev=1741609&r1=1741608&r2=1741609&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryBuilder.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryBuilder.js
 Fri Apr 29 11:04:40 2016
@@ -56,535 +56,622 @@ define(["dojo/_base/declare",
         "dijit/TooltipDialog",
         "dijit/Dialog",
         "dojo/Deferred",
-        "qpid/management/query/MessageDialog"
-        ],
-        function(declare,
-                 lang,
-                 parser,
-                 domConstruct,
-                 json,
-                 template,
-                 entities,
-                 Grid,
-                 Keyboard,
-                 Selection,
-                 Pagination,
-                 Selector,
-                 ColumnResizer,
-                 Memory,
-                 DstoreAdapter,
-                 QueryStore
-                 )
-        {
-            var predefinedCategories =      [ {id: "queue", name: "Queue"},  
{id: "connection", name: "Connection"} ];
-
-            var QueryBuilder = declare( "qpid.management.query.QueryBuilder",
-                            [dijit._Widget, dijit._TemplatedMixin, 
dijit._WidgetsInTemplateMixin],
-                            {
-                                 //Strip out the apache comment header from 
the template html as comments unsupported.
-                                templateString:    
template.replace(/<!--[\s\S]*?-->/g, ""),
-
-                                /**
-                                 * Fields from template
-                                 **/
-                                scope:null,
-                                categoryName: null,
-                                advancedSearch: null,
-                                advancedSelect: null,
-                                advancedWhere: null,
-                                standardSearch: null,
-                                standardSelectChooser: null,
-                                standardWhereChooser: null,
-                                searchButton: null,
-                                modeButton: null,
-                                standardWhereExpressionBuilder: null,
-                                queryResultGrid: null,
-                                advancedOrderBy: null,
-
-                                /**
-                                 * constructor parameter
-                                 */
-                                _management: null,
-
-                                /**
-                                 * Inner fields
-                                 */
-                                _standardMode: true,
-                                _scopeModelObjects: {},
-                                _categorySelector: null,
-                                _searchScopeSelector: null,
-                                _lastStandardModeSelect: [],
-                                _sort: [],
-                                _lastHeaders: [],
-
-                                constructor: function(args)
-                                             {
-                                               this._management = 
args.management;
-                                               this.inherited(arguments);
-                                             },
-                                postCreate:  function()
-                                             {
-                                               this.inherited(arguments);
-                                               this._postCreate();
-                                             },
-                                _postCreate: function()
-                                             {
-                                               var promise = 
this._createScopeList();
-                                               promise.then(lang.hitch(this, 
this. _postCreateScope));
-                                             },
-                                _postCreateScope: function()
-                                             {
-                                               this._createCategoryList();
-
-                                               // advanced mode widgets
-                                               
this.advancedSelect.on("change", lang.hitch(this, this._toggleSearchButton));
-                                               this.advancedSelect.on("blur", 
lang.hitch(this, this._advancedModeSelectChanged));
-                                               this.advancedWhere.on("blur", 
lang.hitch(this, this._advancedModeWhereChanged));
-                                               this.advancedOrderBy.on("blur", 
lang.hitch(this, this._advancedModeOrderByChanged));
-                                               
this.advancedSelect.on("keyDown", lang.hitch(this, 
this._advancedModeKeyPressed));
-                                               
this.advancedWhere.on("keyDown", lang.hitch(this, 
this._advancedModeKeyPressed));
-                                               
this.advancedOrderBy.on("keyDown", lang.hitch(this, 
this._advancedModeKeyPressed));
-
-                                               // standard mode widgets
-                                               
this.standardSelectChooser.on("change", lang.hitch(this, 
this._standardModeSelectChanged));
-                                               
this.standardSelectChooser.startup();
-                                               
this.standardWhereChooser.startup();
-                                               
this.standardWhereExpressionBuilder.set("whereFieldsSelector", 
this.standardWhereChooser );
-                                               
this.standardWhereExpressionBuilder.set("userPreferences", 
this._management.userPreferences );
-                                               
this.standardWhereExpressionBuilder.startup();
-                                               
this.standardWhereExpressionBuilder.on("change", lang.hitch(this, 
this._standardModeWhereChanged));
-
-                                               // search & mode buttons
-                                               this.searchButton.on("click", 
lang.hitch(this, this.search));
-                                               this.modeButton.on("click", 
lang.hitch(this, this._showModeSwitchWarningIfRequired));
-
-                                               this._buildGrid();
-                                               this._categoryChanged();
-                                               this._toggleSearchButton();
-                                             },
-                                search:      function()
-                                             {
-                                                 var category = 
this._categorySelector.value.toLowerCase();
-                                                 var scope = 
this._searchScopeSelector.value;
-                                                 var modelObj = 
this._scopeModelObjects[scope];
-                                                 this._store.selectClause = 
this._store.selectClause;
-                                                 this._store.where = 
this._store.where;
-                                                 this._store.category = 
category;
-                                                 this._store.parent = modelObj;
-                                                 this._store.orderBy = 
this._store.orderBy;
-                                                 this._resultsGrid.refresh();
-                                             },
-                                _showModeSwitchWarningIfRequired: function()
-                                            {
-                                                var userPreferences = 
this._management.userPreferences;
-                                                var displayWarning = 
(!userPreferences || !userPreferences.query ||
-                                                                      
(userPreferences.query.displaySwitchModeWarning == undefined ||
-                                                                       
userPreferences.query.displaySwitchModeWarning));
-                                                if (this._standardMode && 
displayWarning && QueryBuilder.showWarningOnModeChange)
-                                                {
-                                                    if 
(!this._switchModeWarningDialog)
-                                                    {
-                                                        var formattedMessage = 
"<div>Switching to advanced mode is a one-way street,<br/>"
-                                                            + "switching back 
from advanced mode to standard mode will<br/>"
-                                                            + "completely 
reset the query.</div>";
-                                                        
this._switchModeWarningDialog = new qpid.management.query.MessageDialog({
-                                                            title: "Warning!",
-                                                            message: 
formattedMessage},
-                                                            
domConstruct.create("div"));
-                                                        
this._switchModeWarningDialog.on("execute",
-                                                            lang.hitch(this, 
function(stopDisplaying)
-                                                            {
-                                                                if 
(stopDisplaying)
-                                                                {
-                                                                    if 
(!userPreferences.query)
-                                                                    {
-                                                                        
userPreferences.query = {};
-                                                                    }
-                                                                    
userPreferences.query.displaySwitchModeWarning = false;
-                                                                    
userPreferences.save({query: userPreferences.query},
-                                                                        null,
-                                                                        
function(error){console.log("Saving user preferences failed: " + error);}
-                                                                    );
-                                                                }
-                                                                else
-                                                                {
-                                                                    
QueryBuilder.showWarningOnModeChange = false;
-                                                                }
-                                                                
this._modeChanged();
-                                                            }));
-                                                    }
-                                                    
this._switchModeWarningDialog.show();
-                                                }
-                                                else
-                                                {
-                                                    this._modeChanged();
-                                                }
-                                            },
-                                _advancedModeSelectChanged: function()
-                                             {
-                                               this._store.selectClause = 
this.advancedSelect.value;
-                                             },
-                                _advancedModeWhereChanged: function()
-                                             {
-                                                 this._store.where = 
this.advancedWhere.value;
-                                             },
-                                _advancedModeOrderByChanged: function()
-                                            {
-                                                this._store.orderBy = 
this.advancedOrderBy.value;
-                                                this._sort = [];
-                                            },
-                                _toggleSearchButton: function(select)
-                                             {
-                                               var criteriaNotSet = !select;
-                                               
this.searchButton.set("disabled",criteriaNotSet);
-                                               this.searchButton.set("title", 
criteriaNotSet?"Please, choose fields to display in order to enable 
search":"Search");
-                                             },
-                                _buildOrderByExpression: function()
-                                             {
-                                               var orderByExpression = "";
-                                               if (this._sort && 
this._sort.length)
-                                               {
-                                                 var orders = []
-                                                 for (var i = 0; i < 
this._sort.length; ++i)
-                                                 {
-                                                   
orders.push(parseInt(this._sort[i].property) + (this._sort[i].descending? " 
desc" : ""));
-                                                 }
-                                                 orderByExpression = 
orders.join(",");
-                                               }
-                                               
this.advancedOrderBy.set("value", orderByExpression);
-                                               return orderByExpression;
-                                             },
-                                _buildSelectExpression: function(value)
-                                             {
-                                                var expression = "";
-                                                if (lang.isArray(value))
-                                                {
-                                                    for(var i=0; 
i<value.length ;i++)
-                                                    {
-                                                        var selection = 
value[i] && value[i].hasOwnProperty("attributeName") ?
-                                                            
value[i].attributeName : value[i];
-                                                        expression = 
expression + (i > 0 ? "," : "") + selection;
-                                                    }
-                                                }
-                                                return expression;
-                                             },
-                                _normalizeSorting: function(selectedColumns)
-                                             {
-                                                 var newSort = [];
-                                                 for (var i = 0; i < 
this._sort.length; ++i) {
-                                                     var sortColumnIndex = 
parseInt(this._sort[i].property) - 1;
-                                                     var sortDescending = 
this._sort[i].descending;
-                                                     if (sortColumnIndex < 
this._lastStandardModeSelect.length) {
-                                                         var 
oldSortedColumnName = 
this._lastStandardModeSelect[sortColumnIndex].attributeName;
-                                                         for (var j = 0; j < 
selectedColumns.length; ++j) {
-                                                             if 
(selectedColumns[j].attributeName === oldSortedColumnName) {
-                                                                 newSort.push({
-                                                                     property: 
"" + (j + 1),
-                                                                     
descending: sortDescending
-                                                                 });
-                                                                 break;
-                                                             }
-                                                         }
-                                                     }
-                                                 }
-                                                 this._sort = newSort;
-                                             },
-                                _standardModeSelectChanged: 
function(selectedColumns)
-                                             {
-                                               
this._normalizeSorting(selectedColumns);
-                                               this._store.orderBy = 
this._buildOrderByExpression();
-                                               this._store.selectClause = 
this._buildSelectExpression(selectedColumns);
-                                               this._lastStandardModeSelect = 
lang.clone(selectedColumns);
-                                               
this._toggleSearchButton(this._store.selectClause);
-                                               this.search();
-                                             },
-                                _standardModeWhereChanged: function(result)
-                                             {
-                                                this._store.where = result;
-                                                this.search();
-                                             },
-                                _buildGrid:  function()
-                                             {
-                                                this._store = new QueryStore({
-                                                    management: 
this.management,
-                                                    category: 
this._categorySelector.value.toLowerCase(),
-                                                    parent: 
this._scopeModelObjects[this._searchScopeSelector.value],
-                                                    zeroBased: false});
-
-                                                var CustomGrid = declare([ 
Grid, Keyboard, Selection, Pagination, ColumnResizer ]);
-
-                                                var grid = new CustomGrid({   
collection: this._store,
-                                                                              
rowsPerPage: 100,
-                                                                              
selectionMode: 'single',
-                                                                              
cellNavigation: false,
-                                                                              
className: 'dgrid-autoheight',
-                                                                              
pageSizeOptions: [10,20,30,40,50,100,1000,10000,100000],
-                                                                              
adjustLastColumn: true
-                                                                          },
-                                                                          
this.queryResultGrid);
-                                                
this._store.on("changeHeaders", lang.hitch(this, function(event) {
-                                                    
this._store.useCachedResults = true;
-                                                    grid.set("columns", 
this._getColumns(event.headers));
-                                                    this._resultsGrid.resize();
-                                                }));
-                                                this._resultsGrid = grid;
-                                                this._resultsGrid.startup();
-                                                
this._resultsGrid.on('.dgrid-row:dblclick', lang.hitch(this, this._onRowClick));
-                                                
this._resultsGrid.on("dgrid-sort", lang.hitch(this, function(event) {
-                                                    for (var i = 0; i < 
this._sort.length; ++i) {
-                                                        if 
(this._sort[i].property == event.sort[0].property) {
-                                                            
this._sort.splice(i, 1);
-                                                            break;
-                                                        }
-                                                    }
-                                                    this._sort.splice(0, 0, 
event.sort[0]);
-                                                    this._store.orderBy = 
this._buildOrderByExpression();
-                                                    event.preventDefault();
-                                                    event.stopPropagation();
-                                                    this.search();
-                                                }));
-                                                
this._resultsGrid.on("dgrid-refresh-complete",
-                                                                     
lang.hitch(this,
-                                                                               
 function()
-                                                                               
 {
-                                                                               
   this._store.useCachedResults = false;
-                                                                               
   this._resultsGrid.updateSortArrow(this._sort, true);
-                                                                               
 }));
-                                             },
-                                _onRowClick: function (event)
-                                             {
-                                               var row = 
this._resultsGrid.row(event);
-                                               var promise = 
this._management.get({url:"service/structure"});
-                                               var that = this;
-                                               promise.then(function (data)
-                                                            {
-                                                              var findObject = 
function findObject(structure, parent, type)
+        "qpid/management/query/MessageDialog"],
+       function (declare, lang, parser, domConstruct, json, template, 
entities, Grid, Keyboard, Selection, Pagination, Selector, ColumnResizer, 
Memory, DstoreAdapter, QueryStore)
+       {
+           var predefinedCategories = [{
+               id: "queue",
+               name: "Queue"
+           },
+               {
+                   id: "connection",
+                   name: "Connection"
+               }];
+
+           var QueryBuilder = declare("qpid.management.query.QueryBuilder",
+                                      [dijit._Widget, dijit._TemplatedMixin, 
dijit._WidgetsInTemplateMixin],
+                                      {
+                                          //Strip out the apache comment 
header from the template html as comments unsupported.
+                                          templateString: 
template.replace(/<!--[\s\S]*?-->/g, ""),
+
+                                          /**
+                                           * Fields from template
+                                           **/
+                                          scope: null,
+                                          categoryName: null,
+                                          advancedSearch: null,
+                                          advancedSelect: null,
+                                          advancedWhere: null,
+                                          standardSearch: null,
+                                          standardSelectChooser: null,
+                                          standardWhereChooser: null,
+                                          searchButton: null,
+                                          modeButton: null,
+                                          standardWhereExpressionBuilder: null,
+                                          queryResultGrid: null,
+                                          advancedOrderBy: null,
+
+                                          /**
+                                           * constructor parameter
+                                           */
+                                          _management: null,
+
+                                          /**
+                                           * Inner fields
+                                           */
+                                          _standardMode: true,
+                                          _scopeModelObjects: {},
+                                          _categorySelector: null,
+                                          _searchScopeSelector: null,
+                                          _lastStandardModeSelect: [],
+                                          _sort: [],
+                                          _lastHeaders: [],
+
+                                          constructor: function (args)
+                                          {
+                                              this._management = 
args.management;
+                                              this.inherited(arguments);
+                                          },
+                                          postCreate: function ()
+                                          {
+                                              this.inherited(arguments);
+                                              this._postCreate();
+                                          },
+                                          _postCreate: function ()
+                                          {
+                                              var promise = 
this._createScopeList();
+                                              promise.then(lang.hitch(this, 
this._postCreateScope));
+                                          },
+                                          _postCreateScope: function ()
+                                          {
+                                              this._createCategoryList();
+
+                                              // advanced mode widgets
+                                              this.advancedSelect.on("change",
+                                                                     
lang.hitch(this, this._toggleSearchButton));
+                                              this.advancedSelect.on("blur",
+                                                                     
lang.hitch(this, this._advancedModeSelectChanged));
+                                              this.advancedWhere.on("blur",
+                                                                    
lang.hitch(this, this._advancedModeWhereChanged));
+                                              this.advancedOrderBy.on("blur",
+                                                                      
lang.hitch(this,
+                                                                               
  this._advancedModeOrderByChanged));
+                                              this.advancedSelect.on("keyDown",
+                                                                     
lang.hitch(this, this._advancedModeKeyPressed));
+                                              this.advancedWhere.on("keyDown",
+                                                                    
lang.hitch(this, this._advancedModeKeyPressed));
+                                              
this.advancedOrderBy.on("keyDown",
+                                                                      
lang.hitch(this, this._advancedModeKeyPressed));
+
+                                              // standard mode widgets
+                                              
this.standardSelectChooser.on("change",
+                                                                            
lang.hitch(this,
+                                                                               
        this._standardModeSelectChanged));
+                                              
this.standardSelectChooser.startup();
+                                              
this.standardWhereChooser.startup();
+                                              
this.standardWhereExpressionBuilder.set("whereFieldsSelector",
+                                                                               
       this.standardWhereChooser);
+                                              
this.standardWhereExpressionBuilder.set("userPreferences",
+                                                                               
       this._management.userPreferences);
+                                              
this.standardWhereExpressionBuilder.startup();
+                                              
this.standardWhereExpressionBuilder.on("change",
+                                                                               
      lang.hitch(this,
+                                                                               
                 this._standardModeWhereChanged));
+
+                                              // search & mode buttons
+                                              this.searchButton.on("click", 
lang.hitch(this, this.search));
+                                              this.modeButton.on("click",
+                                                                 
lang.hitch(this,
+                                                                            
this._showModeSwitchWarningIfRequired));
+
+                                              this._buildGrid();
+                                              this._categoryChanged();
+                                              this._toggleSearchButton();
+                                          },
+                                          search: function ()
+                                          {
+                                              var category = 
this._categorySelector.value.toLowerCase();
+                                              var scope = 
this._searchScopeSelector.value;
+                                              var modelObj = 
this._scopeModelObjects[scope];
+                                              this._store.selectClause = 
this._store.selectClause;
+                                              this._store.where = 
this._store.where;
+                                              this._store.category = category;
+                                              this._store.parent = modelObj;
+                                              this._store.orderBy = 
this._store.orderBy;
+                                              this._resultsGrid.refresh();
+                                          },
+                                          _showModeSwitchWarningIfRequired: 
function ()
+                                          {
+                                              var userPreferences = 
this._management.userPreferences;
+                                              var displayWarning = 
(!userPreferences || !userPreferences.query
+                                                                    || 
(userPreferences.query.displaySwitchModeWarning
+                                                                        == 
undefined
+                                                                    || 
userPreferences.query.displaySwitchModeWarning));
+                                              if (this._standardMode && 
displayWarning
+                                                  && 
QueryBuilder.showWarningOnModeChange)
+                                              {
+                                                  if 
(!this._switchModeWarningDialog)
+                                                  {
+                                                      var formattedMessage = 
"<div>Switching to advanced mode is a one-way street,<br/>"
+                                                                             + 
"switching back from advanced mode to standard mode will<br/>"
+                                                                             + 
"completely reset the query.</div>";
+                                                      
this._switchModeWarningDialog =
+                                                          new 
qpid.management.query.MessageDialog({
+                                                              title: 
"Warning!",
+                                                              message: 
formattedMessage
+                                                          }, 
domConstruct.create("div"));
+                                                      
this._switchModeWarningDialog.on("execute",
+                                                                               
        lang.hitch(this,
+                                                                               
                   function (stopDisplaying)
+                                                                               
                   {
+                                                                               
                       if (stopDisplaying)
+                                                                               
                       {
+                                                                               
                           if (!userPreferences.query)
+                                                                               
                           {
+                                                                               
                               userPreferences.query =
+                                                                               
                               {};
+                                                                               
                           }
+                                                                               
                           userPreferences.query.displaySwitchModeWarning =
+                                                                               
                               false;
+                                                                               
                           userPreferences.save(
+                                                                               
                               {query: userPreferences.query},
+                                                                               
                               null,
+                                                                               
                               function (error)
+                                                                               
                               {
+                                                                               
                                   console.log(
+                                                                               
                                       "Saving user preferences failed: "
+                                                                               
                                       + error);
+                                                                               
                               });
+                                                                               
                       }
+                                                                               
                       else
+                                                                               
                       {
+                                                                               
                           QueryBuilder.showWarningOnModeChange =
+                                                                               
                               false;
+                                                                               
                       }
+                                                                               
                       this._modeChanged();
+                                                                               
                   }));
+                                                  }
+                                                  
this._switchModeWarningDialog.show();
+                                              }
+                                              else
+                                              {
+                                                  this._modeChanged();
+                                              }
+                                          },
+                                          _advancedModeSelectChanged: function 
()
+                                          {
+                                              this._store.selectClause = 
this.advancedSelect.value;
+                                          },
+                                          _advancedModeWhereChanged: function 
()
+                                          {
+                                              this._store.where = 
this.advancedWhere.value;
+                                          },
+                                          _advancedModeOrderByChanged: 
function ()
+                                          {
+                                              this._store.orderBy = 
this.advancedOrderBy.value;
+                                              this._sort = [];
+                                          },
+                                          _toggleSearchButton: function 
(select)
+                                          {
+                                              var criteriaNotSet = !select;
+                                              
this.searchButton.set("disabled", criteriaNotSet);
+                                              this.searchButton.set("title",
+                                                                    
criteriaNotSet
+                                                                        ? 
"Please, choose fields to display in order to enable search"
+                                                                        : 
"Search");
+                                          },
+                                          _buildOrderByExpression: function ()
+                                          {
+                                              var orderByExpression = "";
+                                              if (this._sort && 
this._sort.length)
+                                              {
+                                                  var orders = []
+                                                  for (var i = 0; i < 
this._sort.length; ++i)
+                                                  {
+                                                      
orders.push(parseInt(this._sort[i].property)
+                                                                  + 
(this._sort[i].descending ? " desc" : ""));
+                                                  }
+                                                  orderByExpression = 
orders.join(",");
+                                              }
+                                              
this.advancedOrderBy.set("value", orderByExpression);
+                                              return orderByExpression;
+                                          },
+                                          _buildSelectExpression: function 
(value)
+                                          {
+                                              var expression = "";
+                                              if (lang.isArray(value))
+                                              {
+                                                  for (var i = 0; i < 
value.length; i++)
+                                                  {
+                                                      var selection = value[i] 
&& value[i].hasOwnProperty(
+                                                          "attributeName") ? 
value[i].attributeName : value[i];
+                                                      expression = expression 
+ (i > 0 ? "," : "") + selection;
+                                                  }
+                                              }
+                                              return expression;
+                                          },
+                                          _normalizeSorting: function 
(selectedColumns)
+                                          {
+                                              var newSort = [];
+                                              for (var i = 0; i < 
this._sort.length; ++i)
+                                              {
+                                                  var sortColumnIndex = 
parseInt(this._sort[i].property) - 1;
+                                                  var sortDescending = 
this._sort[i].descending;
+                                                  if (sortColumnIndex < 
this._lastStandardModeSelect.length)
+                                                  {
+                                                      var oldSortedColumnName 
= this._lastStandardModeSelect[sortColumnIndex].attributeName;
+                                                      for (var j = 0; j < 
selectedColumns.length; ++j)
+                                                      {
+                                                          if 
(selectedColumns[j].attributeName === oldSortedColumnName)
+                                                          {
+                                                              newSort.push({
+                                                                               
property: "" + (j + 1),
+                                                                               
descending: sortDescending
+                                                                           });
+                                                              break;
+                                                          }
+                                                      }
+                                                  }
+                                              }
+                                              this._sort = newSort;
+                                          },
+                                          _standardModeSelectChanged: function 
(selectedColumns)
+                                          {
+                                              
this._normalizeSorting(selectedColumns);
+                                              this._store.orderBy = 
this._buildOrderByExpression();
+                                              this._store.selectClause = 
this._buildSelectExpression(selectedColumns);
+                                              this._lastStandardModeSelect = 
lang.clone(selectedColumns);
+                                              
this._toggleSearchButton(this._store.selectClause);
+                                              this.search();
+                                          },
+                                          _standardModeWhereChanged: function 
(result)
+                                          {
+                                              this._store.where = result;
+                                              this.search();
+                                          },
+                                          _buildGrid: function ()
+                                          {
+                                              this._store = new QueryStore({
+                                                  management: this.management,
+                                                  category: 
this._categorySelector.value.toLowerCase(),
+                                                  parent: 
this._scopeModelObjects[this._searchScopeSelector.value],
+                                                  zeroBased: false
+                                              });
+
+                                              var CustomGrid = declare([Grid,
+                                                                        
Keyboard,
+                                                                        
Selection,
+                                                                        
Pagination,
+                                                                        
ColumnResizer]);
+
+                                              var grid = new CustomGrid({
+                                                  collection: this._store,
+                                                  rowsPerPage: 100,
+                                                  selectionMode: 'single',
+                                                  cellNavigation: false,
+                                                  className: 
'dgrid-autoheight',
+                                                  pageSizeOptions: [10, 20, 
30, 40, 50, 100, 1000, 10000, 100000],
+                                                  adjustLastColumn: true
+                                              }, this.queryResultGrid);
+                                              this._store.on("changeHeaders", 
lang.hitch(this, function (event)
+                                              {
+                                                  this._store.useCachedResults 
= true;
+                                                  grid.set("columns", 
this._getColumns(event.headers));
+                                                  this._resultsGrid.resize();
+                                              }));
+                                              this._resultsGrid = grid;
+                                              this._resultsGrid.startup();
+                                              
this._resultsGrid.on('.dgrid-row:dblclick',
+                                                                   
lang.hitch(this, this._onRowClick));
+                                              
this._resultsGrid.on("dgrid-sort", lang.hitch(this, function (event)
+                                              {
+                                                  for (var i = 0; i < 
this._sort.length; ++i)
+                                                  {
+                                                      if 
(this._sort[i].property == event.sort[0].property)
+                                                      {
+                                                          this._sort.splice(i, 
1);
+                                                          break;
+                                                      }
+                                                  }
+                                                  this._sort.splice(0, 0, 
event.sort[0]);
+                                                  this._store.orderBy = 
this._buildOrderByExpression();
+                                                  event.preventDefault();
+                                                  event.stopPropagation();
+                                                  this.search();
+                                              }));
+                                              
this._resultsGrid.on("dgrid-refresh-complete",
+                                                                   
lang.hitch(this, function ()
+                                                                   {
+                                                                       
this._store.useCachedResults = false;
+                                                                       
this._resultsGrid.updateSortArrow(this._sort,
+                                                                               
                          true);
+                                                                   }));
+                                          },
+                                          _onRowClick: function (event)
+                                          {
+                                              var row = 
this._resultsGrid.row(event);
+                                              var promise = 
this._management.get({url: "service/structure"});
+                                              var that = this;
+                                              promise.then(function (data)
+                                                           {
+                                                               var findObject 
= function findObject(structure, parent, type)
+                                                               {
+                                                                   var item = {
+                                                                       id: 
structure.id,
+                                                                       name: 
structure.name,
+                                                                       type: 
type,
+                                                                       parent: 
parent
+                                                                   };
+                                                                   if (item.id 
== row.id)
+                                                                   {
+                                                                       return 
item;
+                                                                   }
+                                                                   else
+                                                                   {
+                                                                       for 
(var fieldName in structure)
+                                                                       {
+                                                                           var 
fieldValue = structure[fieldName];
+                                                                           if 
(lang.isArray(fieldValue))
+                                                                           {
+                                                                               
var fieldType = fieldName.substring(0,
+                                                                               
                                    fieldName.length
+                                                                               
                                    - 1);
+                                                                               
for (var i = 0;
+                                                                               
     i < fieldValue.length;
+                                                                               
     i++)
+                                                                               
{
+                                                                               
    var object = fieldValue[i];
+                                                                               
    var result = findObject(object,
+                                                                               
                            item,
+                                                                               
                            fieldType);
+                                                                               
    if (result != null)
+                                                                               
    {
+                                                                               
        return result;
+                                                                               
    }
+                                                                               
}
+                                                                           }
+                                                                       }
+                                                                       return 
null;
+                                                                   }
+                                                               };
+
+                                                               var item = 
findObject(data, null, "broker");
+                                                               if (item != 
null)
+                                                               {
+                                                                   
that.controller.show(item.type,
+                                                                               
         item.name,
+                                                                               
         item.parent,
+                                                                               
         item.id);
+                                                               }
+                                                           });
+                                          },
+                                          _getColumns: function (headers)
+                                          {
+                                              this._lastHeaders = headers;
+                                              var columns = [];
+                                              if (headers)
+                                              {
+                                                  for (var i = 0; i < 
headers.length; ++i)
+                                                  {
+                                                      var attribute = 
headers[i];
+                                                      var column = {
+                                                          label: attribute,
+                                                          field: "" + (i + 1),
+                                                          sortable: true
+                                                      };
+                                                      columns.push(column);
+                                                      if (this._columns)
+                                                      {
+                                                          var columnData = 
this._columns[attribute];
+                                                          if (columnData)
+                                                          {
+                                                              if 
(columnData.type == "Date")
+                                                              {
+                                                                  var that = 
this;
+                                                                  
column.formatter = function (value, object)
+                                                                  {
+                                                                      if 
(!isNaN(value) && parseInt(Number(value))
+                                                                               
            == value && !isNaN(parseInt(
+                                                                              
value,
+                                                                              
10)))
+                                                                      {
+                                                                          
return that._management.userPreferences.formatDateTime(
+                                                                              
value,
+                                                                              {
+                                                                               
   addOffset: true,
+                                                                               
   appendTimeZone: true
+                                                                              
});
+                                                                      }
+                                                                      return 
value
+                                                                          ? 
entities.encode(String(value))
+                                                                          : "";
+                                                                  };
+                                                              }
+                                                              else if 
(columnData.type == "Map")
                                                               {
-                                                                  var item = 
{id:structure.id,
-                                                                             
name: structure.name,
-                                                                             
type: type,
-                                                                             
parent: parent};
-                                                                  if (item.id 
== row.id)
+                                                                  
column.renderCell = function (object, value, node)
                                                                   {
-                                                                    return 
item;
-                                                                  }
-                                                                  else
+                                                                      if 
(value)
+                                                                      {
+                                                                          var 
list = domConstruct.create("div",
+                                                                               
                          {},
+                                                                               
                          node);
+                                                                          for 
(var i in value)
+                                                                          {
+                                                                              
domConstruct.create("div", {
+                                                                               
   innerHTML: entities.encode(String(i))
+                                                                               
              + ": " + entities.encode(
+                                                                               
       json.stringify(value[i]))
+                                                                              
}, list);
+                                                                          }
+                                                                          
return list;
+                                                                      }
+                                                                      return 
"";
+                                                                  };
+                                                              }
+                                                              else if 
(columnData.type == "List" || columnData.type
+                                                                               
                     == "Set")
+                                                              {
+                                                                  
column.renderCell = function (object, value, node)
                                                                   {
-                                                                      for(var 
fieldName in structure)
+                                                                      if 
(value)
                                                                       {
-                                                                          var 
fieldValue = structure[fieldName];
-                                                                          if 
(lang.isArray(fieldValue))
+                                                                          var 
list = domConstruct.create("div",
+                                                                               
                          {},
+                                                                               
                          node);
+                                                                          for 
(var i in value)
                                                                           {
-                                                                             
var fieldType = fieldName.substring(0, fieldName.length - 1);
-                                                                             
for (var i = 0; i < fieldValue.length; i++)
-                                                                             {
-                                                                               
 var object = fieldValue[i];
-                                                                               
 var result = findObject(object, item, fieldType);
-                                                                               
 if (result != null)
-                                                                               
 {
-                                                                               
     return result;
-                                                                               
 }
-                                                                             }
+                                                                              
domConstruct.create("div",
+                                                                               
                   {
+                                                                               
                       innerHTML: entities.encode(
+                                                                               
                           json.stringify(
+                                                                               
                               value[i]))
+                                                                               
                   },
+                                                                               
                   list)
                                                                           }
+                                                                          
return list;
                                                                       }
-                                                                      return 
null;
-                                                                  }
-                                                              };
-
-                                                              var item = 
findObject(data, null, "broker");
-                                                              if (item != null)
+                                                                      return 
"";
+                                                                  };
+                                                              }
+                                                          }
+                                                      }
+                                                  }
+                                              }
+                                              return columns;
+                                          },
+                                          _createScopeList: function ()
+                                          {
+                                              var that = this;
+                                              var result = 
this._management.query({
+                                                                               
       select: "id, $parent.name as parentName, name",
+                                                                               
       category: "virtualhost"
+                                                                               
   });
+                                              var deferred = new 
dojo.Deferred();
+                                              result.then(function (data)
+                                                          {
+                                                              try
                                                               {
-                                                               
that.controller.show(item.type, item.name, item.parent, item.id);
+                                                                  
that._scopeDataReceived(data);
                                                               }
-                                                            });
-                                             },
-                                _getColumns: function(headers)
-                                             {
-                                               this._lastHeaders = headers;
-                                               var columns = [];
-                                               if (headers)
-                                               {
-                                                  for (var i = 0; i < 
headers.length; ++i)
+                                                              finally
+                                                              {
+                                                                  
deferred.resolve(that._searchScopeSelector);
+                                                              }
+                                                          }, function (error)
+                                                          {
+                                                              
deferred.reject(null);
+                                                              
console.error(error.message ? error.message : error);
+                                                          });
+                                              return deferred.promise;
+                                          },
+                                          _scopeDataReceived: function (result)
+                                          {
+                                              this._scopeModelObjects = {};
+                                              var defaultValue = undefined;
+                                              var items = [{
+                                                  id: undefined,
+                                                  name: "Broker"
+                                              }];
+                                              var data = result.results;
+                                              for (var i = 0; i < data.length; 
i++)
+                                              {
+                                                  var name = data[i][2];
+                                                  var parentName = data[i][1];
+                                                  items.push({
+                                                                 id: 
data[i][0],
+                                                                 name: "VH:" + 
parentName + "/" + name
+                                                             });
+                                                  
this._scopeModelObjects[data[i][0]] = {
+                                                      name: name,
+                                                      type: "virtualhost",
+                                                      parent: {
+                                                          name: parentName,
+                                                          type: 
"virtualhostnode",
+                                                          parent: {type: 
"broker"}
+                                                      }
+                                                  };
+                                                  if (this.parentModelObj && 
this.parentModelObj.type == "virtualhost"
+                                                      && 
this.parentModelObj.name == name && this.parentModelObj.parent
+                                                      && 
this.parentModelObj.parent.name == parentName)
                                                   {
-                                                     var attribute = 
headers[i];
-                                                     var column = {label: 
attribute, field: "" + (i + 1), sortable: true};
-                                                     columns.push(column);
-                                                     if (this._columns)
-                                                     {
-                                                       var columnData = 
this._columns[attribute];
-                                                       if (columnData)
-                                                       {
-                                                         if (columnData.type 
== "Date")
-                                                         {
-                                                           var that = this;
-                                                           column.formatter = 
function(value, object)
-                                                                               
   {
-                                                                               
     if (!isNaN(value) &&  parseInt(Number(value)) == value &&  
!isNaN(parseInt(value, 10)))
-                                                                               
     {
-                                                                               
       return that._management.userPreferences.formatDateTime(value, 
{addOffset: true, appendTimeZone: true});
-                                                                               
     }
-                                                                               
     return value ? entities.encode(String(value)) : "";
-                                                                               
   };
-                                                         }
-                                                         else if 
(columnData.type == "Map")
-                                                         {
-                                                           column.renderCell = 
function(object, value, node)
-                                                                               
   {
-                                                                               
     if (value)
-                                                                               
     {
-                                                                               
       var list = domConstruct.create("div", {}, node);
-                                                                               
       for(var i in value)
-                                                                               
       {
-                                                                               
          domConstruct.create("div",
-                                                                               
                               {innerHTML: entities.encode(String(i))
-                                                                               
                                           + ": "
-                                                                               
                                           + 
entities.encode(json.stringify(value[i]))},
-                                                                               
                               list);
-                                                                               
       }
-                                                                               
       return list;
-                                                                               
     }
-                                                                               
     return "";
-                                                                               
   };
-                                                         }
-                                                         else if 
(columnData.type == "List" || columnData.type == "Set")
-                                                         {
-                                                           column.renderCell = 
function(object,value, node)
-                                                                               
   {
-                                                                               
     if (value)
-                                                                               
     {
-                                                                               
       var list = domConstruct.create("div", {}, node);
-                                                                               
       for(var i in value)
-                                                                               
       {
-                                                                               
          domConstruct.create("div", 
{innerHTML:entities.encode(json.stringify(value[i]))}, list)
-                                                                               
       }
-                                                                               
       return list;
-                                                                               
     }
-                                                                               
     return  "";
-                                                                               
   };
-                                                         }
-                                                       }
-                                                     }
+                                                      defaultValue = 
data[i][0];
                                                   }
-                                               }
-                                               return columns;
-                                             },
-                                _createScopeList: function()
-                                             {
-                                               var that = this;
-                                               var result = 
this._management.query({select: "id, $parent.name as parentName, name",
-                                                                               
    category : "virtualhost"});
-                                               var deferred = new 
dojo.Deferred();
-                                               result.then(function(data)
-                                                           {
-                                                             try
-                                                             {
-                                                               
that._scopeDataReceived(data);
-                                                             }
-                                                             finally
-                                                             {
-                                                               
deferred.resolve(that._searchScopeSelector);
-                                                             }
-                                                           },
-                                                           function(error)
-                                                           {
-                                                             
deferred.reject(null);
-                                                             
console.error(error.message ? error.message : error);
-                                                           });
-                                               return deferred.promise;
-                                             },
-                                _scopeDataReceived: function(result)
-                                             {
-                                               this._scopeModelObjects = {};
-                                               var defaultValue = undefined;
-                                               var items = [{id:undefined, 
name: "Broker"}];
-                                               var data = result.results;
-                                               for(var i =0 ; 
i<data.length;i++)
-                                               {
-                                                 var name = data[i][2];
-                                                 var parentName = data[i][1];
-                                                 items.push({id: data[i][0],  
name: "VH:" + parentName + "/" + name});
-                                                 
this._scopeModelObjects[data[i][0]] = {name: name,
-                                                                               
         type: "virtualhost",
-                                                                               
         parent: {name: parentName,
-                                                                               
                  type: "virtualhostnode",
-                                                                               
                  parent: {type: "broker"}
-                                                                               
                 }
-                                                                               
        };
-                                                 if (this.parentModelObj &&
-                                                     this.parentModelObj.type 
== "virtualhost" &&
-                                                     this.parentModelObj.name 
== name &&
-                                                     
this.parentModelObj.parent &&
-                                                     
this.parentModelObj.parent.name == parentName)
-                                                 {
-                                                   defaultValue = data[i][0];
-                                                 }
-                                               }
-
-                                               var scopeStore = new 
DstoreAdapter (new Memory({data: items,
-                                                                               
                idProperty: 'id'}));
-                                               this._searchScopeSelector = new 
dijit.form.FilteringSelect({ name: "scope",
-                                                                               
                             placeHolder: "Select search scope",
-                                                                               
                             store: scopeStore,
-                                                                               
                             value: defaultValue,
-                                                                               
                             required: false
-                                                                               
                           },
-                                                                               
                           this.scope);
-                                               
this._searchScopeSelector.startup();
-                                            },
-                                _createCategoryList: function()
-                                            {
-                                              var categoryStore = new 
DstoreAdapter(new Memory({idProperty: "id",
-                                                                               
                 data: predefinedCategories}));
-                                              var categoryList = new 
dijit.form.ComboBox({name: "category",
-                                                                               
           placeHolder: "Select Category",
-                                                                               
           store: categoryStore,
-                                                                               
           value: this._category || "Queue",
-                                                                               
           required: true,
-                                                                               
           invalidMessage: "Invalid category specified"
-                                                                               
          },
-                                                                               
          this.categoryName);
+                                              }
+
+                                              var scopeStore = new 
DstoreAdapter(new Memory({
+                                                  data: items,
+                                                  idProperty: 'id'
+                                              }));
+                                              this._searchScopeSelector = new 
dijit.form.FilteringSelect({
+                                                  name: "scope",
+                                                  placeHolder: "Select search 
scope",
+                                                  store: scopeStore,
+                                                  value: defaultValue,
+                                                  required: false
+                                              }, this.scope);
+                                              
this._searchScopeSelector.startup();
+                                          },
+                                          _createCategoryList: function ()
+                                          {
+                                              var categoryStore = new 
DstoreAdapter(new Memory({
+                                                  idProperty: "id",
+                                                  data: predefinedCategories
+                                              }));
+                                              var categoryList = new 
dijit.form.ComboBox({
+                                                  name: "category",
+                                                  placeHolder: "Select 
Category",
+                                                  store: categoryStore,
+                                                  value: this._category || 
"Queue",
+                                                  required: true,
+                                                  invalidMessage: "Invalid 
category specified"
+                                              }, this.categoryName);
                                               categoryList.startup();
                                               categoryList.on("change", 
lang.hitch(this, this._categoryChanged));
                                               this._categorySelector = 
categoryList;
-                                            },
-                                _categoryChanged: function()
-                                            {
-                                                this._resetSearch();
-                                                var metadata = 
this._getCategoryMetadata(this._categorySelector.value);
-                                                var disableMetadataDependant = 
!metadata;
-                                                
this.standardWhereChooser.set("disabled", disableMetadataDependant);
-                                                
this.standardSelectChooser.set("disabled", disableMetadataDependant);
-                                                
this.searchButton.set("disabled", disableMetadataDependant || 
!this._store.selectClause);
-                                                
this.modeButton.set("disabled", disableMetadataDependant);
-                                                
this.advancedSelect.set("disabled", disableMetadataDependant);
-                                                
this.advancedWhere.set("disabled", disableMetadataDependant);
-                                                
this.advancedOrderBy.set("disabled", disableMetadataDependant);
-
-                                                if (disableMetadataDependant)
-                                                {
-                                                    dijit.showTooltip(
-                                                        
this._categorySelector.get("invalidMessage"),
-                                                        
this._categorySelector.domNode,
-                                                        
this._categorySelector.get("tooltipPosition"),
-                                                        
!this._categorySelector.isLeftToRight()
-                                                    );
-                                                }
-                                                else
-                                                {
-                                                    var data = 
this._combineTypeAttributesAndStatistics(metadata);
-                                                    this._columns = 
data.asObject;
-                                                    
this.standardSelectChooser.set("data", {items: data.asArray,
-                                                        idProperty: "id",
-                                                        selected:[],
-                                                        nameProperty: 
"attributeName"});
-                                                    
this.standardWhereChooser.set("data", {items: data.asArray,
-                                                        selected:[],
-                                                        idProperty: "id",
-                                                        nameProperty: 
"attributeName"});
-                                                }
-                                            },
-                                _advancedModeKeyPressed:function(evt)
-                                            {
+                                          },
+                                          _categoryChanged: function ()
+                                          {
+                                              this._resetSearch();
+                                              var metadata = 
this._getCategoryMetadata(this._categorySelector.value);
+                                              var disableMetadataDependant = 
!metadata;
+                                              
this.standardWhereChooser.set("disabled", disableMetadataDependant);
+                                              
this.standardSelectChooser.set("disabled", disableMetadataDependant);
+                                              this.searchButton.set("disabled",
+                                                                    
disableMetadataDependant
+                                                                    || 
!this._store.selectClause);
+                                              this.modeButton.set("disabled", 
disableMetadataDependant);
+                                              
this.advancedSelect.set("disabled", disableMetadataDependant);
+                                              
this.advancedWhere.set("disabled", disableMetadataDependant);
+                                              
this.advancedOrderBy.set("disabled", disableMetadataDependant);
+
+                                              if (disableMetadataDependant)
+                                              {
+                                                  
dijit.showTooltip(this._categorySelector.get("invalidMessage"),
+                                                                    
this._categorySelector.domNode,
+                                                                    
this._categorySelector.get("tooltipPosition"),
+                                                                    
!this._categorySelector.isLeftToRight());
+                                              }
+                                              else
+                                              {
+                                                  var data = 
this._combineTypeAttributesAndStatistics(metadata);

[... 231 lines stripped ...]



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

Reply via email to