| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  | import { UIEventSource } from "../Logic/UIEventSource" | 
					
						
							|  |  |  | import { QueryParameters } from "../Logic/Web/QueryParameters" | 
					
						
							|  |  |  | import Hash from "../Logic/Web/Hash" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export class DefaultGuiState { | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  |     static state: DefaultGuiState | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  |     public readonly welcomeMessageIsOpened: UIEventSource<boolean> | 
					
						
							|  |  |  |     public readonly downloadControlIsOpened: UIEventSource<boolean> | 
					
						
							|  |  |  |     public readonly filterViewIsOpened: UIEventSource<boolean> | 
					
						
							|  |  |  |     public readonly copyrightViewIsOpened: UIEventSource<boolean> | 
					
						
							| 
									
										
										
										
											2021-12-10 17:30:50 +01:00
										 |  |  |     public readonly currentViewControlIsOpened: UIEventSource<boolean> | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  |     public readonly welcomeMessageOpenedTab: UIEventSource<number> | 
					
						
							|  |  |  |     public readonly allFullScreenStates: UIEventSource<boolean>[] = [] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     constructor() { | 
					
						
							|  |  |  |         this.welcomeMessageOpenedTab = UIEventSource.asFloat( | 
					
						
							|  |  |  |             QueryParameters.GetQueryParameter( | 
					
						
							|  |  |  |                 "tab", | 
					
						
							|  |  |  |                 "0", | 
					
						
							| 
									
										
										
										
											2021-12-04 12:20:24 +01:00
										 |  |  |                 `The tab that is shown in the welcome-message.` | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             ) | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  |         this.welcomeMessageIsOpened = QueryParameters.GetBooleanQueryParameter( | 
					
						
							|  |  |  |             "welcome-control-toggle", | 
					
						
							| 
									
										
										
										
											2022-02-14 18:18:05 +01:00
										 |  |  |             false, | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  |             "Whether or not the welcome panel is shown" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         this.downloadControlIsOpened = QueryParameters.GetBooleanQueryParameter( | 
					
						
							|  |  |  |             "download-control-toggle", | 
					
						
							| 
									
										
										
										
											2022-02-14 18:18:05 +01:00
										 |  |  |             false, | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  |             "Whether or not the download panel is shown" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         this.filterViewIsOpened = QueryParameters.GetBooleanQueryParameter( | 
					
						
							|  |  |  |             "filter-toggle", | 
					
						
							| 
									
										
										
										
											2022-02-14 18:18:05 +01:00
										 |  |  |             false, | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  |             "Whether or not the filter view is shown" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         this.copyrightViewIsOpened = QueryParameters.GetBooleanQueryParameter( | 
					
						
							|  |  |  |             "copyright-toggle", | 
					
						
							| 
									
										
										
										
											2022-02-14 18:18:05 +01:00
										 |  |  |             false, | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  |             "Whether or not the copyright view is shown" | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-12-10 17:30:50 +01:00
										 |  |  |         this.currentViewControlIsOpened = QueryParameters.GetBooleanQueryParameter( | 
					
						
							|  |  |  |             "currentview-toggle", | 
					
						
							| 
									
										
										
										
											2022-02-14 18:18:05 +01:00
										 |  |  |             false, | 
					
						
							| 
									
										
										
										
											2021-12-10 17:30:50 +01:00
										 |  |  |             "Whether or not the current view box is shown" | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2022-01-08 04:22:50 +01:00
										 |  |  |         const states = { | 
					
						
							|  |  |  |             download: this.downloadControlIsOpened, | 
					
						
							|  |  |  |             filters: this.filterViewIsOpened, | 
					
						
							|  |  |  |             copyright: this.copyrightViewIsOpened, | 
					
						
							|  |  |  |             currentview: this.currentViewControlIsOpened, | 
					
						
							|  |  |  |             welcome: this.welcomeMessageIsOpened, | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-01-08 04:22:50 +01:00
										 |  |  |         Hash.hash.addCallbackAndRunD((hash) => { | 
					
						
							|  |  |  |             hash = hash.toLowerCase() | 
					
						
							|  |  |  |             states[hash]?.setData(true) | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-08 04:22:50 +01:00
										 |  |  |         if (Hash.hash.data === "" || Hash.hash.data === undefined) { | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  |             this.welcomeMessageIsOpened.setData(true) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-10 17:30:50 +01:00
										 |  |  |         this.allFullScreenStates.push( | 
					
						
							|  |  |  |             this.downloadControlIsOpened, | 
					
						
							|  |  |  |             this.filterViewIsOpened, | 
					
						
							|  |  |  |             this.copyrightViewIsOpened, | 
					
						
							|  |  |  |             this.welcomeMessageIsOpened, | 
					
						
							|  |  |  |             this.currentViewControlIsOpened | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         for (let i = 0; i < this.allFullScreenStates.length; i++) { | 
					
						
							|  |  |  |             const fullScreenState = this.allFullScreenStates[i] | 
					
						
							|  |  |  |             for (let j = 0; j < this.allFullScreenStates.length; j++) { | 
					
						
							|  |  |  |                 if (i == j) { | 
					
						
							|  |  |  |                     continue | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 const otherState = this.allFullScreenStates[j] | 
					
						
							|  |  |  |                 fullScreenState.addCallbackAndRunD((isOpened) => { | 
					
						
							|  |  |  |                     if (isOpened) { | 
					
						
							|  |  |  |                         otherState.setData(false) | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 }) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |