"use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } (function () { "use strict"; /** * LanguageSelectorCtrl Controller for language component. * Sets the language, in session storage, when the user changes it and * applies it to the $translate service, so that the translatable texts are * updated. */ var LanguageSelectorCtrl = /*#__PURE__*/function () { function LanguageSelectorCtrl(constant, $translate, DashboardService, i18nService, $rootScope) { _classCallCheck(this, LanguageSelectorCtrl); // Set up dependency injectio variables this.$translate = $translate; this.dashboardService = DashboardService; this.imgPath = constant.imgPath; this.defaultLanguage = ""; this.language = ""; this.i18nService = i18nService; this.$rootScope = $rootScope; } /** * $onInit Initialize the language component with a language. If the item * 'currentLang' is found in sessionStorage use this value, otherwise * use the default language defined in the constants. */ _createClass(LanguageSelectorCtrl, [{ key: "$onInit", value: function $onInit() { var _this = this; var _self = this, resp = [], hasError = false; this.dashboardService.getListOfAvailableLanguages().then(function (response) { resp = response; })["catch"](function (error) { hasError = true; console.error("Error fetching languages: ", error); })["finally"](function () { if (!hasError) { _self.langs = resp; // set the default language _self.langs.forEach(function (element) { if (element.defaultLang === 1) { _self.defaultLanguage = element.acronym; } }); // set the model with the correct language _this.language = sessionHandler.sessionStorage.get("currentLang") !== null ? sessionHandler.sessionStorage.get("currentLang") : _self.defaultLanguage; var initLang = sessionHandler.sessionStorage.get("currentLangFirstTime"); if (initLang === true || initLang === "true") _this.language = _self.defaultLanguage; sessionHandler.sessionStorage.set("currentLangFirstTime", false); _this.changeLanguage(_this.language); _self.i18nService.setCurrentLang(_self.$translate.use()); _self.$rootScope.$on("$translateChangeSuccess", function () { _self.i18nService.setCurrentLang(_self.$translate.use()); }); } }); } /** * changeLanguage Language change handler. whenever the language changes * set it in session storage and use it in the '$translate' service. * @param {"String"} lang Selected language */ }, { key: "changeLanguage", value: function changeLanguage(lang) { this.language = lang; if (typeof Storage !== "undefined") { sessionHandler.sessionStorage.set("currentLang", this.language); } this.$translate.use(this.language); } /** * @deprecated * getFlag Get the correct flag name * @param {String} lang Selected language * @return {String} Flag identifier */ }, { key: "getFlag", value: function getFlag(lang) { var mapper = { "en": "gb" }; return Object.keys(mapper).indexOf(lang) >= 0 ? mapper[lang] : lang; } }, { key: "openLanguageMenu", value: function openLanguageMenu() { angular.element("#notifications-popup").hide(); angular.element("#header-notification-container").removeClass("clicked-notif"); } }]); return LanguageSelectorCtrl; }(); // Component definition var languageSelector = { templateUrl: "transversalModule/template/language_selector_view.html", binding: {}, controller: LanguageSelectorCtrl }; angular.module("agp.language", []).component("languageSelector", languageSelector); }).call();