| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  | import {ChangeDescription} from "./ChangeDescription"; | 
					
						
							|  |  |  | import OsmChangeAction from "./OsmChangeAction"; | 
					
						
							|  |  |  | import {Changes} from "../Changes"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default class ChangeLocationAction extends OsmChangeAction { | 
					
						
							| 
									
										
										
										
											2021-10-14 01:16:38 +02:00
										 |  |  |     private readonly _id: number; | 
					
						
							|  |  |  |     private readonly _newLonLat: [number, number]; | 
					
						
							|  |  |  |     private readonly _meta: { theme: string; reason: string }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |     constructor(id: string, newLonLat: [number, number], meta: { | 
					
						
							|  |  |  |         theme: string, | 
					
						
							|  |  |  |         reason: string | 
					
						
							|  |  |  |     }) { | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  |         super(id, true); | 
					
						
							| 
									
										
										
										
											2021-10-14 01:16:38 +02:00
										 |  |  |         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; | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-14 01:16:38 +02:00
										 |  |  |     protected async CreateChangeDescriptions(changes: Changes): Promise<ChangeDescription[]> { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         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] | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | } |