import {FixedUiElement} from "./UI/Base/FixedUiElement"; import Combine from "./UI/Base/Combine"; import MinimapImplementation from "./UI/Base/MinimapImplementation"; import {Utils} from "./Utils"; import AllThemesGui from "./UI/AllThemesGui"; import DetermineLayout from "./Logic/DetermineLayout"; import LayoutConfig from "./Models/ThemeConfig/LayoutConfig"; import DefaultGUI from "./UI/DefaultGUI"; import State from "./State"; import ShowOverlayLayerImplementation from "./UI/ShowDataLayer/ShowOverlayLayerImplementation"; import {DefaultGuiState} from "./UI/DefaultGuiState"; import {QueryParameters} from "./Logic/Web/QueryParameters"; import DashboardGui from "./UI/DashboardGui"; import StatisticsGUI from "./UI/StatisticsGUI"; // Workaround for a stupid crash: inject some functions which would give stupid circular dependencies or crash the other nodejs scripts running from console MinimapImplementation.initialize() ShowOverlayLayerImplementation.Implement(); // Miscelleanous Utils.DisableLongPresses() class Init { public static Init(layoutToUse: LayoutConfig) { if (layoutToUse === null) { // Something went wrong, error message is already on screen return; } if (layoutToUse === undefined) { // No layout found new AllThemesGui().setup() return; } const guiState = new DefaultGuiState() State.state = new State(layoutToUse); DefaultGuiState.state = guiState; // This 'leaks' the global state via the window object, useful for debugging // @ts-ignore window.mapcomplete_state = State.state; const mode = QueryParameters.GetQueryParameter("mode", "map", "The mode the application starts in, e.g. 'map', 'dashboard' or 'statistics'") if (mode.data === "dashboard") { new DashboardGui(State.state, guiState).setup() } else { new DefaultGUI(State.state, guiState).setup() } } } document.getElementById("decoration-desktop").remove(); new Combine(["Initializing...
", new FixedUiElement("If this message persist, something went wrong - click here to try again") .SetClass("link-underline small") .onClick(() => { localStorage.clear(); window.location.reload(true); })]) .AttachTo("centermessage"); // Add an initialization and reset button if something goes wrong // @ts-ignore DetermineLayout.GetLayout().then(value => { console.log("Got ", value) Init.Init(value) }).catch(err => { console.error("Error while initializing: ", err, err.stack) })