forked from MapComplete/MapComplete
		
	Add metacalculation on currentview
This commit is contained in:
		
							parent
							
								
									c76b0a6340
								
							
						
					
					
						commit
						65b1891cb6
					
				
					 8 changed files with 85 additions and 27 deletions
				
			
		|  | @ -56,7 +56,7 @@ export default class FeaturePipeline { | |||
| 
 | ||||
|     private readonly oldestAllowedDate: Date; | ||||
|     private readonly osmSourceZoomLevel | ||||
|      | ||||
| 
 | ||||
|     private readonly localStorageSavers = new Map<string, SaveTileToLocalStorageActor>() | ||||
|     private readonly metataggingRecalculated = new UIEventSource<void>(undefined) | ||||
| 
 | ||||
|  | @ -97,7 +97,7 @@ export default class FeaturePipeline { | |||
|         this.perLayerHierarchy = perLayerHierarchy | ||||
| 
 | ||||
|         // Given a tile, wraps it and passes it on to render (handled by 'handleFeatureSource'
 | ||||
|         function patchedHandleFeatureSource (src: FeatureSourceForLayer & IndexedFeatureSource & Tiled) { | ||||
|         function patchedHandleFeatureSource(src: FeatureSourceForLayer & IndexedFeatureSource & Tiled) { | ||||
|             // This will already contain the merged features for this tile. In other words, this will only be triggered once for every tile
 | ||||
|             const srcFiltered = | ||||
|                 new FilteringFeatureSource(state, src.tileIndex, | ||||
|  | @ -110,14 +110,14 @@ export default class FeaturePipeline { | |||
|             // We do not mark as visited here, this is the responsability of the code near the actual loader (e.g. overpassLoader and OSMApiFeatureLoader)
 | ||||
|         } | ||||
| 
 | ||||
|         function handlePriviligedFeatureSource(src: FeatureSourceForLayer & Tiled){ | ||||
|         function handlePriviligedFeatureSource(src: FeatureSourceForLayer & Tiled) { | ||||
|             // Passthrough to passed function, except that it registers as well
 | ||||
|             handleFeatureSource(src) | ||||
|             src.features.addCallbackAndRunD(fs => { | ||||
|               fs.forEach(ff => state.allElements.addOrGetElement(ff.feature)) | ||||
|                 fs.forEach(ff => state.allElements.addOrGetElement(ff.feature)) | ||||
|             }) | ||||
|         } | ||||
|          | ||||
| 
 | ||||
| 
 | ||||
|         for (const filteredLayer of state.filteredLayers.data) { | ||||
|             const id = filteredLayer.layerDef.id | ||||
|  | @ -155,10 +155,11 @@ export default class FeaturePipeline { | |||
| 
 | ||||
|             if (id === "current_view") { | ||||
|                 handlePriviligedFeatureSource(state.currentView) | ||||
|                 state.currentView.features.map(ffs => ffs[0]?.feature?.properties?.id).withEqualityStabilized((x,y) => x === y).addCallbackAndRunD(_ => self.applyMetaTags(state.currentView)) | ||||
|                 continue | ||||
|             } | ||||
|              | ||||
|             const localTileSaver =  new SaveTileToLocalStorageActor(filteredLayer) | ||||
| 
 | ||||
|             const localTileSaver = new SaveTileToLocalStorageActor(filteredLayer) | ||||
|             this.localStorageSavers.set(filteredLayer.layerDef.id, localTileSaver) | ||||
| 
 | ||||
|             if (source.geojsonSource === undefined) { | ||||
|  | @ -220,8 +221,8 @@ export default class FeaturePipeline { | |||
|                 new RegisteringAllFromFeatureSourceActor(tile, state.allElements) | ||||
|                 if (tile.layer.layerDef.maxAgeOfCache > 0) { | ||||
|                     const saver = self.localStorageSavers.get(tile.layer.layerDef.id) | ||||
|                     if(saver === undefined){ | ||||
|                         console.error("No localStorageSaver found for layer ",tile.layer.layerDef.id) | ||||
|                     if (saver === undefined) { | ||||
|                         console.error("No localStorageSaver found for layer ", tile.layer.layerDef.id) | ||||
|                     } | ||||
|                     saver?.addTile(tile) | ||||
|                 } | ||||
|  | @ -234,12 +235,12 @@ export default class FeaturePipeline { | |||
|                 state.filteredLayers.data.forEach(flayer => { | ||||
|                     const layer = flayer.layerDef | ||||
|                     if (layer.maxAgeOfCache > 0) { | ||||
|                        const saver = self.localStorageSavers.get(layer.id) | ||||
|                            if(saver === undefined){ | ||||
|                                console.error("No local storage saver found for ", layer.id) | ||||
|                            }else{ | ||||
|                                 saver.MarkVisited(tileId, new Date()) | ||||
|                            } | ||||
|                         const saver = self.localStorageSavers.get(layer.id) | ||||
|                         if (saver === undefined) { | ||||
|                             console.error("No local storage saver found for ", layer.id) | ||||
|                         } else { | ||||
|                             saver.MarkVisited(tileId, new Date()) | ||||
|                         } | ||||
|                     } | ||||
|                     self.freshnesses.get(layer.id).addTileLoad(tileId, new Date()) | ||||
|                 }) | ||||
|  | @ -458,7 +459,7 @@ export default class FeaturePipeline { | |||
|                     { | ||||
|                         memberships: this.relationTracker, | ||||
|                         getFeaturesWithin: (layerId, bbox: BBox) => self.GetFeaturesWithin(layerId, bbox), | ||||
|                         getFeatureById: (id:string) => self.state.allElements.ContainingFeatures.get(id) | ||||
|                         getFeatureById: (id: string) => self.state.allElements.ContainingFeatures.get(id) | ||||
|                     }, | ||||
|                     layerDef, | ||||
|                     { | ||||
|  | @ -481,6 +482,7 @@ export default class FeaturePipeline { | |||
|                 self.applyMetaTags(tile) | ||||
|             }) | ||||
|         }) | ||||
|         this.applyMetaTags(this.state.currentView) | ||||
|         self.metataggingRecalculated.ping() | ||||
| 
 | ||||
|     } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue