mirror of https://github.com/grafana/grafana.git
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import { transformationDocsContent, getLinkToDocs, ImageRenderType } from './content';
|
|
|
|
export function getTransformationContent(id: string): { name: string; helperDocs: string } {
|
|
if (id in transformationDocsContent) {
|
|
const { name, getHelperDocs, links } = transformationDocsContent[id];
|
|
|
|
const helperDocs = getHelperDocs(ImageRenderType.UIImage);
|
|
|
|
const cleansedMarkdown = cleanMarkdownOfUnwantedSyntax(helperDocs);
|
|
|
|
// NOTE: string interpolation whitespace/indentation formatting is intentional.
|
|
if (links?.length) {
|
|
const renderedLinks = links
|
|
.map((link) => {
|
|
return `
|
|
Or visit <a href="${link.url}" target="_blank">${link.title}</a>\n
|
|
`;
|
|
})
|
|
.join('');
|
|
|
|
// If external links exist, build and add them to the returned documentation.
|
|
return {
|
|
name,
|
|
helperDocs: `
|
|
${cleansedMarkdown}
|
|
${getLinkToDocs()}
|
|
${renderedLinks}
|
|
`,
|
|
};
|
|
}
|
|
|
|
// If NO external links exist, simply return the basic documentation.
|
|
return {
|
|
name,
|
|
helperDocs: `
|
|
${cleansedMarkdown}
|
|
${getLinkToDocs()}
|
|
`,
|
|
};
|
|
}
|
|
|
|
// If the transformation has no documentation, return an external link to the online documentation.
|
|
return {
|
|
name: 'No documentation found',
|
|
helperDocs: getLinkToDocs(),
|
|
};
|
|
}
|
|
|
|
const cleanMarkdownOfUnwantedSyntax = (markdown: string) => {
|
|
// Remove anchor links: [text](#link)
|
|
const markdownWithoutAnchorLinks = markdown.replace(/\[(.*?)\]\(#.*?\)/g, '$1');
|
|
|
|
// Remove shortcode syntax: [text][]
|
|
const markdownWithoutShortcodeSyntax = markdownWithoutAnchorLinks.replace(/\[[^\]]*\]\[\]/g, '');
|
|
|
|
return markdownWithoutShortcodeSyntax;
|
|
};
|