82 lines
No EOL
3.2 KiB
TypeScript
82 lines
No EOL
3.2 KiB
TypeScript
import {UIEventSource} from "../Logic/UIEventSource";
|
|
import {QueryParameters} from "../Logic/Web/QueryParameters";
|
|
import Hash from "../Logic/Web/Hash";
|
|
|
|
export class DefaultGuiState {
|
|
static state: DefaultGuiState;
|
|
public readonly welcomeMessageIsOpened: UIEventSource<boolean>;
|
|
public readonly downloadControlIsOpened: UIEventSource<boolean>;
|
|
public readonly filterViewIsOpened: UIEventSource<boolean>;
|
|
public readonly copyrightViewIsOpened: UIEventSource<boolean>;
|
|
public readonly currentViewControlIsOpened: 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.`
|
|
));
|
|
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"
|
|
)
|
|
this.currentViewControlIsOpened = QueryParameters.GetBooleanQueryParameter(
|
|
"currentview-toggle",
|
|
false,
|
|
"Whether or not the current view box is shown"
|
|
)
|
|
const states = {
|
|
download: this.downloadControlIsOpened,
|
|
filters: this.filterViewIsOpened,
|
|
copyright: this.copyrightViewIsOpened,
|
|
currentview: this.currentViewControlIsOpened,
|
|
welcome: this.welcomeMessageIsOpened
|
|
}
|
|
Hash.hash.addCallbackAndRunD(hash => {
|
|
hash = hash.toLowerCase()
|
|
states[hash]?.setData(true)
|
|
})
|
|
|
|
if (Hash.hash.data === "" || Hash.hash.data === undefined) {
|
|
this.welcomeMessageIsOpened.setData(true)
|
|
}
|
|
|
|
this.allFullScreenStates.push(this.downloadControlIsOpened, this.filterViewIsOpened, this.copyrightViewIsOpened, this.welcomeMessageIsOpened, this.currentViewControlIsOpened)
|
|
|
|
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)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
}
|
|
} |