forked from MapComplete/MapComplete
		
	Tying the knot: calculatedTags will update every time new data are added to the map. Fixes part of #287
This commit is contained in:
		
							parent
							
								
									4dda8fdcfa
								
							
						
					
					
						commit
						bc605371f5
					
				
					 3 changed files with 41 additions and 25 deletions
				
			
		|  | @ -16,7 +16,7 @@ import RegisteringFeatureSource from "./RegisteringFeatureSource"; | |||
| 
 | ||||
| export default class FeaturePipeline implements FeatureSource { | ||||
| 
 | ||||
|     public features: UIEventSource<{ feature: any; freshness: Date }[]>; | ||||
|     public features: UIEventSource<{ feature: any; freshness: Date }[]> = new UIEventSource<{feature: any; freshness: Date}[]>([]); | ||||
| 
 | ||||
|     public readonly name = "FeaturePipeline" | ||||
| 
 | ||||
|  | @ -83,7 +83,8 @@ export default class FeaturePipeline implements FeatureSource { | |||
|                     selectedElement, | ||||
|                     merged | ||||
|                 )); | ||||
|         this.features = source.features; | ||||
|          | ||||
|         source.features.syncWith(this.features) | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | @ -4,6 +4,7 @@ import State from "../../State"; | |||
| import Hash from "../Web/Hash"; | ||||
| import MetaTagging from "../MetaTagging"; | ||||
| import ExtractRelations from "../Osm/ExtractRelations"; | ||||
| import FeatureSourceMerger from "./FeatureSourceMerger"; | ||||
| 
 | ||||
| export default class MetaTaggingFeatureSource implements FeatureSource { | ||||
|     public readonly features: UIEventSource<{ feature: any; freshness: Date }[]> = new UIEventSource<{ feature: any; freshness: Date }[]>(undefined); | ||||
|  | @ -14,6 +15,10 @@ export default class MetaTaggingFeatureSource implements FeatureSource { | |||
|         const self = this; | ||||
|         this.name = "MetaTagging of " + source.name | ||||
| 
 | ||||
|         if(allFeaturesSource.features === undefined){ | ||||
|             throw ("Initialize the featuresource fully first!"+allFeaturesSource.name) | ||||
|         } | ||||
|          | ||||
|         function update() { | ||||
|             const featuresFreshness = source.features.data | ||||
|             if (featuresFreshness === undefined) { | ||||
|  |  | |||
|  | @ -3,7 +3,6 @@ import SimpleMetaTagger from "./SimpleMetaTagger"; | |||
| import {ExtraFunction} from "./ExtraFunction"; | ||||
| import {Relation} from "./Osm/ExtractRelations"; | ||||
| import FeatureSource from "./FeatureSource/FeatureSource"; | ||||
| import State from "../State"; | ||||
| 
 | ||||
| 
 | ||||
| interface Params { | ||||
|  | @ -48,8 +47,12 @@ export default class MetaTagging { | |||
|             layerFuncs.set(layer.id, this.createRetaggingFunc(layer)); | ||||
|         } | ||||
| 
 | ||||
|         allKnownFeatures.features.addCallbackAndRun(newFeatures => { | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|             const featuresPerLayer = new Map<string, any[]>(); | ||||
|         for (const feature of (allKnownFeatures.features?.data ?? features ?? [])) { | ||||
|             for (const feature of (newFeatures.concat(features))) { | ||||
| 
 | ||||
|                 const key = feature.feature._matching_layer_id; | ||||
|                 if (!featuresPerLayer.has(key)) { | ||||
|  | @ -75,6 +78,13 @@ export default class MetaTagging { | |||
|             } | ||||
|              | ||||
|              | ||||
|              | ||||
|              | ||||
|              | ||||
|              | ||||
|         }) | ||||
|          | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -105,7 +115,7 @@ export default class MetaTagging { | |||
|                         } | ||||
|                         if (typeof result !== "string") { | ||||
|                             // Make sure it is a string!
 | ||||
|                             result = "" + result; | ||||
|                             result = JSON.stringify(result); | ||||
|                         } | ||||
|                         feature.properties[key] = result; | ||||
|                     } catch (e) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue