// Single source of truth for the download-event status enum -> display // metadata (label/color/icon). Mirrors the backend ENUM // (pending|running|ok|error|skipped). Used by the stat chips, the filter // dropdown, and the event rows so they never drift apart. The value set is // pinned against backend _ALLOWED_STATUSES by tests/test_fe_be_contract.py. export const DOWNLOAD_STATUSES = [ { value: 'pending', label: 'Queued', color: 'grey', icon: 'mdi-clock-outline' }, { value: 'running', label: 'Running', color: 'info', icon: 'mdi-progress-clock' }, { value: 'ok', label: 'Completed', color: 'success', icon: 'mdi-check-circle' }, { value: 'error', label: 'Failed', color: 'error', icon: 'mdi-alert-circle' }, { value: 'skipped', label: 'Skipped', color: 'warning', icon: 'mdi-skip-next' }, ] const _BY_VALUE = Object.fromEntries(DOWNLOAD_STATUSES.map((s) => [s.value, s])) export function downloadStatusMeta(value) { return _BY_VALUE[value] || { value, label: value, color: 'grey', icon: 'mdi-help-circle' } } export const downloadStatusLabel = (v) => downloadStatusMeta(v).label export const downloadStatusColor = (v) => downloadStatusMeta(v).color export const downloadStatusIcon = (v) => downloadStatusMeta(v).icon