Revize 26f9c9ff
Přidáno uživatelem Václav Honzík před asi 2 roky(ů)
frontend/src/features/TrackingTool/trackingToolSlice.ts | ||
---|---|---|
3 | 3 |
import mapConfig from "../../config/mapConfig" |
4 | 4 |
import { PathDto } from "../../swagger/data-contracts" |
5 | 5 |
import buildPathVariants from "./Map/pathUtils" |
6 |
import { isMapPointDisplayable, MapPoint, PathVariant } from "./trackingToolUtils"
|
|
6 |
import { isMapPointDisplayable, MapPoint, PathVariant } from "./trackingToolUtils" |
|
7 | 7 |
import { sendTextForProcessing } from "./trackingToolThunks" |
8 | 8 |
import storage from "redux-persist/lib/storage" |
9 | 9 |
import TrackingToolState from './trackingToolState' |
... | ... | |
61 | 61 |
...state, |
62 | 62 |
currentPage: action.payload, |
63 | 63 |
}), |
64 |
updatePrimaryPath: (state: TrackingToolState, action: { payload: PathVariant }) => { |
|
65 |
const { primaryPathIdx } = state |
|
66 |
const path = action.payload |
|
67 |
const paths = [...state.pathVariants ?? []] |
|
68 |
|
|
69 |
if (paths.length <= primaryPathIdx) { |
|
70 |
return { ...state } |
|
71 |
} |
|
72 |
|
|
73 |
return { |
|
74 |
...state, |
|
75 |
pathVariants: [ |
|
76 |
...paths.slice(0, primaryPathIdx), |
|
77 |
path, |
|
78 |
...paths.slice(primaryPathIdx + 1), |
|
79 |
], |
|
80 |
} |
|
81 |
}, |
|
64 | 82 |
// Updates map marker while ignoring its idx property |
65 | 83 |
updateMapMarkerWithId: (state: TrackingToolState, action: { payload: { id: string, item: MapPoint } }) => { |
66 | 84 |
const { item } = action.payload |
67 |
const idx = state.primaryPathIdx
|
|
68 |
if (!state.pathVariants || state.pathVariants.length <= idx) {
|
|
85 |
const { primaryPathIdx } = state
|
|
86 |
if (!state.pathVariants || state.pathVariants.length <= primaryPathIdx) {
|
|
69 | 87 |
return state |
70 | 88 |
} |
71 | 89 |
|
72 |
const mapMarkerIdx = state.pathVariants[idx].findIndex((item) => item.id === action.payload.id)
|
|
90 |
const mapMarkerIdx = state.pathVariants[primaryPathIdx].findIndex((item) => item.id === action.payload.id)
|
|
73 | 91 |
if (mapMarkerIdx === -1) { |
74 | 92 |
return state |
75 | 93 |
} |
76 | 94 |
|
77 |
const newPathVariant = [...state.pathVariants[idx]]
|
|
95 |
const newPathVariant = [...state.pathVariants[primaryPathIdx]]
|
|
78 | 96 |
newPathVariant[mapMarkerIdx] = item |
79 | 97 |
return { |
80 | 98 |
...state, |
81 |
pathVariants: [...state.pathVariants.slice(0, idx), newPathVariant, ...state.pathVariants.slice(idx + 1)],
|
|
99 |
pathVariants: [...state.pathVariants.slice(0, primaryPathIdx), newPathVariant, ...state.pathVariants.slice(primaryPathIdx + 1)],
|
|
82 | 100 |
} |
83 | 101 |
}, |
84 | 102 |
// Updates map marker based on its idx property |
85 | 103 |
updateMapMarker: (state: TrackingToolState, action: { payload: MapPoint }) => { |
86 | 104 |
const item = action.payload |
87 |
const idx = state.primaryPathIdx
|
|
88 |
if (!state.pathVariants || state.pathVariants.length <= idx) {
|
|
105 |
const { primaryPathIdx } = state
|
|
106 |
if (!state.pathVariants || state.pathVariants.length <= primaryPathIdx) {
|
|
89 | 107 |
return state |
90 | 108 |
} |
91 | 109 |
|
92 | 110 |
return { |
93 | 111 |
...state, |
94 | 112 |
pathVariants: state.pathVariants.map((pathVariant, i) => { |
95 |
if (i !== idx) {
|
|
113 |
if (i !== primaryPathIdx) {
|
|
96 | 114 |
return [...pathVariant] |
97 | 115 |
} |
98 | 116 |
|
... | ... | |
256 | 274 |
moveMarkerToDestination, |
257 | 275 |
updateMapMarkerWithId, |
258 | 276 |
removeMapMarker, |
277 |
updatePrimaryPath |
|
259 | 278 |
} = trackingToolSlice.actions |
260 | 279 |
const trackingToolReducer = trackingToolSlice.reducer |
261 | 280 |
export default trackingToolReducer |
Také k dispozici: Unified diff
toggles for specific map points
re #9741