Render every region only once

Fixes bug
https://bugzilla.wikimedia.org/show_bug.cgi?id=43568
This commit is contained in:
Amir E. Aharoni
2013-01-03 09:33:44 +02:00
parent d4ef33d4f8
commit 13473c9f7a
2 changed files with 15 additions and 13 deletions

View File

@@ -268,7 +268,8 @@
// The region section need to be in sync with the map filter.
lcd.$element.scroll( function () {
var $ulsLanguageList = $( this ),
var inview, inviewRegion,
$ulsLanguageList = $( this ),
scrollTop = $ulsLanguageList.position().top,
scrollBottom = $ulsLanguageList.height();
@@ -278,7 +279,7 @@
}
}
// The region section need to be in sync with the map filter.
var inviewRegion = 'WW';
inviewRegion = 'WW';
lcd.$element.find( 'div.uls-lcd-region-section' ).each( function () {
var $lcdRegionSection = $( this ),
top = $lcdRegionSection.position().top,
@@ -292,7 +293,7 @@
}
} );
var inview = $.uls.data.regiongroups[inviewRegion];
inview = $.uls.data.regiongroups[inviewRegion];
$( '.regionselector' ).removeClass( 'active' );
$( '#uls-region-' + inview ).addClass( 'active' );
} );

View File

@@ -110,21 +110,22 @@
},
next: function () {
if ( !this.$element.hasClass( 'active') ) {
var regionSelector = this;
if ( !this.$element.hasClass( 'active' ) ) {
return true;
}
var regionSelector = this;
// Do not respond to all scroll end events, but only after a short interval
delay( function () {
var regiongroup = regionSelector.$element.data( 'regiongroup' );
var nextRegiongroup = regiongroup + 1;
var nextRegionGroupNumber = regionSelector.$element.data( 'regiongroup' ) + 1,
$nextRegion = $( '#uls-region-' + nextRegionGroupNumber ),
nextRegionSelector = $nextRegion.length && $nextRegion.data( 'regionselector' );
var $nextRegion = $( '#uls-region-' + nextRegiongroup );
var next = $nextRegion.length && $nextRegion.data( 'regionselector' );
if ( next ) {
next.show();
// If cache is defined, then it is already rendered and there's no need
// to re-render it.
if ( nextRegionSelector && nextRegionSelector.cache === null ) {
nextRegionSelector.show();
}
}, 100 );
@@ -133,7 +134,7 @@
listen: function () {
this.$element.on( 'click', $.proxy( this.click, this ) );
this.options.$target.$element.bind( 'scrollend', $.proxy( this.next, this) );
this.options.$target.$element.bind( 'scrollend', $.proxy( this.next, this ) );
},
click: function ( e ) {