Fix dissappearing welcome message, add typing and simplify code

This commit is contained in:
Pieter Vander Vennet 2022-09-27 18:48:02 +02:00
parent 491c46dbc6
commit a87fa4520b
5 changed files with 32 additions and 35 deletions

View file

@ -148,7 +148,7 @@ export default abstract class BaseUIElement {
} catch (e) { } catch (e) {
const domExc = e as DOMException const domExc = e as DOMException
if (domExc) { if (domExc) {
console.log("An exception occured", domExc.code, domExc.message, domExc.name) console.error("An exception occured", domExc.code, domExc.message, domExc.name, domExc)
} }
console.error(e) console.error(e)
} }

View file

@ -8,7 +8,7 @@ import Translations from "../i18n/Translations";
export class CheckBox extends InputElementMap<number[], boolean> { export class CheckBox extends InputElementMap<number[], boolean> {
constructor(el: (BaseUIElement | string), defaultValue?: boolean) { constructor(el: (BaseUIElement | string), defaultValue?: boolean) {
super( super(
new CheckBoxes([Translations.T(el)]), new CheckBoxes([Translations.W(el)]),
(x0, x1) => x0 === x1, (x0, x1) => x0 === x1,
(t) => t.length > 0, (t) => t.length > 0,
(x) => (x ? [0] : []) (x) => (x ? [0] : [])

View file

@ -10,16 +10,15 @@ import Toggle from "./Input/Toggle"
export default class LanguagePicker extends Toggle { export default class LanguagePicker extends Toggle {
constructor(languages: string[], label: string | BaseUIElement = "") { constructor(languages: string[], label: string | BaseUIElement = "") {
console.log("Constructing a language pîcker for languages", languages)
if (languages === undefined || languages.length <= 1) { if (languages === undefined || languages.length <= 1) {
super(undefined, undefined, undefined) super(undefined, undefined, undefined)
return undefined }else {
const normalPicker = LanguagePicker.dropdownFor(languages, label)
const fullPicker = new Lazy(() => LanguagePicker.dropdownFor(allLanguages, label))
super(fullPicker, normalPicker, Locale.showLinkToWeblate)
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))
super(fullPicker, normalPicker, Locale.showLinkToWeblate)
} }
private static dropdownFor(languages: string[], label: string | BaseUIElement): BaseUIElement { private static dropdownFor(languages: string[], label: string | BaseUIElement): BaseUIElement {

View file

@ -248,31 +248,29 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
) )
editElements.push( editElements.push(
new VariableUiElement( Toggle.If(state.featureSwitchIsDebugging,
state.featureSwitchIsDebugging.map((isDebugging) => { () => {
if (isDebugging) { const config_all_tags: TagRenderingConfig = new TagRenderingConfig(
const config_all_tags: TagRenderingConfig = new TagRenderingConfig( { render: "{all_tags()}" },
{ render: "{all_tags()}" }, ""
"" )
) const config_download: TagRenderingConfig = new TagRenderingConfig(
const config_download: TagRenderingConfig = new TagRenderingConfig( { render: "{export_as_geojson()}" },
{ render: "{export_as_geojson()}" }, ""
"" )
) const config_id: TagRenderingConfig = new TagRenderingConfig(
const config_id: TagRenderingConfig = new TagRenderingConfig( { render: "{open_in_iD()}" },
{ render: "{open_in_iD()}" }, ""
"" )
)
return new Combine([ return new Combine([
new TagRenderingAnswer(tags, config_all_tags, state), new TagRenderingAnswer(tags, config_all_tags, state),
new TagRenderingAnswer(tags, config_download, state), new TagRenderingAnswer(tags, config_download, state),
new TagRenderingAnswer(tags, config_id, state), new TagRenderingAnswer(tags, config_id, state),
"This is layer " + layerConfig.id, "This is layer " + layerConfig.id,
]) ])
} }
}) )
)
) )
return new Combine(editElements).SetClass("flex flex-col") return new Combine(editElements).SetClass("flex flex-col")

View file

@ -41,7 +41,7 @@ export default class Translations {
* translation.textFor("nl") // => "Nederlands" * translation.textFor("nl") // => "Nederlands"
* *
*/ */
static T(t: string | any, context = undefined): TypedTranslation<object> { static T(t: string | undefined | null | Translation | TypedTranslation<object>, context = undefined): TypedTranslation<object> {
if (t === undefined || t === null) { if (t === undefined || t === null) {
return undefined return undefined
} }
@ -51,7 +51,7 @@ export default class Translations {
if (typeof t === "string") { if (typeof t === "string") {
return new TypedTranslation<object>({ "*": t }, context) return new TypedTranslation<object>({ "*": t }, context)
} }
if (t.render !== undefined) { if (t["render"] !== undefined) {
const msg = const msg =
"Creating a translation, but this object contains a 'render'-field. Use the translation directly" "Creating a translation, but this object contains a 'render'-field. Use the translation directly"
console.error(msg, t) console.error(msg, t)