forked from MapComplete/MapComplete
		
	Add assets for entrances, add first dependency injection
This commit is contained in:
		
						commit
						8e40d76281
					
				
					 13 changed files with 1735 additions and 48 deletions
				
			
		|  | @ -1,7 +1,7 @@ | |||
| import {Translation} from "../../UI/i18n/Translation"; | ||||
| import SourceConfig from "./SourceConfig"; | ||||
| import TagRenderingConfig from "./TagRenderingConfig"; | ||||
| import PresetConfig from "./PresetConfig"; | ||||
| import PresetConfig, {PreciseInput} from "./PresetConfig"; | ||||
| import {LayerConfigJson} from "./Json/LayerConfigJson"; | ||||
| import Translations from "../../UI/i18n/Translations"; | ||||
| import {TagUtils} from "../../Logic/Tags/TagUtils"; | ||||
|  | @ -26,19 +26,19 @@ import * as icons from "../../assets/tagRenderings/icons.json" | |||
| 
 | ||||
| export default class LayerConfig extends WithContextLoader { | ||||
| 
 | ||||
|     id: string; | ||||
|     name: Translation; | ||||
|     description: Translation; | ||||
|     source: SourceConfig; | ||||
|     calculatedTags: [string, string][]; | ||||
|     doNotDownload: boolean; | ||||
|     passAllFeatures: boolean; | ||||
|     isShown: TagRenderingConfig; | ||||
|     minzoom: number; | ||||
|     minzoomVisible: number; | ||||
|     maxzoom: number; | ||||
|     title?: TagRenderingConfig; | ||||
|     titleIcons: TagRenderingConfig[]; | ||||
|     public readonly id: string; | ||||
|     public readonly name: Translation; | ||||
|     public readonly description: Translation; | ||||
|     public readonly source: SourceConfig; | ||||
|     public readonly calculatedTags: [string, string][]; | ||||
|     public readonly doNotDownload: boolean; | ||||
|     public readonly  passAllFeatures: boolean; | ||||
|     public readonly isShown: TagRenderingConfig; | ||||
|     public readonly  minzoom: number; | ||||
|     public readonly  minzoomVisible: number; | ||||
|     public readonly  maxzoom: number; | ||||
|     public readonly title?: TagRenderingConfig; | ||||
|     public readonly titleIcons: TagRenderingConfig[]; | ||||
| 
 | ||||
|     public readonly mapRendering: PointRenderingConfig[] | ||||
|     public readonly lineRendering: LineRenderingConfig[] | ||||
|  | @ -53,10 +53,10 @@ export default class LayerConfig extends WithContextLoader { | |||
|      */ | ||||
|     public readonly maxAgeOfCache: number | ||||
| 
 | ||||
|     presets: PresetConfig[]; | ||||
|     public readonly presets: PresetConfig[]; | ||||
| 
 | ||||
|     tagRenderings: TagRenderingConfig[]; | ||||
|     filters: FilterConfig[]; | ||||
|     public readonly tagRenderings: TagRenderingConfig[]; | ||||
|     public readonly filters: FilterConfig[]; | ||||
| 
 | ||||
|     constructor( | ||||
|         json: LayerConfigJson, | ||||
|  | @ -153,8 +153,7 @@ export default class LayerConfig extends WithContextLoader { | |||
|             throw "Presets should be a list of items (at " + context + ")" | ||||
|         } | ||||
|         this.presets = (json.presets ?? []).map((pr, i) => { | ||||
| 
 | ||||
|             let preciseInput: any = { | ||||
|             let preciseInput: PreciseInput = { | ||||
|                 preferredBackground: ["photo"], | ||||
|                 snapToLayers: undefined, | ||||
|                 maxSnapDistance: undefined | ||||
|  | @ -165,6 +164,7 @@ export default class LayerConfig extends WithContextLoader { | |||
|                         preferredBackground: undefined | ||||
|                     } | ||||
|                 } | ||||
|                  | ||||
|                 let snapToLayers: string[]; | ||||
|                 if (typeof pr.preciseInput.snapToLayer === "string") { | ||||
|                     snapToLayers = [pr.preciseInput.snapToLayer] | ||||
|  | @ -180,7 +180,7 @@ export default class LayerConfig extends WithContextLoader { | |||
|                 } | ||||
|                 preciseInput = { | ||||
|                     preferredBackground: preferredBackground, | ||||
|                     snapToLayers: snapToLayers, | ||||
|                     snapToLayers, | ||||
|                     maxSnapDistance: pr.preciseInput.maxSnapDistance ?? 10 | ||||
|                 } | ||||
|             } | ||||
|  | @ -441,6 +441,10 @@ export default class LayerConfig extends WithContextLoader { | |||
|             ] | ||||
|         } | ||||
| 
 | ||||
|         for (const dep of Array.from(this.getDependencies())) { | ||||
|             extraProps.push(new Combine(["This layer will automatically load ", new Link(dep, "#"+dep)," into the layout as it depends on it."])) | ||||
|         } | ||||
| 
 | ||||
|         return new Combine([ | ||||
|             new Title(this.id, 3), | ||||
|             this.description, | ||||
|  | @ -480,4 +484,23 @@ export default class LayerConfig extends WithContextLoader { | |||
|     public isLeftRightSensitive(): boolean { | ||||
|         return this.lineRendering.some(lr => lr.leftRightSensitive) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns a set of all other layer-ids that this layer needs to function. | ||||
|      * E.g. if this layers does snap to another layer in the preset, this other layer id will be mentioned | ||||
|      */ | ||||
|     public getDependencies(): Set<string>{ | ||||
|         const deps = new Set<string>() | ||||
| 
 | ||||
|         for (const preset of this.presets ?? []) { | ||||
|             if(preset.preciseInput?.snapToLayers === undefined){ | ||||
|                 continue | ||||
|             } | ||||
|             preset.preciseInput?.snapToLayers?.forEach(id => { | ||||
|                 deps.add(id); | ||||
|             }) | ||||
|         } | ||||
|          | ||||
|         return deps | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue