diff --git a/components/elements/processes/index.tsx b/components/elements/processes/index.tsx index 140186c..374e15f 100644 --- a/components/elements/processes/index.tsx +++ b/components/elements/processes/index.tsx @@ -26,6 +26,8 @@ export interface ProcessProgressInterface { total: number, progress: number, memory: any[], + remaining: string + percent: number } export interface ProcessInterface { @@ -45,14 +47,20 @@ export interface ProcessInterface { pausedAt: string | null, cancelledAt: string | null completedAt: string | null + status: Status + canPlay: boolean + canPause: boolean + canRepeat: boolean + canStop: boolean + canKill: boolean } enum Status { - Wait, - Running, - Cancelled, - Error, - Success + Wait = 'wait', + Running = 'running', + Cancelled = 'cancelled', + Error = 'error', + Success = 'success', } export default function Processes() { @@ -99,28 +107,6 @@ export default function Processes() { }, [page]); let isFinished = (process: ProcessInterface) => process.cancelledAt || process.completedAt - let canPlay = (process: ProcessInterface) => !isFinished(process) && process.progress && process.pausedAt - let canPause = (process: ProcessInterface) => !isFinished(process) && process.progress && !process.pausedAt - let canRepeat = (process: ProcessInterface) => isFinished(process) - let canStop = (process: ProcessInterface) => !isFinished(process) && process.progress - let canKill = (process: ProcessInterface) => !isFinished(process) && process.startedAt - let progress = (progress: ProcessProgressInterface) => progress.progress / progress.total * 100 - - let status = (process: ProcessInterface): Status => { - if (process.cancelledAt && process.completedAt) { - return Status.Cancelled - } - if (process.exception && process.completedAt) { - return Status.Error - } - if (!process.exception && process.completedAt) { - return Status.Success - } - if (process.startedAt && !process.completedAt) { - return Status.Running - } - return Status.Wait - } const handleChangePage = (event: any, page: number) => { setPage(page); @@ -157,55 +143,6 @@ export default function Processes() { setOpen(false) } - let formatSize = (length: any) => { - var i = 0, type = ['b','Kb','Mb','Gb','Tb','Pb']; - while((length / 1000 | 0) && i < type.length - 1) { - length /= 1024; - i++; - } - return length.toFixed(2) + ' ' + type[i]; - } - - let remaining = (process: ProcessInterface) => - { - if (!process?.progress?.progress || !process.startedAt) { - return null - } - return Math.round((new Date().getTime() - new Date(process.startedAt).getTime()) / process?.progress.progress * (process?.progress.total - process?.progress.progress)); - } - - let formatTime = ($secs: number | null) => { - if ($secs === null) { - return '' - } - let $timeFormats = [ - [0, '< 1 sec'], - [1, '1 sec'], - [2, 'secs', 1], - [60, '1 min'], - [120, 'mins', 60], - [3600, '1 hr'], - [7200, 'hrs', 3600], - [86400, '1 day'], - [172800, 'days', 86400], - ]; - - for (let $index in $timeFormats) { - let $format = $timeFormats[$index] - if ($secs >= $format[0]) { - if ((typeof $timeFormats[$index + 1] !== 'undefined' && $secs < $timeFormats[$index + 1][0]) - || $index == $timeFormats.length - 1 - ) { - if (2 == $format.length) { - return $format[1]; - } - - return Math.floor($secs / $format[2]) + ' ' + $format[1]; - } - } - } - } - return ( <> @@ -226,42 +163,42 @@ export default function Processes() { {!process.progress && !isFinished(process) && } {!process.progress && isFinished(process) && } - {process.progress && } + {process.progress && } {process.progress && - {`${process.progress.progress}`} / {`${process.progress.total}`} - {progress(process.progress)}% [{formatSize(process.progress.memory)}] / {formatTime(remaining(process))} + {`${process.progress.progress}`} / {`${process.progress.total}`} - {process.progress.percent}% [{process.progress.memory}] / {process.progress.remaining} } - {canPlay(process) && + {process.canPlay && } - {canPause(process) && + {process.canPause && } - {canStop(process) && + {process.canStop && } - {Status.Error === status(process) && + {Status.Error === process.status && } - {Status.Success === status(process) && + {Status.Success === process.status && } - {Status.Running === status(process) && + {Status.Running === process.status && } - {Status.Cancelled === status(process) && + {Status.Cancelled === process.status && } - {Status.Wait === status(process) && + {Status.Wait === process.status && } - {canRepeat(process) && openRepeatDialog(process)} title={`Repeat`} aria-label="Repeat"> + {process.canRepeat && openRepeatDialog(process)} title={`Repeat`} aria-label="Repeat"> } - {canKill(process) && + {process.canKill && } {process?.outputId && output(process)} aria-label="Output">