45 lines
No EOL
1.6 KiB
TypeScript
45 lines
No EOL
1.6 KiB
TypeScript
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<string[]>, failed: UIEventSource<string[]>, success: UIEventSource<string[]>) {
|
|
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])
|
|
);
|
|
|
|
|
|
}
|
|
|
|
} |