import {ChangeDescription} from "./ChangeDescription"; import OsmChangeAction from "./OsmChangeAction"; import {Changes} from "../Changes"; export default class ChangeLocationAction extends OsmChangeAction { private readonly _id: number; private readonly _newLonLat: [number, number]; private readonly _meta: { theme: string; reason: string }; constructor(id: string, newLonLat: [number, number], meta: { theme: string, reason: string }) { super(id, true); if (!id.startsWith("node/")) { throw "Invalid ID: only 'node/number' is accepted" } this._id = Number(id.substring("node/".length)) this._newLonLat = newLonLat; this._meta = meta; } protected async CreateChangeDescriptions(changes: Changes): Promise { const d: ChangeDescription = { changes: { lat: this._newLonLat[1], lon: this._newLonLat[0] }, type: "node", id: this._id, meta: { changeType: "move", theme: this._meta.theme, specialMotivation: this._meta.reason } } return [d] } }