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]
