aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--resources/src/mediawiki.rcfilters/Controller.js57
-rw-r--r--resources/src/mediawiki.rcfilters/UriProcessor.js39
-rw-r--r--resources/src/mediawiki.rcfilters/dm/FilterGroup.js62
-rw-r--r--resources/src/mediawiki.rcfilters/dm/FilterItem.js9
-rw-r--r--resources/src/mediawiki.rcfilters/dm/FiltersViewModel.js86
-rw-r--r--resources/src/mediawiki.rcfilters/dm/SavedQueriesModel.js5
-rw-r--r--resources/src/mediawiki.rcfilters/mw.rcfilters.js16
-rw-r--r--resources/src/mediawiki.rcfilters/ui/ChangesLimitAndDateButtonWidget.js21
-rw-r--r--resources/src/mediawiki.rcfilters/ui/ChangesListWrapperWidget.js31
-rw-r--r--resources/src/mediawiki.rcfilters/ui/DatePopupWidget.js5
-rw-r--r--resources/src/mediawiki.rcfilters/ui/FilterMenuOptionWidget.js5
-rw-r--r--resources/src/mediawiki.rcfilters/ui/FilterMenuSectionOptionWidget.js5
-rw-r--r--resources/src/mediawiki.rcfilters/ui/FilterTagItemWidget.js5
-rw-r--r--resources/src/mediawiki.rcfilters/ui/FilterTagMultiselectWidget.js16
-rw-r--r--resources/src/mediawiki.rcfilters/ui/FilterWrapperWidget.js10
-rw-r--r--resources/src/mediawiki.rcfilters/ui/HighlightPopupWidget.js5
-rw-r--r--resources/src/mediawiki.rcfilters/ui/ItemMenuOptionWidget.js20
-rw-r--r--resources/src/mediawiki.rcfilters/ui/MainWrapperWidget.js7
-rw-r--r--resources/src/mediawiki.rcfilters/ui/MenuSelectWidget.js25
-rw-r--r--resources/src/mediawiki.rcfilters/ui/RcTopSectionWidget.js5
-rw-r--r--resources/src/mediawiki.rcfilters/ui/RclTopSectionWidget.js13
-rw-r--r--resources/src/mediawiki.rcfilters/ui/SaveFiltersPopupButtonWidget.js8
-rw-r--r--resources/src/mediawiki.rcfilters/ui/SavedLinksListWidget.js5
-rw-r--r--resources/src/mediawiki.rcfilters/ui/ViewSwitchWidget.js4
-rw-r--r--resources/src/mediawiki.rcfilters/ui/WatchlistTopSectionWidget.js20
25 files changed, 205 insertions, 279 deletions
diff --git a/resources/src/mediawiki.rcfilters/Controller.js b/resources/src/mediawiki.rcfilters/Controller.js
index eb3c5032f866..78f6d12b9b78 100644
--- a/resources/src/mediawiki.rcfilters/Controller.js
+++ b/resources/src/mediawiki.rcfilters/Controller.js
@@ -1,6 +1,5 @@
-let byteLength = require( 'mediawiki.String' ).byteLength,
- UriProcessor = require( './UriProcessor.js' ),
- Controller;
+const byteLength = require( 'mediawiki.String' ).byteLength,
+ UriProcessor = require( './UriProcessor.js' );
/* eslint no-underscore-dangle: "off" */
/**
@@ -22,7 +21,7 @@ let byteLength = require( 'mediawiki.String' ).byteLength,
* title normalization to separate title subpage/parts into the target= url
* parameter
*/
-Controller = function MwRcfiltersController( filtersModel, changesListModel, savedQueriesModel, config ) {
+const Controller = function MwRcfiltersController( filtersModel, changesListModel, savedQueriesModel, config ) {
this.filtersModel = filtersModel;
this.changesListModel = changesListModel;
this.savedQueriesModel = savedQueriesModel;
@@ -59,17 +58,14 @@ OO.initClass( Controller );
* @param {Object} [conditionalViews] Conditional view definition
*/
Controller.prototype.initialize = function ( filterStructure, namespaceStructure, tagList, conditionalViews ) {
- let parsedSavedQueries, pieces,
- nsAllContents, nsAllDiscussions,
- displayConfig = mw.config.get( 'StructuredChangeFiltersDisplayConfig' ),
+ const displayConfig = mw.config.get( 'StructuredChangeFiltersDisplayConfig' ),
defaultSavedQueryExists = mw.config.get( 'wgStructuredChangeFiltersDefaultSavedQueryExists' ),
controller = this,
views = $.extend( true, {}, conditionalViews ),
- items = [],
url = new URL( location.href );
// Prepare views
- nsAllContents = {
+ const nsAllContents = {
name: 'all-contents',
label: mw.msg( 'rcfilters-allcontents-label' ),
description: '',
@@ -77,7 +73,7 @@ Controller.prototype.initialize = function ( filterStructure, namespaceStructure
cssClass: 'mw-changeslist-ns-subject',
subset: []
};
- nsAllDiscussions = {
+ const nsAllDiscussions = {
name: 'all-discussions',
label: mw.msg( 'rcfilters-alldiscussions-label' ),
description: '',
@@ -85,7 +81,7 @@ Controller.prototype.initialize = function ( filterStructure, namespaceStructure
cssClass: 'mw-changeslist-ns-talk',
subset: []
};
- items = [ nsAllContents, nsAllDiscussions ];
+ const items = [ nsAllContents, nsAllDiscussions ];
for ( const namespaceID in namespaceStructure ) {
const label = namespaceStructure[ namespaceID ];
// Build and clean up the individual namespace items definition
@@ -272,6 +268,7 @@ Controller.prototype.initialize = function ( filterStructure, namespaceStructure
{ normalizeTarget: this.normalizeTarget }
);
+ let parsedSavedQueries;
if ( !mw.user.isAnon() ) {
try {
parsedSavedQueries = JSON.parse( mw.user.options.get( this.savedQueriesPreferenceName ) || '{}' );
@@ -302,7 +299,7 @@ Controller.prototype.initialize = function ( filterStructure, namespaceStructure
// again
this.updateStateFromUrl( false );
- pieces = this._extractChangesListInfo( $( '#mw-content-text' ) );
+ const pieces = this._extractChangesListInfo( $( '#mw-content-text' ) );
// Update the changes list with the existing data
// so it gets processed
@@ -344,8 +341,7 @@ Controller.prototype.isInitialized = function () {
* @return {jQuery} return.fieldset Fieldset
*/
Controller.prototype._extractChangesListInfo = function ( $root, statusCode ) {
- let info,
- $changesListContents = $root.find( '.mw-changeslist' ).first().contents(),
+ const $changesListContents = $root.find( '.mw-changeslist' ).first().contents(),
areResults = !!$changesListContents.length,
checkForLogout = !areResults && statusCode === 200;
@@ -359,7 +355,7 @@ Controller.prototype._extractChangesListInfo = function ( $root, statusCode ) {
return;
}
- info = {
+ const info = {
changes: $changesListContents.length ? $changesListContents : 'NO_RESULTS',
fieldset: $root.find( 'fieldset.cloptions' ).first()
};
@@ -814,10 +810,9 @@ Controller.prototype.setDefaultSavedQuery = function ( queryID ) {
* @param {string} queryID Query id
*/
Controller.prototype.applySavedQuery = function ( queryID ) {
- let currentMatchingQuery,
- params = this.savedQueriesModel.getItemParams( queryID );
+ const params = this.savedQueriesModel.getItemParams( queryID );
- currentMatchingQuery = this.findQueryMatchingCurrentState();
+ const currentMatchingQuery = this.findQueryMatchingCurrentState();
if (
currentMatchingQuery &&
@@ -854,12 +849,11 @@ Controller.prototype.findQueryMatchingCurrentState = function () {
* query item representation in the user settings.
*/
Controller.prototype._saveSavedQueries = function () {
- let stringified, oldPrefValue,
- backupPrefName = this.savedQueriesPreferenceName + '-versionbackup',
+ const backupPrefName = this.savedQueriesPreferenceName + '-versionbackup',
state = this.savedQueriesModel.getState();
// Stringify state
- stringified = JSON.stringify( state );
+ const stringified = JSON.stringify( state );
if ( byteLength( stringified ) > 65535 ) {
// Double check, since the preference can only hold that.
@@ -869,7 +863,7 @@ Controller.prototype._saveSavedQueries = function () {
if ( !this.wereSavedQueriesSaved && this.savedQueriesModel.isConverted() ) {
// The queries were converted from the previous version
// Keep the old string in the [prefname]-versionbackup
- oldPrefValue = mw.user.options.get( this.savedQueriesPreferenceName );
+ const oldPrefValue = mw.user.options.get( this.savedQueriesPreferenceName );
// Save the old preference in the backup preference
new mw.Api().saveOption( backupPrefName, oldPrefValue );
@@ -1050,10 +1044,8 @@ Controller.prototype._getDefaultParams = function () {
* @return {jQuery.Promise} Promise object resolved with { content, status }
*/
Controller.prototype._queryChangesList = function ( counterId, params ) {
- let uri = this.uriProcessor.getUpdatedUri(),
- stickyParams = this.filtersModel.getStickyParamsValues(),
- requestId,
- latestRequest;
+ const uri = this.uriProcessor.getUpdatedUri(),
+ stickyParams = this.filtersModel.getStickyParamsValues();
params = params || {};
params.action = 'render'; // bypasses MW chrome
@@ -1061,8 +1053,8 @@ Controller.prototype._queryChangesList = function ( counterId, params ) {
uri.extend( params );
this.requestCounter[ counterId ] = this.requestCounter[ counterId ] || 0;
- requestId = ++this.requestCounter[ counterId ];
- latestRequest = function () {
+ const requestId = ++this.requestCounter[ counterId ];
+ const latestRequest = function () {
return requestId === this.requestCounter[ counterId ];
}.bind( this );
@@ -1109,8 +1101,6 @@ Controller.prototype._fetchChangesList = function () {
return this._queryChangesList( 'updateChangesList' )
.then(
( data ) => {
- let $parsed;
-
// Status code 0 is not HTTP status code,
// but is valid value of XMLHttpRequest status.
// It is used for variety of network errors, for example
@@ -1124,7 +1114,7 @@ Controller.prototype._fetchChangesList = function () {
};
}
- $parsed = $( '<div>' ).append( $( $.parseHTML(
+ const $parsed = $( '<div>' ).append( $( $.parseHTML(
data ? data.content : ''
) ) );
@@ -1141,12 +1131,11 @@ Controller.prototype._fetchChangesList = function () {
* @return {boolean} New applied model state is different than the previous state
*/
Controller.prototype.applyParamChange = function ( newParamState ) {
- let after,
- before = this.filtersModel.getSelectedState();
+ const before = this.filtersModel.getSelectedState();
this.filtersModel.updateStateFromParams( newParamState );
- after = this.filtersModel.getSelectedState();
+ const after = this.filtersModel.getSelectedState();
return !OO.compare( before, after );
};
diff --git a/resources/src/mediawiki.rcfilters/UriProcessor.js b/resources/src/mediawiki.rcfilters/UriProcessor.js
index 44d360f6228d..72789940803a 100644
--- a/resources/src/mediawiki.rcfilters/UriProcessor.js
+++ b/resources/src/mediawiki.rcfilters/UriProcessor.js
@@ -108,10 +108,8 @@ UriProcessor.prototype.getUpdatedUri = function ( uri ) {
* @private
*/
UriProcessor.prototype._normalizeTargetInUri = function ( uri ) {
- let parts,
- // matches [/wiki/]SpecialNS:RCL/[Namespace:]Title/Subpage/Subsubpage/etc
-
- re = /^((?:\/.+?\/)?.*?:.*?)\/(.*)$/;
+ // matches [/wiki/]SpecialNS:RCL/[Namespace:]Title/Subpage/Subsubpage/etc
+ const re = /^((?:\/.+?\/)?.*?:.*?)\/(.*)$/;
if ( !this.normalizeTarget ) {
return uri;
@@ -119,18 +117,18 @@ UriProcessor.prototype._normalizeTargetInUri = function ( uri ) {
// target in title param
if ( uri.query.title ) {
- parts = uri.query.title.match( re );
- if ( parts ) {
- uri.query.title = parts[ 1 ];
- uri.query.target = parts[ 2 ];
+ const titleParts = uri.query.title.match( re );
+ if ( titleParts ) {
+ uri.query.title = titleParts[ 1 ];
+ uri.query.target = titleParts[ 2 ];
}
}
// target in path
- parts = mw.Uri.decode( uri.path ).match( re );
- if ( parts ) {
- uri.path = parts[ 1 ];
- uri.query.target = parts[ 2 ];
+ const pathParts = mw.Uri.decode( uri.path ).match( re );
+ if ( pathParts ) {
+ uri.path = pathParts[ 1 ];
+ uri.query.target = pathParts[ 2 ];
}
return uri;
@@ -210,25 +208,24 @@ UriProcessor.prototype.updateModelBasedOnQuery = function ( uriQuery ) {
* @return {boolean} This is a new state
*/
UriProcessor.prototype.isNewState = function ( currentUriQuery, updatedUriQuery ) {
- let currentParamState, updatedParamState,
- notEquivalent = function ( obj1, obj2 ) {
- const keys = Object.keys( obj1 ).concat( Object.keys( obj2 ) );
- return keys.some(
- ( key ) => obj1[ key ] != obj2[ key ] // eslint-disable-line eqeqeq
- );
- };
+ const notEquivalent = function ( obj1, obj2 ) {
+ const keys = Object.keys( obj1 ).concat( Object.keys( obj2 ) );
+ return keys.some(
+ ( key ) => obj1[ key ] != obj2[ key ] // eslint-disable-line eqeqeq
+ );
+ };
// Compare states instead of parameters
// This will allow us to always have a proper check of whether
// the requested new url is one to change or not, regardless of
// actual parameter visibility/representation in the URL
- currentParamState = $.extend(
+ const currentParamState = $.extend(
true,
{},
this.filtersModel.getMinimizedParamRepresentation( currentUriQuery ),
this.getUnrecognizedParams( currentUriQuery )
);
- updatedParamState = $.extend(
+ const updatedParamState = $.extend(
true,
{},
this.filtersModel.getMinimizedParamRepresentation( updatedUriQuery ),
diff --git a/resources/src/mediawiki.rcfilters/dm/FilterGroup.js b/resources/src/mediawiki.rcfilters/dm/FilterGroup.js
index 226d22a08d4d..f1af28648260 100644
--- a/resources/src/mediawiki.rcfilters/dm/FilterGroup.js
+++ b/resources/src/mediawiki.rcfilters/dm/FilterGroup.js
@@ -1,6 +1,5 @@
-let FilterItem = require( './FilterItem.js' ),
- utils = require( '../utils.js' ),
- FilterGroup;
+const FilterItem = require( './FilterItem.js' ),
+ utils = require( '../utils.js' );
/**
* View model for a filter group.
@@ -42,7 +41,7 @@ let FilterItem = require( './FilterItem.js' ),
* @param {string} [config.whatsThis.linkMessage] The text for the link in the whatsThis popup message
* @param {boolean} [config.visible=true] The visibility of the group
*/
-FilterGroup = function MwRcfiltersDmFilterGroup( name, config ) {
+const FilterGroup = function MwRcfiltersDmFilterGroup( name, config ) {
config = config || {};
// Mixin constructor
@@ -99,29 +98,28 @@ OO.mixinClass( FilterGroup, OO.EmitterList );
* @param {string|Object} [groupDefault] Definition of the group default
*/
FilterGroup.prototype.initializeFilters = function ( filterDefinition, groupDefault ) {
- let defaultParam,
- supersetMap = {},
+ let defaultParam;
+ const supersetMap = {},
model = this,
items = [];
filterDefinition.forEach( ( filter ) => {
// Instantiate an item
- let subsetNames = [],
- filterItem = new FilterItem( filter.name, model, {
- group: model.getName(),
- label: filter.label || filter.name,
- description: filter.description || '',
- labelPrefixKey: model.labelPrefixKey,
- cssClass: filter.cssClass,
- helpLink: filter.helpLink,
- identifiers: filter.identifiers,
- defaultHighlightColor: filter.defaultHighlightColor
- } );
+ const filterItem = new FilterItem( filter.name, model, {
+ group: model.getName(),
+ label: filter.label || filter.name,
+ description: filter.description || '',
+ labelPrefixKey: model.labelPrefixKey,
+ cssClass: filter.cssClass,
+ helpLink: filter.helpLink,
+ identifiers: filter.identifiers,
+ defaultHighlightColor: filter.defaultHighlightColor
+ } );
if ( filter.subset ) {
filter.subset = filter.subset.map( ( el ) => el.filter );
- subsetNames = [];
+ const subsetNames = [];
filter.subset.forEach( ( subsetFilterName ) => {
// Subsets (unlike conflicts) are always inside the same group
@@ -237,8 +235,8 @@ FilterGroup.prototype.initializeFilters = function ( filterDefinition, groupDefa
*/
FilterGroup.prototype.onFilterItemUpdate = function ( item ) {
// Update state
- let changed = false,
- active = this.areAnySelected(),
+ let changed = false;
+ const active = this.areAnySelected(),
model = this;
if ( this.getType() === 'single_option' ) {
@@ -526,16 +524,14 @@ FilterGroup.prototype.areAnySelectedInConflictWith = function ( filterItem ) {
* @return {Object} Parameter representation
*/
FilterGroup.prototype.getParamRepresentation = function ( filterRepresentation ) {
- let values,
- areAnySelected = false,
- buildFromCurrentState = !filterRepresentation,
+ let areAnySelected = false;
+ const buildFromCurrentState = !filterRepresentation,
defaultFilters = this.getDefaultFilters(),
result = {},
model = this,
filterParamNames = {},
getSelectedParameter = function ( filters ) {
- let item,
- selected = [];
+ const selected = [];
// Find if any are selected
// eslint-disable-next-line no-jquery/no-each-util
@@ -545,7 +541,7 @@ FilterGroup.prototype.getParamRepresentation = function ( filterRepresentation )
}
} );
- item = model.getItemByName( selected[ 0 ] );
+ const item = model.getItemByName( selected[ 0 ] );
return ( item && item.getParamName() ) || '';
};
@@ -603,7 +599,7 @@ FilterGroup.prototype.getParamRepresentation = function ( filterRepresentation )
}
} );
} else if ( this.getType() === 'string_options' ) {
- values = [];
+ const values = [];
// eslint-disable-next-line no-jquery/no-each-util
$.each( filterRepresentation, ( name, value ) => {
@@ -634,9 +630,9 @@ FilterGroup.prototype.getParamRepresentation = function ( filterRepresentation )
* @return {Object} Filter representation
*/
FilterGroup.prototype.getFilterRepresentation = function ( paramRepresentation ) {
- let areAnySelected, paramValues, item, currentValue,
- oneWasSelected = false,
- defaultParams = this.getDefaultParams(),
+ let areAnySelected,
+ oneWasSelected = false;
+ const defaultParams = this.getDefaultParams(),
expandedParams = $.extend( true, {}, paramRepresentation ),
model = this,
paramToFilterMap = {},
@@ -688,10 +684,10 @@ FilterGroup.prototype.getFilterRepresentation = function ( paramRepresentation )
}
} );
} else if ( this.getType() === 'string_options' ) {
- currentValue = paramRepresentation[ this.getName() ] || '';
+ const currentValue = paramRepresentation[ this.getName() ] || '';
// Normalize the given parameter values
- paramValues = utils.normalizeParamOptions(
+ const paramValues = utils.normalizeParamOptions(
// Given
currentValue.split(
this.getSeparator()
@@ -737,7 +733,7 @@ FilterGroup.prototype.getFilterRepresentation = function ( paramRepresentation )
this.getType() === 'single_option' &&
!oneWasSelected
) {
- item = this.getItems()[ 0 ];
+ let item = this.getItems()[ 0 ];
if ( defaultParams[ this.getName() ] ) {
item = this.getItemByParamName( defaultParams[ this.getName() ] );
}
diff --git a/resources/src/mediawiki.rcfilters/dm/FilterItem.js b/resources/src/mediawiki.rcfilters/dm/FilterItem.js
index 07301d08bd83..2f0ab6557540 100644
--- a/resources/src/mediawiki.rcfilters/dm/FilterItem.js
+++ b/resources/src/mediawiki.rcfilters/dm/FilterItem.js
@@ -1,5 +1,4 @@
-let ItemModel = require( './ItemModel.js' ),
- FilterItem;
+const ItemModel = require( './ItemModel.js' );
/**
* Filter item model.
@@ -17,7 +16,7 @@ let ItemModel = require( './ItemModel.js' ),
* @param {Object} [config.conflicts] Defines the conflicts for this filter
* @param {boolean} [config.visible=true] The visibility of the group
*/
-FilterItem = function MwRcfiltersDmFilterItem( param, groupModel, config ) {
+const FilterItem = function MwRcfiltersDmFilterItem( param, groupModel, config ) {
config = config || {};
this.groupModel = groupModel;
@@ -91,8 +90,8 @@ FilterItem.prototype.getCurrentConflictResultMessage = function () {
*/
FilterItem.prototype.getConflictDetails = function ( conflicts, key ) {
let group,
- conflictMessage = '',
- itemLabels = [];
+ conflictMessage = '';
+ const itemLabels = [];
key = key || 'contextDescription';
diff --git a/resources/src/mediawiki.rcfilters/dm/FiltersViewModel.js b/resources/src/mediawiki.rcfilters/dm/FiltersViewModel.js
index 300c924396cb..f40666a3f7c4 100644
--- a/resources/src/mediawiki.rcfilters/dm/FiltersViewModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/FiltersViewModel.js
@@ -1,7 +1,6 @@
-let FilterGroup = require( './FilterGroup.js' ),
+const FilterGroup = require( './FilterGroup.js' ),
FilterItem = require( './FilterItem.js' ),
- utils = require( '../utils.js' ),
- FiltersViewModel;
+ utils = require( '../utils.js' );
/**
* View model for the filters selection and display.
@@ -11,7 +10,7 @@ let FilterGroup = require( './FilterGroup.js' ),
* @mixes OO.EventEmitter
* @mixes OO.EmitterList
*/
-FiltersViewModel = function MwRcfiltersDmFiltersViewModel() {
+const FiltersViewModel = function MwRcfiltersDmFiltersViewModel() {
// Mixin constructor
OO.EventEmitter.call( this );
OO.EmitterList.call( this );
@@ -77,8 +76,7 @@ OO.mixinClass( FiltersViewModel, OO.EmitterList );
* method will go over the state of all items
*/
FiltersViewModel.prototype.reassessFilterInteractions = function ( item ) {
- let allSelected,
- model = this,
+ const model = this,
iterationItems = item !== undefined ? [ item ] : this.getItems();
iterationItems.forEach( ( checkedItem ) => {
@@ -98,7 +96,7 @@ FiltersViewModel.prototype.reassessFilterInteractions = function ( item ) {
// Update coverage for the changed group
if ( groupModel.isFullCoverage() ) {
- allSelected = groupModel.areAllSelected();
+ const allSelected = groupModel.areAllSelected();
groupModel.getItems().forEach( ( filterItem ) => {
filterItem.toggleFullyCovered( allSelected );
} );
@@ -111,8 +109,8 @@ FiltersViewModel.prototype.reassessFilterInteractions = function ( item ) {
// individual items, but also on the selected states of
// the groups they're in.
this.getItems().forEach( ( filterItem ) => {
- let inConflict = false,
- filterItemGroup = filterItem.getGroupModel();
+ let inConflict = false;
+ const filterItemGroup = filterItem.getGroupModel();
// For each item, see if that item is still conflicting
// eslint-disable-next-line no-jquery/no-each-util
@@ -187,9 +185,9 @@ FiltersViewModel.prototype.hasConflict = function () {
* @return {mw.rcfilters.dm.FilterItem|undefined} Conflicted item or undefined when not found
*/
FiltersViewModel.prototype.getFirstConflictedItem = function () {
- let i, filterItem, items = this.getItems();
- for ( i = 0; i < items.length; i++ ) {
- filterItem = items[ i ];
+ const items = this.getItems();
+ for ( let i = 0; i < items.length; i++ ) {
+ const filterItem = items[ i ];
if ( filterItem.isSelected() && filterItem.isConflicted() ) {
return filterItem;
}
@@ -223,9 +221,7 @@ FiltersViewModel.prototype.getFirstConflictedItem = function () {
* }
*/
FiltersViewModel.prototype.initializeFilters = function ( filterGroups, views ) {
- let filterConflictResult, groupConflictResult,
- allViews,
- model = this,
+ const model = this,
items = [],
groupConflictMap = {},
filterConflictMap = {},
@@ -244,14 +240,13 @@ FiltersViewModel.prototype.initializeFilters = function ( filterGroups, views )
// eslint-disable-next-line no-jquery/no-each-util
$.each( obj, ( key, conflicts ) => {
- let filterName,
- adjustedConflicts = {};
+ const adjustedConflicts = {};
conflicts.forEach( ( conflict ) => {
let filter;
if ( conflict.filter ) {
- filterName = model.groups[ conflict.group ].getPrefixedName( conflict.filter );
+ const filterName = model.groups[ conflict.group ].getPrefixedName( conflict.filter );
filter = model.getItemByName( filterName );
// Rename
@@ -322,7 +317,7 @@ FiltersViewModel.prototype.initializeFilters = function ( filterGroups, views )
} );
// Collect views
- allViews = $.extend( true, {
+ const allViews = $.extend( true, {
default: {
title: mw.msg( 'rcfilters-filterlist-title' ),
groups: filterGroups
@@ -351,7 +346,7 @@ FiltersViewModel.prototype.initializeFilters = function ( filterGroups, views )
}
model.groups[ group ].initializeFilters( groupData.filters, groupData.default );
- items = items.concat( model.groups[ group ].getItems() );
+ items.push( ...model.groups[ group ].getItems() );
// Prepare conflicts
if ( groupData.conflicts ) {
@@ -373,8 +368,8 @@ FiltersViewModel.prototype.initializeFilters = function ( filterGroups, views )
this.addItems( items );
// Expand conflicts
- groupConflictResult = expandConflictDefinitions( groupConflictMap );
- filterConflictResult = expandConflictDefinitions( filterConflictMap );
+ const groupConflictResult = expandConflictDefinitions( groupConflictMap );
+ const filterConflictResult = expandConflictDefinitions( filterConflictMap );
// Set conflicts for groups
// eslint-disable-next-line no-jquery/no-each-util
@@ -425,7 +420,6 @@ FiltersViewModel.prototype.initializeFilters = function ( filterGroups, views )
* @param {Object} params Parameters object
*/
FiltersViewModel.prototype.updateStateFromParams = function ( params ) {
- let filtersValue;
// For arbitrary numeric single_option values make sure the values
// are normalized to fit within the limits
// eslint-disable-next-line no-jquery/no-each-util
@@ -434,7 +428,7 @@ FiltersViewModel.prototype.updateStateFromParams = function ( params ) {
} );
// Update filter values
- filtersValue = this.getFiltersFromParameters( params );
+ const filtersValue = this.getFiltersFromParameters( params );
Object.keys( filtersValue ).forEach( ( filterName ) => {
this.getItemByName( filterName ).setValue( filtersValue[ filterName ] );
} );
@@ -597,16 +591,15 @@ FiltersViewModel.prototype.getFilterGroupsByView = function ( view ) {
* @return {mw.rcfilters.dm.FilterItem} Filter items matching the group
*/
FiltersViewModel.prototype.getFiltersByView = function ( view ) {
- let groups,
- result = [];
+ const result = [];
view = view || this.getCurrentView();
- groups = this.getFilterGroupsByView( view );
+ const groups = this.getFilterGroupsByView( view );
// eslint-disable-next-line no-jquery/no-each-util
$.each( groups, ( groupName, groupModel ) => {
- result = result.concat( groupModel.getItems() );
+ result.push( ...groupModel.getItems() );
} );
return result;
@@ -639,11 +632,10 @@ FiltersViewModel.prototype.getParamValue = function ( name ) {
* @return {Object} Filters selected state
*/
FiltersViewModel.prototype.getSelectedState = function ( onlySelected ) {
- let i,
- items = this.getItems(),
+ const items = this.getItems(),
result = {};
- for ( i = 0; i < items.length; i++ ) {
+ for ( let i = 0; i < items.length; i++ ) {
if ( !onlySelected || items[ i ].getValue() ) {
result[ items[ i ].getName() ] = items[ i ].getValue();
}
@@ -658,11 +650,10 @@ FiltersViewModel.prototype.getSelectedState = function ( onlySelected ) {
* @return {Object} Filters full state
*/
FiltersViewModel.prototype.getFullState = function () {
- let i,
- items = this.getItems(),
+ const items = this.getItems(),
result = {};
- for ( i = 0; i < items.length; i++ ) {
+ for ( let i = 0; i < items.length; i++ ) {
result[ items[ i ].getName() ] = {
selected: items[ i ].isSelected(),
conflicted: items[ i ].isConflicted(),
@@ -742,8 +733,8 @@ FiltersViewModel.prototype.getStickyParamsValues = function () {
* @return {Object} Parameter state object
*/
FiltersViewModel.prototype.getParametersFromFilters = function ( filterDefinition ) {
- let groupItemDefinition,
- result = {},
+ let groupItemDefinition;
+ const result = {},
groupItems = this.getFilterGroups();
if ( filterDefinition ) {
@@ -782,9 +773,9 @@ FiltersViewModel.prototype.getParametersFromFilters = function ( filterDefinitio
* @return {Object} Filter state object
*/
FiltersViewModel.prototype.getFiltersFromParameters = function ( params ) {
- let groupMap = {},
- model = this,
- result = {};
+ const groupMap = {},
+ model = this;
+ let result = {};
// Go over the given parameters, break apart to groupings
// The resulting object represents the group with its parameter
@@ -799,11 +790,10 @@ FiltersViewModel.prototype.getFiltersFromParameters = function ( params ) {
// }
// eslint-disable-next-line no-jquery/no-each-util
$.each( params, ( paramName, paramValue ) => {
- let groupName,
- itemOrGroup = model.parameterMap[ paramName ];
+ const itemOrGroup = model.parameterMap[ paramName ];
if ( itemOrGroup ) {
- groupName = itemOrGroup instanceof FilterItem ?
+ const groupName = itemOrGroup instanceof FilterItem ?
itemOrGroup.getGroupName() : itemOrGroup.getName();
groupMap[ groupName ] = groupMap[ groupName ] || {};
@@ -1026,9 +1016,7 @@ FiltersViewModel.prototype.getGroupFilters = function ( groupName ) {
* arranged by their group names
*/
FiltersViewModel.prototype.findMatches = function ( query, returnFlat ) {
- let i, searchIsEmpty,
- groupTitle,
- result = {},
+ const result = {},
flatResult = [],
view = this.getViewByTrigger( query.slice( 0, 1 ) ),
items = this.getFiltersByView( view );
@@ -1044,10 +1032,10 @@ FiltersViewModel.prototype.findMatches = function ( query, returnFlat ) {
// Check if the search if actually empty; this can be a problem when
// we use prefixes to denote different views
- searchIsEmpty = query.length === 0;
+ const searchIsEmpty = query.length === 0;
// item label starting with the query string
- for ( i = 0; i < items.length; i++ ) {
+ for ( let i = 0; i < items.length; i++ ) {
if (
searchIsEmpty ||
items[ i ].getLabel().toLowerCase().indexOf( query ) === 0 ||
@@ -1065,8 +1053,8 @@ FiltersViewModel.prototype.findMatches = function ( query, returnFlat ) {
if ( $.isEmptyObject( result ) ) {
// item containing the query string in their label, description, or group title
- for ( i = 0; i < items.length; i++ ) {
- groupTitle = items[ i ].getGroupModel().getTitle();
+ for ( let i = 0; i < items.length; i++ ) {
+ const groupTitle = items[ i ].getGroupModel().getTitle();
if (
searchIsEmpty ||
items[ i ].getLabel().toLowerCase().indexOf( query ) > -1 ||
diff --git a/resources/src/mediawiki.rcfilters/dm/SavedQueriesModel.js b/resources/src/mediawiki.rcfilters/dm/SavedQueriesModel.js
index 33df55daa02e..c458274d9ef5 100644
--- a/resources/src/mediawiki.rcfilters/dm/SavedQueriesModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/SavedQueriesModel.js
@@ -1,5 +1,4 @@
-let SavedQueryItemModel = require( './SavedQueryItemModel.js' ),
- SavedQueriesModel;
+const SavedQueryItemModel = require( './SavedQueryItemModel.js' );
/**
* View model for saved queries.
@@ -13,7 +12,7 @@ let SavedQueryItemModel = require( './SavedQueryItemModel.js' ),
* @param {Object} [config] Configuration options
* @param {string} [config.default] Default query ID
*/
-SavedQueriesModel = function MwRcfiltersDmSavedQueriesModel( filtersModel, config ) {
+const SavedQueriesModel = function MwRcfiltersDmSavedQueriesModel( filtersModel, config ) {
config = config || {};
// Mixin constructor
diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.js
index a869d0e69067..5cadcaad107a 100644
--- a/resources/src/mediawiki.rcfilters/mw.rcfilters.js
+++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.js
@@ -51,13 +51,12 @@ const rcfilters = {
* @return {Array} Filtered array of namespaces
*/
function getNamespaces( unusedNamespaces ) {
- let i, length, name, id,
- namespaceIds = mw.config.get( 'wgNamespaceIds' ),
+ const namespaceIds = mw.config.get( 'wgNamespaceIds' ),
namespaces = mw.config.get( 'wgFormattedNamespaces' );
- for ( i = 0, length = unusedNamespaces.length; i < length; i++ ) {
- name = unusedNamespaces[ i ];
- id = namespaceIds[ name.toLowerCase() ];
+ for ( let i = 0, length = unusedNamespaces.length; i < length; i++ ) {
+ const name = unusedNamespaces[ i ];
+ const id = namespaceIds[ name.toLowerCase() ];
delete namespaces[ id ];
}
@@ -68,9 +67,7 @@ function getNamespaces( unusedNamespaces ) {
* @private
*/
function init() {
- let $topSection,
- mainWrapperWidget,
- conditionalViews = {},
+ const conditionalViews = {},
$initialFieldset = $( 'fieldset.cloptions' ),
savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ),
daysPreferenceName = mw.config.get( 'wgStructuredChangeFiltersDaysPreferenceName' ),
@@ -95,6 +92,7 @@ function init() {
// TODO: The changesListWrapperWidget should be able to initialize
// after the model is ready.
+ let $topSection;
if ( specialPage === 'Recentchanges' ) {
$topSection = $( '.mw-recentchanges-toplinks' ).detach();
} else if ( specialPage === 'Watchlist' ) {
@@ -133,7 +131,7 @@ function init() {
};
}
- mainWrapperWidget = new rcfilters.ui.MainWrapperWidget(
+ const mainWrapperWidget = new rcfilters.ui.MainWrapperWidget(
controller,
filtersModel,
savedQueriesModel,
diff --git a/resources/src/mediawiki.rcfilters/ui/ChangesLimitAndDateButtonWidget.js b/resources/src/mediawiki.rcfilters/ui/ChangesLimitAndDateButtonWidget.js
index d49e07ba3a30..972a4888d389 100644
--- a/resources/src/mediawiki.rcfilters/ui/ChangesLimitAndDateButtonWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/ChangesLimitAndDateButtonWidget.js
@@ -1,6 +1,5 @@
-let ChangesLimitPopupWidget = require( './ChangesLimitPopupWidget.js' ),
- DatePopupWidget = require( './DatePopupWidget.js' ),
- ChangesLimitAndDateButtonWidget;
+const ChangesLimitPopupWidget = require( './ChangesLimitPopupWidget.js' ),
+ DatePopupWidget = require( './DatePopupWidget.js' );
/**
* Widget defining the button controlling the popup for the number of results.
@@ -14,7 +13,7 @@ let ChangesLimitPopupWidget = require( './ChangesLimitPopupWidget.js' ),
* @param {Object} [config] Configuration object
* @param {jQuery} [config.$overlay] A jQuery object serving as overlay for popups
*/
-ChangesLimitAndDateButtonWidget = function MwRcfiltersUiChangesLimitWidget( controller, model, config ) {
+const ChangesLimitAndDateButtonWidget = function MwRcfiltersUiChangesLimitWidget( controller, model, config ) {
config = config || {};
// Parent
@@ -46,8 +45,7 @@ OO.inheritClass( ChangesLimitAndDateButtonWidget, OO.ui.Widget );
* Respond to model initialize event
*/
ChangesLimitAndDateButtonWidget.prototype.onModelInitialize = function () {
- let selectedItem, currentValue, datePopupWidget,
- displayGroupModel = this.model.getGroup( 'display' );
+ const displayGroupModel = this.model.getGroup( 'display' );
this.limitGroupModel = this.model.getGroup( 'limit' );
this.groupByPageItemModel = displayGroupModel.getItemByParamName( 'enhanced' );
@@ -64,15 +62,15 @@ ChangesLimitAndDateButtonWidget.prototype.onModelInitialize = function () {
this.groupByPageItemModel
);
- datePopupWidget = new DatePopupWidget(
+ const datePopupWidget = new DatePopupWidget(
this.daysGroupModel,
{
label: mw.msg( 'rcfilters-date-popup-title' )
}
);
- selectedItem = this.limitGroupModel.findSelectedItems()[ 0 ];
- currentValue = ( selectedItem && selectedItem.getLabel() ) ||
+ const selectedItem = this.limitGroupModel.findSelectedItems()[ 0 ];
+ const currentValue = ( selectedItem && selectedItem.getLabel() ) ||
mw.language.convertNumber( this.limitGroupModel.getDefaultParamValue() );
this.button = new OO.ui.PopupButtonWidget( {
@@ -180,14 +178,13 @@ ChangesLimitAndDateButtonWidget.prototype.onPopupDays = function ( filterName )
* Respond to limit choose event
*/
ChangesLimitAndDateButtonWidget.prototype.updateButtonLabel = function () {
- let message,
- limit = this.limitGroupModel.findSelectedItems()[ 0 ],
+ const limit = this.limitGroupModel.findSelectedItems()[ 0 ],
label = limit && limit.getLabel(),
days = this.daysGroupModel.findSelectedItems()[ 0 ];
// Update the label
if ( label && days ) {
- message = mw.msg( 'rcfilters-limit-and-date-label', label,
+ const message = mw.msg( 'rcfilters-limit-and-date-label', label,
mw.msg(
Number( days.getParamName() ) < 1 ?
'rcfilters-days-show-hours' :
diff --git a/resources/src/mediawiki.rcfilters/ui/ChangesListWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/ChangesListWrapperWidget.js
index 08fdb5fb9020..4c416b1d6823 100644
--- a/resources/src/mediawiki.rcfilters/ui/ChangesListWrapperWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/ChangesListWrapperWidget.js
@@ -97,8 +97,7 @@ ChangesListWrapperWidget.prototype.onModelInvalidate = function () {
ChangesListWrapperWidget.prototype.onModelUpdate = function (
$changesListContent, $fieldset, noResultsDetails, isInitialDOM, from
) {
- let conflictItem,
- $message = $( '<div>' )
+ const $message = $( '<div>' )
.addClass( 'mw-rcfilters-ui-changesListWrapperWidget-results' ),
isEmpty = $changesListContent === 'NO_RESULTS',
// For enhanced mode, we have to load this modules, which is
@@ -113,7 +112,7 @@ ChangesListWrapperWidget.prototype.onModelUpdate = function (
this.$element.empty();
if ( this.filtersViewModel.hasConflict() ) {
- conflictItem = this.filtersViewModel.getFirstConflictedItem();
+ const conflictItem = this.filtersViewModel.getFirstConflictedItem();
$message
.append(
@@ -208,15 +207,14 @@ ChangesListWrapperWidget.prototype.getMsgKeyForNoResults = function ( reason ) {
* @param {string} from Anything newer than this is considered 'new'
*/
ChangesListWrapperWidget.prototype.emphasizeNewChanges = function ( from ) {
- let $firstNew,
- $indicator,
- $newChanges = $( [] ),
- selector = this.inEnhancedMode() ?
+ const selector = this.inEnhancedMode() ?
'table.mw-enhanced-rc[data-mw-ts]' :
'li[data-mw-ts]',
$set = this.$element.find( selector ),
length = $set.length;
+ let $firstNew,
+ $newChanges = $( [] );
$set.each( function ( index ) {
const $this = $( this ),
ts = $this.data( 'mw-ts' );
@@ -233,7 +231,7 @@ ChangesListWrapperWidget.prototype.emphasizeNewChanges = function ( from ) {
} );
if ( $firstNew ) {
- $indicator = $( '<div>' )
+ const $indicator = $( '<div>' )
.addClass( 'mw-rcfilters-ui-changesListWrapperWidget-previousChangesIndicator' );
$firstNew.after( $indicator );
@@ -254,31 +252,28 @@ ChangesListWrapperWidget.prototype.emphasizeNewChanges = function ( from ) {
* This is called every time highlights are applied.
*/
ChangesListWrapperWidget.prototype.updateEnhancedParentHighlight = function () {
- let activeHighlightClasses,
- $enhancedTopPageCell = this.$element.find( 'table.mw-enhanced-rc' );
+ const $enhancedTopPageCell = this.$element.find( 'table.mw-enhanced-rc' );
- activeHighlightClasses = this.filtersViewModel.getCurrentlyUsedHighlightColors().map( ( color ) => 'mw-rcfilters-highlight-color-' + color );
+ const activeHighlightClasses = this.filtersViewModel.getCurrentlyUsedHighlightColors().map( ( color ) => 'mw-rcfilters-highlight-color-' + color );
// Go over top pages and their children, and figure out if all subpages have the
// same highlights between themselves. If they do, the parent should be highlighted
// with all colors. If classes are different, the parent should receive a grey
// background
$enhancedTopPageCell.each( function () {
- let firstChildClasses, $rowsWithDifferentHighlights,
- $table = $( this );
+ const $table = $( this );
// Collect the relevant classes from the first nested child
- firstChildClasses = activeHighlightClasses.filter(
+ const firstChildClasses = activeHighlightClasses.filter(
// eslint-disable-next-line no-jquery/no-class-state
( className ) => $table.find( 'tr' ).eq( 2 ).hasClass( className )
);
// Filter the non-head rows and see if they all have the same classes
// to the first row
- $rowsWithDifferentHighlights = $table.find( 'tr:not(:first-child)' ).filter( function () {
- let classesInThisRow,
- $this = $( this );
+ const $rowsWithDifferentHighlights = $table.find( 'tr:not(:first-child)' ).filter( function () {
+ const $this = $( this );
- classesInThisRow = activeHighlightClasses.filter(
+ const classesInThisRow = activeHighlightClasses.filter(
// eslint-disable-next-line no-jquery/no-class-state
( className ) => $this.hasClass( className )
);
diff --git a/resources/src/mediawiki.rcfilters/ui/DatePopupWidget.js b/resources/src/mediawiki.rcfilters/ui/DatePopupWidget.js
index e0132bfce176..69e425f4f63b 100644
--- a/resources/src/mediawiki.rcfilters/ui/DatePopupWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/DatePopupWidget.js
@@ -1,5 +1,4 @@
-let ValuePickerWidget = require( './ValuePickerWidget.js' ),
- DatePopupWidget;
+const ValuePickerWidget = require( './ValuePickerWidget.js' );
/**
* Widget defining the popup to choose date for the results.
@@ -11,7 +10,7 @@ let ValuePickerWidget = require( './ValuePickerWidget.js' ),
* @param {mw.rcfilters.dm.FilterGroup} model Group model for 'days'
* @param {Object} [config] Configuration object
*/
-DatePopupWidget = function MwRcfiltersUiDatePopupWidget( model, config ) {
+const DatePopupWidget = function MwRcfiltersUiDatePopupWidget( model, config ) {
config = config || {};
// Parent
diff --git a/resources/src/mediawiki.rcfilters/ui/FilterMenuOptionWidget.js b/resources/src/mediawiki.rcfilters/ui/FilterMenuOptionWidget.js
index 70f43cdeddff..505cda8e69b5 100644
--- a/resources/src/mediawiki.rcfilters/ui/FilterMenuOptionWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/FilterMenuOptionWidget.js
@@ -1,5 +1,4 @@
-let ItemMenuOptionWidget = require( './ItemMenuOptionWidget.js' ),
- FilterMenuOptionWidget;
+const ItemMenuOptionWidget = require( './ItemMenuOptionWidget.js' );
/**
* A widget representing a single toggle filter.
@@ -15,7 +14,7 @@ let ItemMenuOptionWidget = require( './ItemMenuOptionWidget.js' ),
* @param {mw.rcfilters.ui.HighlightPopupWidget} highlightPopup Shared highlight color picker popup
* @param {Object} config Configuration object
*/
-FilterMenuOptionWidget = function MwRcfiltersUiFilterMenuOptionWidget(
+const FilterMenuOptionWidget = function MwRcfiltersUiFilterMenuOptionWidget(
controller, filtersViewModel, invertModel, itemModel, highlightPopup, config
) {
config = config || {};
diff --git a/resources/src/mediawiki.rcfilters/ui/FilterMenuSectionOptionWidget.js b/resources/src/mediawiki.rcfilters/ui/FilterMenuSectionOptionWidget.js
index 83a46601c00f..88a5d45c5bf3 100644
--- a/resources/src/mediawiki.rcfilters/ui/FilterMenuSectionOptionWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/FilterMenuSectionOptionWidget.js
@@ -11,8 +11,7 @@
* @param {jQuery} [config.$overlay] Overlay
*/
const FilterMenuSectionOptionWidget = function MwRcfiltersUiFilterMenuSectionOptionWidget( controller, model, config ) {
- let whatsThisMessages,
- $header = $( '<div>' )
+ const $header = $( '<div>' )
.addClass( 'mw-rcfilters-ui-filterMenuSectionOptionWidget-header' ),
$popupContent = $( '<div>' )
.addClass( 'mw-rcfilters-ui-filterMenuSectionOptionWidget-whatsThisButton-popup-content' );
@@ -33,7 +32,7 @@ const FilterMenuSectionOptionWidget = function MwRcfiltersUiFilterMenuSectionOpt
$header.append( this.$label );
if ( this.model.hasWhatsThis() ) {
- whatsThisMessages = this.model.getWhatsThis();
+ const whatsThisMessages = this.model.getWhatsThis();
// Create popup
if ( whatsThisMessages.header ) {
diff --git a/resources/src/mediawiki.rcfilters/ui/FilterTagItemWidget.js b/resources/src/mediawiki.rcfilters/ui/FilterTagItemWidget.js
index 678b66a07797..1dfebcf229c5 100644
--- a/resources/src/mediawiki.rcfilters/ui/FilterTagItemWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/FilterTagItemWidget.js
@@ -1,5 +1,4 @@
-let TagItemWidget = require( './TagItemWidget.js' ),
- FilterTagItemWidget;
+const TagItemWidget = require( './TagItemWidget.js' );
/**
* Extend OOUI's FilterTagItemWidget to also display a popup on hover.
@@ -14,7 +13,7 @@ let TagItemWidget = require( './TagItemWidget.js' ),
* @param {mw.rcfilters.dm.FilterItem} itemModel Item model
* @param {Object} config Configuration object
*/
-FilterTagItemWidget = function MwRcfiltersUiFilterTagItemWidget(
+const FilterTagItemWidget = function MwRcfiltersUiFilterTagItemWidget(
controller, filtersViewModel, invertModel, itemModel, config
) {
config = config || {};
diff --git a/resources/src/mediawiki.rcfilters/ui/FilterTagMultiselectWidget.js b/resources/src/mediawiki.rcfilters/ui/FilterTagMultiselectWidget.js
index 6bd2f8fbcb8f..970b9e035a68 100644
--- a/resources/src/mediawiki.rcfilters/ui/FilterTagMultiselectWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/FilterTagMultiselectWidget.js
@@ -1,8 +1,7 @@
-let ViewSwitchWidget = require( './ViewSwitchWidget.js' ),
+const ViewSwitchWidget = require( './ViewSwitchWidget.js' ),
SaveFiltersPopupButtonWidget = require( './SaveFiltersPopupButtonWidget.js' ),
MenuSelectWidget = require( './MenuSelectWidget.js' ),
- FilterTagItemWidget = require( './FilterTagItemWidget.js' ),
- FilterTagMultiselectWidget;
+ FilterTagItemWidget = require( './FilterTagItemWidget.js' );
/**
* List displaying all filter groups.
@@ -21,9 +20,8 @@ let ViewSwitchWidget = require( './ViewSwitchWidget.js' ),
* system. If not given, falls back to this widget's $element
* @param {boolean} [config.collapsed] Filter area is collapsed
*/
-FilterTagMultiselectWidget = function MwRcfiltersUiFilterTagMultiselectWidget( controller, model, savedQueriesModel, config ) {
- let $rcFiltersRow,
- title = new OO.ui.LabelWidget( {
+const FilterTagMultiselectWidget = function MwRcfiltersUiFilterTagMultiselectWidget( controller, model, savedQueriesModel, config ) {
+ const title = new OO.ui.LabelWidget( {
label: mw.msg( 'rcfilters-activefilters' ),
classes: [ 'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-content-title' ]
} ),
@@ -165,7 +163,7 @@ FilterTagMultiselectWidget = function MwRcfiltersUiFilterTagMultiselectWidget( c
// wide the button is; the button also changes its width depending
// on language and its state, so the safest way to present both side
// by side is with a table layout
- $rcFiltersRow = $( '<div>' )
+ const $rcFiltersRow = $( '<div>' )
.addClass( 'mw-rcfilters-ui-row' )
.append(
this.$content
@@ -505,8 +503,8 @@ FilterTagMultiselectWidget.prototype.onModelUpdate = function () {
* Update the elements in the widget to the current view
*/
FilterTagMultiselectWidget.prototype.updateElementsForView = function () {
- let view = this.model.getCurrentView(),
- inputValue = this.input.getValue().trim(),
+ let inputValue = this.input.getValue().trim();
+ const view = this.model.getCurrentView(),
inputView = this.model.getViewByTrigger( inputValue.slice( 0, 1 ) );
if ( inputView !== 'default' ) {
diff --git a/resources/src/mediawiki.rcfilters/ui/FilterWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/FilterWrapperWidget.js
index 6875f93cbfbf..6422216f675a 100644
--- a/resources/src/mediawiki.rcfilters/ui/FilterWrapperWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/FilterWrapperWidget.js
@@ -1,7 +1,6 @@
-let FilterTagMultiselectWidget = require( './FilterTagMultiselectWidget.js' ),
+const FilterTagMultiselectWidget = require( './FilterTagMultiselectWidget.js' ),
LiveUpdateButtonWidget = require( './LiveUpdateButtonWidget.js' ),
- ChangesLimitAndDateButtonWidget = require( './ChangesLimitAndDateButtonWidget.js' ),
- FilterWrapperWidget;
+ ChangesLimitAndDateButtonWidget = require( './ChangesLimitAndDateButtonWidget.js' );
/**
* List displaying all filter groups.
@@ -22,10 +21,9 @@ let FilterTagMultiselectWidget = require( './FilterTagMultiselectWidget.js' ),
* system. If not given, falls back to this widget's $element
* @param {boolean} [config.collapsed] Filter area is collapsed
*/
-FilterWrapperWidget = function MwRcfiltersUiFilterWrapperWidget(
+const FilterWrapperWidget = function MwRcfiltersUiFilterWrapperWidget(
controller, model, savedQueriesModel, changesListModel, config
) {
- let $bottom;
config = config || {};
// Parent
@@ -82,7 +80,7 @@ FilterWrapperWidget = function MwRcfiltersUiFilterWrapperWidget(
this.$top = $( '<div>' )
.addClass( 'mw-rcfilters-ui-filterWrapperWidget-top' );
- $bottom = $( '<div>' )
+ const $bottom = $( '<div>' )
.addClass( 'mw-rcfilters-ui-filterWrapperWidget-bottom' )
.addClass( OO.ui.isMobile() ? 'mw-rcfilters-ui-filterWrapperWidget-bottom-mobile' : '' )
.append(
diff --git a/resources/src/mediawiki.rcfilters/ui/HighlightPopupWidget.js b/resources/src/mediawiki.rcfilters/ui/HighlightPopupWidget.js
index f4e34822b5a9..65a9426cacad 100644
--- a/resources/src/mediawiki.rcfilters/ui/HighlightPopupWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/HighlightPopupWidget.js
@@ -1,5 +1,4 @@
-let HighlightColorPickerWidget = require( './HighlightColorPickerWidget.js' ),
- HighlightPopupWidget;
+const HighlightColorPickerWidget = require( './HighlightColorPickerWidget.js' );
/**
* A popup containing a color picker, for setting highlight colors.
*
@@ -10,7 +9,7 @@ let HighlightColorPickerWidget = require( './HighlightColorPickerWidget.js' ),
* @param {mw.rcfilters.Controller} controller RCFilters controller
* @param {Object} [config] Configuration object
*/
-HighlightPopupWidget = function MwRcfiltersUiHighlightPopupWidget( controller, config ) {
+const HighlightPopupWidget = function MwRcfiltersUiHighlightPopupWidget( controller, config ) {
config = config || {};
// Parent
diff --git a/resources/src/mediawiki.rcfilters/ui/ItemMenuOptionWidget.js b/resources/src/mediawiki.rcfilters/ui/ItemMenuOptionWidget.js
index b864abfde144..bb9301c5fff6 100644
--- a/resources/src/mediawiki.rcfilters/ui/ItemMenuOptionWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/ItemMenuOptionWidget.js
@@ -1,6 +1,5 @@
-let FilterItemHighlightButton = require( './FilterItemHighlightButton.js' ),
- CheckboxInputWidget = require( './CheckboxInputWidget.js' ),
- ItemMenuOptionWidget;
+const FilterItemHighlightButton = require( './FilterItemHighlightButton.js' ),
+ CheckboxInputWidget = require( './CheckboxInputWidget.js' );
/**
* A widget representing a base toggle item.
@@ -16,14 +15,11 @@ let FilterItemHighlightButton = require( './FilterItemHighlightButton.js' ),
* @param {mw.rcfilters.ui.HighlightPopupWidget} highlightPopup Shared highlight color picker
* @param {Object} config Configuration object
*/
-ItemMenuOptionWidget = function MwRcfiltersUiItemMenuOptionWidget(
+const ItemMenuOptionWidget = function MwRcfiltersUiItemMenuOptionWidget(
controller, filtersViewModel, invertModel, itemModel, highlightPopup, config
) {
- let layout,
- $widgetRow,
- classes,
- $label = $( '<div>' )
- .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-label' );
+ const $label = $( '<div>' )
+ .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-label' );
config = config || {};
@@ -91,7 +87,7 @@ ItemMenuOptionWidget = function MwRcfiltersUiItemMenuOptionWidget(
this.itemModel.isSelected()
);
- layout = new OO.ui.FieldLayout( this.checkboxWidget, {
+ const layout = new OO.ui.FieldLayout( this.checkboxWidget, {
label: $label,
align: 'inline'
} );
@@ -109,7 +105,7 @@ ItemMenuOptionWidget = function MwRcfiltersUiItemMenuOptionWidget(
// defaults on 'click' as well.
layout.$label.on( 'click', false );
- $widgetRow = $( '<div>' )
+ const $widgetRow = $( '<div>' )
.addClass( 'mw-rcfilters-ui-table' )
.append(
$( '<div>' )
@@ -139,7 +135,7 @@ ItemMenuOptionWidget = function MwRcfiltersUiItemMenuOptionWidget(
);
}
- classes = this.itemModel.getIdentifiers().map( ( ident ) => 'mw-rcfilters-ui-itemMenuOptionWidget-identifier-' + ident ).concat(
+ const classes = this.itemModel.getIdentifiers().map( ( ident ) => 'mw-rcfilters-ui-itemMenuOptionWidget-identifier-' + ident ).concat(
'mw-rcfilters-ui-itemMenuOptionWidget',
'mw-rcfilters-ui-itemMenuOptionWidget-view-' + this.itemModel.getGroupModel().getView()
);
diff --git a/resources/src/mediawiki.rcfilters/ui/MainWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/MainWrapperWidget.js
index d1ba129792e1..76caf50658c3 100644
--- a/resources/src/mediawiki.rcfilters/ui/MainWrapperWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/MainWrapperWidget.js
@@ -1,11 +1,10 @@
-let SavedLinksListWidget = require( './SavedLinksListWidget.js' ),
+const SavedLinksListWidget = require( './SavedLinksListWidget.js' ),
FilterWrapperWidget = require( './FilterWrapperWidget.js' ),
ChangesListWrapperWidget = require( './ChangesListWrapperWidget.js' ),
RcTopSectionWidget = require( './RcTopSectionWidget.js' ),
RclTopSectionWidget = require( './RclTopSectionWidget.js' ),
WatchlistTopSectionWidget = require( './WatchlistTopSectionWidget.js' ),
- FormWrapperWidget = require( './FormWrapperWidget.js' ),
- MainWrapperWidget;
+ FormWrapperWidget = require( './FormWrapperWidget.js' );
/**
* Wrapper for changes list content.
@@ -27,7 +26,7 @@ let SavedLinksListWidget = require( './SavedLinksListWidget.js' ),
* @param {jQuery} [config.$wrapper] A jQuery object for the wrapper of the general
* system. If not given, falls back to this widget's $element
*/
-MainWrapperWidget = function MwRcfiltersUiMainWrapperWidget(
+const MainWrapperWidget = function MwRcfiltersUiMainWrapperWidget(
controller, model, savedQueriesModel, changesListModel, config
) {
config = Object.assign( {}, config );
diff --git a/resources/src/mediawiki.rcfilters/ui/MenuSelectWidget.js b/resources/src/mediawiki.rcfilters/ui/MenuSelectWidget.js
index ccc24917df9e..aaeb87fdcb07 100644
--- a/resources/src/mediawiki.rcfilters/ui/MenuSelectWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/MenuSelectWidget.js
@@ -1,8 +1,7 @@
-let FilterMenuHeaderWidget = require( './FilterMenuHeaderWidget.js' ),
+const FilterMenuHeaderWidget = require( './FilterMenuHeaderWidget.js' ),
HighlightPopupWidget = require( './HighlightPopupWidget.js' ),
FilterMenuSectionOptionWidget = require( './FilterMenuSectionOptionWidget.js' ),
- FilterMenuOptionWidget = require( './FilterMenuOptionWidget.js' ),
- MenuSelectWidget;
+ FilterMenuOptionWidget = require( './FilterMenuOptionWidget.js' );
/**
* A floating menu widget for the filter list.
@@ -29,9 +28,7 @@ let FilterMenuHeaderWidget = require( './FilterMenuHeaderWidget.js' ),
* }
* ]
*/
-MenuSelectWidget = function MwRcfiltersUiMenuSelectWidget( controller, model, config ) {
- let header;
-
+const MenuSelectWidget = function MwRcfiltersUiMenuSelectWidget( controller, model, config ) {
config = config || {};
this.controller = controller;
@@ -57,6 +54,7 @@ MenuSelectWidget = function MwRcfiltersUiMenuSelectWidget( controller, model, co
.addClass( 'mw-rcfilters-ui-menuSelectWidget-group' )
);
+ let header;
if ( !config.isMobile ) {
// When hiding the header (i.e. mobile mode) avoid problems
// with clippable and the menu's fixed width.
@@ -150,7 +148,7 @@ MenuSelectWidget.prototype.toggle = function ( show ) {
* lazy creation of the menu
*/
MenuSelectWidget.prototype.lazyMenuCreation = function () {
- let widget = this,
+ const widget = this,
items = [],
viewGroupCount = {},
groups = this.model.getFilterGroups();
@@ -215,7 +213,7 @@ MenuSelectWidget.prototype.lazyMenuCreation = function () {
// without rebuilding the widgets each time
widget.views[ view ] = widget.views[ view ] || [];
widget.views[ view ] = widget.views[ view ].concat( currentItems );
- items = items.concat( currentItems );
+ items.push( ...currentItems );
}
} );
@@ -282,15 +280,14 @@ MenuSelectWidget.prototype.updateFooterVisibility = function ( currentView ) {
* widget appears if the menu is empty.
*/
MenuSelectWidget.prototype.postProcessItems = function () {
- let i,
- itemWasSelected = false,
- items = this.getItems();
+ let itemWasSelected = false;
+ const items = this.getItems();
// If we are not already selecting an item, always make sure
// that the top item is selected
if ( !this.userSelecting ) {
// Select the first item in the list
- for ( i = 0; i < items.length; i++ ) {
+ for ( let i = 0; i < items.length; i++ ) {
if (
!( items[ i ] instanceof OO.ui.MenuSectionOptionWidget ) &&
items[ i ].isVisible()
@@ -325,8 +322,8 @@ MenuSelectWidget.prototype.getItemFromModel = function ( model ) {
* @inheritdoc
*/
MenuSelectWidget.prototype.onDocumentKeyDown = function ( e ) {
- let nextItem,
- currentItem = this.findHighlightedItem() || this.findSelectedItem();
+ const currentItem = this.findHighlightedItem() || this.findSelectedItem();
+ let nextItem;
// Call parent
MenuSelectWidget.super.prototype.onDocumentKeyDown.call( this, e );
diff --git a/resources/src/mediawiki.rcfilters/ui/RcTopSectionWidget.js b/resources/src/mediawiki.rcfilters/ui/RcTopSectionWidget.js
index 22420e9c8110..ea09f4c14ff5 100644
--- a/resources/src/mediawiki.rcfilters/ui/RcTopSectionWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/RcTopSectionWidget.js
@@ -12,8 +12,7 @@
const RcTopSectionWidget = function MwRcfiltersUiRcTopSectionWidget(
savedLinksListWidget, $topLinks, config
) {
- let toplinksTitle,
- topLinksCookieName = 'rcfilters-toplinks-collapsed-state',
+ const topLinksCookieName = 'rcfilters-toplinks-collapsed-state',
topLinksCookie = mw.cookie.get( topLinksCookieName ),
topLinksCookieValue = topLinksCookie || 'collapsed',
widget = this;
@@ -25,7 +24,7 @@ const RcTopSectionWidget = function MwRcfiltersUiRcTopSectionWidget(
this.$topLinks = $topLinks;
- toplinksTitle = new OO.ui.ButtonWidget( {
+ const toplinksTitle = new OO.ui.ButtonWidget( {
framed: false,
indicator: topLinksCookieValue === 'collapsed' ? 'down' : 'up',
flags: [ 'progressive' ],
diff --git a/resources/src/mediawiki.rcfilters/ui/RclTopSectionWidget.js b/resources/src/mediawiki.rcfilters/ui/RclTopSectionWidget.js
index 2b5530e991dc..69dd964d0498 100644
--- a/resources/src/mediawiki.rcfilters/ui/RclTopSectionWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/RclTopSectionWidget.js
@@ -1,6 +1,5 @@
-let RclToOrFromWidget = require( './RclToOrFromWidget.js' ),
- RclTargetPageWidget = require( './RclTargetPageWidget.js' ),
- RclTopSectionWidget;
+const RclToOrFromWidget = require( './RclToOrFromWidget.js' );
+const RclTargetPageWidget = require( './RclTargetPageWidget.js' );
/**
* Top section (between page title and filters) on Special:RecentChangesLinked (AKA RelatedChanges).
@@ -15,11 +14,9 @@ let RclToOrFromWidget = require( './RclToOrFromWidget.js' ),
* @param {mw.rcfilters.dm.FilterItem} targetPageModel Model for 'target' parameter
* @param {Object} [config] Configuration object
*/
-RclTopSectionWidget = function MwRcfiltersUiRclTopSectionWidget(
+const RclTopSectionWidget = function MwRcfiltersUiRclTopSectionWidget(
savedLinksListWidget, controller, showLinkedToModel, targetPageModel, config
) {
- let toOrFromWidget,
- targetPage;
config = config || {};
// Parent
@@ -27,8 +24,8 @@ RclTopSectionWidget = function MwRcfiltersUiRclTopSectionWidget(
this.controller = controller;
- toOrFromWidget = new RclToOrFromWidget( controller, showLinkedToModel );
- targetPage = new RclTargetPageWidget( controller, targetPageModel );
+ const toOrFromWidget = new RclToOrFromWidget( controller, showLinkedToModel );
+ const targetPage = new RclTargetPageWidget( controller, targetPageModel );
// Initialize
this.$element
diff --git a/resources/src/mediawiki.rcfilters/ui/SaveFiltersPopupButtonWidget.js b/resources/src/mediawiki.rcfilters/ui/SaveFiltersPopupButtonWidget.js
index b74bd647bbb9..5f60e71c0206 100644
--- a/resources/src/mediawiki.rcfilters/ui/SaveFiltersPopupButtonWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/SaveFiltersPopupButtonWidget.js
@@ -13,9 +13,7 @@
* @param {Object} [config] Configuration object
*/
const SaveFiltersPopupButtonWidget = function MwRcfiltersUiSaveFiltersPopupButtonWidget( controller, model, config ) {
- let layout,
- checkBoxLayout,
- $popupContent = $( '<div>' );
+ const $popupContent = $( '<div>' );
config = config || {};
@@ -44,13 +42,13 @@ const SaveFiltersPopupButtonWidget = function MwRcfiltersUiSaveFiltersPopupButto
this.input = new OO.ui.TextInputWidget( {
placeholder: mw.msg( 'rcfilters-savedqueries-new-name-placeholder' )
} );
- layout = new OO.ui.FieldLayout( this.input, {
+ const layout = new OO.ui.FieldLayout( this.input, {
label: mw.msg( 'rcfilters-savedqueries-new-name-label' ),
align: 'top'
} );
this.setAsDefaultCheckbox = new OO.ui.CheckboxInputWidget();
- checkBoxLayout = new OO.ui.FieldLayout( this.setAsDefaultCheckbox, {
+ const checkBoxLayout = new OO.ui.FieldLayout( this.setAsDefaultCheckbox, {
label: mw.msg( 'rcfilters-savedqueries-setdefault' ),
align: 'inline'
} );
diff --git a/resources/src/mediawiki.rcfilters/ui/SavedLinksListWidget.js b/resources/src/mediawiki.rcfilters/ui/SavedLinksListWidget.js
index b2ec43fcc32b..86acc71ff546 100644
--- a/resources/src/mediawiki.rcfilters/ui/SavedLinksListWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/SavedLinksListWidget.js
@@ -1,5 +1,4 @@
-let SavedLinksListItemWidget = require( './SavedLinksListItemWidget.js' ),
- SavedLinksListWidget;
+const SavedLinksListItemWidget = require( './SavedLinksListItemWidget.js' );
/**
* Quick links widget.
@@ -12,7 +11,7 @@ let SavedLinksListItemWidget = require( './SavedLinksListItemWidget.js' ),
* @param {Object} [config] Configuration object
* @param {jQuery} [config.$overlay] A jQuery object serving as overlay for popups
*/
-SavedLinksListWidget = function MwRcfiltersUiSavedLinksListWidget( controller, model, config ) {
+const SavedLinksListWidget = function MwRcfiltersUiSavedLinksListWidget( controller, model, config ) {
const $labelNoEntries = $( '<div>' )
.append(
$( '<div>' )
diff --git a/resources/src/mediawiki.rcfilters/ui/ViewSwitchWidget.js b/resources/src/mediawiki.rcfilters/ui/ViewSwitchWidget.js
index 928640588d49..f252e351ab1f 100644
--- a/resources/src/mediawiki.rcfilters/ui/ViewSwitchWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/ViewSwitchWidget.js
@@ -1,5 +1,3 @@
-let ViewSwitchWidget;
-
/**
* A widget for the footer for the default view, allowing to switch views.
*
@@ -11,7 +9,7 @@ let ViewSwitchWidget;
* @param {mw.rcfilters.dm.FiltersViewModel} model View model
* @param {Object} [config] Configuration object
*/
-ViewSwitchWidget = function MwRcfiltersUiViewSwitchWidget( controller, model, config ) {
+const ViewSwitchWidget = function MwRcfiltersUiViewSwitchWidget( controller, model, config ) {
config = config || {};
// Parent
diff --git a/resources/src/mediawiki.rcfilters/ui/WatchlistTopSectionWidget.js b/resources/src/mediawiki.rcfilters/ui/WatchlistTopSectionWidget.js
index 5cdb080a4f29..bacc0b305535 100644
--- a/resources/src/mediawiki.rcfilters/ui/WatchlistTopSectionWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/WatchlistTopSectionWidget.js
@@ -1,5 +1,4 @@
-let MarkSeenButtonWidget = require( './MarkSeenButtonWidget.js' ),
- WatchlistTopSectionWidget;
+const MarkSeenButtonWidget = require( './MarkSeenButtonWidget.js' );
/**
* Top section (between page title and filters) on Special:Watchlist.
*
@@ -13,27 +12,22 @@ let MarkSeenButtonWidget = require( './MarkSeenButtonWidget.js' ),
* @param {jQuery} $watchlistDetails Content of the 'details' section that includes watched pages count
* @param {Object} [config] Configuration object
*/
-WatchlistTopSectionWidget = function MwRcfiltersUiWatchlistTopSectionWidget(
+const WatchlistTopSectionWidget = function MwRcfiltersUiWatchlistTopSectionWidget(
controller, changesListModel, savedLinksListWidget, $watchlistDetails, config
) {
- let editWatchlistButton,
- markSeenButton,
- $topTable,
- $bottomTable,
- $separator;
config = config || {};
// Parent
WatchlistTopSectionWidget.super.call( this, config );
- editWatchlistButton = new OO.ui.ButtonWidget( {
+ const editWatchlistButton = new OO.ui.ButtonWidget( {
label: mw.msg( 'rcfilters-watchlist-edit-watchlist-button' ),
icon: 'edit',
href: require( '../config.json' ).StructuredChangeFiltersEditWatchlistUrl
} );
- markSeenButton = new MarkSeenButtonWidget( controller, changesListModel );
+ const markSeenButton = new MarkSeenButtonWidget( controller, changesListModel );
- $topTable = $( '<div>' )
+ const $topTable = $( '<div>' )
.addClass( 'mw-rcfilters-ui-table' )
.append(
$( '<div>' )
@@ -52,7 +46,7 @@ WatchlistTopSectionWidget = function MwRcfiltersUiWatchlistTopSectionWidget(
)
);
- $bottomTable = $( '<div>' )
+ const $bottomTable = $( '<div>' )
.addClass( 'mw-rcfilters-ui-table' )
.addClass( 'mw-rcfilters-ui-watchlistTopSectionWidget-savedLinksTable' )
.append(
@@ -71,7 +65,7 @@ WatchlistTopSectionWidget = function MwRcfiltersUiWatchlistTopSectionWidget(
)
);
- $separator = $( '<div>' )
+ const $separator = $( '<div>' )
.addClass( 'mw-rcfilters-ui-watchlistTopSectionWidget-separator' );
this.$element