forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import WithContextLoader from "./WithContextLoader"
 | |
| import TagRenderingConfig from "./TagRenderingConfig"
 | |
| import LineRenderingConfigJson from "./Json/LineRenderingConfigJson"
 | |
| import { TagUtils } from "../../Logic/Tags/TagUtils"
 | |
| import { TagsFilter } from "../../Logic/Tags/TagsFilter"
 | |
| 
 | |
| export default class LineRenderingConfig extends WithContextLoader {
 | |
|     public readonly color: TagRenderingConfig
 | |
|     public readonly width: TagRenderingConfig
 | |
|     public readonly dashArray: TagRenderingConfig
 | |
|     public readonly lineCap: TagRenderingConfig
 | |
|     public readonly offset: TagRenderingConfig
 | |
|     public readonly fill: TagRenderingConfig
 | |
|     public readonly fillColor: TagRenderingConfig
 | |
|     public readonly leftRightSensitive: boolean
 | |
|     public readonly imageAlongWay: { if?: TagsFilter, then: string }[]
 | |
| 
 | |
|     constructor(json: LineRenderingConfigJson, context: string) {
 | |
|         super(json, context)
 | |
|         this.color = this.tr("color", "#0000ff")
 | |
|         this.width = this.tr("width", "7")
 | |
|         this.dashArray = this.tr("dashArray", "")
 | |
|         this.lineCap = this.tr("lineCap", "round")
 | |
|         this.fill = this.tr("fill", undefined)
 | |
|         this.fillColor = this.tr("fillColor", undefined)
 | |
|         this.imageAlongWay = []
 | |
|         if (json.imageAlongWay) {
 | |
|             if (typeof json.imageAlongWay === "string") {
 | |
|                 this.imageAlongWay.push({
 | |
|                     then: json.imageAlongWay,
 | |
|                 })
 | |
|             } else {
 | |
|                 for (let i = 0; i < json.imageAlongWay.length; i++) {
 | |
|                     const imgAlong = json.imageAlongWay[i]
 | |
|                     const ctx = context + ".imageAlongWay[" + i + "]"
 | |
|                     if(!imgAlong.then.endsWith(".png")){
 | |
|                         throw "An imageAlongWay should always be a PNG image"
 | |
|                     }
 | |
|                     this.imageAlongWay.push(
 | |
|                         {
 | |
|                             if: TagUtils.Tag(imgAlong.if, ctx),
 | |
|                             then: imgAlong.then,
 | |
|                         },
 | |
|                     )
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         if (typeof json.offset === "string") {
 | |
|             json.offset = parseFloat(json.offset)
 | |
|         }
 | |
| 
 | |
|         this.leftRightSensitive = json.offset !== undefined && json.offset !== 0
 | |
| 
 | |
|         this.offset = this.tr("offset", "0")
 | |
|     }
 | |
| }
 |