diff --git a/src/components/dialogs/GpxDialog.tsx b/src/components/dialogs/GpxDialog.tsx index a8d6ffa..41cb3db 100644 --- a/src/components/dialogs/GpxDialog.tsx +++ b/src/components/dialogs/GpxDialog.tsx @@ -66,6 +66,16 @@ const GpxDialogUnconnected: FC = ({ [gpx, editorSetGpx] ); + const onRouteColor = useCallback( + index => { + if (!gpx.enabled) return; + editorSetGpx({ + list: gpx.list.map((el, i) => (i !== index ? el : { ...el, color: getRandomColor() })), + }); + }, + [gpx, editorSetGpx] + ); + const toggleGpx = useCallback(() => { editorSetGpx({ enabled: !gpx.enabled }); }, [gpx, editorSetGpx]); @@ -83,7 +93,7 @@ const GpxDialogUnconnected: FC = ({ const addCurrent = useCallback(() => { if (!route.length) return; - const { path } = getUrlData() + const { path } = getUrlData(); editorSetGpx({ list: [ @@ -115,6 +125,7 @@ const GpxDialogUnconnected: FC = ({ onRouteDrop={onRouteDrop} onFocusRoute={onFocusRoute} onRouteToggle={onRouteToggle} + onRouteColor={onRouteColor} /> ))} diff --git a/src/components/gpx/GpxDialogRow.tsx b/src/components/gpx/GpxDialogRow.tsx index 0075c28..cbfc432 100644 --- a/src/components/gpx/GpxDialogRow.tsx +++ b/src/components/gpx/GpxDialogRow.tsx @@ -12,12 +12,13 @@ interface IProps { onFocusRoute: (i: number) => void onRouteDrop: (i: number) => void onRouteToggle: (i: number) => void + onRouteColor: (i: number) => void } -const GpxDialogRow: FC = ({ item, index, enabled, onRouteToggle, onFocusRoute, onRouteDrop }) => { +const GpxDialogRow: FC = ({ item, index, enabled, onRouteToggle, onFocusRoute, onRouteDrop, onRouteColor }) => { return (
-
+
onRouteColor(index)}/>
onFocusRoute(index)}> {item.name} diff --git a/src/map/GpxPolyline/index.tsx b/src/map/GpxPolyline/index.tsx index a4ba398..560ba5d 100644 --- a/src/map/GpxPolyline/index.tsx +++ b/src/map/GpxPolyline/index.tsx @@ -20,7 +20,7 @@ const GpxPolyline: FC = ({ latlngs, color }) => { setLayer(item); return () => MainMap.removeLayer(item); - }, [MainMap]); + }, [MainMap, color, latlngs]); useEffect(() => { if (!layer) return;