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 VariableUiElement { constructor(queue: UIEventSource, failed: UIEventSource, success: UIEventSource) { const t = Translations.t.image; super( 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]) ); } }