Skip to content

Commit 8740b9e

Browse files
authored
add ability to focus on task in TaskPropertiesWidget (#2652)
* add map.setView useEffect in TaskMap * format
1 parent 524763c commit 8740b9e

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

src/components/TaskPane/TaskMap/TaskMap.jsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ const shortcutGroup = "layers";
7373
* @author [Neil Rotstan](https://github.com/nrotstan)
7474
*/
7575
export const TaskMapContent = (props) => {
76+
const { workspaceContext } = props;
7677
const map = useMap();
7778
const [showTaskFeatures, setShowTaskFeatures] = useState(true);
7879
const [osmData, setOsmData] = useState(null);
@@ -88,6 +89,22 @@ export const TaskMapContent = (props) => {
8889
const [directionalityIndicators, setDirectionalityIndicators] = useState({});
8990
const [showMapControlsDrawer, setShowMapControlsDrawer] = useState(true);
9091

92+
useEffect(() => {
93+
if (workspaceContext?.taskMapBounds) {
94+
const isTaskInBundle =
95+
props.taskBundle?.tasks?.some((t) => t.id === workspaceContext.taskMapTask?.id) ||
96+
workspaceContext.taskMapTask?.id === props.task?.id;
97+
98+
if (isTaskInBundle) {
99+
map.setView(workspaceContext.taskMapBounds.getCenter(), workspaceContext.taskMapZoom);
100+
}
101+
}
102+
}, [
103+
workspaceContext?.taskMapBounds,
104+
workspaceContext?.taskMapZoom,
105+
workspaceContext?.taskMapTask?.id,
106+
]);
107+
91108
const taskFeatures = () => {
92109
if ((props.taskBundle?.tasks?.length ?? 0) > 0) {
93110
return featureCollection(

src/components/Widgets/TaskPropertiesWidget/TaskPropertiesWidget.jsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import PropertyList from "../../EnhancedMap/PropertyList/PropertyList";
77
import QuickWidget from "../../QuickWidget/QuickWidget";
88
import messages from "./Messages";
99
import "./TaskPropertiesWidget.scss";
10+
import bbox from "@turf/bbox";
11+
import { toLatLngBounds } from "../../../services/MapBounds/MapBounds";
1012

1113
const descriptor = {
1214
widgetKey: "TaskPropertiesWidget",
@@ -19,6 +21,8 @@ const descriptor = {
1921
};
2022

2123
const TaskPropertiesWidget = (props) => {
24+
const { setWorkspaceContext } = props;
25+
2226
const taskList = props.taskBundle?.tasks || [props.task];
2327
const [collapsed, setCollapsed] = useState();
2428

@@ -49,6 +53,23 @@ const TaskPropertiesWidget = (props) => {
4953
</span>
5054
</div>
5155
</summary>
56+
{!props.getUserAppSetting(props.user, "isEditMode") && (
57+
<button
58+
className="mr-button mr-button--blue-fill mr-mb-2 mr-mr-2 mr-mt-2"
59+
onClick={() => {
60+
const bounds = toLatLngBounds(bbox(feature.geometry));
61+
62+
setWorkspaceContext({
63+
taskMapBounds: bounds,
64+
taskMapZoom: 18,
65+
taskMapTask: task,
66+
taskMapBoundsUpdate: Date.now(),
67+
});
68+
}}
69+
>
70+
Go to feature on map
71+
</button>
72+
)}
5273
<PropertyList
5374
featureProperties={feature.properties}
5475
hideHeader

0 commit comments

Comments
 (0)