From 1f96352e3d0bfc0a7cd16f629367ea6bc2e399eb Mon Sep 17 00:00:00 2001 From: Stephane Bisson Date: Mon, 20 Mar 2017 06:54:35 -0400 Subject: [PATCH] Track usage of highlight feature Bug: T158344 Change-Id: I9a0c5e40b813e075ec33eea882b625dc43a15df6 --- .../mw.rcfilters.Controller.js | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js index 44c7bf0a0c..e03482607e 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js @@ -86,12 +86,20 @@ * Empty all selected filters */ mw.rcfilters.Controller.prototype.emptyFilters = function () { + var highlightedFilterNames = this.filtersModel + .getHighlightedItems() + .map( function ( filterItem ) { return { name: filterItem.getName() }; } ); + this.filtersModel.emptyAllFilters(); this.filtersModel.clearAllHighlightColors(); // Check all filter interactions this.filtersModel.reassessFilterInteractions(); this.updateChangesList(); + + if ( highlightedFilterNames ) { + this.trackHighlight( 'clearAll', highlightedFilterNames ); + } }; /** @@ -259,6 +267,7 @@ mw.rcfilters.Controller.prototype.setHighlightColor = function ( filterName, color ) { this.filtersModel.setHighlightColor( filterName, color ); this.updateURL(); + this.trackHighlight( 'set', { name: filterName, color: color } ); }; /** @@ -269,6 +278,7 @@ mw.rcfilters.Controller.prototype.clearHighlightColor = function ( filterName ) { this.filtersModel.clearHighlightColor( filterName ); this.updateURL(); + this.trackHighlight( 'clear', filterName ); }; /** @@ -277,14 +287,19 @@ * @param {string} filterName Name of the filter item */ mw.rcfilters.Controller.prototype.clearFilter = function ( filterName ) { - var filterItem = this.filtersModel.getItemByName( filterName ); + var filterItem = this.filtersModel.getItemByName( filterName ), + isHighlighted = filterItem.isHighlighted(); - if ( filterItem.isSelected() || filterItem.isHighlighted() ) { + if ( filterItem.isSelected() || isHighlighted ) { this.filtersModel.clearHighlightColor( filterName ); this.filtersModel.toggleFilterSelected( filterName, false ); this.updateChangesList(); this.filtersModel.reassessFilterInteractions( filterItem ); } + + if ( isHighlighted ) { + this.trackHighlight( 'clear', filterName ); + } }; /** @@ -298,4 +313,22 @@ this.getUpdatedUri().toString() ); }; + + /** + * Track usage of highlight feature + * + * @param {string} action + * @param {array|object|string} filters + */ + mw.rcfilters.Controller.prototype.trackHighlight = function ( action, filters ) { + filters = $.type( filters ) === 'string' ? { name: filters } : filters; + filters = $.type( filters ) === 'object' ? [ filters ] : filters; + mw.track( + 'event.ChangesListHighlights', + { + action: action, + filters: filters + } + ); + }; }( mediaWiki, jQuery ) ); -- 2.20.1