savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ),
filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
changesListModel = new mw.rcfilters.dm.ChangesListViewModel(),
- savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel(),
+ savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel( filtersModel ),
controller = new mw.rcfilters.Controller(
filtersModel, changesListModel, savedQueriesModel,
{
savedLinksListWidget = new mw.rcfilters.ui.SavedLinksListWidget(
controller, savedQueriesModel, { $overlay: $overlay }
),
- currentPage = mw.config.get( 'wgCanonicalNamespace' ) +
- ':' +
- mw.config.get( 'wgCanonicalSpecialPageName' );
+ specialPage = mw.config.get( 'wgCanonicalSpecialPageName' );
// TODO: The changesListWrapperWidget should be able to initialize
// after the model is ready.
new mw.rcfilters.ui.ChangesListWrapperWidget(
filtersModel, changesListModel, controller, $( '.mw-changeslist, .mw-changeslist-empty' ) );
+ // Remove the -loading class that may have been added on the server side.
+ // If we are in fact going to load a default saved query, this .initialize()
+ // call will do that and add the -loading class right back.
+ $( 'body' ).removeClass( 'mw-rcfilters-ui-loading' );
+
controller.initialize(
mw.config.get( 'wgStructuredChangeFilters' ),
mw.config.get( 'wgFormattedNamespaces' ),
filtersModel, changesListModel, controller, $( 'fieldset.cloptions' ) );
$( '.rcfilters-container' ).append( filtersWidget.$element );
- $( 'body' ).append( $overlay );
- $( '.rcfilters-head' ).addClass( 'mw-rcfilters-ui-ready' );
+ $( 'body' )
+ .append( $overlay )
+ .addClass( 'mw-rcfilters-ui-initialized' );
$( 'a.mw-helplink' ).attr(
'href',
controller.replaceUrl();
- if ( currentPage === 'Special:Recentchanges' ||
- currentPage === 'Special:Recentchangeslinked' ) {
+ if ( specialPage === 'Recentchanges' ||
+ specialPage === 'Recentchangeslinked' ) {
$topLinks = $( '.mw-recentchanges-toplinks' ).detach();
rcTopSection = new mw.rcfilters.ui.RcTopSectionWidget(
filtersWidget.setTopSection( rcTopSection.$element );
} // end Special:RC
- if ( currentPage === 'Special:Watchlist' ) {
+ if ( specialPage === 'Watchlist' ) {
$( '#contentSub, form#mw-watchlist-resetbutton' ).detach();
$watchlistDetails = $( '.watchlistDetails' ).detach().contents();
filtersWidget.setTopSection( wlTopSection.$element );
} // end Special:WL
+ // Log performance data
+ if ( window.performance && window.performance.now ) {
+ mw.track(
+ 'timing.MediaWiki.timing.structuredChangeFilters.ready.' + specialPage,
+ window.performance.now()
+ );
+ mw.track(
+ 'timing.MediaWiki.timing.structuredChangeFilters.backendResponse.' + specialPage,
+ mw.config.get( 'wgBackendResponseTime' )
+ );
+ }
+
/**
* Fired when initialization of the filtering interface for changes list is complete.
*
}
};
- $( rcfilters.init );
+ // Early execute of init
+ if ( document.readyState === 'interactive' || document.readyState === 'complete' ) {
+ rcfilters.init();
+ } else {
+ $( rcfilters.init );
+ }
module.exports = rcfilters;