From 51a6756dd4b015f72ddbf8b06aafd41867ac3855 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Sun, 3 Jul 2022 00:30:11 +0200 Subject: [PATCH] LanguagePicker now has a proper constructor --- UI/AllThemesGui.ts | 4 +- UI/BigComponents/ThemeIntroductionPanel.ts | 3 +- UI/BigComponents/UserBadge.ts | 2 +- UI/ImportFlow/ImportHelperGui.ts | 2 +- UI/LanguagePicker.ts | 46 +++++++++++----------- UI/ProfessionalGui.ts | 2 +- 6 files changed, 29 insertions(+), 30 deletions(-) diff --git a/UI/AllThemesGui.ts b/UI/AllThemesGui.ts index cca64fd567..2c2371ec95 100644 --- a/UI/AllThemesGui.ts +++ b/UI/AllThemesGui.ts @@ -5,7 +5,7 @@ import MoreScreen from "./BigComponents/MoreScreen"; import Translations from "./i18n/Translations"; import Constants from "../Models/Constants"; import {Utils} from "../Utils"; -import LanguagePicker from "./LanguagePicker"; +import LanguagePicker1 from "./LanguagePicker"; import IndexText from "./BigComponents/IndexText"; import FeaturedMessage from "./BigComponents/FeaturedMessage"; import Toggle from "./Input/Toggle"; @@ -21,7 +21,7 @@ export default class AllThemesGui { const state = new UserRelatedState(undefined); const intro = new Combine([ - LanguagePicker.CreateLanguagePicker(Translations.t.index.title.SupportedLanguages()) + new LanguagePicker1(Translations.t.index.title.SupportedLanguages(), "") .SetClass("flex absolute top-2 right-3"), new IndexText() diff --git a/UI/BigComponents/ThemeIntroductionPanel.ts b/UI/BigComponents/ThemeIntroductionPanel.ts index f8f9164e07..7153692f26 100644 --- a/UI/BigComponents/ThemeIntroductionPanel.ts +++ b/UI/BigComponents/ThemeIntroductionPanel.ts @@ -9,7 +9,6 @@ import Svg from "../../Svg"; import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"; import {OsmConnection} from "../../Logic/Osm/OsmConnection"; import FullWelcomePaneWithTabs from "./FullWelcomePaneWithTabs"; -import Title from "../Base/Title"; export default class ThemeIntroductionPanel extends Combine { @@ -17,7 +16,7 @@ export default class ThemeIntroductionPanel extends Combine { const t = Translations.t.general const layout = state.layoutToUse - const languagePicker = LanguagePicker.CreateLanguagePicker(layout.language, t.pickLanguage.Clone()) + const languagePicker = new LanguagePicker(layout.language, t.pickLanguage.Clone()) const toTheMap = new SubtleButton( undefined, diff --git a/UI/BigComponents/UserBadge.ts b/UI/BigComponents/UserBadge.ts index 82adbe12ea..39bfe2251f 100644 --- a/UI/BigComponents/UserBadge.ts +++ b/UI/BigComponents/UserBadge.ts @@ -39,7 +39,7 @@ export default class UserBadge extends LoginToggle { }); const linkStyle = "flex items-baseline" - const languagePicker = (LanguagePicker.CreateLanguagePicker(state.layoutToUse.language) ?? new FixedUiElement("")) + const languagePicker = (new LanguagePicker(state.layoutToUse.language, "") ?? new FixedUiElement("")) .SetStyle("width:min-content;"); let messageSpan = diff --git a/UI/ImportFlow/ImportHelperGui.ts b/UI/ImportFlow/ImportHelperGui.ts index d703de52a1..657b5a755d 100644 --- a/UI/ImportFlow/ImportHelperGui.ts +++ b/UI/ImportFlow/ImportHelperGui.ts @@ -62,7 +62,7 @@ export default class ImportHelperGui extends LeftIndex { }), toc, new Toggle(t.testMode.SetClass("block alert"), undefined, state.featureSwitchIsTesting), - LanguagePicker.CreateLanguagePicker(Translations.t.importHelper.title.SupportedLanguages())?.SetClass("mt-4 self-end flex-col"), + new LanguagePicker(Translations.t.importHelper.title.SupportedLanguages(), "")?.SetClass("mt-4 self-end flex-col"), ].map(el => el?.SetClass("pl-4")) super( diff --git a/UI/LanguagePicker.ts b/UI/LanguagePicker.ts index 0d81ffccab..6084688163 100644 --- a/UI/LanguagePicker.ts +++ b/UI/LanguagePicker.ts @@ -8,52 +8,52 @@ import * as used_languages from "../assets/generated/used_languages.json" import Lazy from "./Base/Lazy"; import Toggle from "./Input/Toggle"; -export default class LanguagePicker { +export default class LanguagePicker extends Toggle { - public static CreateLanguagePicker( - languages: string[], - label: string | BaseUIElement = "") : BaseUIElement{ + constructor(languages: string[], + label: string | BaseUIElement = "") { + if (languages === undefined || languages.length <= 1) { return undefined; } - - const allLanguages : string[] = used_languages.languages; - + + const allLanguages: string[] = used_languages.languages; + const normalPicker = LanguagePicker.dropdownFor(languages, label); const fullPicker = new Lazy(() => LanguagePicker.dropdownFor(allLanguages, label)) - return new Toggle(fullPicker, normalPicker, Locale.showLinkToWeblate) + super(fullPicker, normalPicker, Locale.showLinkToWeblate); } - + private static dropdownFor(languages: string[], label: string | BaseUIElement): BaseUIElement { - return new DropDown(label, languages - .filter(lang => lang !== "_context") - .map(lang => { - return {value: lang, shown: LanguagePicker.hybrid(lang) } - } - ), Locale.language) + return new DropDown(label, languages + .filter(lang => lang !== "_context") + .map(lang => { + return {value: lang, shown: LanguagePicker.hybrid(lang)} + } + ), Locale.language) } private static hybrid(lang: string): Translation { const nativeText = native[lang] ?? lang - const allTranslations = (language_translations["default"] ?? language_translations) + const allTranslations = (language_translations["default"] ?? language_translations) const translation = {} - const trans = allTranslations[lang] - if(trans === undefined){ + const trans = allTranslations[lang] + if (trans === undefined) { return new Translation({"*": nativeText}) } for (const key in trans) { const translationInKey = allTranslations[lang][key] - if(nativeText.toLowerCase() === translationInKey.toLowerCase()){ + if (nativeText.toLowerCase() === translationInKey.toLowerCase()) { translation[key] = nativeText - }else{ - translation[key] = nativeText + " ("+translationInKey+")" + } else { + translation[key] = nativeText + " (" + translationInKey + ")" } - + } return new Translation(translation) - } + } } \ No newline at end of file diff --git a/UI/ProfessionalGui.ts b/UI/ProfessionalGui.ts index d4a0196bfe..fe51d06f2a 100644 --- a/UI/ProfessionalGui.ts +++ b/UI/ProfessionalGui.ts @@ -98,7 +98,7 @@ class ProfessionalGui extends LeftIndex { maxDepth: 2 }).SetClass("subtle"), - LanguagePicker.CreateLanguagePicker(Translations.t.professional.title.SupportedLanguages())?.SetClass("mt-4 self-end flex-col"), + new LanguagePicker(Translations.t.professional.title.SupportedLanguages(), "")?.SetClass("mt-4 self-end flex-col"), ].map(el => el?.SetClass("pl-4")) super(leftContents, content)