import React from 'react'; import { Progress } from 'antd'; import { resolveExportProgressPercent, shouldUseIndeterminateExportProgress, type ExportProgressStatus, } from '../utils/exportProgress'; const INDETERMINATE_ANIMATION_NAME = 'gonavi-export-indeterminate-progress'; const normalizeCount = (value: unknown): number => { const next = Number(value); if (!Number.isFinite(next) || next < 0) { return 0; } return Math.trunc(next); }; type ExportProgressBarProps = { status: ExportProgressStatus; current: number; total: number; totalRowsKnown: boolean; }; export const ExportProgressBar: React.FC = ({ status, current, total, totalRowsKnown, }) => { const isIndeterminate = shouldUseIndeterminateExportProgress(status, total, totalRowsKnown); const progressStatus = status === 'error' ? 'exception' : (status === 'done' ? 'success' : 'active'); if (isIndeterminate) { return (
); } const percent = resolveExportProgressPercent(status, current, total, totalRowsKnown); return (
totalRowsKnown ? `${normalizeCount(current)}/${normalizeCount(total)}` : `${Math.round(percent)}%`} />
); }; export default ExportProgressBar;