1 var ValuePickerWidget
= require( './ValuePickerWidget.js' ),
2 ChangesLimitPopupWidget
;
5 * Widget defining the popup to choose number of results
7 * @class mw.rcfilters.ui.ChangesLimitPopupWidget
8 * @extends OO.ui.Widget
11 * @param {mw.rcfilters.dm.FilterGroup} limitModel Group model for 'limit'
12 * @param {mw.rcfilters.dm.FilterItem} groupByPageItemModel Group model for 'limit'
13 * @param {Object} [config] Configuration object
15 ChangesLimitPopupWidget
= function MwRcfiltersUiChangesLimitPopupWidget( limitModel
, groupByPageItemModel
, config
) {
16 config
= config
|| {};
19 ChangesLimitPopupWidget
.parent
.call( this, config
);
21 this.limitModel
= limitModel
;
22 this.groupByPageItemModel
= groupByPageItemModel
;
24 this.valuePicker
= new ValuePickerWidget(
27 label
: mw
.msg( 'rcfilters-limit-title' )
31 this.groupByPageCheckbox
= new OO
.ui
.CheckboxInputWidget( {
32 selected
: this.groupByPageItemModel
.isSelected()
36 this.valuePicker
.connect( this, { choose
: [ 'emit', 'limit' ] } );
37 this.groupByPageCheckbox
.connect( this, { change
: [ 'emit', 'groupByPage' ] } );
38 this.groupByPageItemModel
.connect( this, { update
: 'onGroupByPageModelUpdate' } );
42 .addClass( 'mw-rcfilters-ui-changesLimitPopupWidget' )
44 this.valuePicker
.$element
,
45 new OO
.ui
.FieldLayout(
46 this.groupByPageCheckbox
,
49 label
: mw
.msg( 'rcfilters-group-results-by-page' )
57 OO
.inheritClass( ChangesLimitPopupWidget
, OO
.ui
.Widget
);
63 * @param {string} name Item name
65 * A limit item was chosen
70 * @param {boolean} isGrouped The results are grouped by page
72 * Results are grouped by page
76 * Respond to group by page model update
78 ChangesLimitPopupWidget
.prototype.onGroupByPageModelUpdate = function () {
79 this.groupByPageCheckbox
.setSelected( this.groupByPageItemModel
.isSelected() );
82 module
.exports
= ChangesLimitPopupWidget
;