Merge "resources: Strip '$' and 'mw' from file closures"
[lhc/web/wiklou.git] / resources / src / mediawiki.rcfilters / ui / mw.rcfilters.ui.ViewSwitchWidget.js
1 ( function () {
2 /**
3 * A widget for the footer for the default view, allowing to switch views
4 *
5 * @extends OO.ui.Widget
6 *
7 * @constructor
8 * @param {mw.rcfilters.Controller} controller Controller
9 * @param {mw.rcfilters.dm.FiltersViewModel} model View model
10 * @param {Object} [config] Configuration object
11 */
12 mw.rcfilters.ui.ViewSwitchWidget = function MwRcfiltersUiViewSwitchWidget( controller, model, config ) {
13 config = config || {};
14
15 // Parent
16 mw.rcfilters.ui.ViewSwitchWidget.parent.call( this, config );
17
18 this.controller = controller;
19 this.model = model;
20
21 this.buttons = new mw.rcfilters.ui.GroupWidget( {
22 events: {
23 click: 'buttonClick'
24 },
25 items: [
26 new OO.ui.ButtonWidget( {
27 data: 'namespaces',
28 icon: 'article',
29 label: mw.msg( 'namespaces' )
30 } ),
31 new OO.ui.ButtonWidget( {
32 data: 'tags',
33 icon: 'tag',
34 label: mw.msg( 'rcfilters-view-tags' )
35 } )
36 ]
37 } );
38
39 // Events
40 this.model.connect( this, { update: 'onModelUpdate' } );
41 this.buttons.connect( this, { buttonClick: 'onButtonClick' } );
42
43 this.$element
44 .addClass( 'mw-rcfilters-ui-viewSwitchWidget' )
45 .append(
46 new OO.ui.LabelWidget( {
47 label: mw.msg( 'rcfilters-advancedfilters' )
48 } ).$element,
49 $( '<div>' )
50 .addClass( 'mw-rcfilters-ui-viewSwitchWidget-buttons' )
51 .append( this.buttons.$element )
52 );
53 };
54
55 /* Initialize */
56
57 OO.inheritClass( mw.rcfilters.ui.ViewSwitchWidget, OO.ui.Widget );
58
59 /**
60 * Respond to model update event
61 */
62 mw.rcfilters.ui.ViewSwitchWidget.prototype.onModelUpdate = function () {
63 var currentView = this.model.getCurrentView();
64
65 this.buttons.getItems().forEach( function ( buttonWidget ) {
66 buttonWidget.setActive( buttonWidget.getData() === currentView );
67 } );
68 };
69
70 /**
71 * Respond to button switch click
72 *
73 * @param {OO.ui.ButtonWidget} buttonWidget Clicked button
74 */
75 mw.rcfilters.ui.ViewSwitchWidget.prototype.onButtonClick = function ( buttonWidget ) {
76 this.controller.switchView( buttonWidget.getData() );
77 };
78 }() );