diff options
Diffstat (limited to 'www/wiki/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MarkSeenButtonWidget.js')
-rw-r--r-- | www/wiki/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MarkSeenButtonWidget.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/www/wiki/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MarkSeenButtonWidget.js b/www/wiki/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MarkSeenButtonWidget.js new file mode 100644 index 00000000..d447f918 --- /dev/null +++ b/www/wiki/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MarkSeenButtonWidget.js @@ -0,0 +1,55 @@ +( function ( mw ) { + /** + * Button for marking all changes as seen on the Watchlist + * + * @extends OO.ui.ButtonWidget + * + * @constructor + * @param {mw.rcfilters.Controller} controller + * @param {mw.rcfilters.dm.ChangesListViewModel} model Changes list view model + * @param {Object} [config] Configuration object + */ + mw.rcfilters.ui.MarkSeenButtonWidget = function MwRcfiltersUiMarkSeenButtonWidget( controller, model, config ) { + config = config || {}; + + // Parent + mw.rcfilters.ui.MarkSeenButtonWidget.parent.call( this, $.extend( { + label: mw.message( 'rcfilters-watchlist-markseen-button' ).text(), + icon: 'checkAll' + }, config ) ); + + this.controller = controller; + this.model = model; + + // Events + this.connect( this, { click: 'onClick' } ); + this.model.connect( this, { update: 'onModelUpdate' } ); + + this.$element.addClass( 'mw-rcfilters-ui-markSeenButtonWidget' ); + + this.onModelUpdate(); + }; + + /* Initialization */ + + OO.inheritClass( mw.rcfilters.ui.MarkSeenButtonWidget, OO.ui.ButtonWidget ); + + /* Methods */ + + /** + * Respond to the button being clicked + */ + mw.rcfilters.ui.MarkSeenButtonWidget.prototype.onClick = function () { + this.controller.markAllChangesAsSeen(); + // assume there's no more unseen changes until the next model update + this.setDisabled( true ); + }; + + /** + * Respond to the model being updated with new changes + */ + mw.rcfilters.ui.MarkSeenButtonWidget.prototype.onModelUpdate = function () { + this.setDisabled( !this.model.hasUnseenWatchedChanges() ); + }; + +}( mediaWiki ) ); |