forked from MapComplete/MapComplete
Refactoring: move all code files into a src directory
This commit is contained in:
parent
de99f56ca8
commit
e75d2789d2
389 changed files with 0 additions and 12 deletions
91
src/Models/ThemeConfig/LineRenderingConfig.ts
Normal file
91
src/Models/ThemeConfig/LineRenderingConfig.ts
Normal file
|
@ -0,0 +1,91 @@
|
|||
import WithContextLoader from "./WithContextLoader"
|
||||
import TagRenderingConfig from "./TagRenderingConfig"
|
||||
import { Utils } from "../../Utils"
|
||||
import LineRenderingConfigJson from "./Json/LineRenderingConfigJson"
|
||||
|
||||
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
|
||||
|
||||
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)
|
||||
|
||||
if (typeof json.offset === "string") {
|
||||
json.offset = parseFloat(json.offset)
|
||||
}
|
||||
|
||||
this.leftRightSensitive = json.offset !== undefined && json.offset !== 0
|
||||
|
||||
this.offset = this.tr("offset", "0")
|
||||
}
|
||||
|
||||
public GenerateLeafletStyle(tags: {}): {
|
||||
fillColor?: string
|
||||
color: string
|
||||
lineCap: string
|
||||
offset: number
|
||||
weight: number
|
||||
dashArray: string
|
||||
fill?: boolean
|
||||
} {
|
||||
function rendernum(tr: TagRenderingConfig, deflt: number) {
|
||||
const str = Number(render(tr, "" + deflt))
|
||||
const n = Number(str)
|
||||
if (isNaN(n)) {
|
||||
return deflt
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
function render(tr: TagRenderingConfig, deflt?: string) {
|
||||
if (tags === undefined) {
|
||||
return deflt
|
||||
}
|
||||
if (tr === undefined) {
|
||||
return deflt
|
||||
}
|
||||
const str = tr?.GetRenderValue(tags)?.txt ?? deflt
|
||||
if (str === "") {
|
||||
return deflt
|
||||
}
|
||||
return Utils.SubstituteKeys(str, tags)?.replace(/{.*}/g, "")
|
||||
}
|
||||
|
||||
const dashArray = render(this.dashArray)
|
||||
let color = render(this.color, "#00f")
|
||||
if (color.startsWith("--")) {
|
||||
color = getComputedStyle(document.body).getPropertyValue("--catch-detail-color")
|
||||
}
|
||||
|
||||
const style = {
|
||||
color,
|
||||
dashArray,
|
||||
weight: rendernum(this.width, 5),
|
||||
lineCap: render(this.lineCap),
|
||||
offset: rendernum(this.offset, 0),
|
||||
}
|
||||
|
||||
const fillStr = render(this.fill, undefined)
|
||||
if (fillStr !== undefined && fillStr !== "") {
|
||||
style["fill"] = fillStr === "yes" || fillStr === "true"
|
||||
}
|
||||
|
||||
const fillColorStr = render(this.fillColor, undefined)
|
||||
if (fillColorStr !== undefined) {
|
||||
style["fillColor"] = fillColorStr
|
||||
}
|
||||
return style
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue