Merge upload GPX-tracks to OSM; split 'specialVisualisations' into multiple smaller classes
This commit is contained in:
commit
8d304f9a56
37 changed files with 1459 additions and 1057 deletions
119
UI/Popup/AddNoteCommentViz.ts
Normal file
119
UI/Popup/AddNoteCommentViz.ts
Normal file
|
@ -0,0 +1,119 @@
|
|||
import Translations from "../i18n/Translations";
|
||||
import {TextField} from "../Input/TextField";
|
||||
import {SubtleButton} from "../Base/SubtleButton";
|
||||
import Svg from "../../Svg";
|
||||
import NoteCommentElement from "./NoteCommentElement";
|
||||
import {VariableUiElement} from "../Base/VariableUIElement";
|
||||
import Toggle from "../Input/Toggle";
|
||||
import {LoginToggle} from "./LoginButton";
|
||||
import Combine from "../Base/Combine";
|
||||
import Title from "../Base/Title";
|
||||
import {SpecialVisualization} from "../SpecialVisualization";
|
||||
|
||||
export class AddNoteCommentViz implements SpecialVisualization {
|
||||
funcName = "add_note_comment"
|
||||
docs = "A textfield to add a comment to a node (with the option to close the note)."
|
||||
args = [
|
||||
{
|
||||
name: "Id-key",
|
||||
doc: "The property name where the ID of the note to close can be found",
|
||||
defaultValue: "id",
|
||||
},
|
||||
]
|
||||
|
||||
public constr(state, tags, args) {
|
||||
const t = Translations.t.notes
|
||||
const textField = new TextField({
|
||||
placeholder: t.addCommentPlaceholder,
|
||||
inputStyle: "width: 100%; height: 6rem;",
|
||||
textAreaRows: 3,
|
||||
htmlType: "area",
|
||||
})
|
||||
textField.SetClass("rounded-l border border-grey")
|
||||
const txt = textField.GetValue()
|
||||
|
||||
const addCommentButton = new SubtleButton(
|
||||
Svg.speech_bubble_svg().SetClass("max-h-7"),
|
||||
t.addCommentPlaceholder
|
||||
).onClick(async () => {
|
||||
const id = tags.data[args[1] ?? "id"]
|
||||
|
||||
if ((txt.data ?? "") == "") {
|
||||
return
|
||||
}
|
||||
|
||||
if (isClosed.data) {
|
||||
await state.osmConnection.reopenNote(id, txt.data)
|
||||
await state.osmConnection.closeNote(id)
|
||||
} else {
|
||||
await state.osmConnection.addCommentToNote(id, txt.data)
|
||||
}
|
||||
NoteCommentElement.addCommentTo(txt.data, tags, state)
|
||||
txt.setData("")
|
||||
})
|
||||
|
||||
const close = new SubtleButton(
|
||||
Svg.resolved_svg().SetClass("max-h-7"),
|
||||
new VariableUiElement(
|
||||
txt.map((txt) => {
|
||||
if (txt === undefined || txt === "") {
|
||||
return t.closeNote
|
||||
}
|
||||
return t.addCommentAndClose
|
||||
})
|
||||
)
|
||||
).onClick(() => {
|
||||
const id = tags.data[args[1] ?? "id"]
|
||||
state.osmConnection.closeNote(id, txt.data).then((_) => {
|
||||
tags.data["closed_at"] = new Date().toISOString()
|
||||
tags.ping()
|
||||
})
|
||||
})
|
||||
|
||||
const reopen = new SubtleButton(
|
||||
Svg.note_svg().SetClass("max-h-7"),
|
||||
new VariableUiElement(
|
||||
txt.map((txt) => {
|
||||
if (txt === undefined || txt === "") {
|
||||
return t.reopenNote
|
||||
}
|
||||
return t.reopenNoteAndComment
|
||||
})
|
||||
)
|
||||
).onClick(() => {
|
||||
const id = tags.data[args[1] ?? "id"]
|
||||
state.osmConnection.reopenNote(id, txt.data).then((_) => {
|
||||
tags.data["closed_at"] = undefined
|
||||
tags.ping()
|
||||
})
|
||||
})
|
||||
|
||||
const isClosed = tags.map((tags) => (tags["closed_at"] ?? "") !== "")
|
||||
const stateButtons = new Toggle(
|
||||
new Toggle(reopen, close, isClosed),
|
||||
undefined,
|
||||
state.osmConnection.isLoggedIn
|
||||
)
|
||||
|
||||
return new LoginToggle(
|
||||
new Combine([
|
||||
new Title(t.addAComment),
|
||||
textField,
|
||||
new Combine([
|
||||
stateButtons.SetClass("sm:mr-2"),
|
||||
new Toggle(
|
||||
addCommentButton,
|
||||
new Combine([t.typeText]).SetClass(
|
||||
"flex items-center h-full subtle"
|
||||
),
|
||||
textField
|
||||
.GetValue()
|
||||
.map((t) => t !== undefined && t.length >= 1)
|
||||
).SetClass("sm:mr-2"),
|
||||
]).SetClass("sm:flex sm:justify-between sm:items-stretch"),
|
||||
]).SetClass("border-2 border-black rounded-xl p-4 block"),
|
||||
t.loginToAddComment,
|
||||
state
|
||||
)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue