Skip to content

Commit f22ed7a

Browse files
jenkins-botGerrit Code Review
authored andcommitted
Merge "RCFilters: Log filter groupings"
2 parents 4a6d1f1 + 4b631fe commit f22ed7a

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed

resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -887,6 +887,20 @@
887887
} );
888888
};
889889

890+
/**
891+
* Get all selected items
892+
*
893+
* @return {mw.rcfilters.dm.FilterItem[]} Selected items
894+
*/
895+
mw.rcfilters.dm.FiltersViewModel.prototype.getSelectedItems = function () {
896+
var allSelected = [];
897+
898+
$.each( this.getFilterGroups(), function ( groupName, groupModel ) {
899+
allSelected = allSelected.concat( groupModel.getSelectedItems() );
900+
} );
901+
902+
return allSelected;
903+
};
890904
/**
891905
* Switch the current view
892906
*

resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
this.baseFilterState = {};
1616
this.uriProcessor = null;
1717
this.initializing = false;
18+
19+
this.prevLoggedItems = [];
1820
};
1921

2022
/* Initialization */
@@ -221,6 +223,9 @@
221223
this.filtersModel.toggleFilterSelected( filterName, false );
222224
this.updateChangesList();
223225
this.filtersModel.reassessFilterInteractions( filterItem );
226+
227+
// Log filter grouping
228+
this.trackFilterGroupings( 'removefilter' );
224229
}
225230

226231
if ( isHighlighted ) {
@@ -412,6 +417,9 @@
412417
this.filtersModel.reassessFilterInteractions();
413418

414419
this.updateChangesList();
420+
421+
// Log filter grouping
422+
this.trackFilterGroupings( 'savedfilters' );
415423
}
416424
};
417425

@@ -802,4 +810,51 @@
802810
);
803811
};
804812

813+
/**
814+
* Track filter grouping usage
815+
*
816+
* @param {string} action Action taken
817+
*/
818+
mw.rcfilters.Controller.prototype.trackFilterGroupings = function ( action ) {
819+
var controller = this,
820+
rightNow = new Date().getTime(),
821+
randomIdentifier = String( mw.user.sessionId() ) + String( rightNow ) + String( Math.random() ),
822+
// Get all current filters
823+
filters = this.filtersModel.getSelectedItems().map( function ( item ) {
824+
return item.getName();
825+
} );
826+
827+
action = action || 'filtermenu';
828+
829+
// Check if these filters were the ones we just logged previously
830+
// (Don't log the same grouping twice, in case the user opens/closes)
831+
// the menu without action, or with the same result
832+
if (
833+
// Only log if the two arrays are different in size
834+
filters.length !== this.prevLoggedItems.length ||
835+
// Or if any filters are not the same as the cached filters
836+
filters.some( function ( filterName ) {
837+
return controller.prevLoggedItems.indexOf( filterName ) === -1;
838+
} ) ||
839+
// Or if any cached filters are not the same as given filters
840+
this.prevLoggedItems.some( function ( filterName ) {
841+
return filters.indexOf( filterName ) === -1;
842+
} )
843+
) {
844+
filters.forEach( function ( filterName ) {
845+
mw.track(
846+
'event.ChangesListFilterGrouping',
847+
{
848+
action: action,
849+
groupIdentifier: randomIdentifier,
850+
filter: filterName,
851+
userId: mw.user.getId()
852+
}
853+
);
854+
} );
855+
856+
// Cache the filter names
857+
this.prevLoggedItems = filters;
858+
}
859+
};
805860
}( mediaWiki, jQuery ) );

resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,9 @@
290290
// Clear the input
291291
this.input.setValue( '' );
292292
}
293+
294+
// Log filter grouping
295+
this.controller.trackFilterGroupings( 'filtermenu' );
293296
}
294297

295298
this.input.setIcon( isVisible ? 'search' : 'menu' );

0 commit comments

Comments
 (0)