import Translations from "./i18n/Translations"; import {VariableUiElement} from "./Base/VariableUIElement"; import FeaturePipelineState from "../Logic/State/FeaturePipelineState"; import Loading from "./Base/Loading"; export default class CenterMessageBox extends VariableUiElement { constructor(state: FeaturePipelineState) { const updater = state.featurePipeline; const t = Translations.t.centerMessage; const message = updater.runningQuery.map( isRunning => { if (isRunning) { return {el: new Loading(t.loadingData)}; } if (!updater.sufficientlyZoomed.data) { return {el: t.zoomIn} } if (updater.timeout.data > 0) { return {el: t.retrying.Subs({count: "" + updater.timeout.data})} } return {el: t.ready, isDone: true} }, [updater.timeout, updater.sufficientlyZoomed, state.locationControl] ) super(message.map(toShow => toShow.el)) this.SetClass("flex justify-center " + "rounded-3xl bg-white text-xl font-bold pointer-events-none p-4") this.SetStyle("transition: opacity 750ms linear") message.addCallbackAndRun(toShow => { const isDone = toShow.isDone ?? false; if (isDone) { this.SetStyle("transition: opacity 750ms linear; opacity: 0") } else { this.SetStyle("transition: opacity 750ms linear; opacity: 0.75") } }) } }