[MediaWiki-commits] [Gerrit] mediawiki/core[master]: RCFilters: Minimize saved query before comparison

2017-08-28 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/374402 )

Change subject: RCFilters: Minimize saved query before comparison
..


RCFilters: Minimize saved query before comparison

Bug: T174193
Change-Id: I8e9345e8899fd27565930896e62c4d3be235ad58
---
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
1 file changed, 32 insertions(+), 1 deletion(-)

Approvals:
  Sbisson: Looks good to me, approved
  jenkins-bot: Verified



diff --git 
a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js 
b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
index a7f3d23..d87ef734 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
@@ -18,6 +18,7 @@
OO.EmitterList.call( this );
 
this.default = config.default;
+   this.baseState = {};
 
// Events
this.aggregate( { update: 'itemUpdate' } );
@@ -171,15 +172,45 @@
 * @return {mw.rcfilters.dm.SavedQueryItemModel} Matching item model
 */
mw.rcfilters.dm.SavedQueriesModel.prototype.findMatchingQuery = 
function ( fullQueryComparison ) {
+   var model = this;
+
+   fullQueryComparison = this.getDifferenceFromBase( 
fullQueryComparison );
+
return this.getItems().filter( function ( item ) {
+   var comparedData = model.getDifferenceFromBase( 
item.getData() );
return OO.compare(
-   item.getData(),
+   comparedData,
fullQueryComparison
);
} )[ 0 ];
};
 
/**
+* Get a minimal representation of the state for comparison
+*
+* @param {Object} state Given state
+* @return {Object} Minimal state
+*/
+   mw.rcfilters.dm.SavedQueriesModel.prototype.getDifferenceFromBase = 
function ( state ) {
+   var result = { filters: {}, highlights: {}, invert: 
state.invert },
+   baseState = this.baseState;
+
+   // XOR results
+   $.each( state.filters, function ( name, value ) {
+   if ( baseState.filters !== undefined && 
baseState.filters[ name ] !== value ) {
+   result.filters[ name ] = value;
+   }
+   } );
+
+   $.each( state.highlights, function ( name, value ) {
+   if ( baseState.highlights !== undefined && 
baseState.highlights[ name ] !== value && name !== 'highlight' ) {
+   result.highlights[ name ] = value;
+   }
+   } );
+
+   return result;
+   };
+   /**
 * Get query by its identifier
 *
 * @param {string} queryID Query identifier

-- 
To view, visit https://gerrit.wikimedia.org/r/374402
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I8e9345e8899fd27565930896e62c4d3be235ad58
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Mooeypoo 
Gerrit-Reviewer: Jack Phoenix 
Gerrit-Reviewer: Sbisson 
Gerrit-Reviewer: jenkins-bot <>

___
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits


[MediaWiki-commits] [Gerrit] mediawiki/core[master]: RCFilters: Minimize saved query before comparison

2017-08-28 Thread Mooeypoo (Code Review)
Mooeypoo has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/374402 )

Change subject: RCFilters: Minimize saved query before comparison
..

RCFilters: Minimize saved query before comparison

Bug: T174193
Change-Id: I8e9345e8899fd27565930896e62c4d3be235ad58
---
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
1 file changed, 32 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/02/374402/1

diff --git 
a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js 
b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
index a7f3d23..d87ef734 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
@@ -18,6 +18,7 @@
OO.EmitterList.call( this );
 
this.default = config.default;
+   this.baseState = {};
 
// Events
this.aggregate( { update: 'itemUpdate' } );
@@ -171,15 +172,45 @@
 * @return {mw.rcfilters.dm.SavedQueryItemModel} Matching item model
 */
mw.rcfilters.dm.SavedQueriesModel.prototype.findMatchingQuery = 
function ( fullQueryComparison ) {
+   var model = this;
+
+   fullQueryComparison = this.getDifferenceFromBase( 
fullQueryComparison );
+
return this.getItems().filter( function ( item ) {
+   var comparedData = model.getDifferenceFromBase( 
item.getData() );
return OO.compare(
-   item.getData(),
+   comparedData,
fullQueryComparison
);
} )[ 0 ];
};
 
/**
+* Get a minimal representation of the state for comparison
+*
+* @param {Object} state Given state
+* @return {Object} Minimal state
+*/
+   mw.rcfilters.dm.SavedQueriesModel.prototype.getDifferenceFromBase = 
function ( state ) {
+   var result = { filters: {}, highlights: {}, invert: 
state.invert },
+   baseState = this.baseState;
+
+   // XOR results
+   $.each( state.filters, function ( name, value ) {
+   if ( baseState.filters !== undefined && 
baseState.filters[ name ] !== value ) {
+   result.filters[ name ] = value;
+   }
+   } );
+
+   $.each( state.highlights, function ( name, value ) {
+   if ( baseState.highlights !== undefined && 
baseState.highlights[ name ] !== value && name !== 'highlight' ) {
+   result.highlights[ name ] = value;
+   }
+   } );
+
+   return result;
+   };
+   /**
 * Get query by its identifier
 *
 * @param {string} queryID Query identifier

-- 
To view, visit https://gerrit.wikimedia.org/r/374402
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8e9345e8899fd27565930896e62c4d3be235ad58
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Mooeypoo 

___
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits