forked from MapComplete/MapComplete
		
	Huge refactorings of JSON-parsing and Tagsfilter, other cleanups, warning cleanups and lots of small subtle bugfixes
This commit is contained in:
		
							parent
							
								
									9a5b35b9f3
								
							
						
					
					
						commit
						a57b7d93fa
					
				
					 113 changed files with 1565 additions and 2594 deletions
				
			
		|  | @ -1,6 +1,8 @@ | |||
| import {State} from "../../State"; | ||||
| import {OsmConnection, UserDetails} from "./OsmConnection"; | ||||
| import {UIEventSource} from "../UIEventSource"; | ||||
| import {ElementStorage} from "../ElementStorage"; | ||||
| import {Layout} from "../../Customizations/Layout"; | ||||
| import {State} from "../../State"; | ||||
| 
 | ||||
| export class ChangesetHandler { | ||||
| 
 | ||||
|  | @ -22,11 +24,14 @@ export class ChangesetHandler { | |||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     public UploadChangeset(generateChangeXML: (csid: string) => string, | ||||
|                            continuation: () => void) { | ||||
|     public UploadChangeset( | ||||
|         layout: Layout, | ||||
|         allElements: ElementStorage, | ||||
|         generateChangeXML: (csid: string) => string, | ||||
|          continuation: () => void) { | ||||
| 
 | ||||
|         if (this._dryRun) { | ||||
|             var changesetXML = generateChangeXML("123456"); | ||||
|             const changesetXML = generateChangeXML("123456"); | ||||
|             console.log(changesetXML); | ||||
|             continuation(); | ||||
|             return; | ||||
|  | @ -34,14 +39,14 @@ export class ChangesetHandler { | |||
| 
 | ||||
|         const self = this; | ||||
| 
 | ||||
| 
 | ||||
|         if (this.currentChangeset.data === undefined || this.currentChangeset.data === "") { | ||||
|             // We have to open a new changeset
 | ||||
|             this.OpenChangeset((csId) => { | ||||
|             this.OpenChangeset(layout,(csId) => { | ||||
|                 this.currentChangeset.setData(csId); | ||||
|                 const changeset = generateChangeXML(csId); | ||||
|                 console.log(changeset); | ||||
|                 self.AddChange(csId, changeset, | ||||
|                     allElements, | ||||
|                     () => { | ||||
|                     }, | ||||
|                     (e) => { | ||||
|  | @ -55,6 +60,7 @@ export class ChangesetHandler { | |||
|             self.AddChange( | ||||
|                 csId, | ||||
|                 generateChangeXML(csId), | ||||
|                 allElements, | ||||
|                 () => { | ||||
|                 }, | ||||
|                 (e) => { | ||||
|  | @ -62,7 +68,7 @@ export class ChangesetHandler { | |||
|                     // Mark the CS as closed...
 | ||||
|                     this.currentChangeset.setData(""); | ||||
|                     // ... and try again. As the cs is closed, no recursive loop can exist  
 | ||||
|                     self.UploadChangeset(generateChangeXML, continuation); | ||||
|                     self.UploadChangeset(layout, allElements, generateChangeXML, continuation); | ||||
| 
 | ||||
|                 } | ||||
|             ) | ||||
|  | @ -71,9 +77,10 @@ export class ChangesetHandler { | |||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private OpenChangeset(continuation: (changesetId: string) => void) { | ||||
|     private OpenChangeset( | ||||
|         layout : Layout, | ||||
|         continuation: (changesetId: string) => void) { | ||||
| 
 | ||||
|         const layout = State.state.layoutToUse.data; | ||||
|         const commentExtra = layout.changesetMessage !== undefined? " - "+layout.changesetMessage : ""; | ||||
|         this.auth.xhr({ | ||||
|             method: 'PUT', | ||||
|  | @ -81,8 +88,8 @@ export class ChangesetHandler { | |||
|             options: {header: {'Content-Type': 'text/xml'}}, | ||||
|             content: [`<osm><changeset>`, | ||||
|                 `<tag k="created_by" v="MapComplete ${State.vNumber}" />`, | ||||
|                 `<tag k="comment" v="Adding data with #MapComplete for theme #${layout.name}${commentExtra}"/>`, | ||||
|                 `<tag k="theme" v="${layout.name}"/>`, | ||||
|                 `<tag k="comment" v="Adding data with #MapComplete for theme #${layout.id}${commentExtra}"/>`, | ||||
|                 `<tag k="theme" v="${layout.id}"/>`, | ||||
|                 layout.maintainer !== undefined ? `<tag k="theme-creator" v="${layout.maintainer}"/>` : "", | ||||
|                 `</changeset></osm>`].join("") | ||||
|         }, function (err, response) { | ||||
|  | @ -98,6 +105,7 @@ export class ChangesetHandler { | |||
| 
 | ||||
|     private AddChange(changesetId: string, | ||||
|                       changesetXML: string, | ||||
|                       allElements: ElementStorage, | ||||
|                       continuation: ((changesetId: string, idMapping: any) => void), | ||||
|                       onFail: ((changesetId: string) => void) = undefined) { | ||||
|         this.auth.xhr({ | ||||
|  | @ -113,7 +121,7 @@ export class ChangesetHandler { | |||
|                 } | ||||
|                 return; | ||||
|             } | ||||
|             const mapping = ChangesetHandler.parseUploadChangesetResponse(response); | ||||
|             const mapping = ChangesetHandler.parseUploadChangesetResponse(response, allElements); | ||||
|             console.log("Uploaded changeset ", changesetId); | ||||
|             continuation(changesetId, mapping); | ||||
|         }); | ||||
|  | @ -145,7 +153,7 @@ export class ChangesetHandler { | |||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     public static parseUploadChangesetResponse(response: XMLDocument) { | ||||
|     private static parseUploadChangesetResponse(response: XMLDocument, allElements: ElementStorage) { | ||||
|         const nodes = response.getElementsByTagName("node"); | ||||
|         // @ts-ignore
 | ||||
|         for (const node of nodes) { | ||||
|  | @ -157,9 +165,9 @@ export class ChangesetHandler { | |||
|                     continue; | ||||
|                 } | ||||
|                 console.log("Rewriting id: ", oldId, "-->", newId); | ||||
|                 const element = State.state.allElements.getElement("node/" + oldId); | ||||
|                 const element = allElements.getElement("node/" + oldId); | ||||
|                 element.data.id = "node/" + newId; | ||||
|                 State.state.allElements.addElementById("node/" + newId, element); | ||||
|                 allElements.addElementById("node/" + newId, element); | ||||
|                 element.ping(); | ||||
| 
 | ||||
|             } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue