mirror of https://github.com/grafana/grafana.git
84 lines
1.8 KiB
TypeScript
84 lines
1.8 KiB
TypeScript
|
import React, { PureComponent } from 'react';
|
||
|
import Remarkable from 'remarkable';
|
||
|
import { getBackendSrv } from '../../services/backend_srv';
|
||
|
|
||
|
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 => {
|
||
|
const markdown = new Remarkable();
|
||
|
const helpHtml = markdown.render(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 }} />;
|
||
|
}
|
||
|
}
|