2020-07-21 00:07:04 +02:00
import { FixedUiElement } from "./UI/Base/FixedUiElement" ;
2021-01-22 01:03:50 +01:00
import Combine from "./UI/Base/Combine" ;
2021-07-20 01:33:58 +02:00
import AvailableBaseLayers from "./Logic/Actors/AvailableBaseLayers" ;
2021-09-21 02:10:42 +02:00
import MinimapImplementation from "./UI/Base/MinimapImplementation" ;
2021-10-15 05:20:02 +02:00
import { Utils } from "./Utils" ;
import AllThemesGui from "./UI/AllThemesGui" ;
import DetermineLayout from "./Logic/DetermineLayout" ;
import LayoutConfig from "./Models/ThemeConfig/LayoutConfig" ;
2021-11-03 00:44:53 +01:00
import DefaultGUI from "./UI/DefaultGUI" ;
2021-10-15 05:20:02 +02:00
import State from "./State" ;
2021-10-15 14:52:11 +02:00
import AvailableBaseLayersImplementation from "./Logic/Actors/AvailableBaseLayersImplementation" ;
import ShowOverlayLayerImplementation from "./UI/ShowDataLayer/ShowOverlayLayerImplementation" ;
2021-11-03 00:44:53 +01:00
import { DefaultGuiState } from "./UI/DefaultGuiState" ;
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 ( )
2021-10-15 14:52:11 +02:00
AvailableBaseLayers . implement ( new AvailableBaseLayersImplementation ( ) )
ShowOverlayLayerImplementation . Implement ( ) ;
// 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 {
public static Init ( layoutToUse : LayoutConfig , encoded : string ) {
2020-06-24 00:35:19 +02:00
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
return ;
}
2021-11-07 16:34:51 +01:00
2021-10-15 05:20:02 +02:00
if ( layoutToUse === undefined ) {
// No layout found
new AllThemesGui ( )
return ;
}
2020-06-24 00:35:19 +02:00
2021-10-15 05:20:02 +02:00
const guiState = new DefaultGuiState ( )
State . state = new State ( layoutToUse ) ;
2021-10-31 02:08:39 +01:00
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
window . mapcomplete_state = State . state ;
new DefaultGUI ( State . state , guiState )
if ( encoded !== undefined && encoded . length > 10 ) {
// We save the layout to the user settings and local storage
State . state . osmConnection . OnLoggedIn ( ( ) = > {
State . state . osmConnection
. GetLongPreference ( "installed-theme-" + layoutToUse . id )
. setData ( encoded ) ;
} ) ;
}
2021-05-03 16:04:35 +02:00
}
2021-10-15 05:20:02 +02:00
}
2021-05-28 12:59:48 +02:00
2021-10-15 05:20:02 +02:00
document . getElementById ( "decoration-desktop" ) . remove ( ) ;
2021-05-28 12:59:48 +02:00
new Combine ( [ "Initializing... <br/>" ,
new FixedUiElement ( "<a>If this message persist, something went wrong - click here to try again</a>" )
. SetClass ( "link-underline small" )
. onClick ( ( ) = > {
2021-06-17 00:37:57 +02:00
localStorage . clear ( ) ;
2021-05-28 12:59:48 +02:00
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
2021-10-15 05:20:02 +02:00
DetermineLayout . GetLayout ( ) . then ( value = > {
console . log ( "Got " , value )
Init . Init ( value [ 0 ] , value [ 1 ] )
2021-12-21 18:35:31 +01:00
} ) . catch ( err = > {
console . error ( "Error while initializing: " , err , err . stack )
} )
2021-10-15 05:20:02 +02:00
2021-05-28 12:59:48 +02:00