WEB-TOOLS-04Mermaid渲染

2019-11-04  本文已影响0人  杨强AT南京

  开发中常用的流程图,UML2图,甘特图等也可以使用Javascript渲染,这个就是mermaid,其渲染也提供Javascript模块mermaid。
   1. 安装;
   2. 编程模式;
   3. Vue中的使用;


mermaid环境准备

安装

    npm install d3@^4.13.0  --save
    npm install mermaid --save

模块文件

mermaid的安装模块文件

mermaid编程模式

回调模式

    <body>
        <!-- 显示区域 -->
        <div id="show" style="width:300px;height:300px;">
            Hello
        </div>

    </body>
    <script>
        // 需要绘制的Mermaid图
        var graphDefinition = 'graph TB\na-->b';   
        // 渲染完成后的回调函数
        var insertSvg = function(svgCode){
            document.querySelector("#show").innerHTML = svgCode;
        };
        // 非常简单的渲染函数(第一个参数指定渲染后的svg的id)
        var graph = mermaid.render('graphDiv', graphDefinition, insertSvg);

    </script>

返回模式

    <body>
        <!-- 显示区域 -->
        <div id="show" style="width:300px;height:300px;">
            Hello
        </div>

    </body>
    <script>
        // 需要绘制的Mermaid图
        var graphDefinition = 'graph TB\na-->b';   
        // 非常简单的渲染函数(第一个参数指定渲染后的svg的id)
        var graph = mermaid.render('graphDiv', graphDefinition);
        document.querySelector("#show").innerHTML = graph;
    </script>
简单的流程图处理效果

关于mermaid的选项设置


        <script src="./node_modules/mermaid//dist//mermaid.js"></script>
        <!-- <script src="./mermaid.js"></script> -->
        <script>
            mermaid.initialize(
                {
                    theme: 'forest',
                    // themeCSS: '.node rect { fill: red; }',
                    logLevel: 3,
                    flowchart: { curve: 'basis' },
                    gantt: { axisFormat: '%m/%d/%Y' },
                    sequence: { actorMargin: 50 },
                    // sequenceDiagram: { actorMargin: 300 } // deprecated
                }
            );
        </script>

可以使用选项设置主题风格

在Vue中使用

在Vue组件中实现转换

<script>
export default{
    name: 'mermaiddemo',
    data: () => {
        // 计算数据
        const mermaid = require('mermaid');
        var graphDefinition = '' ;
        graphDefinition += 'graph LR\n';
        graphDefinition += '流程A--选项1-->流程B\n';
        graphDefinition += '流程A--选项2-->流程C\n';
        graphDefinition += '流程B--输出1-->流程D\n';
        graphDefinition += '流程C--输出1-->流程D\n';
        graphDefinition += '流程D--结果-->流程E\n';

        const graph = mermaid.render('graphDiv', graphDefinition);
        return {
            mermaidgraph: graph,
        };
    },
};
</script>

使用Vue指令显示转换结果

<template>
    <div>
        <section id="show" v-html="mermaidgraph"></section>
    </div>
</template>
<template>
    <div>
        <section id="show" v-html="mermaidgraph"></section>
    </div>
</template>
<script>
export default{
    name: 'mermaiddemo',
    data: () => {
        // 计算数据
        const mermaid = require('mermaid');
        var graphDefinition = '' ;
        graphDefinition += 'graph LR\n';
        graphDefinition += '流程A--选项1-->流程B\n';
        graphDefinition += '流程A--选项2-->流程C\n';
        graphDefinition += '流程B--输出1-->流程D\n';
        graphDefinition += '流程C--输出1-->流程D\n';
        graphDefinition += '流程D--结果-->流程E\n';

        const graph = mermaid.render('graphDiv', graphDefinition);
        return {
            mermaidgraph: graph,
        };
    },
};
</script>
<style>
</style>

Vue的POI框架的使用效果
<!doctype html>
<html>
<head>
    <title>甘特图</title>
    <meta charset="utf-8">
    <script src="./node_modules/mermaid//dist//mermaid.js"></script>
</head>
<body>

    <div class="mermaid">
        gantt
        title 计划甘特图
        dateFormat  YYYY-MM-DD
        section 第一阶段
        任务一     : a1, 2019-07-18, 20d
        任务二     : after a1  , 10d
        section 第二阶段
        任务三     : 2019-08-20, 12d
        任务四     : 24d
  </div>
</body>

</html>
直接页面中使用的甘特图效果
上一篇 下一篇

猜你喜欢

热点阅读