84 lines
3.5 KiB
TypeScript
84 lines
3.5 KiB
TypeScript
import Combine from "../Base/Combine"
|
|
import Toggle from "../Input/Toggle"
|
|
import LanguagePicker from "../LanguagePicker"
|
|
import UserRelatedState from "../../Logic/State/UserRelatedState"
|
|
import BaseUIElement from "../BaseUIElement"
|
|
import MinimapImplementation from "../Base/MinimapImplementation"
|
|
import Translations from "../i18n/Translations"
|
|
import { FlowPanelFactory } from "./FlowStep"
|
|
import { RequestFile } from "./RequestFile"
|
|
import { PreviewAttributesPanel } from "./PreviewPanel"
|
|
import ConflationChecker from "./ConflationChecker"
|
|
import { AskMetadata } from "./AskMetadata"
|
|
import { ConfirmProcess } from "./ConfirmProcess"
|
|
import { CreateNotes } from "./CreateNotes"
|
|
import { VariableUiElement } from "../Base/VariableUIElement"
|
|
import List from "../Base/List"
|
|
import { CompareToAlreadyExistingNotes } from "./CompareToAlreadyExistingNotes"
|
|
import Introdution from "./Introdution"
|
|
import LoginToImport from "./LoginToImport"
|
|
import { MapPreview } from "./MapPreview"
|
|
import LeftIndex from "../Base/LeftIndex"
|
|
import { SubtleButton } from "../Base/SubtleButton"
|
|
import SelectTheme from "./SelectTheme"
|
|
|
|
export default class ImportHelperGui extends LeftIndex {
|
|
constructor() {
|
|
const state = new UserRelatedState(undefined)
|
|
const t = Translations.t.importHelper
|
|
const { flow, furthestStep, titles } = FlowPanelFactory.start(
|
|
t.introduction,
|
|
new Introdution()
|
|
)
|
|
.then(t.login, (_) => new LoginToImport(state))
|
|
.then(t.selectFile, (_) => new RequestFile())
|
|
.then(t.previewAttributes, (geojson) => new PreviewAttributesPanel(state, geojson))
|
|
.then(t.mapPreview, (geojson) => new MapPreview(state, geojson))
|
|
.then(t.selectTheme, (v) => new SelectTheme(v))
|
|
.then(
|
|
t.compareToAlreadyExistingNotes,
|
|
(v) => new CompareToAlreadyExistingNotes(state, v)
|
|
)
|
|
.then(t.conflationChecker, (v) => new ConflationChecker(state, v))
|
|
.then(t.confirmProcess, (v) => new ConfirmProcess(v))
|
|
.then(t.askMetadata, (v) => new AskMetadata(v))
|
|
.finish(t.createNotes.title, (v) => new CreateNotes(state, v))
|
|
|
|
const toc = new List(
|
|
titles.map(
|
|
(title, i) =>
|
|
new VariableUiElement(
|
|
furthestStep.map((currentStep) => {
|
|
if (i > currentStep) {
|
|
return new Combine([title]).SetClass("subtle")
|
|
}
|
|
if (i == currentStep) {
|
|
return new Combine([title]).SetClass("font-bold")
|
|
}
|
|
if (i < currentStep) {
|
|
return title
|
|
}
|
|
})
|
|
)
|
|
),
|
|
true
|
|
)
|
|
|
|
const leftContents: BaseUIElement[] = [
|
|
new SubtleButton(undefined, t.gotoImportViewer, {
|
|
url: "import_viewer.html",
|
|
}),
|
|
toc,
|
|
new Toggle(t.testMode.SetClass("block alert"), undefined, state.featureSwitchIsTesting),
|
|
new LanguagePicker(
|
|
Translations.t.importHelper.title.SupportedLanguages(),
|
|
""
|
|
)?.SetClass("mt-4 self-end flex-col"),
|
|
].map((el) => el?.SetClass("pl-4"))
|
|
|
|
super(leftContents, flow)
|
|
}
|
|
}
|
|
|
|
MinimapImplementation.initialize()
|
|
new ImportHelperGui().AttachTo("main")
|