2021-11-03 00:44:53 +01:00
import { UIEventSource } from "../Logic/UIEventSource" ;
import { QueryParameters } from "../Logic/Web/QueryParameters" ;
import Constants from "../Models/Constants" ;
import Hash from "../Logic/Web/Hash" ;
export class DefaultGuiState {
2021-11-07 16:34:51 +01:00
static state : DefaultGuiState ;
2021-11-03 00:44:53 +01:00
public readonly welcomeMessageIsOpened : UIEventSource < boolean > ;
public readonly downloadControlIsOpened : UIEventSource < boolean > ;
public readonly filterViewIsOpened : UIEventSource < boolean > ;
public readonly copyrightViewIsOpened : UIEventSource < boolean > ;
public readonly welcomeMessageOpenedTab : UIEventSource < number >
public readonly allFullScreenStates : UIEventSource < boolean > [ ] = [ ]
constructor ( ) {
this . welcomeMessageOpenedTab = UIEventSource . asFloat ( QueryParameters . GetQueryParameter (
"tab" ,
"0" ,
` The tab that is shown in the welcome-message. 0 = the explanation of the theme,1 = OSM-credits, 2 = sharescreen, 3 = more themes, 4 = about mapcomplete (user must be logged in and have > ${ Constants . userJourney . mapCompleteHelpUnlock } changesets) `
) ) ;
this . welcomeMessageIsOpened = QueryParameters . GetBooleanQueryParameter (
"welcome-control-toggle" ,
"false" ,
"Whether or not the welcome panel is shown"
)
this . downloadControlIsOpened = QueryParameters . GetBooleanQueryParameter (
"download-control-toggle" ,
"false" ,
"Whether or not the download panel is shown"
)
this . filterViewIsOpened = QueryParameters . GetBooleanQueryParameter (
"filter-toggle" ,
"false" ,
"Whether or not the filter view is shown"
)
this . copyrightViewIsOpened = QueryParameters . GetBooleanQueryParameter (
"copyright-toggle" ,
"false" ,
"Whether or not the copyright view is shown"
)
if ( Hash . hash . data === "download" ) {
this . downloadControlIsOpened . setData ( true )
}
if ( Hash . hash . data === "filters" ) {
this . filterViewIsOpened . setData ( true )
}
if ( Hash . hash . data === "copyright" ) {
this . copyrightViewIsOpened . setData ( true )
}
if ( Hash . hash . data === "" || Hash . hash . data === undefined || Hash . hash . data === "welcome" ) {
this . welcomeMessageIsOpened . setData ( true )
}
this . allFullScreenStates . push ( this . downloadControlIsOpened , this . filterViewIsOpened , this . copyrightViewIsOpened , this . welcomeMessageIsOpened )
for ( let i = 0 ; i < this . allFullScreenStates . length ; i ++ ) {
const fullScreenState = this . allFullScreenStates [ i ] ;
for ( let j = 0 ; j < this . allFullScreenStates . length ; j ++ ) {
if ( i == j ) {
continue
}
const otherState = this . allFullScreenStates [ j ] ;
fullScreenState . addCallbackAndRunD ( isOpened = > {
if ( isOpened ) {
otherState . setData ( false )
}
} )
}
}
}
}