Update jquery.uls from upstream

Performance improvements by matmarex

Change-Id: Ie89bd56702dec231a8c27f9cf8eeb7bbffe9b251
This commit is contained in:
Santhosh Thottingal
2013-07-04 16:20:35 +05:30
parent f9498661a2
commit 44c6b50d84
4 changed files with 27 additions and 48 deletions

View File

@@ -4,13 +4,18 @@
"David1010" "David1010"
] ]
}, },
"uls-select-language": "\u10d0\u10d8\u10e0\u10e9\u10d8\u10d4\u10d7 \u10d4\u10dc\u10d0",
"uls-region-WW": "\u10db\u10e1\u10dd\u10e4\u10da\u10d8\u10dd", "uls-region-WW": "\u10db\u10e1\u10dd\u10e4\u10da\u10d8\u10dd",
"uls-region-SP": "\u10e1\u10de\u10d4\u10ea\u10d8\u10d0\u10da\u10e3\u10e0\u10d8",
"uls-region-AM": "\u10d0\u10db\u10d4\u10e0\u10d8\u10d9\u10d0", "uls-region-AM": "\u10d0\u10db\u10d4\u10e0\u10d8\u10d9\u10d0",
"uls-region-AF": "\u10d0\u10e4\u10e0\u10d8\u10d9\u10d0", "uls-region-AF": "\u10d0\u10e4\u10e0\u10d8\u10d9\u10d0",
"uls-region-EU": "\u10d4\u10d5\u10e0\u10dd\u10de\u10d0", "uls-region-EU": "\u10d4\u10d5\u10e0\u10dd\u10de\u10d0",
"uls-region-AS": "\u10d0\u10d6\u10d8\u10d0", "uls-region-AS": "\u10d0\u10d6\u10d8\u10d0",
"uls-region-ME": "\u10d0\u10ee\u10da\u10dd \u10d0\u10e6\u10db\u10dd\u10e1\u10d0\u10d5\u10da\u10d4\u10d7\u10d8", "uls-region-ME": "\u10d0\u10ee\u10da\u10dd \u10d0\u10e6\u10db\u10dd\u10e1\u10d0\u10d5\u10da\u10d4\u10d7\u10d8",
"uls-region-PA": "\u10dd\u10d9\u10d4\u10d0\u10dc\u10d4\u10d7\u10d8", "uls-region-PA": "\u10dd\u10d9\u10d4\u10d0\u10dc\u10d4\u10d7\u10d8",
"uls-no-results-found": "\u10e8\u10d4\u10d3\u10d4\u10d2\u10d8 \u10d5\u10d4\u10e0 \u10db\u10dd\u10d8\u10eb\u10d4\u10d1\u10dc\u10d0",
"uls-common-languages": "\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd \u10d4\u10dc\u10d4\u10d1\u10d8", "uls-common-languages": "\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd \u10d4\u10dc\u10d4\u10d1\u10d8",
"uls-no-results-suggestion-title": "\u10d8\u10e5\u10dc\u10d4\u10d1 \u10d7\u10e5\u10d5\u10d4\u10dc \u10d0\u10db \u10d4\u10dc\u10d4\u10d1\u10db\u10d0 \u10d3\u10d0\u10d2\u10d0\u10d8\u10dc\u10e2\u10d4\u10e0\u10d4\u10e1\u10dd\u10d7:",
"uls-search-help": "\u10eb\u10d8\u10d4\u10d1\u10d0 \u10e8\u10d4\u10e1\u10d0\u10eb\u10da\u10d4\u10d1\u10d4\u10da\u10d8\u10d0 \u10d4\u10dc\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8\u10d7 \u10d0\u10dc \u10d3\u10d0\u10db\u10ec\u10d4\u10e0\u10da\u10dd\u10d1\u10d8\u10d7, \u10d4\u10dc\u10d8\u10e1 ISO-\u10d9\u10dd\u10d3\u10d8\u10d7 \u10d0\u10dc \u10e0\u10d4\u10d2\u10d8\u10dd\u10dc\u10d8\u10e1 \u10db\u10d8\u10ee\u10d4\u10d3\u10d5\u10d8\u10d7:",
"uls-search-placeholder": "\u10d4\u10dc\u10d8\u10e1 \u10db\u10dd\u10eb\u10d4\u10d1\u10dc\u10d0" "uls-search-placeholder": "\u10d4\u10dc\u10d8\u10e1 \u10db\u10dd\u10eb\u10d4\u10d1\u10dc\u10d0"
} }

View File

