mapcomplete/UI/DefaultGuiState.ts

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

57 lines
2 KiB
TypeScript
Raw Normal View History

import { UIEventSource } from "../Logic/UIEventSource"
import Hash from "../Logic/Web/Hash"
export class DefaultGuiState {
public readonly welcomeMessageIsOpened: UIEventSource<boolean> = new UIEventSource<boolean>(
false
)
2023-03-28 05:13:48 +02:00
public readonly menuIsOpened: UIEventSource<boolean> = new UIEventSource<boolean>(false)
public readonly downloadControlIsOpened: UIEventSource<boolean> = new UIEventSource<boolean>(
false
)
public readonly filterViewIsOpened: UIEventSource<boolean> = new UIEventSource<boolean>(false)
public readonly copyrightViewIsOpened: UIEventSource<boolean> = new UIEventSource<boolean>(
false
)
public readonly currentViewControlIsOpened: UIEventSource<boolean> = new UIEventSource<boolean>(
false
)
public readonly userInfoIsOpened: UIEventSource<boolean> = new UIEventSource<boolean>(false)
public readonly userInfoFocusedQuestion: UIEventSource<string> = new UIEventSource<string>(
undefined
)
2023-03-28 05:13:48 +02:00
private readonly sources: Record<string, UIEventSource<boolean>> = {
welcome: this.welcomeMessageIsOpened,
download: this.downloadControlIsOpened,
filters: this.filterViewIsOpened,
copyright: this.copyrightViewIsOpened,
currentview: this.currentViewControlIsOpened,
userinfo: this.userInfoIsOpened,
}
2023-03-28 05:13:48 +02:00
constructor() {
const self = this
this.userInfoIsOpened.addCallback((isOpen) => {
if (!isOpen) {
console.log("Resetting focused question")
self.userInfoFocusedQuestion.setData(undefined)
}
})
2023-03-28 05:13:48 +02:00
this.sources[Hash.hash.data?.toLowerCase()]?.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) {
this.welcomeMessageIsOpened.setData(true)
}
}
2023-03-28 05:13:48 +02:00
2023-04-24 02:27:55 +02:00
public closeAll(except) {
2023-03-28 05:13:48 +02:00
for (const sourceKey in this.sources) {
this.sources[sourceKey].setData(false)
}
}
}