Merge "RCFilters: Make extra filters footer non-sticky"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 27 Jun 2017 19:14:08 +0000 (19:14 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 27 Jun 2017 19:14:09 +0000 (19:14 +0000)
1  2 
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js

                // based on view
                config.footers = config.footers || [];
                config.footers.forEach( function ( footerData ) {
-                       var adjustedData = {
-                               // Wrap the element with our own footer wrapper
-                               $element: $( '<div>' )
-                                       .addClass( 'mw-rcfilters-ui-menuSelectWidget-footer' )
-                                       .addClass( 'mw-rcfilters-ui-menuSelectWidget-footer-' + footerData.name )
-                                       .append( footerData.$element ),
-                               views: footerData.views
-                       };
+                       var isSticky = footerData.sticky === undefined ? true : !!footerData.sticky,
+                               adjustedData = {
+                                       // Wrap the element with our own footer wrapper
+                                       $element: $( '<div>' )
+                                               .addClass( 'mw-rcfilters-ui-menuSelectWidget-footer' )
+                                               .addClass( 'mw-rcfilters-ui-menuSelectWidget-footer-' + footerData.name )
+                                               .append( footerData.$element ),
+                                       views: footerData.views
+                               };
  
                        this.footers.push( adjustedData );
-                       this.$element.append( adjustedData.$element );
+                       if ( isSticky ) {
+                               this.$element.append( adjustedData.$element );
+                       } else {
+                               this.$body.append( adjustedData.$element );
+                       }
                }.bind( this ) );
  
                // Switch to the correct view
  
                // Count groups per view
                $.each( groups, function ( groupName, groupModel ) {
 -                      viewGroupCount[ groupModel.getView() ] = viewGroupCount[ groupModel.getView() ] || 0;
 -                      viewGroupCount[ groupModel.getView() ]++;
 +                      if ( !groupModel.isHidden() ) {
 +                              viewGroupCount[ groupModel.getView() ] = viewGroupCount[ groupModel.getView() ] || 0;
 +                              viewGroupCount[ groupModel.getView() ]++;
 +                      }
                } );
  
                $.each( groups, function ( groupName, groupModel ) {
                        var currentItems = [],
                                view = groupModel.getView();
  
 -                      if ( viewGroupCount[ view ] > 1 ) {
 -                              // Only add a section header if there is more than
 -                              // one group
 -                              currentItems.push(
 -                                      // Group section
 -                                      new mw.rcfilters.ui.FilterMenuSectionOptionWidget(
 -                                              widget.controller,
 -                                              groupModel,
 -                                              {
 -                                                      $overlay: widget.$overlay
 -                                              }
 -                                      )
 -                              );
 +                      if ( !groupModel.isHidden() ) {
 +                              if ( viewGroupCount[ view ] > 1 ) {
 +                                      // Only add a section header if there is more than
 +                                      // one group
 +                                      currentItems.push(
 +                                              // Group section
 +                                              new mw.rcfilters.ui.FilterMenuSectionOptionWidget(
 +                                                      widget.controller,
 +                                                      groupModel,
 +                                                      {
 +                                                              $overlay: widget.$overlay
 +                                                      }
 +                                              )
 +                                      );
 +                              }
 +
 +                              // Add items
 +                              widget.model.getGroupFilters( groupName ).forEach( function ( filterItem ) {
 +                                      currentItems.push(
 +                                              new mw.rcfilters.ui.FilterMenuOptionWidget(
 +                                                      widget.controller,
 +                                                      filterItem,
 +                                                      {
 +                                                              $overlay: widget.$overlay
 +                                                      }
 +                                              )
 +                                      );
 +                              } );
 +
 +                              // Cache the items per view, so we can switch between them
 +                              // without rebuilding the widgets each time
 +                              widget.views[ view ] = widget.views[ view ] || [];
 +                              widget.views[ view ] = widget.views[ view ].concat( currentItems );
                        }
 -
 -                      // Add items
 -                      widget.model.getGroupFilters( groupName ).forEach( function ( filterItem ) {
 -                              currentItems.push(
 -                                      new mw.rcfilters.ui.FilterMenuOptionWidget(
 -                                              widget.controller,
 -                                              filterItem,
 -                                              {
 -                                                      $overlay: widget.$overlay
 -                                              }
 -                                      )
 -                              );
 -                      } );
 -
 -                      // Cache the items per view, so we can switch between them
 -                      // without rebuilding the widgets each time
 -                      widget.views[ view ] = widget.views[ view ] || [];
 -                      widget.views[ view ] = widget.views[ view ].concat( currentItems );
                } );
  
                this.switchView( this.model.getCurrentView() );