import { Circle } from "leaflet"; import { LeafletArgs, PlayBackEvent } from "../EventInterface"; export namespace CircleEvents { const prefix:string = "CIRCLE_"; export interface CreateCircleEventArgs { id:string; radius:number; pos:[number,number]; color?:string; } export class CreateCircle implements PlayBackEvent { name: string = prefix + "CREATE"; do(leafletArgs: LeafletArgs, args: CreateCircleEventArgs): void { const circle = new Circle(args.pos,{color:args.color,radius:args.radius,fillColor:args.color}); leafletArgs.playback.createGenericLayer(circle,args.id); } undo(leafletArgs: LeafletArgs, args: CreateCircleEventArgs): void { leafletArgs.playback.removeGenericLayer(args.id); } } export class RemoveCircle extends CreateCircle { name:string = prefix + "REMOVE"; do(leafletArgs:LeafletArgs,args:CreateCircleEventArgs) { super.undo(leafletArgs,args); } undo(leafletArgs:LeafletArgs,args:CreateCircleEventArgs) { super.do(leafletArgs,args); } } export interface MoveCircleEventArgs { id:string; from:[number,number]; to:[number,number]; } export class MoveCircle implements PlayBackEvent { name: string = prefix + "MOVE"; do(leafletArgs: LeafletArgs, args: MoveCircleEventArgs): void { leafletArgs.playback.getLayerById(args.id)?.setLatLng(args.to); } undo(leafletArgs: LeafletArgs, args: MoveCircleEventArgs): void { leafletArgs.playback.getLayerById(args.id)?.setLatLng(args.from); } } }