2 * JavaScript for Special:RecentChanges
12 var filtersModel
= new mw
.rcfilters
.dm
.FiltersViewModel(),
13 changesListModel
= new mw
.rcfilters
.dm
.ChangesListViewModel(),
14 savedQueriesModel
= new mw
.rcfilters
.dm
.SavedQueriesModel(),
15 controller
= new mw
.rcfilters
.Controller( filtersModel
, changesListModel
, savedQueriesModel
),
16 $overlay
= $( '<div>' )
17 .addClass( 'mw-rcfilters-ui-overlay' ),
18 filtersWidget
= new mw
.rcfilters
.ui
.FilterWrapperWidget(
19 controller
, filtersModel
, savedQueriesModel
, { $overlay
: $overlay
} );
21 // TODO: The changesListWrapperWidget should be able to initialize
22 // after the model is ready.
23 // eslint-disable-next-line no-new
24 new mw
.rcfilters
.ui
.ChangesListWrapperWidget(
25 filtersModel
, changesListModel
, $( '.mw-changeslist, .mw-changeslist-empty' ) );
27 controller
.initialize( mw
.config
.get( 'wgStructuredChangeFilters' ), mw
.config
.get( 'wgFormattedNamespaces' ) );
29 // eslint-disable-next-line no-new
30 new mw
.rcfilters
.ui
.FormWrapperWidget(
31 filtersModel
, changesListModel
, controller
, $( 'fieldset.rcoptions' ) );
33 $( '.rcfilters-container' ).append( filtersWidget
.$element
);
34 $( 'body' ).append( $overlay
);
37 $( '.rcfilters-head' ).addClass( 'mw-rcfilters-ui-ready' );
39 window
.addEventListener( 'popstate', function () {
40 // Update the state of the model from the URL
41 // and re-fetch results into the changes list
42 controller
.updateStateFromUrl();
45 $( 'a.mw-helplink' ).attr(
47 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:New_filters_for_edit_review'
50 controller
.replaceUrl();
56 module
.exports
= rcfilters
;
58 }( mediaWiki
, jQuery
) );