2021-11-03 00:44:53 +01:00
|
|
|
import { UIEventSource } from "../Logic/UIEventSource"
|
|
|
|
import { QueryParameters } from "../Logic/Web/QueryParameters"
|
|
|
|
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>
|
2021-12-10 17:30:50 +01:00
|
|
|
public readonly currentViewControlIsOpened: UIEventSource<boolean>
|
2023-01-03 02:24:03 +01:00
|
|
|
public readonly userInfoIsOpened: UIEventSource<boolean>
|
2021-11-03 00:44:53 +01:00
|
|
|
public readonly welcomeMessageOpenedTab: UIEventSource<number>
|
|
|
|
public readonly allFullScreenStates: UIEventSource<boolean>[] = []
|
|
|
|
|
|
|
|
constructor() {
|
|
|
|
this.welcomeMessageOpenedTab = UIEventSource.asFloat(
|
|
|
|
QueryParameters.GetQueryParameter(
|
|
|
|
"tab",
|
|
|
|
"0",
|
2021-12-04 12:20:24 +01:00
|
|
|
`The tab that is shown in the welcome-message.`
|
2022-09-08 21:40:48 +02:00
|
|
|
)
|
2021-11-03 00:44:53 +01:00
|
|
|
)
|
|
|
|
this.welcomeMessageIsOpened = QueryParameters.GetBooleanQueryParameter(
|
|
|
|
"welcome-control-toggle",
|
2022-02-14 18:18:05 +01:00
|
|
|
false,
|
2021-11-03 00:44:53 +01:00
|
|
|
"Whether or not the welcome panel is shown"
|
|
|
|
)
|
|
|
|
this.downloadControlIsOpened = QueryParameters.GetBooleanQueryParameter(
|
|
|
|
"download-control-toggle",
|
2022-02-14 18:18:05 +01:00
|
|
|
false,
|
2021-11-03 00:44:53 +01:00
|
|
|
"Whether or not the download panel is shown"
|
|
|
|
)
|
|
|
|
this.filterViewIsOpened = QueryParameters.GetBooleanQueryParameter(
|
|
|
|
"filter-toggle",
|
2022-02-14 18:18:05 +01:00
|
|
|
false,
|
2021-11-03 00:44:53 +01:00
|
|
|
"Whether or not the filter view is shown"
|
|
|
|
)
|
|
|
|
this.copyrightViewIsOpened = QueryParameters.GetBooleanQueryParameter(
|
|
|
|
"copyright-toggle",
|
2022-02-14 18:18:05 +01:00
|
|
|
false,
|
2021-11-03 00:44:53 +01:00
|
|
|
"Whether or not the copyright view is shown"
|
|
|
|
)
|
2021-12-10 17:30:50 +01:00
|
|
|
this.currentViewControlIsOpened = QueryParameters.GetBooleanQueryParameter(
|
|
|
|
"currentview-toggle",
|
2022-02-14 18:18:05 +01:00
|
|
|
false,
|
2023-01-03 02:24:03 +01:00
|
|
|
"Whether or not the current view box is shown (metalayer showing current view, allows to do calculate stats for all in view)"
|
2021-12-10 17:30:50 +01:00
|
|
|
)
|
2023-01-03 02:24:03 +01:00
|
|
|
this.userInfoIsOpened = QueryParameters.GetBooleanQueryParameter(
|
|
|
|
"userinfo-toggle",
|
|
|
|
false,
|
|
|
|
"Whether or not the user info is shown"
|
|
|
|
)
|
|
|
|
|
2022-01-08 04:22:50 +01:00
|
|
|
const states = {
|
|
|
|
download: this.downloadControlIsOpened,
|
|
|
|
filters: this.filterViewIsOpened,
|
|
|
|
copyright: this.copyrightViewIsOpened,
|
|
|
|
currentview: this.currentViewControlIsOpened,
|
|
|
|
welcome: this.welcomeMessageIsOpened,
|
2021-11-03 00:44:53 +01:00
|
|
|
}
|
2022-01-08 04:22:50 +01:00
|
|
|
Hash.hash.addCallbackAndRunD((hash) => {
|
|
|
|
hash = hash.toLowerCase()
|
|
|
|
states[hash]?.setData(true)
|
|
|
|
})
|
2022-01-26 21:40:38 +01:00
|
|
|
|
2022-01-08 04:22:50 +01:00
|
|
|
if (Hash.hash.data === "" || Hash.hash.data === undefined) {
|
2021-11-03 00:44:53 +01:00
|
|
|
this.welcomeMessageIsOpened.setData(true)
|
|
|
|
}
|
|
|
|
|
2021-12-10 17:30:50 +01:00
|
|
|
this.allFullScreenStates.push(
|
|
|
|
this.downloadControlIsOpened,
|
|
|
|
this.filterViewIsOpened,
|
|
|
|
this.copyrightViewIsOpened,
|
|
|
|
this.welcomeMessageIsOpened,
|
2023-01-03 02:24:03 +01:00
|
|
|
this.currentViewControlIsOpened,
|
|
|
|
this.userInfoIsOpened
|
2021-12-10 17:30:50 +01:00
|
|
|
)
|
2021-11-03 00:44:53 +01:00
|
|
|
|
|
|
|
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)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|