* @param {mw.rcfilters.Controller} controller Controller
* @param {mw.rcfilters.dm.FiltersViewModel} model View model
* @param {mw.rcfilters.dm.SavedQueriesModel} savedQueriesModel Saved queries model
+ * @param {mw.rcfilters.dm.ChangesListViewModel} changesListModel
* @param {Object} [config] Configuration object
* @cfg {Object} [filters] A definition of the filter groups in this list
* @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
*/
- mw.rcfilters.ui.FilterWrapperWidget = function MwRcfiltersUiFilterWrapperWidget( controller, model, savedQueriesModel, config ) {
- var $bottom;
+ mw.rcfilters.ui.FilterWrapperWidget = function MwRcfiltersUiFilterWrapperWidget(
+ controller, model, savedQueriesModel, changesListModel, config
+ ) {
+ var $top, $bottom;
config = config || {};
// Parent
);
this.liveUpdateButton = new mw.rcfilters.ui.LiveUpdateButtonWidget(
- this.controller
+ this.controller,
+ changesListModel
);
- // Initialize
- this.$element
- .addClass( 'mw-rcfilters-ui-filterWrapperWidget' );
+ this.numChangesWidget = new mw.rcfilters.ui.ChangesLimitButtonWidget(
+ this.controller,
+ this.model,
+ {
+ $overlay: this.$overlay
+ }
+ );
- if ( mw.config.get( 'wgStructuredChangeFiltersEnableSaving' ) ) {
- this.savedLinksListWidget = new mw.rcfilters.ui.SavedLinksListWidget(
- this.controller,
- this.queriesModel,
- { $overlay: this.$overlay }
+ this.dateWidget = new mw.rcfilters.ui.DateButtonWidget(
+ this.controller,
+ this.model,
+ {
+ $overlay: this.$overlay
+ }
+ );
+
+ // Initialize
+ this.$topRow = $( '<div>' )
+ .addClass( 'mw-rcfilters-ui-row' )
+ .append(
+ $( '<div>' )
+ .addClass( 'mw-rcfilters-ui-cell' )
+ .addClass( 'mw-rcfilters-ui-filterWrapperWidget-top-placeholder' )
);
+ $top = $( '<div>' )
+ .addClass( 'mw-rcfilters-ui-filterWrapperWidget-top' )
+ .addClass( 'mw-rcfilters-ui-table' )
+ .append( this.$topRow );
- this.$element.append(
- this.savedLinksListWidget.$element
+ $bottom = $( '<div>' )
+ .addClass( 'mw-rcfilters-ui-filterWrapperWidget-bottom' )
+ .append(
+ this.numChangesWidget.$element,
+ this.dateWidget.$element
);
- }
+ this.savedLinksListWidget = new mw.rcfilters.ui.SavedLinksListWidget(
+ this.controller,
+ this.queriesModel,
+ { $overlay: this.$overlay }
+ );
- $bottom = $( '<div>' )
- .addClass( 'mw-rcfilters-ui-filterWrapperWidget-bottom' );
+ this.$topRow.append(
+ $( '<div>' )
+ .addClass( 'mw-rcfilters-ui-cell' )
+ .addClass( 'mw-rcfilters-ui-filterWrapperWidget-top-savedLinks' )
+ .append( this.savedLinksListWidget.$element )
+ );
- if (
- mw.config.get( 'wgStructuredChangeFiltersEnableLiveUpdate' ) ||
- // Allow users to enable live update with ?liveupdate=1
- new mw.Uri().query.liveupdate
- ) {
+ if ( mw.rcfilters.featureFlags.liveUpdate ) {
$bottom.append( this.liveUpdateButton.$element );
}
- this.$element.append(
- this.filterTagWidget.$element,
- $bottom
- );
+ this.$element
+ .addClass( 'mw-rcfilters-ui-filterWrapperWidget' )
+ .append(
+ $top,
+ this.filterTagWidget.$element,
+ $bottom
+ );
};
/* Initialization */
OO.inheritClass( mw.rcfilters.ui.FilterWrapperWidget, OO.ui.Widget );
OO.mixinClass( mw.rcfilters.ui.FilterWrapperWidget, OO.ui.mixin.PendingElement );
+
+ /* Methods */
+
+ /**
+ * Add a widget at the beginning of the top row
+ *
+ * @param {OO.ui.Widget} widget Any widget
+ */
+ mw.rcfilters.ui.FilterWrapperWidget.prototype.prependToTopRow = function ( widget ) {
+ this.$topRow.prepend(
+ widget.$element
+ .addClass( 'mw-rcfilters-ui-cell' )
+ );
+ };
+
}( mediaWiki ) );