collab/mermaid/packages/mermaid-example-diagram/src/exampleDiagramRenderer.jsblame
View source
6dd74de1/** Created by knut on 14-12-11. */
6dd74de2import { select } from 'd3';
6dd74de3import { log, getConfig, setupGraphViewbox } from './mermaidUtils.js';
6dd74de4
6dd74de5/**
6dd74de6 * Draws an info picture in the tag with id: id based on the graph definition in text.
6dd74de7 *
6dd74de8 * @param {any} text
6dd74de9 * @param {any} id
6dd74de10 * @param {any} version
6dd74de11 */
6dd74de12export const draw = (text, id, version) => {
6dd74de13 try {
6dd74de14 const conf = getConfig();
6dd74de15 log.debug('Rendering example diagram\n' + text, 'Conf: ');
6dd74de16 const THEME_COLOR_LIMIT = getConfig().themeVariables.THEME_COLOR_LIMIT;
6dd74de17 const securityLevel = getConfig().securityLevel;
6dd74de18 // Handle root and Document for when rendering in sandbox mode
6dd74de19 let sandboxElement;
6dd74de20 if (securityLevel === 'sandbox') {
6dd74de21 sandboxElement = select('#i' + id);
6dd74de22 }
6dd74de23 const root =
6dd74de24 securityLevel === 'sandbox'
6dd74de25 ? select(sandboxElement.nodes()[0].contentDocument.body)
6dd74de26 : select('body');
6dd74de27
6dd74de28 const svg = root.select('#' + id);
6dd74de29
6dd74de30 const g = svg.append('g');
6dd74de31
6dd74de32 let i;
6dd74de33 for (i = 0; i < THEME_COLOR_LIMIT; i++) {
6dd74de34 const section = g.append('g').attr('class', 'section-' + i);
6dd74de35 section
6dd74de36 .append('rect')
6dd74de37 .attr('x', (i % 5) * 110)
6dd74de38 .attr('y', Math.floor(i / 5) * 90 + 60)
6dd74de39 .attr('width', 100)
6dd74de40 .attr('height', 60);
6dd74de41 section
6dd74de42 .append('rect')
6dd74de43 .attr('x', (i % 5) * 110)
6dd74de44 .attr('y', Math.floor(i / 5) * 90 + 120)
6dd74de45 .attr('class', 'inverted')
6dd74de46 .attr('width', 100)
6dd74de47 .attr('height', 20);
6dd74de48 section
6dd74de49 .append('text', 'section-' + i)
6dd74de50 .text('Section ' + i)
6dd74de51 .attr('x', (i % 5) * 110 + 15)
6dd74de52 .attr('y', Math.floor(i / 5) * 90 + 95)
6dd74de53 .attr('class', 'section-text-' + i);
6dd74de54 }
6dd74de55
6dd74de56 g.append('text') // text label for the x axis
6dd74de57 .attr('x', 100)
6dd74de58 .attr('y', 40)
6dd74de59 .attr('class', 'version')
6dd74de60 .attr('font-size', '32px')
6dd74de61 .style('text-anchor', 'middle')
6dd74de62 .text('v ' + version);
6dd74de63
6dd74de64 // Setup the view box and size of the svg element
6dd74de65 setupGraphViewbox(undefined, svg, conf.mindmap.padding, conf.mindmap.useMaxWidth);
6dd74de66 } catch (e) {
6dd74de67 log.error('Error while rendering info diagram');
6dd74de68 log.error(e.message);
6dd74de69 }
6dd74de70};
6dd74de71
6dd74de72export default {
6dd74de73 draw,
6dd74de74};