| 
									
										
										
										
											2021-01-07 04:50:12 +01:00
										 |  |  | import ThemeIntroductionPanel from "./ThemeIntroductionPanel"; | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | import Svg from "../../Svg"; | 
					
						
							|  |  |  | import Translations from "../i18n/Translations"; | 
					
						
							|  |  |  | import ShareScreen from "./ShareScreen"; | 
					
						
							|  |  |  | import MoreScreen from "./MoreScreen"; | 
					
						
							|  |  |  | import Constants from "../../Models/Constants"; | 
					
						
							|  |  |  | import Combine from "../Base/Combine"; | 
					
						
							|  |  |  | import {TabbedComponent} from "../Base/TabbedComponent"; | 
					
						
							|  |  |  | import {UIEventSource} from "../../Logic/UIEventSource"; | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  | import UserDetails, {OsmConnection} from "../../Logic/Osm/OsmConnection"; | 
					
						
							| 
									
										
										
										
											2021-01-22 00:40:15 +01:00
										 |  |  | import ScrollableFullScreen from "../Base/ScrollableFullScreen"; | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  | import BaseUIElement from "../BaseUIElement"; | 
					
						
							| 
									
										
										
										
											2021-06-13 15:04:55 +02:00
										 |  |  | import Toggle from "../Input/Toggle"; | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  | import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"; | 
					
						
							| 
									
										
										
										
											2021-09-21 02:10:42 +02:00
										 |  |  | import {Utils} from "../../Utils"; | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  | import UserRelatedState from "../../Logic/State/UserRelatedState"; | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  | export default class FullWelcomePaneWithTabs extends ScrollableFullScreen { | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |     constructor(isShown: UIEventSource<boolean>, | 
					
						
							|  |  |  |                 currentTab: UIEventSource<number>, | 
					
						
							|  |  |  |                 state: { | 
					
						
							|  |  |  |                     layoutToUse: LayoutConfig, | 
					
						
							|  |  |  |                     osmConnection: OsmConnection, | 
					
						
							|  |  |  |                     featureSwitchShareScreen: UIEventSource<boolean>, | 
					
						
							|  |  |  |                     featureSwitchMoreQuests: UIEventSource<boolean> | 
					
						
							|  |  |  |                 } & UserRelatedState) { | 
					
						
							|  |  |  |         const layoutToUse = state.layoutToUse; | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  |         super( | 
					
						
							| 
									
										
										
										
											2021-02-25 02:23:26 +01:00
										 |  |  |             () => layoutToUse.title.Clone(), | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |             () => FullWelcomePaneWithTabs.GenerateContents(state, currentTab, isShown), | 
					
						
							|  |  |  |             undefined, isShown | 
					
						
							| 
									
										
										
										
											2021-02-25 02:23:26 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |     private static ConstructBaseTabs(state: { | 
					
						
							|  |  |  |                                          layoutToUse: LayoutConfig, | 
					
						
							|  |  |  |                                          osmConnection: OsmConnection, | 
					
						
							|  |  |  |                                          featureSwitchShareScreen: UIEventSource<boolean>, | 
					
						
							|  |  |  |                                          featureSwitchMoreQuests: UIEventSource<boolean> | 
					
						
							|  |  |  |                                      } & UserRelatedState, | 
					
						
							|  |  |  |                                      isShown: UIEventSource<boolean>): | 
					
						
							|  |  |  |         { header: string | BaseUIElement; content: BaseUIElement }[] { | 
					
						
							| 
									
										
										
										
											2021-01-07 04:50:12 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-16 21:23:03 +02:00
										 |  |  |         let welcome: BaseUIElement = new ThemeIntroductionPanel(isShown); | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-13 15:04:55 +02:00
										 |  |  |         const tabs: { header: string | BaseUIElement, content: BaseUIElement }[] = [ | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |             {header: `<img src='${state.layoutToUse.icon}'>`, content: welcome}, | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |             { | 
					
						
							|  |  |  |                 header: Svg.osm_logo_img, | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  |                 content: Translations.t.general.openStreetMapIntro.Clone().SetClass("link-underline") | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |             }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |         if (state.featureSwitchShareScreen.data) { | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |             tabs.push({header: Svg.share_img, content: new ShareScreen()}); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |         if (state.featureSwitchMoreQuests.data) { | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |             tabs.push({ | 
					
						
							|  |  |  |                 header: Svg.add_img, | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |                 content: new MoreScreen(state) | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |             }); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-14 17:42:26 +02:00
										 |  |  |         return tabs; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |     private static GenerateContents(state: { | 
					
						
							|  |  |  |         layoutToUse: LayoutConfig, | 
					
						
							|  |  |  |         osmConnection: OsmConnection, | 
					
						
							|  |  |  |         featureSwitchShareScreen: UIEventSource<boolean>, | 
					
						
							|  |  |  |         featureSwitchMoreQuests: UIEventSource<boolean> | 
					
						
							|  |  |  |     } & UserRelatedState, currentTab: UIEventSource<number>, isShown: UIEventSource<boolean>) { | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |         const tabs = FullWelcomePaneWithTabs.ConstructBaseTabs(state, isShown) | 
					
						
							|  |  |  |         const tabsWithAboutMc = [...FullWelcomePaneWithTabs.ConstructBaseTabs(state, isShown)] | 
					
						
							| 
									
										
										
										
											2021-09-21 02:10:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         const now = new Date() | 
					
						
							| 
									
										
										
										
											2021-09-22 05:02:09 +02:00
										 |  |  |         const lastWeek = new Date(now.getDate() - 7 * 24 * 60 * 60 * 1000) | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |         const date = lastWeek.getFullYear() + "-" + Utils.TwoDigits(lastWeek.getMonth() + 1) + "-" + Utils.TwoDigits(lastWeek.getDate()) | 
					
						
							| 
									
										
										
										
											2021-09-21 02:10:42 +02:00
										 |  |  |         const osmcha_link = `https://osmcha.org/?filters=%7B%22date__gte%22%3A%5B%7B%22label%22%3A%22${date}%22%2C%22value%22%3A%222021-01-01%22%7D%5D%2C%22editor%22%3A%5B%7B%22label%22%3A%22mapcomplete%22%2C%22value%22%3A%22mapcomplete%22%7D%5D%7D` | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-13 15:04:55 +02:00
										 |  |  |         tabsWithAboutMc.push({ | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |                 header: Svg.help, | 
					
						
							| 
									
										
										
										
											2021-09-21 02:10:42 +02:00
										 |  |  |                 content: new Combine([Translations.t.general.aboutMapcomplete.Clone() | 
					
						
							|  |  |  |                     .Subs({"osmcha_link": osmcha_link}), "<br/>Version " + Constants.vNumber]) | 
					
						
							| 
									
										
										
										
											2021-06-13 15:04:55 +02:00
										 |  |  |                     .SetClass("link-underline") | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |             } | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-07 22:06:47 +02:00
										 |  |  |         tabs.forEach(c => c.content.SetClass("p-4")) | 
					
						
							|  |  |  |         tabsWithAboutMc.forEach(c => c.content.SetClass("p-4")) | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-13 15:04:55 +02:00
										 |  |  |         return new Toggle( | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |             new TabbedComponent(tabsWithAboutMc, currentTab), | 
					
						
							|  |  |  |             new TabbedComponent(tabs, currentTab), | 
					
						
							|  |  |  |             state.osmConnection.userDetails.map((userdetails: UserDetails) => | 
					
						
							| 
									
										
										
										
											2021-06-14 17:42:26 +02:00
										 |  |  |                 userdetails.loggedIn && | 
					
						
							|  |  |  |                 userdetails.csCount >= Constants.userJourney.mapCompleteHelpUnlock) | 
					
						
							| 
									
										
										
										
											2021-06-13 15:04:55 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |