forked from MapComplete/MapComplete
73 lines
2.1 KiB
TypeScript
73 lines
2.1 KiB
TypeScript
|
|
import ThemeConfig from "../ThemeConfig/ThemeConfig"
|
||
|
|
import { MenuState } from "../MenuState"
|
||
|
|
import Hotkeys from "../../UI/Base/Hotkeys"
|
||
|
|
import Translations from "../../UI/i18n/Translations"
|
||
|
|
import { WithSpecialLayers } from "./WithSpecialLayers"
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Does all things related to:
|
||
|
|
* - The UI state
|
||
|
|
*/
|
||
|
|
export class WithGuiState extends WithSpecialLayers {
|
||
|
|
readonly guistate: MenuState
|
||
|
|
|
||
|
|
constructor(theme: ThemeConfig, mvtAvailableLayers: Set<string>) {
|
||
|
|
super(theme, mvtAvailableLayers)
|
||
|
|
this.guistate = new MenuState(
|
||
|
|
this.featureSwitches.featureSwitchWelcomeMessage.data,
|
||
|
|
theme.id
|
||
|
|
)
|
||
|
|
|
||
|
|
Object.values(this.guistate.pageStates).forEach((toggle) => {
|
||
|
|
toggle.addCallbackD((isOpened) => {
|
||
|
|
// When a panel is closed: focus on the map again
|
||
|
|
if (!isOpened) {
|
||
|
|
if (!this.guistate.isSomethingOpen()) {
|
||
|
|
this.focusOnMap()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
})
|
||
|
|
|
||
|
|
this.initHotkeysGui()
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
private initHotkeysGui() {
|
||
|
|
const docs = Translations.t.hotkeyDocumentation
|
||
|
|
|
||
|
|
Hotkeys.RegisterHotkey({ nomod: "f" }, docs.selectFavourites, () => {
|
||
|
|
this.guistate.pageStates.favourites.set(true)
|
||
|
|
})
|
||
|
|
|
||
|
|
Hotkeys.RegisterHotkey(
|
||
|
|
{
|
||
|
|
nomod: "b"
|
||
|
|
},
|
||
|
|
docs.openLayersPanel,
|
||
|
|
() => {
|
||
|
|
if (this.featureSwitches.featureSwitchBackgroundSelection.data) {
|
||
|
|
this.guistate.pageStates.background.setData(true)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
)
|
||
|
|
Hotkeys.RegisterHotkey(
|
||
|
|
{
|
||
|
|
nomod: "s"
|
||
|
|
},
|
||
|
|
Translations.t.hotkeyDocumentation.openFilterPanel,
|
||
|
|
() => {
|
||
|
|
if (this.featureSwitches.featureSwitchFilter.data) {
|
||
|
|
this.guistate.openFilterView()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
public selectCurrentView() {
|
||
|
|
this.guistate.closeAll()
|
||
|
|
this.selectedElement.setData(this.currentView.features?.data?.[0])
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|