forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			54 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import {UIElement} from "../UIElement";
							 | 
						||
| 
								 | 
							
								import {UIEventSource} from "../../Logic/UIEventSource";
							 | 
						||
| 
								 | 
							
								import BaseUIElement from "../BaseUIElement";
							 | 
						||
| 
								 | 
							
								import {VariableUiElement} from "../Base/VariableUIElement";
							 | 
						||
| 
								 | 
							
								import Translations from "../i18n/Translations";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shows that 'images are uploading', 'all images are uploaded' as relevant...
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export default class UploadFlowStateUI extends UIElement{
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    private readonly _element: BaseUIElement
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    constructor(queue: UIEventSource<string[]>, failed: UIEventSource<string[]>, success: UIEventSource<string[]>) {
							 | 
						||
| 
								 | 
							
								        super();
							 | 
						||
| 
								 | 
							
								        const t = Translations.t.image;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        this._element = new VariableUiElement(
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								          queue.map(queue => {
							 | 
						||
| 
								 | 
							
								              const failedReasons = failed.data
							 | 
						||
| 
								 | 
							
								              const successCount = success.data.length
							 | 
						||
| 
								 | 
							
								              const pendingCount = queue.length - successCount - failedReasons.length;
							 | 
						||
| 
								 | 
							
								              
							 | 
						||
| 
								 | 
							
								              let stateMessages : BaseUIElement[] = []
							 | 
						||
| 
								 | 
							
								              
							 | 
						||
| 
								 | 
							
								              if(pendingCount == 1){
							 | 
						||
| 
								 | 
							
								                  stateMessages.push(t.uploadingPicture.Clone().SetClass("alert"))
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								              if(pendingCount > 1){
							 | 
						||
| 
								 | 
							
								                  stateMessages.push(t.uploadingMultiple.Subs({count: ""+pendingCount}).SetClass("alert"))
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								              if(failedReasons.length > 0){
							 | 
						||
| 
								 | 
							
								                  stateMessages.push(t.uploadFailed.Clone().SetClass("alert"))
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								              if(successCount > 0 && pendingCount == 0){
							 | 
						||
| 
								 | 
							
								                  stateMessages.push(t.uploadDone.SetClass("thanks"))
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								              
							 | 
						||
| 
								 | 
							
								              stateMessages.forEach(msg => msg.SetStyle("display: block ruby"))
							 | 
						||
| 
								 | 
							
								              
							 | 
						||
| 
								 | 
							
								              return stateMessages
							 | 
						||
| 
								 | 
							
								          }, [failed, success])  
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected InnerRender(): string | BaseUIElement {
							 | 
						||
| 
								 | 
							
								        return this._element
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |