forked from MapComplete/MapComplete
55 lines
2.2 KiB
TypeScript
55 lines
2.2 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")
|
|
}
|
|
}
|