Merge "Show a warning in edit preview when a template loop is detected"
[lhc/web/wiklou.git] / resources / src / mediawiki.rcfilters / ui / mw.rcfilters.ui.DatePopupWidget.js
1 ( function ( mw ) {
2 /**
3 * Widget defining the popup to choose date for the results
4 *
5 * @extends OO.ui.Widget
6 *
7 * @constructor
8 * @param {mw.rcfilters.dm.FilterGroup} model Group model for 'days'
9 * @param {Object} [config] Configuration object
10 */
11 mw.rcfilters.ui.DatePopupWidget = function MwRcfiltersUiDatePopupWidget( model, config ) {
12 config = config || {};
13
14 // Parent
15 mw.rcfilters.ui.ChangesLimitPopupWidget.parent.call( this, config );
16
17 this.model = model;
18
19 this.hoursValuePicker = new mw.rcfilters.ui.ValuePickerWidget(
20 this.model,
21 {
22 classes: [ 'mw-rcfilters-ui-datePopupWidget-hours' ],
23 label: mw.msg( 'rcfilters-hours-title' ),
24 itemFilter: function ( itemModel ) { return Number( itemModel.getParamName() ) < 1; }
25 }
26 );
27 this.daysValuePicker = new mw.rcfilters.ui.ValuePickerWidget(
28 this.model,
29 {
30 classes: [ 'mw-rcfilters-ui-datePopupWidget-days' ],
31 label: mw.msg( 'rcfilters-days-title' ),
32 itemFilter: function ( itemModel ) { return Number( itemModel.getParamName() ) >= 1; }
33 }
34 );
35
36 // Events
37 this.hoursValuePicker.connect( this, { choose: [ 'emit', 'days' ] } );
38 this.daysValuePicker.connect( this, { choose: [ 'emit', 'days' ] } );
39
40 // Initialize
41 this.$element
42 .addClass( 'mw-rcfilters-ui-datePopupWidget' )
43 .append(
44 this.hoursValuePicker.$element,
45 this.daysValuePicker.$element
46 );
47 };
48
49 /* Initialization */
50
51 OO.inheritClass( mw.rcfilters.ui.DatePopupWidget, OO.ui.Widget );
52
53 /* Events */
54
55 /**
56 * @event days
57 * @param {string} name Item name
58 *
59 * A days item was chosen
60 */
61 }( mediaWiki ) );