| 
									
										
										
										
											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; | 
					
						
							|  |  |  |     public readonly offset: 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-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-10-20 02:01:27 +02:00
										 |  |  |         { | 
					
						
							|  |  |  |             color: string, | 
					
						
							|  |  |  |             weight: number, | 
					
						
							| 
									
										
										
										
											2021-10-28 01:26:35 +02:00
										 |  |  |             dashArray: string, | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  |             offset: number | 
					
						
							|  |  |  |         } { | 
					
						
							|  |  |  |         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 | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2021-10-22 02:16:07 +02:00
										 |  |  |             const str = tr?.GetRenderValue(tags)?.txt ?? deflt; | 
					
						
							|  |  |  |             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" | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-10-20 02:01:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  |         const weight = rendernum(this.width, 5); | 
					
						
							|  |  |  |         const offset = rendernum(this.offset, 0) | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             color, | 
					
						
							|  |  |  |             weight, | 
					
						
							|  |  |  |             dashArray, | 
					
						
							|  |  |  |             offset | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-10-20 02:01:27 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-10-22 01:07:32 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-20 02:01:27 +02:00
										 |  |  | } |