Merge pull request #63 from amire80/bug_43568

Render every region only once
This commit is contained in:
Santhosh Thottingal
2013-01-07 06:44:04 -08:00
2 changed files with 15 additions and 13 deletions

View File

@@ -272,7 +272,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();
@@ -282,7 +283,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,
@@ -296,7 +297,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 ) {