import marked from 'marked' import classNames from 'classnames' import React, { useState } from 'react' import { ReportTable } from './ReportTable' import { IReportError } from '../report' // ReportError export interface IReportErrorProps { reportError: IReportError } export function ReportError(props: IReportErrorProps) { const { reportError } = props const [isDetailsVisible, setIsDetailsVisible] = useState(false) const [visibleRowsCount, setVisibleRowsCount] = useState(10) const rowPositions = getRowPositions(reportError) return (
{/* Heading */}
{reportError.count} x setIsDetailsVisible(!isDetailsVisible)} aria-expanded="false" > {reportError.name}
{/* Error details */}
{reportError.description && (
)}

The full list of error messages:

    {reportError.messages.map((message, index) => (
  • {message}
  • ))}
{/* Table view */} {!['source-error'].includes(reportError.code) && (
)} {/* Show more */} {visibleRowsCount < rowPositions.length && ( setVisibleRowsCount(visibleRowsCount + 10)} > Show more )}
) } // Helpers function getRowPositions(reportError: IReportError) { return Object.keys(reportError.data) .map((item) => parseInt(item, 10)) .sort((a, b) => a - b) }