forked from MapComplete/MapComplete
		
	Fix: enable external data sources from the ELI
This commit is contained in:
		
							parent
							
								
									394bad545d
								
							
						
					
					
						commit
						5ea08040d7
					
				
					 1 changed files with 26 additions and 2 deletions
				
			
		|  | @ -10,10 +10,11 @@ import ScriptUtils from "./ScriptUtils" | ||||||
| import { Utils } from "../src/Utils" | import { Utils } from "../src/Utils" | ||||||
| import SpecialVisualizations from "../src/UI/SpecialVisualizations" | import SpecialVisualizations from "../src/UI/SpecialVisualizations" | ||||||
| import Constants from "../src/Models/Constants" | import Constants from "../src/Models/Constants" | ||||||
| import { AvailableRasterLayers, RasterLayerPolygon } from "../src/Models/RasterLayers" | import { AvailableRasterLayers, EditorLayerIndexProperties, RasterLayerPolygon } from "../src/Models/RasterLayers"; | ||||||
| import { ImmutableStore } from "../src/Logic/UIEventSource" | import { ImmutableStore } from "../src/Logic/UIEventSource" | ||||||
| import * as crypto from "crypto" | import * as crypto from "crypto" | ||||||
| 
 | import * as eli from "../src/assets/editor-layer-index.json" | ||||||
|  | import dom from "svelte/types/compiler/compile/render_dom"; | ||||||
| const sharp = require("sharp") | const sharp = require("sharp") | ||||||
| const template = readFileSync("theme.html", "utf8") | const template = readFileSync("theme.html", "utf8") | ||||||
| const codeTemplate = readFileSync("src/index_theme.ts.template", "utf8") | const codeTemplate = readFileSync("src/index_theme.ts.template", "utf8") | ||||||
|  | @ -207,6 +208,28 @@ function asLangSpan(t: Translation, tag = "span"): string { | ||||||
| 
 | 
 | ||||||
| let previousSrc: Set<string> = new Set<string>() | let previousSrc: Set<string> = new Set<string>() | ||||||
| 
 | 
 | ||||||
|  | let eliUrlsCached : string[] | ||||||
|  | function eliUrls(): string[]{ | ||||||
|  |     if(eliUrlsCached){ | ||||||
|  |         return eliUrlsCached | ||||||
|  |     } | ||||||
|  |     const urls: string[] = [] | ||||||
|  |     const regex =/{switch:([^}]+)}/ | ||||||
|  |     for (const feature of eli.features) { | ||||||
|  |         const url = (<RasterLayerPolygon> feature).properties.url | ||||||
|  |         const match = url.match(regex) | ||||||
|  |         if(match){ | ||||||
|  |             const domains = match[1].split(",") | ||||||
|  |             const subpart = match[0] | ||||||
|  |             urls.push(...domains.map(d => url.replace(subpart, d))) | ||||||
|  |         }else{ | ||||||
|  |             urls.push(url) | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     eliUrlsCached = urls | ||||||
|  |     return urls | ||||||
|  | } | ||||||
|  | 
 | ||||||
| function generateCsp( | function generateCsp( | ||||||
|     layout: LayoutConfig, |     layout: LayoutConfig, | ||||||
|     options: { |     options: { | ||||||
|  | @ -221,6 +244,7 @@ function generateCsp( | ||||||
|         "https://api.openstreetmap.org", |         "https://api.openstreetmap.org", | ||||||
|         "https://pietervdvn.goatcounter.com", |         "https://pietervdvn.goatcounter.com", | ||||||
|     ].concat(...SpecialVisualizations.specialVisualizations.map((sv) => sv.needsUrls)) |     ].concat(...SpecialVisualizations.specialVisualizations.map((sv) => sv.needsUrls)) | ||||||
|  |         .concat(...eliUrls()) | ||||||
| 
 | 
 | ||||||
|     const geojsonSources: string[] = layout.layers.map((l) => l.source?.geojsonSource) |     const geojsonSources: string[] = layout.layers.map((l) => l.source?.geojsonSource) | ||||||
|     const hosts = new Set<string>() |     const hosts = new Set<string>() | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue