|
|
|
|
@ -18,13 +18,17 @@ interface Props { |
|
|
|
|
description?: string; |
|
|
|
|
scopedVars?: string; |
|
|
|
|
links?: []; |
|
|
|
|
error?: string; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export class PanelHeaderCorner extends Component<Props> { |
|
|
|
|
timeSrv: TimeSrv = getTimeSrv(); |
|
|
|
|
|
|
|
|
|
getInfoMode = () => { |
|
|
|
|
const { panel } = this.props; |
|
|
|
|
const { panel, error } = this.props; |
|
|
|
|
if (error) { |
|
|
|
|
return InfoModes.Error; |
|
|
|
|
} |
|
|
|
|
if (!!panel.description) { |
|
|
|
|
return InfoModes.Info; |
|
|
|
|
} |
|
|
|
|
@ -42,7 +46,7 @@ export class PanelHeaderCorner extends Component<Props> { |
|
|
|
|
const interpolatedMarkdown = templateSrv.replace(markdown, panel.scopedVars); |
|
|
|
|
const remarkableInterpolatedMarkdown = new Remarkable().render(interpolatedMarkdown); |
|
|
|
|
|
|
|
|
|
const html = ( |
|
|
|
|
return ( |
|
|
|
|
<div className="markdown-html"> |
|
|
|
|
<div dangerouslySetInnerHTML={{ __html: remarkableInterpolatedMarkdown }} /> |
|
|
|
|
{panel.links && |
|
|
|
|
@ -62,10 +66,19 @@ export class PanelHeaderCorner extends Component<Props> { |
|
|
|
|
)} |
|
|
|
|
</div> |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
return html; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
renderCornerType(infoMode: InfoModes, content: string | JSX.Element) { |
|
|
|
|
return ( |
|
|
|
|
<Tooltip content={content} placement="bottom-start"> |
|
|
|
|
<div className={`panel-info-corner panel-info-corner--${infoMode.toLowerCase()}`}> |
|
|
|
|
<i className="fa" /> |
|
|
|
|
<span className="panel-info-corner-inner" /> |
|
|
|
|
</div> |
|
|
|
|
</Tooltip> |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
render() { |
|
|
|
|
const infoMode: InfoModes | undefined = this.getInfoMode(); |
|
|
|
|
|
|
|
|
|
@ -73,23 +86,15 @@ export class PanelHeaderCorner extends Component<Props> { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
<> |
|
|
|
|
{infoMode === InfoModes.Info || infoMode === InfoModes.Links ? ( |
|
|
|
|
<Tooltip |
|
|
|
|
content={this.getInfoContent()} |
|
|
|
|
placement="bottom-start" |
|
|
|
|
> |
|
|
|
|
<div |
|
|
|
|
className={`panel-info-corner panel-info-corner--${infoMode.toLowerCase()}`} |
|
|
|
|
> |
|
|
|
|
<i className="fa" /> |
|
|
|
|
<span className="panel-info-corner-inner" /> |
|
|
|
|
</div> |
|
|
|
|
</Tooltip> |
|
|
|
|
) : null} |
|
|
|
|
</> |
|
|
|
|
); |
|
|
|
|
if (infoMode === InfoModes.Error) { |
|
|
|
|
return this.renderCornerType(infoMode, this.props.error); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (infoMode === InfoModes.Info) { |
|
|
|
|
return this.renderCornerType(infoMode, this.getInfoContent()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|