import { DataQueryError } from '@grafana/data'; import { Trans } from '@grafana/i18n'; import { Alert, JSONFormatter } from '@grafana/ui'; interface InspectErrorTabProps { errors?: DataQueryError[]; } const parseErrorMessage = (message: string) => { try { const [msg, json] = message.split(/(\{.+)/); const jsonError = JSON.parse(json); return { msg, json: jsonError, }; } catch { return { msg: message }; } }; function renderError(error: DataQueryError) { if (error.data) { return ( <>

{error.data.message}

); } if (error.message) { const { msg, json } = parseErrorMessage(error.message); if (!json) { return ( <> {error.status && ( Status: {'{{errorStatus}}'}. Message: )}{' '} {msg} {error.traceId != null && ( <>
(Trace ID: {'{{errorTrace}}'}) )} ); } else { return ( <> {msg !== '' &&

{msg}

} {error.status && ( Status: {'{{errorStatus}}'} )} ); } } return ; } export const InspectErrorTab = ({ errors }: InspectErrorTabProps) => { if (!errors?.length) { return null; } if (errors.length === 1) { return renderError(errors[0]); } return ( <> {errors.map((error, index) => ( {renderError(error)} ))} ); };