import FieldStyles from "../styles/FieldStyles.wrn" import ComponentBaseStyles from "../styles/ComponentBaseStyles.wrn" component FileUploadProgress { outputs { cancel(payload: { sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]) retry(payload: { sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]) complete(payload: { sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]) } props { size: string = "default" color: string = "primary" label: string = "Progress" value: number = 50 max: number = 100 showValue: boolean = true fileName: string = "" fileSize: string = "" uploadedSize: string = "" status: string = "uploading" cancelLabel: string = "Cancel upload" retryLabel: string = "Retry upload" class: string = "" } state currentValue = value state currentStatus = status functions { shared function percent() { if (!Number(max)) { return 0 } return Math.max(0, Math.min(100, Math.round(Number(currentValue) / Number(max) * 100))) } client function detail(sourceEvent) { return { value: currentValue, max: max, percent: percent(), status: currentStatus, fileName: fileName, sourceEvent: sourceEvent } } client function cancelUpload(sourceEvent) { currentStatus = "cancelled"; output.cancel(detail(sourceEvent)) } client function retryUpload(sourceEvent) { currentValue = 0; currentStatus = "uploading"; output.retry(detail(sourceEvent)) } client function completeUpload(sourceEvent) { currentValue = max; currentStatus = "complete"; output.complete(detail(sourceEvent)) } } view {