forked from MapComplete/MapComplete
		
	performance: Make _referencing_ways actually lazy
This commit is contained in:
		
							parent
							
								
									3eee9bd9f8
								
							
						
					
					
						commit
						b99588b4ba
					
				
					 2 changed files with 71 additions and 32 deletions
				
			
		|  | @ -80,20 +80,25 @@ export class ReferencingWaysMetaTagger extends SimpleMetaTagger { | |||
|                 if (!id.startsWith("node/")) { | ||||
|                     return false | ||||
|                 } | ||||
|                 console.trace("Downloading referencing ways for", feature.properties.id) | ||||
|                 OsmObject.DownloadReferencingWays(id).then((referencingWays) => { | ||||
|                     const currentTagsSource = state.allElements?.getEventSourceById(id) ?? [] | ||||
|                     const wayIds = referencingWays.map((w) => "way/" + w.id) | ||||
|                     wayIds.sort() | ||||
|                     const wayIdsStr = wayIds.join(";") | ||||
|                     if ( | ||||
|                         wayIdsStr !== "" && | ||||
|                         currentTagsSource.data["_referencing_ways"] !== wayIdsStr | ||||
|                     ) { | ||||
|                         currentTagsSource.data["_referencing_ways"] = wayIdsStr | ||||
|                         currentTagsSource.ping() | ||||
| 
 | ||||
|                 const currentTagsSource = state.allElements?.getEventSourceById(id) | ||||
|                 if (currentTagsSource === undefined) { | ||||
|                     return | ||||
|                 } | ||||
|                 Utils.AddLazyPropertyAsync( | ||||
|                     currentTagsSource.data, | ||||
|                     "_referencing_ways", | ||||
|                     async () => { | ||||
|                         const referencingWays = await OsmObject.DownloadReferencingWays(id) | ||||
|                         const wayIds = referencingWays.map((w) => "way/" + w.id) | ||||
|                         wayIds.sort() | ||||
|                         const wayIdsStr = wayIds.join(";") | ||||
|                         if (wayIdsStr !== "" && currentTagsSource.data[""] !== wayIdsStr) { | ||||
|                             currentTagsSource.data["_referencing_ways"] = wayIdsStr | ||||
|                             currentTagsSource.ping() | ||||
|                         } | ||||
|                     } | ||||
|                 }) | ||||
|                 ) | ||||
| 
 | ||||
|                 return true | ||||
|             } | ||||
|  | @ -282,16 +287,9 @@ export default class SimpleMetaTaggers { | |||
|                 }, | ||||
|             }) | ||||
| 
 | ||||
|             Object.defineProperty(feature.properties, "_surface:ha", { | ||||
|                 enumerable: false, | ||||
|                 configurable: true, | ||||
|                 get: () => { | ||||
|                     const sqMeters = GeoOperations.surfaceAreaInSqMeters(feature) | ||||
|                     const sqMetersHa = "" + Math.floor(sqMeters / 1000) / 10 | ||||
|                     delete feature.properties["_surface:ha"] | ||||
|                     feature.properties["_surface:ha"] = sqMetersHa | ||||
|                     return sqMetersHa | ||||
|                 }, | ||||
|             Utils.AddLazyProperty(feature.properties, "_surface:ha", () => { | ||||
|                 const sqMeters = GeoOperations.surfaceAreaInSqMeters(feature) | ||||
|                 return "" + Math.floor(sqMeters / 1000) / 10 | ||||
|             }) | ||||
| 
 | ||||
|             return true | ||||
|  | @ -443,8 +441,6 @@ export default class SimpleMetaTaggers { | |||
|                     } | ||||
|                 }, | ||||
|             }) | ||||
| 
 | ||||
|             const tagsSource = state.allElements.getEventSourceById(feature.properties.id) | ||||
|         } | ||||
|     ) | ||||
|     private static directionSimplified = new SimpleMetaTagger( | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue