| 
									
										
										
										
											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.` | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  |         )); | 
					
						
							|  |  |  |         this.welcomeMessageIsOpened = QueryParameters.GetBooleanQueryParameter( | 
					
						
							|  |  |  |             "welcome-control-toggle", | 
					
						
							|  |  |  |             "false", | 
					
						
							|  |  |  |             "Whether or not the welcome panel is shown" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         this.downloadControlIsOpened = QueryParameters.GetBooleanQueryParameter( | 
					
						
							|  |  |  |             "download-control-toggle", | 
					
						
							|  |  |  |             "false", | 
					
						
							|  |  |  |             "Whether or not the download panel is shown" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         this.filterViewIsOpened = QueryParameters.GetBooleanQueryParameter( | 
					
						
							|  |  |  |             "filter-toggle", | 
					
						
							|  |  |  |             "false", | 
					
						
							|  |  |  |             "Whether or not the filter view is shown" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         this.copyrightViewIsOpened = QueryParameters.GetBooleanQueryParameter( | 
					
						
							|  |  |  |             "copyright-toggle", | 
					
						
							|  |  |  |             "false", | 
					
						
							|  |  |  |             "Whether or not the copyright view is shown" | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-12-10 17:30:50 +01:00
										 |  |  |         this.currentViewControlIsOpened = QueryParameters.GetBooleanQueryParameter( | 
					
						
							|  |  |  |             "currentview-toggle", | 
					
						
							|  |  |  |             "false", | 
					
						
							|  |  |  |             "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) | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         | 
					
						
							|  |  |  |         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) | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 }) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |