forked from MapComplete/MapComplete
		
	Refactoring: introduction of global state to simplify getting common objects
This commit is contained in:
		
							parent
							
								
									afaaaaadb1
								
							
						
					
					
						commit
						004eead4ee
					
				
					 34 changed files with 532 additions and 506 deletions
				
			
		|  | @ -2,75 +2,60 @@ import {UIElement} from "./UIElement"; | |||
| import {UIEventSource} from "./UIEventSource"; | ||||
| import {OsmConnection} from "../Logic/Osm/OsmConnection"; | ||||
| import Translations from "./i18n/Translations"; | ||||
| import {State} from "../State"; | ||||
| 
 | ||||
| export class CenterMessageBox extends UIElement { | ||||
| 
 | ||||
|     private readonly _location: UIEventSource<{ zoom: number }>; | ||||
|     private readonly _zoomInMore = new UIEventSource<boolean>(true); | ||||
|     private readonly _centermessage: UIEventSource<string>; | ||||
|     private readonly _osmConnection: OsmConnection; | ||||
|     private readonly _queryRunning: UIEventSource<boolean>; | ||||
|     private startZoom: number; | ||||
| 
 | ||||
|     constructor( | ||||
|         startZoom: number, | ||||
|         centermessage: UIEventSource<string>, | ||||
|         osmConnection: OsmConnection, | ||||
|         location: UIEventSource<{ zoom: number }>, | ||||
|         queryRunning: UIEventSource<boolean> | ||||
|     ) { | ||||
|         super(centermessage); | ||||
|         super(State.state.centerMessage); | ||||
|         this.startZoom = startZoom; | ||||
| 
 | ||||
|         this._centermessage = centermessage; | ||||
|         this._location = location; | ||||
|         this._osmConnection = osmConnection; | ||||
|         this._queryRunning = queryRunning; | ||||
|         this.ListenTo(State.state.locationControl); | ||||
|         this.ListenTo(queryRunning); | ||||
| 
 | ||||
|         this._queryRunning = queryRunning; | ||||
| 
 | ||||
|         const self = this; | ||||
|         location.addCallback(function () { | ||||
|             self._zoomInMore.setData(location.data.zoom < startZoom); | ||||
|         }); | ||||
|         this.ListenTo(this._zoomInMore); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     private prep(): { innerHtml: string, done: boolean } { | ||||
|         if (State.state.centerMessage.data != "") { | ||||
|             return {innerHtml: State.state.centerMessage.data, done: false}; | ||||
|         } | ||||
|         if (this._queryRunning.data) { | ||||
|             return {innerHtml: Translations.t.centerMessage.loadingData.Render(), done: false}; | ||||
|         } else if (State.state.locationControl.data.zoom < this.startZoom) { | ||||
|             return {innerHtml: Translations.t.centerMessage.zoomIn.Render(), done: false}; | ||||
|         } else { | ||||
|             return {innerHtml: Translations.t.centerMessage.ready.Render(), done: true}; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     InnerRender(): string { | ||||
| 
 | ||||
|         if (this._centermessage.data != "") { | ||||
|             return this._centermessage.data; | ||||
|         } | ||||
|         if (this._queryRunning.data) { | ||||
|             return Translations.t.centerMessage.loadingData.Render(); | ||||
|         } else if (this._zoomInMore.data) { | ||||
|             return Translations.t.centerMessage.zoomIn.Render(); | ||||
|         } | ||||
|         return Translations.t.centerMessage.ready.Render(); | ||||
|         return this.prep().innerHtml; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private ShouldShowSomething() : boolean{ | ||||
|         if (this._queryRunning.data) { | ||||
|             return true; | ||||
|         } | ||||
|         return this._zoomInMore.data; | ||||
|     } | ||||
| 
 | ||||
|     InnerUpdate(htmlElement: HTMLElement) { | ||||
|         const pstyle = htmlElement.parentElement.style; | ||||
|         if (this._centermessage.data != "") { | ||||
|         if (State.state.centerMessage.data != "") { | ||||
|             pstyle.opacity = "1"; | ||||
|             pstyle.pointerEvents = "all"; | ||||
|             this._osmConnection.registerActivateOsmAUthenticationClass(); | ||||
|             State.state.osmConnection.registerActivateOsmAUthenticationClass(); | ||||
|             return; | ||||
|         } | ||||
|         pstyle.pointerEvents = "none"; | ||||
| 
 | ||||
| 
 | ||||
|         if (this.ShouldShowSomething()) { | ||||
|             pstyle.opacity = "0.5"; | ||||
|         } else { | ||||
|         if (this.prep().done) { | ||||
|             pstyle.opacity = "0"; | ||||
|         } else { | ||||
|             pstyle.opacity = "0.5"; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue