From 745f98c5815f29b35a697071d8db457dfc34a800 Mon Sep 17 00:00:00 2001 From: Stephane Bisson Date: Thu, 3 Aug 2017 09:25:59 -0400 Subject: [PATCH] RCFilters: Remove new changes visual cue for Live Update feature Bug: T167743 Change-Id: I3863a302926bd6eb682b0cfa8f142c20a2786b9e --- .../mw.rcfilters.dm.ChangesListViewModel.js | 6 ++-- .../mw.rcfilters.Controller.js | 31 ++++++++++++------- .../ui/mw.rcfilters.ui.FormWrapperWidget.js | 4 +-- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js index 34ed2ebef2..f221b2b81f 100644 --- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js @@ -72,14 +72,14 @@ * @param {jQuery|string} changesListContent * @param {jQuery} $fieldset * @param {boolean} [isInitialDOM] Using the initial (already attached) DOM elements - * @param {boolean} [fromLiveUpdate] These are new changes fetched via Live Update + * @param {boolean} [separateOldAndNew] Whether a logical separation between old and new changes is needed * @fires update */ - mw.rcfilters.dm.ChangesListViewModel.prototype.update = function ( changesListContent, $fieldset, isInitialDOM, fromLiveUpdate ) { + mw.rcfilters.dm.ChangesListViewModel.prototype.update = function ( changesListContent, $fieldset, isInitialDOM, separateOldAndNew ) { var from = this.nextFrom; this.valid = true; this.extractNextFrom( $fieldset ); - this.emit( 'update', changesListContent, $fieldset, isInitialDOM, fromLiveUpdate ? from : null ); + this.emit( 'update', changesListContent, $fieldset, isInitialDOM, separateOldAndNew ? from : null ); }; /** diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js index 30bec87afe..e9981bdacc 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js @@ -19,6 +19,10 @@ this.initializing = false; this.prevLoggedItems = []; + + this.FILTER_CHANGE = 'filterChange'; + this.SHOW_NEW_CHANGES = 'showNewChanges'; + this.LIVE_UPDATE = 'liveUpdate'; }; /* Initialization */ @@ -489,7 +493,7 @@ mw.rcfilters.Controller.prototype.toggleLiveUpdate = function ( enable ) { this.changesListModel.toggleLiveUpdate( enable ); if ( this.changesListModel.getLiveUpdate() && this.changesListModel.getNewChangesExist() ) { - this.showNewChanges(); + this.updateChangesList( null, this.LIVE_UPDATE ); } }; @@ -522,7 +526,7 @@ if ( data.changes !== 'NO_RESULTS' ) { if ( this.changesListModel.getLiveUpdate() ) { - return this.updateChangesList( false, null, true, false ); + return this.updateChangesList( null, this.LIVE_UPDATE ); } else { this.changesListModel.setNewChangesExist( true ); } @@ -571,7 +575,7 @@ * fetching and showing the new changes */ mw.rcfilters.Controller.prototype.showNewChanges = function () { - return this.updateChangesList( false, null, true, true ); + return this.updateChangesList( null, this.SHOW_NEW_CHANGES ); }; /** @@ -987,19 +991,17 @@ /** * Update the list of changes and notify the model * - * @param {boolean} [updateUrl=true] Whether the URL should be updated with the current state of the filters * @param {Object} [params] Extra parameters to add to the API call - * @param {boolean} [isLiveUpdate=false] The purpose of this update is to show new results for the same filters - * @param {boolean} [invalidateCurrentChanges=true] Invalidate current changes by default (show spinner) + * @param {string} [updateMode='filterChange'] One of 'filterChange', 'liveUpdate', 'showNewChanges' * @return {jQuery.Promise} Promise that is resolved when the update is complete */ - mw.rcfilters.Controller.prototype.updateChangesList = function ( updateUrl, params, isLiveUpdate, invalidateCurrentChanges ) { - updateUrl = updateUrl === undefined ? true : updateUrl; - invalidateCurrentChanges = invalidateCurrentChanges === undefined ? true : invalidateCurrentChanges; - if ( updateUrl ) { + mw.rcfilters.Controller.prototype.updateChangesList = function ( params, updateMode ) { + updateMode = updateMode === undefined ? this.FILTER_CHANGE : updateMode; + + if ( updateMode === this.FILTER_CHANGE ) { this._updateURL( params ); } - if ( invalidateCurrentChanges ) { + if ( updateMode === this.FILTER_CHANGE || updateMode === this.SHOW_NEW_CHANGES ) { this.changesListModel.invalidate(); } this.changesListModel.setNewChangesExist( false ); @@ -1010,7 +1012,12 @@ function ( pieces ) { var $changesListContent = pieces.changes, $fieldset = pieces.fieldset; - this.changesListModel.update( $changesListContent, $fieldset, false, isLiveUpdate ); + this.changesListModel.update( + $changesListContent, + $fieldset, + false, + updateMode === this.SHOW_NEW_CHANGES + ); }.bind( this ) // Do nothing for failure ) diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js index 44f6da74b5..7f7bbd2364 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js @@ -54,7 +54,7 @@ * @return {boolean} false */ mw.rcfilters.ui.FormWrapperWidget.prototype.onLinkClick = function ( e ) { - this.controller.updateChangesList( true, $( e.target ).data( 'params' ) ); + this.controller.updateChangesList( $( e.target ).data( 'params' ) ); return false; }; @@ -78,7 +78,7 @@ data[ $( this ).prop( 'name' ) ] = value; } ); - this.controller.updateChangesList( true, data ); + this.controller.updateChangesList( data ); return false; }; -- 2.20.1