| 
									
										
										
										
											2021-10-20 02:01:27 +02:00
										 |  |  | import WithContextLoader from "./WithContextLoader"; | 
					
						
							|  |  |  | import TagRenderingConfig from "./TagRenderingConfig"; | 
					
						
							|  |  |  | import {Utils} from "../../Utils"; | 
					
						
							|  |  |  | import LineRenderingConfigJson from "./Json/LineRenderingConfigJson"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default class LineRenderingConfig extends WithContextLoader { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  |     public readonly color: TagRenderingConfig; | 
					
						
							|  |  |  |     public readonly width: TagRenderingConfig; | 
					
						
							|  |  |  |     public readonly dashArray: TagRenderingConfig; | 
					
						
							| 
									
										
										
										
											2021-11-08 14:18:45 +01:00
										 |  |  |     public readonly lineCap: TagRenderingConfig; | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  |     public readonly offset: TagRenderingConfig; | 
					
						
							| 
									
										
										
										
											2021-11-08 14:18:45 +01:00
										 |  |  |     public readonly fill: TagRenderingConfig; | 
					
						
							|  |  |  |     public readonly fillColor: TagRenderingConfig; | 
					
						
							| 
									
										
										
										
											2021-10-22 01:42:44 +02:00
										 |  |  |     public readonly leftRightSensitive: boolean | 
					
						
							| 
									
										
										
										
											2021-10-28 03:15:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-20 02:01:27 +02:00
										 |  |  |     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", ""); | 
					
						
							| 
									
										
										
										
											2021-11-08 14:18:45 +01:00
										 |  |  |         this.lineCap = this.tr("lineCap", "round"); | 
					
						
							| 
									
										
										
										
											2021-11-08 19:46:43 +01:00
										 |  |  |         this.fill = this.tr("fill", undefined); | 
					
						
							|  |  |  |         this.fillColor = this.tr("fillColor", undefined); | 
					
						
							| 
									
										
										
										
											2021-10-28 03:15:36 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         this.leftRightSensitive = json.offset !== undefined && json.offset !== 0 && json.offset !== "0" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  |         this.offset = this.tr("offset", "0"); | 
					
						
							| 
									
										
										
										
											2021-10-20 02:01:27 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-28 03:15:36 +02:00
										 |  |  |     public GenerateLeafletStyle(tags: {}): | 
					
						
							| 
									
										
										
										
											2021-11-08 19:46:43 +01:00
										 |  |  |         { fillColor?: string; color: string; lineCap: string; offset: number; weight: number; dashArray: string; fill?: boolean } { | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  |         function rendernum(tr: TagRenderingConfig, deflt: number) { | 
					
						
							|  |  |  |             const str = Number(render(tr, "" + deflt)); | 
					
						
							|  |  |  |             const n = Number(str); | 
					
						
							|  |  |  |             if (isNaN(n)) { | 
					
						
							|  |  |  |                 return deflt; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             return n; | 
					
						
							| 
									
										
										
										
											2021-10-20 02:01:27 +02:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  |         function render(tr: TagRenderingConfig, deflt?: string) { | 
					
						
							|  |  |  |             if (tags === undefined) { | 
					
						
							|  |  |  |                 return deflt | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  |             if (tr === undefined) { | 
					
						
							|  |  |  |                 return deflt | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2021-10-22 02:16:07 +02:00
										 |  |  |             const str = tr?.GetRenderValue(tags)?.txt ?? deflt; | 
					
						
							| 
									
										
										
										
											2021-11-08 19:46:43 +01:00
										 |  |  |             if (str === "") { | 
					
						
							|  |  |  |                 return deflt | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2021-10-22 02:16:07 +02:00
										 |  |  |             return Utils.SubstituteKeys(str, tags)?.replace(/{.*}/g, ""); | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-10-20 02:01:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-28 01:26:35 +02:00
										 |  |  |         const dashArray = render(this.dashArray); | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  |         let color = render(this.color, "#00f"); | 
					
						
							|  |  |  |         if (color.startsWith("--")) { | 
					
						
							|  |  |  |             color = getComputedStyle(document.body).getPropertyValue( | 
					
						
							|  |  |  |                 "--catch-detail-color" | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-08 19:46:43 +01:00
										 |  |  |         const style = { | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  |             color, | 
					
						
							|  |  |  |             dashArray, | 
					
						
							| 
									
										
										
										
											2021-11-08 14:18:45 +01:00
										 |  |  |             weight: rendernum(this.width, 5), | 
					
						
							|  |  |  |             lineCap: render(this.lineCap), | 
					
						
							| 
									
										
										
										
											2021-11-08 19:46:43 +01:00
										 |  |  |             offset: rendernum(this.offset, 0) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const fillStr = render(this.fill, undefined) | 
					
						
							|  |  |  |         let fill: boolean = undefined; | 
					
						
							|  |  |  |         if (fillStr !== undefined && fillStr !== "") { | 
					
						
							|  |  |  |             style["fill"] = fillStr === "yes" || fillStr === "true" | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-08 19:46:43 +01:00
										 |  |  |         const fillColorStr = render(this.fillColor, undefined) | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  |         if (fillColorStr !== undefined) { | 
					
						
							| 
									
										
										
										
											2021-11-08 19:46:43 +01:00
										 |  |  |             style["fillColor"] = fillColorStr | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-11-08 19:46:43 +01:00
										 |  |  |         return style | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-20 02:01:27 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-20 02:01:27 +02:00
										 |  |  | } |