import produce from "immer"; import { initState } from "../../initState"; import { OverlayNamePrefixs } from "@store"; import { OverlayTypes, Status } from "@types"; import { IOverlay } from "@map"; export function createOverlay(state = initState, payload: OverlayTypes) { return produce(state, (draft) => { draft.status = Status.CreateOverlay; draft.overlayType = payload; }); } export function deleteOverlays(state = initState, payload: any) { const { selectedIds } = state.map; const [id] = selectedIds!; const filterFunc = (overlay: IOverlay) => overlay.id !== id; return produce(state, (draft) => { // draft.map.status = Status.CreateOverlay; // draft.map.command = Command.DeleteOverlays; draft.map.rectangles = draft.map.rectangles.filter(filterFunc); draft.map.polygons = draft.map.polygons.filter(filterFunc); draft.map.polylines = draft.map.polylines.filter(filterFunc); draft.map.circles = draft.map.circles.filter(filterFunc); draft.map.selectedIds = []; // draft.map.overlayType = payload as OverlayTypes; }); } export function finishEditOverlay(state = initState, payload: any) { return produce(state, (draft) => { const overlay = payload as IOverlay; const { type, id } = overlay; // todo: uniqueName. overlay.name = OverlayNamePrefixs[type] + overlay.id; const overlays = type === OverlayTypes.Rectangle ? draft.map.rectangles : type === OverlayTypes.Circle ? draft.map.circles : type === OverlayTypes.Polygon ? draft.map.polygons : draft.map.polylines; const existed = overlays.find((overlay) => overlay.id === id); if (existed) { overlays[overlays.indexOf(existed)] = overlay; } else { overlays.push(overlay); } draft.overlayType = null; draft.status = null; }); }