diff --git a/src/components/Widgets/TaskMapWidget/Messages.js b/src/components/Widgets/TaskMapWidget/Messages.js index a66640507..f634fd292 100644 --- a/src/components/Widgets/TaskMapWidget/Messages.js +++ b/src/components/Widgets/TaskMapWidget/Messages.js @@ -28,4 +28,9 @@ export default defineMessages({ id: "Widgets.TaskMapWidget.reselectTask", defaultMessage: "Re-Select Task", }, + + openInJOSM: { + id: "Widgets.TaskMapWidget.openInJOSM", + defaultMessage: "Open in JOSM", + }, }); diff --git a/src/components/Widgets/TaskMapWidget/TaskMapWidget.jsx b/src/components/Widgets/TaskMapWidget/TaskMapWidget.jsx index 7d70cca3e..f44e2c3a0 100644 --- a/src/components/Widgets/TaskMapWidget/TaskMapWidget.jsx +++ b/src/components/Widgets/TaskMapWidget/TaskMapWidget.jsx @@ -1,9 +1,13 @@ import { Component } from "react"; import { FormattedMessage } from "react-intl"; import AsCooperativeWork from "../../../interactions/Task/AsCooperativeWork"; +import { Editor } from "../../../services/Editor/Editor"; import { WidgetDataTarget, registerWidgetType } from "../../../services/Widget/Widget"; +import Button from "../../Button/Button"; import MapPane from "../../EnhancedMap/MapPane/MapPane"; +import WithEditor from "../../HOCs/WithEditor/WithEditor"; import WithKeyboardShortcuts from "../../HOCs/WithKeyboardShortcuts/WithKeyboardShortcuts"; +import WithSearch from "../../HOCs/WithSearch/WithSearch"; import QuickWidget from "../../QuickWidget/QuickWidget"; import TaskMap from "../../TaskPane/TaskMap/TaskMap"; import messages from "./Messages"; @@ -20,7 +24,7 @@ const descriptor = { defaultHeight: 19, }; -export default class TaskMapWidget extends Component { +export class TaskMapWidget extends Component { componentWillUnmount = () => { this.props.resumeKeyboardShortcuts(); }; @@ -38,6 +42,22 @@ export default class TaskMapWidget extends Component { } } + openInJOSM = () => { + const { task, mapBounds, taskBundle, editTask } = this.props; + if (!task || !editTask) { + return; + } + + editTask( + Editor.josm, + task, + mapBounds, + {}, + taskBundle, + task?.parent?.checkinComment, + ); + }; + render() { const cooperative = AsCooperativeWork(this.props.task).isTagType() || this.props.task.cooperativeWork; @@ -78,18 +98,28 @@ export default class TaskMapWidget extends Component { className="mr-mt-2" style={{ height: altWorkspaceType ? "calc(100vh - 270px)" : "calc(100% - 3rem)" }} > - {this.props.getUserAppSetting ? ( - <> -
-
+
+ {this.props.getUserAppSetting ? ( +
+
-
+
- - ) : null} + ) : ( +
+ )} + {!editMode && ( + + )} +
{editMode ? (