grafana/public/app/features/inspector/InspectErrorTab.tsx
Josh Hunt 3c6e0e8ef8
Chore: ESlint import order (#44959)
* Add and configure eslint-plugin-import

* Fix the lint:ts npm command

* Autofix + prettier all the files

* Manually fix remaining files

* Move jquery code in jest-setup to external file to safely reorder imports

* Resolve issue caused by circular dependencies within Prometheus

* Update .betterer.results

* Fix missing // @ts-ignore

* ignore iconBundle.ts

* Fix missing // @ts-ignore
2022-04-22 14:33:13 +01:00

50 lines
1.0 KiB
TypeScript

import React from 'react';
import { DataQueryError } from '@grafana/data';
import { JSONFormatter } from '@grafana/ui';
interface InspectErrorTabProps {
error?: DataQueryError;
}
const parseErrorMessage = (message: string): { msg: string; json?: any } => {
try {
const [msg, json] = message.split(/(\{.+)/);
const jsonError = JSON.parse(json);
return {
msg,
json: jsonError,
};
} catch {
return { msg: message };
}
};
export const InspectErrorTab: React.FC<InspectErrorTabProps> = ({ error }) => {
if (!error) {
return null;
}
if (error.data) {
return (
<>
<h4>{error.data.message}</h4>
<JSONFormatter json={error} open={2} />
</>
);
}
if (error.message) {
const { msg, json } = parseErrorMessage(error.message);
if (!json) {
return <div>{msg}</div>;
} else {
return (
<>
{msg !== '' && <h3>{msg}</h3>}
<JSONFormatter json={json} open={5} />
</>
);
}
}
return <JSONFormatter json={error} open={2} />;
};