import React from 'react'; import styles from './stock-reports.scss'; import { formatDate, parseDate } from '@openmrs/esm-framework'; import { BatchJobStatusCancelled, parseParametersToMap } from '../../core/api/types/BatchJob'; import { useTranslation } from 'react-i18next'; interface StockReportStatusProps { model: any; } const StockReportStatus = (props: StockReportStatusProps) => { const { t } = useTranslation(); let executionStateMap: React.ReactNode; const displayParameterMap = ( batchJobUuid: string, parameterMap: { [key: string]: { [key: string]: string } } | null, ): React.ReactNode => { if (!parameterMap) { return null; } const objectKeys: string[] = Object.keys(parameterMap); if (objectKeys.length === 0) { return null; } return objectKeys.map((key, index) => { const displayField: string = parameterMap[key]['description'] ?? key; const displayValue: string = parameterMap[key]['display'] ?? parameterMap[key]['value']; return (
{displayField}: {displayValue}
); }); }; try { executionStateMap = displayParameterMap(props.model?.uuid, parseParametersToMap(props.model?.executionState)); } catch (ex) { console.error(ex); } return (
{/* cancelled */} {props.model?.status === BatchJobStatusCancelled && (
{t('cancelled', 'Cancelled')}:
{formatDate(parseDate(props.model?.cancelledDate.toString()), { time: true, mode: 'standard', })}

{props.model?.cancelReason}

)} {/* start time */} {props.model?.startTime && (
{t('started', 'Started')}:
{formatDate(parseDate(props.model?.startTime.toString()), { time: true, mode: 'standard', })}
)} {/* endTime */} {props.model?.endTime && (
{t('ended', 'Ended')}:
{formatDate(parseDate(props.model?.endTime.toString()), { time: true, mode: 'standard', })}
)} {/* expiration */} {props.model?.expiration && (
{t('expires', 'Expires')}:
{formatDate(parseDate(props.model?.expiration.toString()), { time: true, mode: 'standard', })}
)} {/* executionMap */} {executionStateMap && (
{t('executionState', 'Execution State')}:
{executionStateMap}
)} {/* completedDate */} {props.model?.completedDate && (
{t('completed', 'Completed')}:
{formatDate(parseDate(props.model?.completedDate.toString()), { time: true, mode: 'standard', })}
)} {/* exitMessage */} {props.model?.exitMessage && (
{t('exitMessage', 'Message')}:

{props.model?.exitMessage}

)}
); }; export default StockReportStatus;