diff options
Diffstat (limited to 'www/wiki/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.LiveUpdateButtonWidget.js')
-rw-r--r-- | www/wiki/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.LiveUpdateButtonWidget.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/www/wiki/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.LiveUpdateButtonWidget.js b/www/wiki/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.LiveUpdateButtonWidget.js new file mode 100644 index 00000000..0fb3cb77 --- /dev/null +++ b/www/wiki/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.LiveUpdateButtonWidget.js @@ -0,0 +1,69 @@ +( function ( mw ) { + /** + * Widget for toggling live updates + * + * @extends OO.ui.ToggleButtonWidget + * + * @constructor + * @param {mw.rcfilters.Controller} controller + * @param {mw.rcfilters.dm.ChangesListViewModel} changesListModel + * @param {Object} [config] Configuration object + */ + mw.rcfilters.ui.LiveUpdateButtonWidget = function MwRcfiltersUiLiveUpdateButtonWidget( controller, changesListModel, config ) { + config = config || {}; + + // Parent + mw.rcfilters.ui.LiveUpdateButtonWidget.parent.call( this, $.extend( { + label: mw.message( 'rcfilters-liveupdates-button' ).text() + }, config ) ); + + this.controller = controller; + this.model = changesListModel; + + // Events + this.connect( this, { click: 'onClick' } ); + this.model.connect( this, { liveUpdateChange: 'onLiveUpdateChange' } ); + + this.$element.addClass( 'mw-rcfilters-ui-liveUpdateButtonWidget' ); + + this.setState( false ); + }; + + /* Initialization */ + + OO.inheritClass( mw.rcfilters.ui.LiveUpdateButtonWidget, OO.ui.ToggleButtonWidget ); + + /* Methods */ + + /** + * Respond to the button being clicked + */ + mw.rcfilters.ui.LiveUpdateButtonWidget.prototype.onClick = function () { + this.controller.toggleLiveUpdate(); + }; + + /** + * Set the button's state and change its appearance + * + * @param {boolean} enable Whether the 'live update' feature is now on/off + */ + mw.rcfilters.ui.LiveUpdateButtonWidget.prototype.setState = function ( enable ) { + this.setValue( enable ); + this.setIcon( enable ? 'stop' : 'play' ); + this.setTitle( mw.message( + enable ? + 'rcfilters-liveupdates-button-title-on' : + 'rcfilters-liveupdates-button-title-off' + ).text() ); + }; + + /** + * Respond to the 'live update' feature being turned on/off + * + * @param {boolean} enable Whether the 'live update' feature is now on/off + */ + mw.rcfilters.ui.LiveUpdateButtonWidget.prototype.onLiveUpdateChange = function ( enable ) { + this.setState( enable ); + }; + +}( mediaWiki ) ); |