1var wikibase = wikibase || {}; 2wikibase.queryService = wikibase.queryService || {}; 3wikibase.queryService.ui = wikibase.queryService.ui || {}; 4wikibase.queryService.ui.i18n = wikibase.queryService.ui.i18n || {}; 5 6wikibase.queryService.ui.i18n.LanguageSelector = ( function( $, wikibase ) { 7 'use strict'; 8 9 /** 10 * A language selector to selectt the UI language 11 * 12 * @class wikibase.queryService.ui.i18n.LanguageSelector 13 * @license GNU GPL v2+ 14 * 15 * @author Jonas Kress 16 * @constructor 17 * @param {jQuery} $element 18 * @param {wikibase.queryService.api.Wikibase} api 19 * @param {string} lang default language 20 */ 21 function SELF( $element, api, lang ) { 22 this._$element = $element; 23 24 if ( api ) { 25 this._api = api; 26 } else { 27 this._api = new wikibase.queryService.api.Wikibase(); 28 } 29 30 this._defaultLanguage = lang; 31 32 this._create(); 33 } 34 35 /** 36 * @property {wikibase.queryService.api.Wikibase} 37 * @private 38 */ 39 SELF.prototype._api = null; 40 41 /** 42 * @property {Function} 43 * @private 44 */ 45 SELF.prototype._$element = null; 46 47 /** 48 * @property {string} 49 * @private 50 */ 51 SELF.prototype._defaultLanguage = null; 52 53 /** 54 * @property {Function} 55 * @private 56 */ 57 SELF.prototype._changeListener = null; 58 59 /** 60 * Set the change listener 61 * 62 * @param {Function} listener a function called when value selected 63 */ 64 SELF.prototype.setChangeListener = function( listener ) { 65 this._changeListener = listener; 66 }; 67 68 /** 69 * @private 70 */ 71 SELF.prototype._create = function( listener ) { 72 var self = this; 73 74 this._$element.text( $.uls.data.getAutonym( this._defaultLanguage ) ); 75 this._getLanguages().done( function( langs ) { 76 self._$element.uls( { 77 onSelect: function( lang ) { 78 self._$element.text( $.uls.data.getAutonym( lang ) ); 79 80 if ( self._changeListener ) { 81 self._changeListener( lang ); 82 } 83 }, 84 languages: langs 85 // quickList: langs 86 } ).click( function() { 87 $( '.uls-menu' ).addClass( 'uls-mobile' ).css( 'left', '' ).css( 'right', '2.5%' ); 88 } ).css( 'display', 'block' ); 89 } ); 90 }; 91 92 /** 93 * @private 94 */ 95 SELF.prototype._getLanguages = function() { 96 var deferred = $.Deferred(); 97 98 this._api.getLanguages().done( function( data ) { 99 100 var langs = {}; 101 $.each( data.query.languages, function( k, v ) { 102 langs[v.code] = v['*']; 103 } ); 104 105 deferred.resolve( langs ); 106 } ); 107 108 return deferred.promise(); 109 }; 110 111 return SELF; 112}( jQuery, wikibase ) );
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.