forked from MapComplete/MapComplete
		
	Cluster styling tweaks, tweaks to NP
This commit is contained in:
		
							parent
							
								
									8f674b7976
								
							
						
					
					
						commit
						adb36c2ffe
					
				
					 6 changed files with 30 additions and 32 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,5 @@
 | 
			
		|||
import {TagRenderingConfigJson} from "./TagRenderingConfigJson";
 | 
			
		||||
import {LayerConfigJson} from "./LayerConfigJson";
 | 
			
		||||
import UnitConfigJson from "./UnitConfigJson";
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Defines the entire theme.
 | 
			
		||||
| 
						 | 
				
			
			@ -237,12 +236,6 @@ export interface LayoutConfigJson {
 | 
			
		|||
         * If clustering is defined, defaults to 25
 | 
			
		||||
         */
 | 
			
		||||
        minNeededElements?: number
 | 
			
		||||
        /**
 | 
			
		||||
         * By default, a box is shown indicating the number of features even if the map is zoomed out beyond the minzoom of the layer.
 | 
			
		||||
         * This flag switches this behaviour to not show these boxes.
 | 
			
		||||
         */
 | 
			
		||||
        hideClustersAboveMinZoom?: boolean;
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,6 @@ export default class LayoutConfig {
 | 
			
		|||
    public readonly clustering?: {
 | 
			
		||||
        maxZoom: number,
 | 
			
		||||
        minNeededElements: number,
 | 
			
		||||
        hideClustersAboveMinzoom: boolean
 | 
			
		||||
    };
 | 
			
		||||
    public readonly hideFromOverview: boolean;
 | 
			
		||||
    public lockLocation: boolean | [[number, number], [number, number]];
 | 
			
		||||
| 
						 | 
				
			
			@ -141,13 +140,16 @@ export default class LayoutConfig {
 | 
			
		|||
        this.clustering = {
 | 
			
		||||
            maxZoom: 16,
 | 
			
		||||
            minNeededElements: 25,
 | 
			
		||||
            hideClustersAboveMinzoom: false
 | 
			
		||||
        };
 | 
			
		||||
        if (json.clustering) {
 | 
			
		||||
        if(json.clustering === false){
 | 
			
		||||
            this.clustering = {
 | 
			
		||||
                maxZoom: 0,
 | 
			
		||||
                minNeededElements: 100000,
 | 
			
		||||
            };
 | 
			
		||||
        }else         if (json.clustering) {
 | 
			
		||||
            this.clustering = {
 | 
			
		||||
                maxZoom: json.clustering.maxZoom ?? 18,
 | 
			
		||||
                minNeededElements: json.clustering.minNeededElements ?? 25,
 | 
			
		||||
                hideClustersAboveMinzoom: json.clustering.hideClustersAboveMinZoom ?? false
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,7 +22,7 @@ export class TileHierarchyAggregator implements FeatureSource {
 | 
			
		|||
    public readonly name;
 | 
			
		||||
 | 
			
		||||
    private readonly featuresStatic = []
 | 
			
		||||
    private readonly featureProperties: { count: string, tileId: string, id: string };
 | 
			
		||||
    private readonly featureProperties: { count: string, kilocount: string, tileId: string, id: string };
 | 
			
		||||
 | 
			
		||||
    private constructor(parent: TileHierarchyAggregator, z: number, x: number, y: number) {
 | 
			
		||||
        this._parent = parent;
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +36,8 @@ export class TileHierarchyAggregator implements FeatureSource {
 | 
			
		|||
        const totals = {
 | 
			
		||||
            id: ""+this._tileIndex,
 | 
			
		||||
            tileId: ""+this._tileIndex,
 | 
			
		||||
            count: ""+0
 | 
			
		||||
            count: `0`,
 | 
			
		||||
            kilocount: "0"
 | 
			
		||||
        }
 | 
			
		||||
        this.featureProperties = totals
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -108,6 +109,7 @@ export class TileHierarchyAggregator implements FeatureSource {
 | 
			
		|||
            this.features.setData(TileHierarchyAggregator.empty)
 | 
			
		||||
        } else {
 | 
			
		||||
            this.featureProperties.count = "" + total;
 | 
			
		||||
            this.featureProperties.kilocount = "" +Math.floor(total/1000);
 | 
			
		||||
            this.features.data = this.featuresStatic
 | 
			
		||||
            this.features.ping()
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										26
									
								
								Utils.ts
									
										
									
									
									
								
							
							
						
						
									
										26
									
								
								Utils.ts
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -78,18 +78,6 @@ export class Utils {
 | 
			
		|||
        return res;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static DoEvery(millis: number, f: (() => void)) {
 | 
			
		||||
        if (Utils.runningFromConsole) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        window.setTimeout(
 | 
			
		||||
            function () {
 | 
			
		||||
                f();
 | 
			
		||||
                Utils.DoEvery(millis, f);
 | 
			
		||||
            }
 | 
			
		||||
            , millis)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static NoNull<T>(array: T[]): T[] {
 | 
			
		||||
        const ls: T[] = [];
 | 
			
		||||
        for (const t of array) {
 | 
			
		||||
| 
						 | 
				
			
			@ -440,5 +428,19 @@ export class Utils {
 | 
			
		|||
            window.setTimeout(resolve, timeMillis);
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public static toHumanTime(seconds): string{
 | 
			
		||||
        seconds = Math.floor(seconds)
 | 
			
		||||
        let minutes = Math.floor(seconds / 60)
 | 
			
		||||
        seconds = seconds % 60
 | 
			
		||||
        let hours = Math.floor(minutes / 60)
 | 
			
		||||
        minutes = minutes % 60
 | 
			
		||||
        let days = Math.floor(hours / 24)
 | 
			
		||||
        hours = hours % 24
 | 
			
		||||
        if(days > 0){
 | 
			
		||||
            return days+"days"+" "+hours+"h"
 | 
			
		||||
        }
 | 
			
		||||
            return hours+":"+Utils.TwoDigits(minutes)+":"+Utils.TwoDigits(seconds)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,8 +28,8 @@
 | 
			
		|||
        "render": "<div class='rounded-full text-xl font-bold' style='width: 2rem; height: 2rem; background: white'>{count}</div>",
 | 
			
		||||
        "mappings": [
 | 
			
		||||
            {
 | 
			
		||||
                "if": "count>99",
 | 
			
		||||
                "then": "<div class='rounded-full text-xl font-bold flex flex-col' style='width: 2.5rem; height: 2.5rem; background: white'>>99</div>"
 | 
			
		||||
                "if": "count>1000",
 | 
			
		||||
                "then": "<div class='rounded-full text-xl font-bold flex flex-col' style='width: 2.5rem; height: 2.5rem; background: white'>{kilocount}K</div>"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,10 +32,9 @@
 | 
			
		|||
  "enablePdfDownload": true,
 | 
			
		||||
  "enableDownload": true,
 | 
			
		||||
  "hideFromOverview": true,
 | 
			
		||||
  "clustering": {
 | 
			
		||||
    "#": "Disable clustering for this theme",
 | 
			
		||||
    "maxZoom": 1,
 | 
			
		||||
    "hideBoxesAboveMinZoom": true
 | 
			
		||||
  "clustering": {
 | 
			
		||||
    "maxZoom": 0
 | 
			
		||||
  },
 | 
			
		||||
  "layers": [
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			@ -110,10 +109,10 @@
 | 
			
		|||
            ]
 | 
			
		||||
          },
 | 
			
		||||
          "geoJson": "https://pietervdvn.github.io/natuurpunt_cache/natuurpunt_{layer}_{z}_{x}_{y}.geojson",
 | 
			
		||||
          "geoJsonZoomLevel": 10,
 | 
			
		||||
          "geoJsonZoomLevel": 12,
 | 
			
		||||
          "isOsmCache": true
 | 
			
		||||
        },
 | 
			
		||||
        "minzoom": "13",
 | 
			
		||||
        "minzoom": 10,
 | 
			
		||||
        "icon": {
 | 
			
		||||
          "render": "circle:#FE6F32;./assets/themes/natuurpunt/trail.svg",
 | 
			
		||||
          "mappings": [
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue