forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import Translations from "./i18n/Translations";
 | |
| import {VariableUiElement} from "./Base/VariableUIElement";
 | |
| import FeaturePipelineState from "../Logic/State/FeaturePipelineState";
 | |
| 
 | |
| export default class CenterMessageBox extends VariableUiElement {
 | |
| 
 | |
|     constructor(state: FeaturePipelineState) {
 | |
|         const updater = state.featurePipeline;
 | |
|         const t = Translations.t.centerMessage;
 | |
|         const message = updater.runningQuery.map(
 | |
|             isRunning => {
 | |
|                 if (isRunning) {
 | |
|                     return {el: t.loadingData};
 | |
|                 }
 | |
|                 if (!updater.sufficientlyZoomed.data) {
 | |
|                     return {el: t.zoomIn}
 | |
|                 }
 | |
|                 if (updater.timeout.data > 0) {
 | |
|                     return {el: t.retrying.Subs({count: "" + updater.timeout.data})}
 | |
|                 }
 | |
|                 return {el: t.ready, isDone: true}
 | |
| 
 | |
|             },
 | |
|             [updater.timeout, updater.sufficientlyZoomed, state.locationControl]
 | |
|         )
 | |
| 
 | |
|         super(message.map(toShow => toShow.el))
 | |
| 
 | |
|         this.SetClass("block " +
 | |
|             "rounded-3xl bg-white text-xl font-bold text-center pointer-events-none p-4")
 | |
|         this.SetStyle("transition: opacity 750ms linear")
 | |
| 
 | |
|         message.addCallbackAndRun(toShow => {
 | |
|             const isDone = toShow.isDone ?? false;
 | |
|             if (isDone) {
 | |
|                 this.SetStyle("transition: opacity 750ms linear; opacity: 0")
 | |
|             } else {
 | |
|                 this.SetStyle("transition: opacity 750ms linear; opacity: 0.75")
 | |
| 
 | |
|             }
 | |
|         })
 | |
| 
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 |