mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 09:05:45 -06:00
83 lines
1.7 KiB
TypeScript
83 lines
1.7 KiB
TypeScript
import React, { PureComponent } from 'react';
|
|
import { renderMarkdown } from '@grafana/data';
|
|
import { getBackendSrv } from '@grafana/runtime';
|
|
|
|
interface Props {
|
|
plugin: {
|
|
name: string;
|
|
id: string;
|
|
};
|
|
type: string;
|
|
}
|
|
|
|
interface State {
|
|
isError: boolean;
|
|
isLoading: boolean;
|
|
help: string;
|
|
}
|
|
|
|
export class PluginHelp extends PureComponent<Props, State> {
|
|
state = {
|
|
isError: false,
|
|
isLoading: false,
|
|
help: '',
|
|
};
|
|
|
|
componentDidMount(): void {
|
|
this.loadHelp();
|
|
}
|
|
|
|
constructPlaceholderInfo() {
|
|
return 'No plugin help or readme markdown file was found';
|
|
}
|
|
|
|
loadHelp = () => {
|
|
const { plugin, type } = this.props;
|
|
this.setState({ isLoading: true });
|
|
|
|
getBackendSrv()
|
|
.get(`/api/plugins/${plugin.id}/markdown/${type}`)
|
|
.then((response: string) => {
|
|
const helpHtml = renderMarkdown(response);
|
|
|
|
if (response === '' && type === 'help') {
|
|
this.setState({
|
|
isError: false,
|
|
isLoading: false,
|
|
help: this.constructPlaceholderInfo(),
|
|
});
|
|
} else {
|
|
this.setState({
|
|
isError: false,
|
|
isLoading: false,
|
|
help: helpHtml,
|
|
});
|
|
}
|
|
})
|
|
.catch(() => {
|
|
this.setState({
|
|
isError: true,
|
|
isLoading: false,
|
|
});
|
|
});
|
|
};
|
|
|
|
render() {
|
|
const { type } = this.props;
|
|
const { isError, isLoading, help } = this.state;
|
|
|
|
if (isLoading) {
|
|
return <h2>Loading help...</h2>;
|
|
}
|
|
|
|
if (isError) {
|
|
return <h3>'Error occurred when loading help'</h3>;
|
|
}
|
|
|
|
if (type === 'panel_help' && help === '') {
|
|
}
|
|
|
|
return <div className="markdown-html" dangerouslySetInnerHTML={{ __html: help }} />;
|
|
}
|
|
}
|