From 517540face18dc30caf835636395e2fc9701853f Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Fri, 25 Jul 2025 19:56:54 +0200 Subject: [PATCH] Performance: don't query for summary if the summaries are not online --- .../TiledFeatureSource/SummaryTileSource.ts | 20 ++++++++++++++----- .../ThemeViewState/WithSpecialLayers.ts | 3 +++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/Logic/FeatureSource/TiledFeatureSource/SummaryTileSource.ts b/src/Logic/FeatureSource/TiledFeatureSource/SummaryTileSource.ts index 026a355aa..9499253b9 100644 --- a/src/Logic/FeatureSource/TiledFeatureSource/SummaryTileSource.ts +++ b/src/Logic/FeatureSource/TiledFeatureSource/SummaryTileSource.ts @@ -1,5 +1,5 @@ import DynamicTileSource from "./DynamicTileSource" -import { Store, UIEventSource } from "../../UIEventSource" +import { ImmutableStore, Store, UIEventSource } from "../../UIEventSource" import { BBox } from "../../BBox" import StaticFeatureSource from "../Sources/StaticFeatureSource" import { Feature, Point } from "geojson" @@ -20,7 +20,7 @@ export class SummaryTileSourceRewriter implements FeatureSource { public readonly totalNumberOfFeatures: Store = this._totalNumberOfFeatures constructor( summarySource: SummaryTileSource, - filteredLayers: ReadonlyMap + filteredLayers: ReadonlyMap, ) { this.filteredLayers = Array.from(filteredLayers.values()).filter( (l) => !Constants.isPriviliged(l.layerDef) @@ -73,11 +73,18 @@ export class SummaryTileSource extends DynamicTileSource { zoom: Store }, options?: { - isActive?: Store + isActive?: Store, + availableLayers?: Store> } ) { - const layersSummed = layers.join("+") const zDiff = 2 + const layersSummed = (options?.availableLayers??new ImmutableStore(undefined)).map(available => { + console.log("Determining 'layersSummed' with currently available:", available) + if(available === undefined){ + return layers.join("+") + } + return layers.filter(l => available.has(l)).join("+") + }) super( zoomRounded, 0, // minzoom @@ -85,7 +92,7 @@ export class SummaryTileSource extends DynamicTileSource { const features = SummaryTileSource.downloadTile( tileIndex, cacheserver, - layersSummed + layersSummed.data ) const [z] = Tiles.tile_from_index(tileIndex) return new StaticFeatureSource( @@ -110,6 +117,9 @@ export class SummaryTileSource extends DynamicTileSource { cacheserver: string, layersSummed: string ): Store[]> { + if(layersSummed === ""){ + return new ImmutableStore([]) + } const [z, x, y] = Tiles.tile_from_index(tileIndex) let coordinates = Tiles.centerPointOf(z, x, y) const url = `${cacheserver}/summary/${layersSummed}/${z}/${x}/${y}.json` diff --git a/src/Models/ThemeViewState/WithSpecialLayers.ts b/src/Models/ThemeViewState/WithSpecialLayers.ts index 1aeccfb6e..2fb653a01 100644 --- a/src/Models/ThemeViewState/WithSpecialLayers.ts +++ b/src/Models/ThemeViewState/WithSpecialLayers.ts @@ -24,6 +24,7 @@ import { ShowDataLayerOptions } from "../../UI/Map/ShowDataLayerOptions" export class WithSpecialLayers extends WithChangesState { readonly favourites: FavouritesFeatureSource + private mvtAvailableLayers: Store> /** * When hovering (in the popup) an image, the location of the image will be revealed on the main map. * This store contains those images that should be shown, probably only the currently hovered image @@ -43,6 +44,7 @@ export class WithSpecialLayers extends WithChangesState { constructor(theme: ThemeConfig, mvtAvailableLayers: Store>) { super(theme, mvtAvailableLayers) + this.mvtAvailableLayers = mvtAvailableLayers this.favourites = new FavouritesFeatureSource(this) @@ -111,6 +113,7 @@ export class WithSpecialLayers extends WithChangesState { this.mapProperties, { isActive: this.mapProperties.zoom.map((z) => z < maxzoom), + availableLayers: this.mvtAvailableLayers } )