forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			70 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			70 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import LayerConfig from "../Models/ThemeConfig/LayerConfig" | ||
|  | import { Utils } from "../Utils" | ||
|  | import known_themes from "../assets/generated/known_layers.json" | ||
|  | import { LayerConfigJson } from "../Models/ThemeConfig/Json/LayerConfigJson" | ||
|  | import { ALL } from "dns" | ||
|  | import { AllKnownLayouts } from "./AllKnownLayouts" | ||
|  | export class AllSharedLayers { | ||
|  |     public static sharedLayers: Map<string, LayerConfig> = AllSharedLayers.getSharedLayers() | ||
|  |     public static getSharedLayersConfigs(): Map<string, LayerConfigJson> { | ||
|  |         const sharedLayers = new Map<string, LayerConfigJson>() | ||
|  |         for (const layer of known_themes.layers) { | ||
|  |             // @ts-ignore
 | ||
|  |             sharedLayers.set(layer.id, layer) | ||
|  |         } | ||
|  | 
 | ||
|  |         return sharedLayers | ||
|  |     } | ||
|  |     private static getSharedLayers(): Map<string, LayerConfig> { | ||
|  |         const sharedLayers = new Map<string, LayerConfig>() | ||
|  |         for (const layer of known_themes.layers) { | ||
|  |             try { | ||
|  |                 // @ts-ignore
 | ||
|  |                 const parsed = new LayerConfig(layer, "shared_layers") | ||
|  |                 sharedLayers.set(layer.id, parsed) | ||
|  |             } catch (e) { | ||
|  |                 if (!Utils.runningFromConsole) { | ||
|  |                     console.error( | ||
|  |                         "CRITICAL: Could not parse a layer configuration!", | ||
|  |                         layer.id, | ||
|  |                         " due to", | ||
|  |                         e | ||
|  |                     ) | ||
|  |                 } | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         return sharedLayers | ||
|  |     } | ||
|  | 
 | ||
|  |     public static AllPublicLayers(options?: { | ||
|  |         includeInlineLayers: true | boolean | ||
|  |     }): LayerConfig[] { | ||
|  |         const allLayers: LayerConfig[] = [] | ||
|  |         const seendIds = new Set<string>() | ||
|  |         AllSharedLayers.sharedLayers.forEach((layer, key) => { | ||
|  |             seendIds.add(key) | ||
|  |             allLayers.push(layer) | ||
|  |         }) | ||
|  |         if (options?.includeInlineLayers ?? true) { | ||
|  |             const publicLayouts = Array.from(AllKnownLayouts.allKnownLayouts.values()).filter( | ||
|  |                 (l) => !l.hideFromOverview | ||
|  |             ) | ||
|  |             for (const layout of publicLayouts) { | ||
|  |                 if (layout.hideFromOverview) { | ||
|  |                     continue | ||
|  |                 } | ||
|  |                 for (const layer of layout.layers) { | ||
|  |                     if (seendIds.has(layer.id)) { | ||
|  |                         continue | ||
|  |                     } | ||
|  |                     seendIds.add(layer.id) | ||
|  |                     allLayers.push(layer) | ||
|  |                 } | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         return allLayers | ||
|  |     } | ||
|  | } |