| 
									
										
										
										
											2020-10-14 12:15:09 +02:00
										 |  |  | import {UIElement} from "../UIElement"; | 
					
						
							|  |  |  | import {UIEventSource} from "../../Logic/UIEventSource"; | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  | import LayerConfig from "../../Customizations/JSON/LayerConfig"; | 
					
						
							|  |  |  | import EditableTagRendering from "./EditableTagRendering"; | 
					
						
							|  |  |  | import QuestionBox from "./QuestionBox"; | 
					
						
							|  |  |  | import Combine from "../Base/Combine"; | 
					
						
							|  |  |  | import TagRenderingAnswer from "./TagRenderingAnswer"; | 
					
						
							| 
									
										
										
										
											2020-11-12 12:18:02 +01:00
										 |  |  | import State from "../../State"; | 
					
						
							| 
									
										
										
										
											2020-11-24 11:10:43 +01:00
										 |  |  | import {FixedUiElement} from "../Base/FixedUiElement"; | 
					
						
							| 
									
										
										
										
											2020-06-27 03:06:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export class FeatureInfoBox extends UIElement { | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  |     private _tags: UIEventSource<any>; | 
					
						
							|  |  |  |     private _layerConfig: LayerConfig; | 
					
						
							| 
									
										
										
										
											2020-06-27 03:06:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  |     private _title : UIElement; | 
					
						
							|  |  |  |     private _titleIcons: UIElement; | 
					
						
							|  |  |  |     private _renderings: UIElement[]; | 
					
						
							|  |  |  |     private _questionBox : UIElement; | 
					
						
							| 
									
										
										
										
											2020-07-22 00:18:07 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-27 03:06:51 +02:00
										 |  |  |     constructor( | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  |         tags: UIEventSource<any>, | 
					
						
							|  |  |  |         layerConfig: LayerConfig | 
					
						
							| 
									
										
										
										
											2020-06-27 03:06:51 +02:00
										 |  |  |     ) { | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  |         super(); | 
					
						
							| 
									
										
										
										
											2020-11-17 16:29:51 +01:00
										 |  |  |         if (layerConfig === undefined) { | 
					
						
							| 
									
										
										
										
											2020-11-02 18:59:21 +01:00
										 |  |  |             throw "Undefined layerconfig" | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  |         this._tags = tags; | 
					
						
							|  |  |  |         this._layerConfig = layerConfig; | 
					
						
							| 
									
										
										
										
											2020-06-27 03:06:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-13 00:53:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-17 02:22:48 +01:00
										 |  |  |         this._title = layerConfig.title === undefined ? undefined : | 
					
						
							|  |  |  |             new TagRenderingAnswer(tags, layerConfig.title) | 
					
						
							| 
									
										
										
										
											2020-11-17 16:29:51 +01:00
										 |  |  |                 .SetClass("featureinfobox-title"); | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  |         this._titleIcons = new Combine( | 
					
						
							|  |  |  |             layerConfig.titleIcons.map(icon => new TagRenderingAnswer(tags, icon))) | 
					
						
							|  |  |  |             .SetClass("featureinfobox-icons"); | 
					
						
							| 
									
										
										
										
											2020-12-08 23:44:34 +01:00
										 |  |  |          | 
					
						
							|  |  |  |         let questionBox : UIElement = undefined; | 
					
						
							| 
									
										
										
										
											2020-11-12 12:21:34 +01:00
										 |  |  |         if (State.state.featureSwitchUserbadge.data) { | 
					
						
							| 
									
										
										
										
											2020-12-08 23:44:34 +01:00
										 |  |  |             questionBox = new QuestionBox(tags, layerConfig.tagRenderings); | 
					
						
							| 
									
										
										
										
											2020-11-12 12:21:34 +01:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-12-08 23:44:34 +01:00
										 |  |  |          | 
					
						
							|  |  |  |         let questionBoxIsUsed = false; | 
					
						
							|  |  |  |         this._renderings = layerConfig.tagRenderings.map(tr => { | 
					
						
							|  |  |  |             if(tr.question === null){ | 
					
						
							|  |  |  |                 questionBoxIsUsed = true; | 
					
						
							|  |  |  |                 // This is the question box!
 | 
					
						
							|  |  |  |                 return questionBox; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             return new EditableTagRendering(tags, tr); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |         this._renderings[0]?.SetClass("first-rendering"); | 
					
						
							|  |  |  |        if(!questionBoxIsUsed){ | 
					
						
							|  |  |  |            this._renderings.push(questionBox); | 
					
						
							|  |  |  |        } | 
					
						
							| 
									
										
										
										
											2020-06-27 03:06:51 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     InnerRender(): string { | 
					
						
							| 
									
										
										
										
											2020-09-13 00:53:24 +02:00
										 |  |  |         return new Combine([ | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  |             new Combine([this._title, this._titleIcons]) | 
					
						
							|  |  |  |                 .SetClass("featureinfobox-titlebar"), | 
					
						
							| 
									
										
										
										
											2020-11-20 14:00:37 +01:00
										 |  |  |             new Combine([ | 
					
						
							|  |  |  |                     ...this._renderings, | 
					
						
							| 
									
										
										
										
											2020-11-24 11:10:43 +01:00
										 |  |  |                     this._questionBox, | 
					
						
							|  |  |  |                     new FixedUiElement("").SetClass("featureinfobox-tail") | 
					
						
							| 
									
										
										
										
											2020-11-20 14:00:37 +01:00
										 |  |  |                 ] | 
					
						
							|  |  |  |             ).SetClass("featureinfobox-content"), | 
					
						
							|  |  |  |         ]).SetClass("featureinfobox") | 
					
						
							|  |  |  |             .Render(); | 
					
						
							| 
									
										
										
										
											2020-06-27 03:06:51 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-07-20 15:54:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-23 02:55:18 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-27 03:06:51 +02:00
										 |  |  | } |