| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | import {UIElement} from "../UIElement"; | 
					
						
							|  |  |  | import State from "../../State"; | 
					
						
							| 
									
										
										
										
											2021-01-07 04:50:12 +01:00
										 |  |  | import ThemeIntroductionPanel from "./ThemeIntroductionPanel"; | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | import * as personal from "../../assets/themes/personalLayout/personalLayout.json"; | 
					
						
							|  |  |  | import PersonalLayersPanel from "./PersonalLayersPanel"; | 
					
						
							|  |  |  | import Svg from "../../Svg"; | 
					
						
							|  |  |  | import Translations from "../i18n/Translations"; | 
					
						
							|  |  |  | import ShareScreen from "./ShareScreen"; | 
					
						
							|  |  |  | import MoreScreen from "./MoreScreen"; | 
					
						
							|  |  |  | import {VariableUiElement} from "../Base/VariableUIElement"; | 
					
						
							|  |  |  | import Constants from "../../Models/Constants"; | 
					
						
							|  |  |  | import Combine from "../Base/Combine"; | 
					
						
							|  |  |  | import Locale from "../i18n/Locale"; | 
					
						
							|  |  |  | import {TabbedComponent} from "../Base/TabbedComponent"; | 
					
						
							|  |  |  | import {UIEventSource} from "../../Logic/UIEventSource"; | 
					
						
							|  |  |  | import LayoutConfig from "../../Customizations/JSON/LayoutConfig"; | 
					
						
							|  |  |  | import UserDetails from "../../Logic/Osm/OsmConnection"; | 
					
						
							| 
									
										
										
										
											2021-01-22 00:40:15 +01:00
										 |  |  | import ScrollableFullScreen from "../Base/ScrollableFullScreen"; | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default class FullWelcomePaneWithTabs extends UIElement { | 
					
						
							|  |  |  |     private readonly _layoutToUse: UIEventSource<LayoutConfig>; | 
					
						
							|  |  |  |     private readonly _userDetails: UIEventSource<UserDetails>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private readonly _component: UIElement; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-25 02:23:26 +01:00
										 |  |  |     constructor(isShown: UIEventSource<boolean>) { | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |         super(State.state.layoutToUse); | 
					
						
							|  |  |  |         this._layoutToUse = State.state.layoutToUse; | 
					
						
							|  |  |  |         this._userDetails = State.state.osmConnection.userDetails; | 
					
						
							| 
									
										
										
										
											2021-02-25 02:23:26 +01:00
										 |  |  |         const layoutToUse = this._layoutToUse.data; | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-25 02:23:26 +01:00
										 |  |  |         this._component = new ScrollableFullScreen( | 
					
						
							|  |  |  |             () => layoutToUse.title.Clone(), | 
					
						
							|  |  |  |             () => FullWelcomePaneWithTabs.GenerateContents(layoutToUse, State.state.osmConnection.userDetails), | 
					
						
							| 
									
										
										
										
											2021-03-12 14:52:34 +01:00
										 |  |  |             "welcome" ,isShown | 
					
						
							| 
									
										
										
										
											2021-02-25 02:23:26 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private static GenerateContents(layoutToUse: LayoutConfig, userDetails: UIEventSource<UserDetails>) { | 
					
						
							| 
									
										
										
										
											2021-01-07 04:50:12 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         let welcome: UIElement = new ThemeIntroductionPanel(); | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |         if (layoutToUse.id === personal.id) { | 
					
						
							|  |  |  |             welcome = new PersonalLayersPanel(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         const tabs = [ | 
					
						
							|  |  |  |             {header: `<img src='${layoutToUse.icon}'>`, content: welcome}, | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 header: Svg.osm_logo_img, | 
					
						
							| 
									
										
										
										
											2021-04-12 13:05:30 +02:00
										 |  |  |                 content: Translations.t.general.openStreetMapIntro.Clone().SetClass("link-underline") as UIElement | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |             }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (State.state.featureSwitchShareScreen.data) { | 
					
						
							|  |  |  |             tabs.push({header: Svg.share_img, content: new ShareScreen()}); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (State.state.featureSwitchMoreQuests.data) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             tabs.push({ | 
					
						
							|  |  |  |                 header: Svg.add_img, | 
					
						
							|  |  |  |                 content: new MoreScreen() | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         tabs.push({ | 
					
						
							|  |  |  |                 header: Svg.help, | 
					
						
							| 
									
										
										
										
											2021-02-25 02:23:26 +01:00
										 |  |  |                 content: new VariableUiElement(userDetails.map(userdetails => { | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |                     if (userdetails.csCount < Constants.userJourney.mapCompleteHelpUnlock) { | 
					
						
							|  |  |  |                         return "" | 
					
						
							|  |  |  |                     } | 
					
						
							| 
									
										
										
										
											2021-04-12 13:05:30 +02:00
										 |  |  |                     return new Combine([Translations.t.general.aboutMapcomplete, "<br/>Version " + Constants.vNumber]).SetClass("link-underline").Render(); | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |                 }, [Locale.language])) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-25 02:23:26 +01:00
										 |  |  |         return new TabbedComponent(tabs, State.state.welcomeMessageOpenedTab) | 
					
						
							|  |  |  |             .ListenTo(userDetails); | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     InnerRender(): string { | 
					
						
							|  |  |  |         return this._component.Render(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |