2 var ValuePickerWidget
= require( './ValuePickerWidget.js' ),
3 ChangesLimitPopupWidget
;
6 * Widget defining the popup to choose number of results
8 * @class mw.rcfilters.ui.ChangesLimitPopupWidget
9 * @extends OO.ui.Widget
12 * @param {mw.rcfilters.dm.FilterGroup} limitModel Group model for 'limit'
13 * @param {mw.rcfilters.dm.FilterItem} groupByPageItemModel Group model for 'limit'
14 * @param {Object} [config] Configuration object
16 ChangesLimitPopupWidget
= function MwRcfiltersUiChangesLimitPopupWidget( limitModel
, groupByPageItemModel
, config
) {
17 config
= config
|| {};
20 ChangesLimitPopupWidget
.parent
.call( this, config
);
22 this.limitModel
= limitModel
;
23 this.groupByPageItemModel
= groupByPageItemModel
;
25 this.valuePicker
= new ValuePickerWidget(
28 label
: mw
.msg( 'rcfilters-limit-title' )
32 this.groupByPageCheckbox
= new OO
.ui
.CheckboxInputWidget( {
33 selected
: this.groupByPageItemModel
.isSelected()
37 this.valuePicker
.connect( this, { choose
: [ 'emit', 'limit' ] } );
38 this.groupByPageCheckbox
.connect( this, { change
: [ 'emit', 'groupByPage' ] } );
39 this.groupByPageItemModel
.connect( this, { update
: 'onGroupByPageModelUpdate' } );
43 .addClass( 'mw-rcfilters-ui-changesLimitPopupWidget' )
45 this.valuePicker
.$element
,
46 new OO
.ui
.FieldLayout(
47 this.groupByPageCheckbox
,
50 label
: mw
.msg( 'rcfilters-group-results-by-page' )
58 OO
.inheritClass( ChangesLimitPopupWidget
, OO
.ui
.Widget
);
64 * @param {string} name Item name
66 * A limit item was chosen
71 * @param {boolean} isGrouped The results are grouped by page
73 * Results are grouped by page
77 * Respond to group by page model update
79 ChangesLimitPopupWidget
.prototype.onGroupByPageModelUpdate = function () {
80 this.groupByPageCheckbox
.setSelected( this.groupByPageItemModel
.isSelected() );
83 module
.exports
= ChangesLimitPopupWidget
;