Merge "Change 'editfont' default preference to 'monospace'"
[lhc/web/wiklou.git] / resources / src / mediawiki.rcfilters / ui / mw.rcfilters.ui.ChangesLimitPopupWidget.js
1 ( function ( mw ) {
2 /**
3 * Widget defining the popup to choose number of results
4 *
5 * @extends OO.ui.Widget
6 *
7 * @constructor
8 * @param {mw.rcfilters.dm.FilterGroup} limitModel Group model for 'limit'
9 * @param {mw.rcfilters.dm.FilterItem} groupByPageItemModel Group model for 'limit'
10 * @param {Object} [config] Configuration object
11 */
12 mw.rcfilters.ui.ChangesLimitPopupWidget = function MwRcfiltersUiChangesLimitPopupWidget( limitModel, groupByPageItemModel, config ) {
13 config = config || {};
14
15 // Parent
16 mw.rcfilters.ui.ChangesLimitPopupWidget.parent.call( this, config );
17
18 this.limitModel = limitModel;
19 this.groupByPageItemModel = groupByPageItemModel;
20
21 this.valuePicker = new mw.rcfilters.ui.ValuePickerWidget(
22 this.limitModel,
23 {
24 label: mw.msg( 'rcfilters-limit-title' )
25 }
26 );
27
28 this.groupByPageCheckbox = new OO.ui.CheckboxInputWidget( {
29 selected: this.groupByPageItemModel.isSelected()
30 } );
31
32 // Events
33 this.valuePicker.connect( this, { choose: [ 'emit', 'limit' ] } );
34 this.groupByPageCheckbox.connect( this, { change: [ 'emit', 'groupByPage' ] } );
35
36 // Initialize
37 this.$element
38 .addClass( 'mw-rcfilters-ui-changesLimitPopupWidget' )
39 .append(
40 this.valuePicker.$element,
41 new OO.ui.FieldsetLayout( {
42 label: mw.msg( 'rcfilters-grouping-title' ),
43 items: [
44 new OO.ui.FieldLayout(
45 this.groupByPageCheckbox,
46 {
47 align: 'inline',
48 label: mw.msg( 'rcfilters-group-results-by-page' )
49 }
50 )
51 ]
52 } ).$element
53 );
54 };
55
56 /* Initialization */
57
58 OO.inheritClass( mw.rcfilters.ui.ChangesLimitPopupWidget, OO.ui.Widget );
59
60 /* Events */
61
62 /**
63 * @event limit
64 * @param {string} name Item name
65 *
66 * A limit item was chosen
67 */
68
69 /**
70 * @event groupByPage
71 * @param {boolean} isGrouped The results are grouped by page
72 *
73 * Results are grouped by page
74 */
75
76 /**
77 * Respond to group by page model update
78 */
79 mw.rcfilters.ui.ChangesLimitPopupWidget.prototype.onGroupByPageModelUpdate = function () {
80 this.groupByPageCheckbox.setSelected( this.groupByPageItemModel.isSelected() );
81 };
82 }( mediaWiki ) );