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 <mor...@gmail.com> Gerrit-Reviewer: Jack Phoenix <j...@countervandalism.net> Gerrit-Reviewer: Sbisson <sbis...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits