summaryrefslogtreecommitdiff
path: root/www/wiki/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.DatePopupWidget.js
blob: 2014ef75a3c34230d420af569c1482f1595a2d8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
( function ( mw ) {
	/**
	 * Widget defining the popup to choose date for the results
	 *
	 * @extends OO.ui.Widget
	 *
	 * @constructor
	 * @param {mw.rcfilters.dm.FilterGroup} model Group model for 'days'
	 * @param {Object} [config] Configuration object
	 */
	mw.rcfilters.ui.DatePopupWidget = function MwRcfiltersUiDatePopupWidget( model, config ) {
		config = config || {};

		// Parent
		mw.rcfilters.ui.ChangesLimitPopupWidget.parent.call( this, config );
		// Mixin constructors
		OO.ui.mixin.LabelElement.call( this, config );

		this.model = model;

		this.hoursValuePicker = new mw.rcfilters.ui.ValuePickerWidget(
			this.model,
			{
				classes: [ 'mw-rcfilters-ui-datePopupWidget-hours' ],
				label: mw.msg( 'rcfilters-hours-title' ),
				itemFilter: function ( itemModel ) { return Number( itemModel.getParamName() ) < 1; }
			}
		);
		this.daysValuePicker = new mw.rcfilters.ui.ValuePickerWidget(
			this.model,
			{
				classes: [ 'mw-rcfilters-ui-datePopupWidget-days' ],
				label: mw.msg( 'rcfilters-days-title' ),
				itemFilter: function ( itemModel ) { return Number( itemModel.getParamName() ) >= 1; }
			}
		);

		// Events
		this.hoursValuePicker.connect( this, { choose: [ 'emit', 'days' ] } );
		this.daysValuePicker.connect( this, { choose: [ 'emit', 'days' ] } );

		// Initialize
		this.$element
			.addClass( 'mw-rcfilters-ui-datePopupWidget' )
			.append(
				this.$label
					.addClass( 'mw-rcfilters-ui-datePopupWidget-title' ),
				this.hoursValuePicker.$element,
				this.daysValuePicker.$element
			);
	};

	/* Initialization */

	OO.inheritClass( mw.rcfilters.ui.DatePopupWidget, OO.ui.Widget );
	OO.mixinClass( mw.rcfilters.ui.DatePopupWidget, OO.ui.mixin.LabelElement );

	/* Events */

	/**
	 * @event days
	 * @param {string} name Item name
	 *
	 * A days item was chosen
	 */
}( mediaWiki ) );