2022-09-08 21:40:48 +02:00
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"
2021-03-22 02:45:22 +01:00
2021-10-15 14:52:11 +02:00
// Workaround for a stupid crash: inject some functions which would give stupid circular dependencies or crash the other nodejs scripts running from console
2021-09-21 02:10:42 +02:00
MinimapImplementation . initialize ( )
2022-09-08 21:40:48 +02:00
ShowOverlayLayerImplementation . Implement ( )
2021-10-15 14:52:11 +02:00
// Miscelleanous
2021-10-15 05:20:02 +02:00
Utils . DisableLongPresses ( )
2021-03-22 02:45:22 +01:00
2021-10-15 05:20:02 +02:00
class Init {
2021-12-21 19:56:04 +01:00
public static Init ( layoutToUse : LayoutConfig ) {
2021-11-07 16:34:51 +01:00
if ( layoutToUse === null ) {
2021-10-15 05:20:02 +02:00
// Something went wrong, error message is already on screen
2022-09-08 21:40:48 +02:00
return
2021-10-15 05:20:02 +02:00
}
2021-11-07 16:34:51 +01:00
2021-10-15 05:20:02 +02:00
if ( layoutToUse === undefined ) {
// No layout found
2022-04-08 04:36:00 +02:00
new AllThemesGui ( ) . setup ( )
2022-09-08 21:40:48 +02:00
return
2021-10-15 05:20:02 +02:00
}
2020-06-24 00:35:19 +02:00
2021-10-15 05:20:02 +02:00
const guiState = new DefaultGuiState ( )
2022-09-08 21:40:48 +02:00
State . state = new State ( layoutToUse )
DefaultGuiState . state = guiState
2021-10-15 05:20:02 +02:00
// This 'leaks' the global state via the window object, useful for debugging
// @ts-ignore
2022-09-08 21:40:48 +02:00
window . mapcomplete_state = State . state
2022-08-22 13:34:47 +02:00
2022-09-08 21:40:48 +02:00
const mode = QueryParameters . GetQueryParameter (
"mode" ,
"map" ,
"The mode the application starts in, e.g. 'map', 'dashboard' or 'statistics'"
)
2022-08-24 16:02:16 +02:00
if ( mode . data === "dashboard" ) {
2022-07-13 17:58:01 +02:00
new DashboardGui ( State . state , guiState ) . setup ( )
2022-08-22 13:34:47 +02:00
} else {
2022-07-13 17:58:01 +02:00
new DefaultGUI ( State . state , guiState ) . setup ( )
}
2021-05-03 16:04:35 +02:00
}
2021-10-15 05:20:02 +02:00
}
2022-09-08 21:40:48 +02:00
document . getElementById ( "decoration-desktop" ) . remove ( )
new Combine ( [
"Initializing... <br/>" ,
new FixedUiElement (
"<a>If this message persist, something went wrong - click here to try again</a>"
)
2021-05-28 12:59:48 +02:00
. SetClass ( "link-underline small" )
. onClick ( ( ) = > {
2022-09-08 21:40:48 +02:00
localStorage . clear ( )
window . location . reload ( true )
} ) ,
] ) . AttachTo ( "centermessage" ) // Add an initialization and reset button if something goes wrong
2021-01-18 19:36:19 +01:00
2021-12-21 18:35:31 +01:00
// @ts-ignore
2022-09-08 21:40:48 +02:00
DetermineLayout . GetLayout ( )
. then ( ( value ) = > {
console . log ( "Got " , value )
Init . Init ( value )
} )
. catch ( ( err ) = > {
console . error ( "Error while initializing: " , err , err . stack )
} )