Sort languages by script in the initial view
* Added new utility functions to return all languages by script group. * Used that function to sort languages initially. * Added tests. Change-Id: I405cb73e6af13f59c307da5a7f2269049ecba698
This commit is contained in:
@@ -32,6 +32,20 @@
|
||||
return $.uls.data.autonyms[language];
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an array of all region codes.
|
||||
* @return array
|
||||
*/
|
||||
$.uls.data.allRegions = function() {
|
||||
var allRegions = [];
|
||||
|
||||
for( var region in $.uls.data.regiongroups ) {
|
||||
allRegions.push( region );
|
||||
}
|
||||
|
||||
return allRegions;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns all languages written in script.
|
||||
* @param script string
|
||||
@@ -131,6 +145,15 @@
|
||||
return $.uls.data.languagesByScriptGroupInRegions( [ region ] );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an associative array of all languages,
|
||||
* grouped by script group.
|
||||
* @return associative array
|
||||
*/
|
||||
$.uls.data.allLanguagesByScriptGroup = function() {
|
||||
return $.uls.data.languagesByScriptGroupInRegions( $.uls.data.allRegions() );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an associative array of languages in several regions,
|
||||
* grouped by script group.
|
||||
|
||||
@@ -35,14 +35,16 @@
|
||||
var languages = this.options.languages;
|
||||
var query = this.$element.val();
|
||||
|
||||
$.each( languages, function ( langCode, name ) {
|
||||
if ( query === "" ) {
|
||||
var allLanguages = $.uls.data.allLanguagesByScriptGroup();
|
||||
for ( var scriptGroup in allLanguages ) {
|
||||
for ( var langNum = 0; langNum < allLanguages[scriptGroup].length; langNum++ ) {
|
||||
var langCode = allLanguages[scriptGroup][langNum];
|
||||
if ( languages[langCode] !== undefined && ( query === "" || that.filter( langCode, query ) ) )
|
||||
{
|
||||
that.render( langCode );
|
||||
}
|
||||
else if ( that.filter( langCode, query ) ) {
|
||||
that.render( langCode );
|
||||
}
|
||||
} ) ;
|
||||
}
|
||||
},
|
||||
|
||||
render: function( langCode ) {
|
||||
|
||||
@@ -33,7 +33,7 @@ test( "-- Initial check", function() {
|
||||
} );
|
||||
|
||||
test( "-- $.uls.data testing", function() {
|
||||
expect( 15 );
|
||||
expect( 17 );
|
||||
|
||||
// This test assumes that we don't want any scripts to be in the 'Other'
|
||||
// group. Actually, this may become wrong some day.
|
||||
@@ -83,6 +83,11 @@ test( "-- $.uls.data testing", function() {
|
||||
|
||||
var languagesByScriptGroupInEMEA = $.uls.data.languagesByScriptGroupInRegions( $.uls.data.regionsInGroup( 2 ) );
|
||||
deepEqual( languagesByScriptGroupInEMEA['WestCaucasian'], ['hy', 'ka', 'xmf'], 'Correct languages in WestCaucasian script group selected' );
|
||||
|
||||
var allLanguagesByScriptGroup = $.uls.data.allLanguagesByScriptGroup();
|
||||
strictEqual( allLanguagesByScriptGroup['Greek'], ['el', 'grc', 'pnt'], 'All languages in the Greek script found' );
|
||||
|
||||
deepEqual( $.uls.data.allRegions(), ['NA', 'LA', 'SA', 'ME', 'AF', 'EU', 'AS', 'AU', 'PA', 'WW'], 'All regions found' );
|
||||
} );
|
||||
|
||||
}() );
|
||||
|
||||
Reference in New Issue
Block a user