mirror of
https://github.com/grafana/grafana.git
synced 2025-02-11 16:15:42 -06:00
* Trying out json formatting of azure graph err from frontend * Added some tests wip * Wrap text in popper tooltip * fix conflict * Wrap text in tooltip * Complete tests * Added invalid json test * Backend changes and tests * removed comments * Added split of message / json and edge cases tests * Addressed comments * moved catch to parseErrorMessage
49 lines
1.0 KiB
TypeScript
49 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 (
|
|
<>
|
|
<h3>{error.data.message}</h3>
|
|
<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} />;
|
|
};
|