@@ -201,11 +201,7 @@
defaultSearch: function () { defaultSearch: function () {
this.$resultsView.lcd( 'empty' ); this.$resultsView.lcd( 'empty' );
if ( this.options.lazyload ) { this.$regionFilters.regionselector( 'show' );
this.$regionFilters.first().regionselector( 'show' );
} else {
this.$regionFilters.regionselector( 'show' );
}
}, },
/** /**
@@ -269,7 +265,6 @@
languages: uls.languages, languages: uls.languages,
quickList: uls.options.quickList, quickList: uls.options.quickList,
clickhandler: $.proxy( uls.select, uls ), clickhandler: $.proxy( uls.select, uls ),
lazyload: uls.options.lazyload,
source: uls.$languageFilter, source: uls.$languageFilter,
showRegions: uls.options.showRegions showRegions: uls.options.showRegions
} ).data( 'lcd' ); } ).data( 'lcd' );
@@ -412,7 +407,6 @@
searchAPI: null, // Language search API searchAPI: null, // Language search API
languages: $.uls.data.getAutonyms(), // Languages to be used for ULS, default is all languages languages: $.uls.data.getAutonyms(), // Languages to be used for ULS, default is all languages
quickList: null, // Array of language codes or function that returns such quickList: null, // Array of language codes or function that returns such
lazyload: true, // Lazy load the language list when scrolled.
compact: false, // Show ULS in compact mode compact: false, // Show ULS in compact mode
showRegions: ['WW', 'AM', 'EU', 'ME', 'AF', 'AS', 'PA'] showRegions: ['WW', 'AM', 'EU', 'ME', 'AF', 'AS', 'PA']
}; };

View File

@@ -287,11 +287,6 @@
scrollTop = $ulsLanguageList.position().top, scrollTop = $ulsLanguageList.position().top,
scrollBottom = $ulsLanguageList.height(); scrollBottom = $ulsLanguageList.height();
if ( lcd.options.lazyload && lcd.options.source.val() === '' ) {
if ( this.offsetHeight + this.scrollTop >= this.scrollHeight / 2 ) {
lcd.$element.trigger( 'scrollend' );
}
}
// The region section need to be in sync with the map filter. // The region section need to be in sync with the map filter.
inviewRegion = 'WW'; inviewRegion = 'WW';
lcd.$element.find( 'div.uls-lcd-region-section' ).each( function () { lcd.$element.find( 'div.uls-lcd-region-section' ).each( function () {
@@ -332,8 +327,7 @@
$.fn.lcd.defaults = { $.fn.lcd.defaults = {
languages: null, languages: null,
showRegions: ['WW', 'AM', 'EU', 'ME', 'AF', 'AS', 'PA'], showRegions: ['WW', 'AM', 'EU', 'ME', 'AF', 'AS', 'PA']
lazyload: true
}; };
$.fn.lcd.Constructor = LanguageCategoryDisplay; $.fn.lcd.Constructor = LanguageCategoryDisplay;

View File

@@ -22,7 +22,7 @@
/* RegionSelector plugin definition */ /* RegionSelector plugin definition */
var RegionSelector, delay; var RegionSelector;
/** /**
* Region selector is a language selector based on regions. * Region selector is a language selector based on regions.
@@ -70,7 +70,16 @@
}, },
show: function () { show: function () {
var result, languagesByScriptGroup, scriptGroup, languages, i; var result, languagesByScriptGroup, scriptGroup, languages, i,
$element = this.options.$target && this.options.$target.$element,
$parent = $element && $element.parent(),
$prev = $element && $element.prev();
if ( $element && $parent ) {
// Avoid reflows while adding new elements to the list
// Use .detach() to keep jQuery events and data associated with elements
$element.detach();
}
if ( this.cache ) { if ( this.cache ) {
// If the result cache is present, render the results from there. // If the result cache is present, render the results from there.
@@ -106,6 +115,15 @@
} }
} }
if ( $element && $parent ) {
// Restore the element to where we removed it from
if ( $prev ) {
$prev.after( $element );
} else {
$parent.append( $element );
}
}
if ( this.options.success ) { if ( this.options.success ) {
this.options.success( this ); this.options.success( this );
} }
@@ -121,32 +139,8 @@
$target.append( langCode, region ); $target.append( langCode, region );
}, },
next: function () {
var regionSelector = this;
if ( !this.$element.hasClass( 'active' ) ) {
return true;
}
// Do not respond to all scroll end events, but only after a short interval
delay( function () {
var nextRegionGroupNumber = regionSelector.$element.data( 'regiongroup' ) + 1,
$nextRegion = $( '#uls-region-' + nextRegionGroupNumber ),
nextRegionSelector = $nextRegion.length && $nextRegion.data( 'regionselector' );
// 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 );
return false;
},
listen: function () { listen: function () {
this.$element.on( 'click', $.proxy( this.click, this ) ); this.$element.on( 'click', $.proxy( this.click, this ) );
this.options.$target.$element.bind( 'scrollend', $.proxy( this.next, this ) );
}, },
click: function () { click: function () {
@@ -195,12 +189,4 @@
$.fn.regionselector.Constructor = RegionSelector; $.fn.regionselector.Constructor = RegionSelector;
delay = ( function () {
var timer = 0;
return function ( callback, milliseconds ) {
clearTimeout( timer );
timer = setTimeout( callback, milliseconds );
};
} () );
} ( jQuery ) ); } ( jQuery ) );