Author: orudyy
Date: Wed Jul 20 09:47:05 2016
New Revision: 1753476

URL: http://svn.apache.org/viewvc?rev=1753476&view=rev
Log:
QPID-7248: Emit change event from query widget only when query is changed

Modified:
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryGrid.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryGrid.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryGrid.js?rev=1753476&r1=1753475&r2=1753476&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryGrid.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryGrid.js
 Wed Jul 20 09:47:05 2016
@@ -165,8 +165,12 @@ define(["dojo/_base/declare",
                 },
                 setOrderBy: function (orderBy)
                 {
-                    this._store.orderBy = orderBy;
-                    this._sort = [];
+                    // prevent resetting of sort array if orderBy is the same
+                    if (this._store.orderBy !== orderBy)
+                    {
+                        this._store.orderBy = orderBy;
+                        this._sort = [];
+                    }
                 },
                 setUseCachedResults: function (value)
                 {
@@ -176,6 +180,7 @@ define(["dojo/_base/declare",
                 {
                     this._sort = lang.clone(value);
                     this._store.orderBy = this._buildOrderBy(this._sort);
+                    return this._store.orderBy;
                 },
                 getSort: function ()
                 {

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js?rev=1753476&r1=1753475&r2=1753476&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js
 Wed Jul 20 09:47:05 2016
@@ -395,27 +395,33 @@ define(["dojo/_base/declare",
                     var rowsPerPage = valuePresent && 
this.preference.value.limit ? this.preference.value.limit  : 100;
                     var currentPage = valuePresent && 
this.preference.value.offset ?  this.preference.value.offset / rowsPerPage + 1: 
1;
                     this._buildGrid(currentPage, rowsPerPage);
-                    this._initCategory(this.categoryName, !selectPresent);
+                    this._initStandardModeWidgets(this.categoryName, 
!selectPresent);
 
                     if (selectPresent)
                     {
+                        this._standardMode = false;
                         this._configureModalWidgets(false);
-                        this.advancedSelect._lastValueReported = 
this.preference.value.select;
-                        this.advancedWhere._lastValueReported = 
this.preference.value.where;
-                        this.advancedOrderBy._lastValueReported = 
this.preference.value.orderBy;
 
                         this.advancedSelect.set("value", 
this.preference.value.select);
-                        this.advancedWhere.set("value", 
this.preference.value.where);
-                        this.advancedOrderBy.set("value", 
this.preference.value.orderBy);
                         this._setSelectClause(this.advancedSelect.value);
-                        this._resultsGrid.setWhere(this.advancedWhere.value);
-                        
this._resultsGrid.setOrderBy(this.advancedOrderBy.value);
+                        if (this.preference.value.where )
+                        {
+                            this.advancedWhere.set("value", 
this.preference.value.where);
+                            this._setWhereClause(this.advancedWhere.value);
+                        }
+                        if (this.preference.value.orderBy)
+                        {
+                            this.advancedOrderBy.set("value", 
this.preference.value.orderBy);
+                            this._setOrderByClause(this.advancedOrderBy.value);
+                        }
+
                         this._toggleSearchButton(this.preference.value.select);
                     }
                     else
                     {
                         this._toggleSearchButton(true);
                     }
+                    this._lastQuery = this._getQuery();
                 },
                 search: function ()
                 {
@@ -495,6 +501,16 @@ define(["dojo/_base/declare",
                     this._selectClause = select;
                     this._resultsGrid.setSelect(select ? select + ",id" : "");
                 },
+                _setWhereClause: function (where)
+                {
+                    this._whereClause = where;
+                    this._resultsGrid.setWhere(where);
+                },
+                _setOrderByClause: function (orderBy)
+                {
+                    this._orderByClause = orderBy;
+                    this._resultsGrid.setOrderBy(orderBy);
+                },
                 _advancedModeSelectChanged: function ()
                 {
                     this._setSelectClause(this.advancedSelect.value);
@@ -503,13 +519,13 @@ define(["dojo/_base/declare",
                 },
                 _advancedModeWhereChanged: function ()
                 {
-                    this._resultsGrid.setWhere(this.advancedWhere.value);
+                    this._setWhereClause(this.advancedWhere.value);
                     this._queryChanged();
                     this._submitIfEnterPressed();
                 },
                 _advancedModeOrderByChanged: function ()
                 {
-                    this._resultsGrid.setOrderBy(this.advancedOrderBy.value);
+                    this._setOrderByClause(this.advancedOrderBy.value);
                     this._queryChanged();
                     this._submitIfEnterPressed();
                 },
@@ -570,7 +586,7 @@ define(["dojo/_base/declare",
                             }
                         }
                     }
-                    this._resultsGrid.setSort(newSort);
+                    this._setOrderByClause(this._resultsGrid.setSort(newSort));
                 },
                 _processStandardModeSelectChange: function (selectedColumns)
                 {
@@ -640,7 +656,7 @@ define(["dojo/_base/declare",
                 },
                 _standardModeWhereChanged: function (result)
                 {
-                    this._resultsGrid.setWhere(result);
+                    this._setWhereClause(result);
                     this.search();
                     this._queryChanged();
                 },
@@ -697,7 +713,14 @@ define(["dojo/_base/declare",
                     grid.on('queryCompleted', lang.hitch(this, 
this._queryCompleted));
                     grid.on('orderByChanged', lang.hitch(this, function (event)
                     {
-                        this.advancedOrderBy.set("value", event.orderBy);
+                        if (this._standardMode)
+                        {
+                            this._setOrderByClause(event.orderBy);
+                        }
+                        else
+                        {
+                            this.advancedOrderBy.set("value", event.orderBy);
+                        }
                         this._queryChanged();
                     }));
                     grid.on('dgrid-columnreorder', lang.hitch(this, 
this._standardModeColumnOrderChanged));
@@ -824,16 +847,16 @@ define(["dojo/_base/declare",
                     }
                     return columns;
                 },
-                _initCategory: function (value, isNew)
+                _initStandardModeWidgets: function (category, isNew)
                 {
-                    var metadata = this._getCategoryMetadata(value);
+                    var metadata = this._getCategoryMetadata(category);
                     var columns, items, selectedItems;
                     if (metadata)
                     {
                         var data = 
this._combineTypeAttributesAndStatistics(metadata);
                         columns = data.asObject;
                         items = data.asArray;
-                        selectedItems = isNew ?  this.getDefaultColumns(value) 
: [];
+                        selectedItems = isNew ? 
this.getDefaultColumns(category) : [];
 
                         this.standardSelectChooser.set("data", {
                           items: items,
@@ -849,8 +872,11 @@ define(["dojo/_base/declare",
                         });
                         this._columns = columns;
                         this._lastStandardModeSelect = 
this.standardSelectChooser.get("selectedItems");
-                        var select = 
this._buildSelectExpression(this._lastStandardModeSelect);
-                        this._setSelectClause(select);
+                        if (isNew)
+                        {
+                            var select = 
this._buildSelectExpression(this._lastStandardModeSelect);
+                            this._setSelectClause(select);
+                        }
                     }
                 },
                 _advancedModeKeyPressed: function (evt)
@@ -875,16 +901,9 @@ define(["dojo/_base/declare",
                     this._configureModalWidgets(this._standardMode);
                     if (!this._standardMode)
                     {
-                        var selectValue = 
this._buildSelectExpression(this.standardSelectChooser.get("selectedItems"));
-                        var whereValue = this._resultsGrid.getWhere();
-                        var orderByValue = this._resultsGrid.getOrderBy();
-
-                        this.advancedSelect._lastValueReported = selectValue;
-                        this.advancedWhere._lastValueReported = whereValue;
-                        this.advancedOrderBy._lastValueReported = orderByValue;
-                        this.advancedSelect.set("value", selectValue);
-                        this.advancedOrderBy.set("value", orderByValue);
-                        this.advancedWhere.set("value", whereValue);
+                        this.advancedSelect.set("value", this._selectClause);
+                        this.advancedOrderBy.set("value", this._orderByClause);
+                        this.advancedWhere.set("value", this._whereClause);
 
                         // rebuild columns to disable column reordering and 
removal
                         if (this._lastHeaders && this._lastHeaders.length)
@@ -905,9 +924,8 @@ define(["dojo/_base/declare",
                         this._lastHeaders = [];
                         var select = 
this._buildSelectExpression(this._lastStandardModeSelect);
                         this._setSelectClause(select);
-                        this._resultsGrid.setWhere("");
-                        this._resultsGrid.setOrderBy("");
-                        this._resultsGrid.setSort([]);
+                        this._setWhereClause("");
+                        this._setOrderByClause("");
                         this._toggleSearchButton(select);
                         this._resultsGrid.hiderToggleNode.style.display = '';
                         this.search();
@@ -1013,18 +1031,14 @@ define(["dojo/_base/declare",
                         asObject: columnsObject
                     };
                 },
-                _getQuery: function (queryObject)
+                _getQuery: function ()
                 {
-                    var query = {
-                        where: "",
-                        orderBy: ""
+                    return {
+                        select: this._selectClause,
+                        where: this._whereClause,
+                        orderBy: this._orderByClause,
+                        category: this.categoryName
                     };
-
-                    lang.mixin(query, queryObject || 
this._resultsGrid.getQuery());
-
-                    query.select = this._selectClause;
-                    query.category = this.categoryName;
-                    return query;
                 },
                 _saveQuery: function ()
                 {
@@ -1065,24 +1079,7 @@ define(["dojo/_base/declare",
                 },
                 _onQueryClone: function (e)
                 {
-                    var preference = lang.clone(this.preference);
-                    if (preference.visibilityList)
-                    {
-                        delete preference.visibilityList;
-                    }
-                    if (preference.name)
-                    {
-                        delete preference.name;
-                    }
-                    if (preference.id)
-                    {
-                        delete preference.id;
-                    }
-                    if (preference.owner)
-                    {
-                        delete preference.owner;
-                    }
-                    preference.value = this._getQuery();
+                    var preference = {type: "query", value: this._getQuery()};
                     this._queryCloneDialog.hide();
                     this.emit("clone", {preference: preference, parentObject: 
e.parentObject});
                 },
@@ -1120,14 +1117,21 @@ define(["dojo/_base/declare",
                 {
                     return this.management.getPreference(this.parentObject, 
"query", name)
                 },
-                _queryChanged: function(query)
+                _queryChanged: function()
                 {
                     if (this._ownQuery)
                     {
-                        var queryParameters = this._getQuery(query);
-                        var pref = lang.clone(this.preference);
-                        pref.value = queryParameters;
-                        this.emit("change", {preference: pref});
+                        var query = this._getQuery();
+
+                        if (this._lastQuery.orderBy !== query.orderBy
+                            || this._lastQuery.where !== query.where
+                            || this._lastQuery.select !== query.select)
+                        {
+                            var pref = lang.clone(this.preference);
+                            pref.value = query;
+                            this._lastQuery = lang.clone(query);
+                            this.emit("change", {preference: pref});
+                        }
                     }
                 }
             });



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

Reply via email to