import { Box, Button, Space, Stack, Text } from '@grafana/ui'; import { Trans, t } from 'app/core/internationalization'; import { formatDate } from 'app/core/internationalization/dates'; import { GetSessionApiResponse, GetSnapshotResponseDto } from '../api'; import { MigrationInfo } from './MigrationInfo'; interface MigrationSummaryProps { snapshot: GetSnapshotResponseDto | undefined; session: GetSessionApiResponse; isBusy: boolean; disconnectIsLoading: boolean; onDisconnect: () => void; showBuildSnapshot: boolean; buildSnapshotIsLoading: boolean; onBuildSnapshot: () => void; showUploadSnapshot: boolean; uploadSnapshotIsLoading: boolean; onUploadSnapshot: () => void; showRebuildSnapshot: boolean; } const DATE_FORMAT: Intl.DateTimeFormatOptions = { dateStyle: 'medium', timeStyle: 'short', }; export function MigrationSummary(props: MigrationSummaryProps) { const { session, snapshot, isBusy, disconnectIsLoading, onDisconnect, showBuildSnapshot, buildSnapshotIsLoading, onBuildSnapshot, showUploadSnapshot, uploadSnapshotIsLoading, onUploadSnapshot, showRebuildSnapshot, } = props; const totalCount = snapshot?.stats?.total ?? 0; const errorCount = snapshot?.stats?.statuses?.['ERROR'] ?? 0; const successCount = snapshot?.stats?.statuses?.['OK'] ?? 0; const warningCount = snapshot?.stats?.statuses?.['WARNING'] ?? 0; return ( {snapshot?.created ? ( formatDate(snapshot.created, DATE_FORMAT) ) : ( Not yet created )} {totalCount} {errorCount} {successCount + warningCount} {session.slug} {showBuildSnapshot && ( )} {showRebuildSnapshot && ( )} {showUploadSnapshot && ( )} ); }