| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  | import { UIEventSource } from "../../Logic/UIEventSource" | 
					
						
							| 
									
										
										
										
											2021-01-06 01:11:07 +01:00
										 |  |  | import { Utils } from "../../Utils" | 
					
						
							| 
									
										
										
										
											2021-06-11 22:51:45 +02:00
										 |  |  | import BaseUIElement from "../BaseUIElement" | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  | import { VariableUiElement } from "../Base/VariableUIElement" | 
					
						
							| 
									
										
										
										
											2021-06-14 17:28:11 +02:00
										 |  |  | import { SubstitutedTranslation } from "../SubstitutedTranslation" | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  | import TagRenderingConfig from "../../Models/ThemeConfig/TagRenderingConfig" | 
					
						
							| 
									
										
										
										
											2022-01-29 02:45:59 +01:00
										 |  |  | import Combine from "../Base/Combine" | 
					
						
							|  |  |  | import Img from "../Base/Img" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  | import { SpecialVisualizationState } from "../SpecialVisualization" | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*** | 
					
						
							|  |  |  |  * Displays the correct value for a known tagrendering | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  | export default class TagRenderingAnswer extends VariableUiElement { | 
					
						
							| 
									
										
										
										
											2021-11-10 08:51:24 +01:00
										 |  |  |     constructor( | 
					
						
							|  |  |  |         tagsSource: UIEventSource<any>, | 
					
						
							|  |  |  |         configuration: TagRenderingConfig, | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  |         state: SpecialVisualizationState, | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  |         contentClasses: string = "", | 
					
						
							|  |  |  |         contentStyle: string = "", | 
					
						
							|  |  |  |         options?: { | 
					
						
							|  |  |  |             specialViz: Map<string, BaseUIElement> | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     ) { | 
					
						
							| 
									
										
										
										
											2021-01-06 01:11:07 +01:00
										 |  |  |         if (configuration === undefined) { | 
					
						
							| 
									
										
										
										
											2020-11-17 02:22:48 +01:00
										 |  |  |             throw "Trying to generate a tagRenderingAnswer without configuration..." | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-03-28 05:13:48 +02:00
										 |  |  |         UIEventSource | 
					
						
							| 
									
										
										
										
											2021-11-08 14:18:45 +01:00
										 |  |  |         if (tagsSource === undefined) { | 
					
						
							|  |  |  |             throw "Trying to generate a tagRenderingAnswer without tagSource..." | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         super( | 
					
						
							|  |  |  |             tagsSource | 
					
						
							|  |  |  |                 .map((tags) => { | 
					
						
							| 
									
										
										
										
											2021-07-16 02:13:41 +02:00
										 |  |  |                     if (tags === undefined) { | 
					
						
							| 
									
										
										
										
											2021-01-06 01:11:07 +01:00
										 |  |  |                         return undefined | 
					
						
							| 
									
										
										
										
											2021-03-13 17:25:44 +01:00
										 |  |  |                     } | 
					
						
							| 
									
										
										
										
											2021-07-16 02:13:41 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |                     if (configuration.condition) { | 
					
						
							|  |  |  |                         if (!configuration.condition.matchesProperties(tags)) { | 
					
						
							| 
									
										
										
										
											2021-06-15 01:24:04 +02:00
										 |  |  |                             return undefined | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                     } | 
					
						
							| 
									
										
										
										
											2021-07-16 02:13:41 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |                     const trs = Utils.NoNull(configuration.GetRenderValues(tags)) | 
					
						
							| 
									
										
										
										
											2021-07-16 02:13:41 +02:00
										 |  |  |                     if (trs.length === 0) { | 
					
						
							|  |  |  |                         return undefined | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-29 02:45:59 +01:00
										 |  |  |                     const valuesToRender: BaseUIElement[] = trs.map((tr) => { | 
					
						
							|  |  |  |                         const text = new SubstitutedTranslation( | 
					
						
							|  |  |  |                             tr.then, | 
					
						
							|  |  |  |                             tagsSource, | 
					
						
							|  |  |  |                             state, | 
					
						
							|  |  |  |                             options?.specialViz | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                         ) | 
					
						
							| 
									
										
										
										
											2022-01-29 02:45:59 +01:00
										 |  |  |                         if (tr.icon === undefined) { | 
					
						
							|  |  |  |                             return text | 
					
						
							|  |  |  |                         } | 
					
						
							| 
									
										
										
										
											2022-02-17 23:54:14 +01:00
										 |  |  |                         return new Combine([ | 
					
						
							|  |  |  |                             new Img(tr.icon).SetClass("mapping-icon-" + (tr.iconClass ?? "small")), | 
					
						
							|  |  |  |                             text, | 
					
						
							|  |  |  |                         ]).SetClass("flex items-center") | 
					
						
							| 
									
										
										
										
											2022-01-29 02:45:59 +01:00
										 |  |  |                     }) | 
					
						
							| 
									
										
										
										
											2021-07-16 02:13:41 +02:00
										 |  |  |                     if (valuesToRender.length === 1) { | 
					
						
							|  |  |  |                         return valuesToRender[0] | 
					
						
							|  |  |  |                     } else if (valuesToRender.length > 1) { | 
					
						
							| 
									
										
										
										
											2022-01-29 02:45:59 +01:00
										 |  |  |                         return new Combine(valuesToRender).SetClass("flex flex-col") | 
					
						
							| 
									
										
										
										
											2021-01-06 01:11:07 +01:00
										 |  |  |                     } | 
					
						
							| 
									
										
										
										
											2021-07-16 02:13:41 +02:00
										 |  |  |                     return undefined | 
					
						
							|  |  |  |                 }) | 
					
						
							|  |  |  |                 .map((element: BaseUIElement) => | 
					
						
							|  |  |  |                     element?.SetClass(contentClasses)?.SetStyle(contentStyle) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 ) | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-01-06 01:11:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-16 02:13:41 +02:00
										 |  |  |         this.SetClass("flex items-center flex-row text-lg link-underline") | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         this.SetStyle("word-wrap: anywhere;") | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | } |