When Id55702ecbe6b96ee57453d4f86f20bd94a401d7c
introduced the MainWrapperWidget, it changed
the order on initialization, which prevents
ChangesListViewModel from getting the initial
value of the 'from' parameter and thus
disables polling for new changes.
This patch ensures ChangesListViewModel is
given the initial form in its constructor
so it can extract what it needs from it
before the page DOM is being transformed.
Bug: T182788
Change-Id: I1b72790194877ff0f200c87e4f40a942f1ccac3b
*
* @mixins OO.EventEmitter
*
*
* @mixins OO.EventEmitter
*
+ * @param {jQuery} $initialFieldset The initial server-generated legacy form content
- mw.rcfilters.dm.ChangesListViewModel = function MwRcfiltersDmChangesListViewModel() {
+ mw.rcfilters.dm.ChangesListViewModel = function MwRcfiltersDmChangesListViewModel( $initialFieldset ) {
// Mixin constructor
OO.EventEmitter.call( this );
this.valid = true;
this.newChangesExist = false;
// Mixin constructor
OO.EventEmitter.call( this );
this.valid = true;
this.newChangesExist = false;
this.liveUpdate = false;
this.unseenWatchedChanges = false;
this.liveUpdate = false;
this.unseenWatchedChanges = false;
+
+ this.extractNextFrom( $initialFieldset );
* @param {jQuery|string} changesListContent
* @param {jQuery} $fieldset
* @param {string} noResultsDetails Type of no result error
* @param {jQuery|string} changesListContent
* @param {jQuery} $fieldset
* @param {string} noResultsDetails Type of no result error
* @param {boolean} [isInitialDOM] Using the initial (already attached) DOM elements
* @param {boolean} [separateOldAndNew] Whether a logical separation between old and new changes is needed
* @fires update
* @param {boolean} [isInitialDOM] Using the initial (already attached) DOM elements
* @param {boolean} [separateOldAndNew] Whether a logical separation between old and new changes is needed
* @fires update
*/
mw.rcfilters.dm.ChangesListViewModel.prototype.extractNextFrom = function ( $fieldset ) {
var data = $fieldset.find( '.rclistfrom > a, .wlinfo' ).data( 'params' );
*/
mw.rcfilters.dm.ChangesListViewModel.prototype.extractNextFrom = function ( $fieldset ) {
var data = $fieldset.find( '.rclistfrom > a, .wlinfo' ).data( 'params' );
- this.nextFrom = data ? data.from : null;
+ if ( data && data.from ) {
+ this.nextFrom = data.from;
+ }
var $topSection,
mainWrapperWidget,
conditionalViews = {},
var $topSection,
mainWrapperWidget,
conditionalViews = {},
+ $initialFieldset = $( 'fieldset.cloptions' ),
savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ),
daysPreferenceName = mw.config.get( 'wgStructuredChangeFiltersDaysPreferenceName' ),
limitPreferenceName = mw.config.get( 'wgStructuredChangeFiltersLimitPreferenceName' ),
filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ),
daysPreferenceName = mw.config.get( 'wgStructuredChangeFiltersDaysPreferenceName' ),
limitPreferenceName = mw.config.get( 'wgStructuredChangeFiltersLimitPreferenceName' ),
filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
- changesListModel = new mw.rcfilters.dm.ChangesListViewModel(),
+ changesListModel = new mw.rcfilters.dm.ChangesListViewModel( $initialFieldset ),
savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel( filtersModel ),
specialPage = mw.config.get( 'wgCanonicalSpecialPageName' ),
controller = new mw.rcfilters.Controller(
savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel( filtersModel ),
specialPage = mw.config.get( 'wgCanonicalSpecialPageName' ),
controller = new mw.rcfilters.Controller(
'.mw-changeslist-timeout',
'.mw-changeslist-notargetpage'
].join( ', ' ) ),
'.mw-changeslist-timeout',
'.mw-changeslist-notargetpage'
].join( ', ' ) ),
- $formContainer: $( 'fieldset.cloptions' )
+ $formContainer: $initialFieldset