From 4270e993ea6580ffdcee9cf4c3d37cbbbdb7c89c Mon Sep 17 00:00:00 2001 From: Amire80 Date: Tue, 22 May 2018 17:56:35 +0300 Subject: [PATCH] Updates jquery.uls to upstream This makes the functional change of grouping languages in each region by script group. Updating to https://github.com/wikimedia/jquery.uls/commit/2c1b2dd1b882d69340db8f9f5a275a3d06759b89 Bug: T189090 Change-Id: Ia0947e2ac6601ddc2da2448bff3a47af12f2fcac --- lib/jquery.uls/src/jquery.uls.data.utils.js | 32 +++++++++++++++------ lib/jquery.uls/src/jquery.uls.lcd.js | 4 +++ 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/lib/jquery.uls/src/jquery.uls.data.utils.js b/lib/jquery.uls/src/jquery.uls.data.utils.js index 7d7d63fa..a41354c8 100644 --- a/lib/jquery.uls/src/jquery.uls.data.utils.js +++ b/lib/jquery.uls/src/jquery.uls.data.utils.js @@ -145,25 +145,22 @@ /** * Get the given list of languages grouped by script. - * @param {string} languages Array of language codes - * @return {Object} Array of languages indexed by script codes + * @param {string[]} languages Array of language codes to group + * @return {string[]} Array of language codes */ $.uls.data.getLanguagesByScriptGroup = function ( languages ) { var languagesByScriptGroup = {}, - language, resolvedRedirect, langScriptGroup; + language, languageIndex, resolvedRedirect, langScriptGroup; - for ( language in languages ) { + for ( languageIndex = 0; languageIndex < languages.length; languageIndex++ ) { + language = languages[ languageIndex ]; resolvedRedirect = $.uls.data.isRedirect( language ) || language; - langScriptGroup = $.uls.data.getScriptGroupOfLanguage( resolvedRedirect ); - if ( !languagesByScriptGroup[ langScriptGroup ] ) { languagesByScriptGroup[ langScriptGroup ] = []; } - languagesByScriptGroup[ langScriptGroup ].push( language ); } - return languagesByScriptGroup; }; @@ -226,6 +223,25 @@ return $.uls.data.getGroupOfScript( $.uls.data.getScript( language ) ); }; + /** + * Return the list of languages sorted by script groups. + * @param {string[]} languages Array of language codes to sort + * @return {string[]} Array of language codes + */ + $.uls.data.sortByScriptGroup = function ( languages ) { + var groupedLanguages, scriptGroups, i, + allLanguages = []; + + groupedLanguages = $.uls.data.getLanguagesByScriptGroup( languages ); + scriptGroups = Object.keys( groupedLanguages ).sort(); + + for ( i = 0; i < scriptGroups.length; i++ ) { + allLanguages = allLanguages.concat( groupedLanguages[ scriptGroups[ i ] ] ); + } + + return allLanguages; + }; + /** * A callback for sorting languages by autonym. * Can be used as an argument to a sort function. diff --git a/lib/jquery.uls/src/jquery.uls.lcd.js b/lib/jquery.uls/src/jquery.uls.lcd.js index 6ae2ca1d..3829e66e 100644 --- a/lib/jquery.uls/src/jquery.uls.lcd.js +++ b/lib/jquery.uls/src/jquery.uls.lcd.js @@ -229,6 +229,10 @@ columns = [], rows = []; + languages = $.uls.data.sortByScriptGroup( + languages.sort( $.uls.data.sortByAutonym ) + ); + if ( columnsPerRow === 1 ) { columnsClasses = 'twelve columns'; } else if ( columnsPerRow === 2 ) {