forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import TilesourceConfigJson from "./Json/TilesourceConfigJson"
 | |
| import Translations from "../../UI/i18n/Translations"
 | |
| import { Translation } from "../../UI/i18n/Translation"
 | |
| 
 | |
| export default class TilesourceConfig {
 | |
|     public readonly source: string
 | |
|     public readonly id: string
 | |
|     public readonly isOverlay: boolean
 | |
|     public readonly name: Translation
 | |
|     public readonly minzoom: number
 | |
|     public readonly maxzoom: number
 | |
|     public readonly defaultState: boolean
 | |
| 
 | |
|     constructor(config: TilesourceConfigJson, ctx: string = "") {
 | |
|         this.id = config.id
 | |
|         this.source = config.source
 | |
|         this.isOverlay = config.isOverlay ?? false
 | |
|         this.name = Translations.T(config.name)
 | |
|         this.minzoom = config.minZoom ?? 0
 | |
|         this.maxzoom = config.maxZoom ?? 999
 | |
|         this.defaultState = config.defaultState ?? true
 | |
|         if (this.id === undefined) {
 | |
|             throw "An id is obligated"
 | |
|         }
 | |
|         if (this.minzoom > this.maxzoom) {
 | |
|             throw (
 | |
|                 "Invalid tilesourceConfig: minzoom should be smaller then maxzoom (at " + ctx + ")"
 | |
|             )
 | |
|         }
 | |
|         if (this.minzoom < 0) {
 | |
|             throw "minzoom should be > 0 (at " + ctx + ")"
 | |
|         }
 | |
|         if (this.maxzoom < 0) {
 | |
|             throw "maxzoom should be > 0 (at " + ctx + ")"
 | |
|         }
 | |
|         if (this.source.indexOf("{zoom}") >= 0) {
 | |
|             throw "Invalid source url: use {z} instead of {zoom}  (at " + ctx + ".source)"
 | |
|         }
 | |
|         if (!this.defaultState && config.name === undefined) {
 | |
|             throw "Disabling an overlay without a name is not possible"
 | |
|         }
 | |
|     }
 | |
| }
 |