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];
|
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.
|
* Returns all languages written in script.
|
||||||
* @param script string
|
* @param script string
|
||||||
@@ -131,6 +145,15 @@
|
|||||||
return $.uls.data.languagesByScriptGroupInRegions( [ region ] );
|
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,
|
* Returns an associative array of languages in several regions,
|
||||||
* grouped by script group.
|
* grouped by script group.
|
||||||
|
|||||||
@@ -35,14 +35,16 @@
|
|||||||
var languages = this.options.languages;
|
var languages = this.options.languages;
|
||||||
var query = this.$element.val();
|
var query = this.$element.val();
|
||||||
|
|
||||||
$.each( languages, function ( langCode, name ) {
|
var allLanguages = $.uls.data.allLanguagesByScriptGroup();
|
||||||
if ( query === "" ) {
|
for ( var scriptGroup in allLanguages ) {
|
||||||
that.render( langCode );
|
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 ) {
|
render: function( langCode ) {
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ test( "-- Initial check", function() {
|
|||||||
} );
|
} );
|
||||||
|
|
||||||
test( "-- $.uls.data testing", 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'
|
// This test assumes that we don't want any scripts to be in the 'Other'
|
||||||
// group. Actually, this may become wrong some day.
|
// 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 ) );
|
var languagesByScriptGroupInEMEA = $.uls.data.languagesByScriptGroupInRegions( $.uls.data.regionsInGroup( 2 ) );
|
||||||
deepEqual( languagesByScriptGroupInEMEA['WestCaucasian'], ['hy', 'ka', 'xmf'], 'Correct languages in WestCaucasian script group selected' );
|
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