63 lines
2 KiB
TypeScript
63 lines
2 KiB
TypeScript
import {UIElement} from "./UIElement";
|
|
import {UIEventSource} from "./UIEventSource";
|
|
import {OsmConnection} from "../Logic/Osm/OsmConnection";
|
|
import Translations from "./i18n/Translations";
|
|
import {State} from "../State";
|
|
|
|
export class CenterMessageBox extends UIElement {
|
|
|
|
constructor(
|
|
) {
|
|
super(State.state.centerMessage);
|
|
|
|
this.ListenTo(State.state.locationControl);
|
|
this.ListenTo(State.state.layerUpdater.retries);
|
|
this.ListenTo(State.state.layerUpdater.runningQuery);
|
|
this.ListenTo(State.state.layerUpdater.sufficentlyZoomed);
|
|
}
|
|
|
|
private prep(): { innerHtml: string, done: boolean } {
|
|
if (State.state.centerMessage.data != "") {
|
|
return {innerHtml: State.state.centerMessage.data, done: false};
|
|
}
|
|
const lu = State.state.layerUpdater;
|
|
if(lu.retries.data > 0) {
|
|
return {innerHtml: Translations.t.centerMessage.retrying.Subs({count: ""+ lu.retries.data}).Render(), done: false};
|
|
}
|
|
|
|
if (lu.runningQuery.data) {
|
|
return {innerHtml: Translations.t.centerMessage.loadingData.Render(), done: false};
|
|
|
|
}
|
|
if (!lu.sufficentlyZoomed.data) {
|
|
return {innerHtml: Translations.t.centerMessage.zoomIn.Render(), done: false};
|
|
} else {
|
|
return {innerHtml: Translations.t.centerMessage.ready.Render(), done: true};
|
|
}
|
|
}
|
|
|
|
InnerRender(): string {
|
|
return this.prep().innerHtml;
|
|
}
|
|
|
|
|
|
InnerUpdate(htmlElement: HTMLElement) {
|
|
const pstyle = htmlElement.parentElement.style;
|
|
if (State.state.centerMessage.data != "") {
|
|
pstyle.opacity = "1";
|
|
pstyle.pointerEvents = "all";
|
|
State.state.osmConnection.registerActivateOsmAUthenticationClass();
|
|
return;
|
|
}
|
|
pstyle.pointerEvents = "none";
|
|
|
|
if (this.prep().done) {
|
|
pstyle.opacity = "0";
|
|
} else {
|
|
pstyle.opacity = "0.5";
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|