美文网首页
markdown 流程图渲染Demo

markdown 流程图渲染Demo

作者: 99ZY | 来源:发表于2021-05-08 17:27 被阅读0次

    (原创)大部分md编辑器不支持渲染流程图,目前找到两种合理的方式 实现

    方式一

    Typora编辑---> 导出成HTML

    方式二

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <title>flowchart.js · Playground</title>
            <style type="text/css">
              .end-element { fill : #FFCCFF; }
    </style>
            <script src="http://cdnjs.cloudflare.com/ajax/libs/raphael/2.3.0/raphael.min.js"></script>
            <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
            <script src="http://flowchart.js.org/flowchart-latest.js"></script>
            <!-- <script src="../release/flowchart.min.js"></script> -->
            <script>
    
                window.onload = function () {
                    var btn = document.getElementById("run"),
                        cd = document.getElementById("code"),
                        chart;
    
                    (btn.onclick = function () {
                        var code = cd.value;
    
                        if (chart) {
                          chart.clean();
                        }
    
                        chart = flowchart.parse(code);
                        chart.drawSVG('canvas', {
                          // 'x': 30,
                          // 'y': 50,
                          'line-width': 3,
                          'maxWidth': 3,//ensures the flowcharts fits within a certian width
                          'line-length': 50,
                          'text-margin': 10,
                          'font-size': 14,
                          'font': 'normal',
                          'font-family': 'Helvetica',
                          'font-weight': 'normal',
                          'font-color': 'black',
                          'line-color': 'black',
                          'element-color': 'black',
                          'fill': 'white',
                          'yes-text': 'yes',
                          'no-text': 'no',
                          'arrow-end': 'block',
                          'scale': 1,
                          'symbols': {
                            'start': {
                              'font-color': 'red',
                              'element-color': 'green',
                              'fill': 'yellow'
                            },
                            'end':{
                              'class': 'end-element'
                            }
                          },
                          'flowstate' : {
                            'past' : { 'fill' : '#CCCCCC', 'font-size' : 12},
                            'current' : {'fill' : 'yellow', 'font-color' : 'red', 'font-weight' : 'bold'},
                            'future' : { 'fill' : '#FFFF99'},
                            'request' : { 'fill' : 'blue'},
                            'invalid': {'fill' : '#444444'},
                            'approved' : { 'fill' : '#58C4A3', 'font-size' : 12, 'yes-text' : 'APPROVED', 'no-text' : 'n/a' },
                            'rejected' : { 'fill' : '#C45879', 'font-size' : 12, 'yes-text' : 'n/a', 'no-text' : 'REJECTED' }
                          }
                        });
    
                        $('[id^=sub1]').click(function(){
                          alert('info here');
                        });
                    })();
    
                };
    
                function myFunction(event, node) {
                  console.log("You just clicked this node:", node);
                }
    </script>
        </head>
        <body>
            <div><textarea id="code" style="width: 100%;" rows="11">
                  st=>start: Start|past:>http://www.google.com[blank]
                 e=>end: End:>http://www.google.com
                 op1=>operation: My Operation|past:$myFunction
                 op2=>operation: Stuff|current
                 sub1=>subroutine: My Subroutine|invalid
                 cond=>condition: Yes
                 or No?|approved:>http://www.google.com
                 c2=>condition: Good idea|rejected
                 io=>inputoutput: catch something...|request
                 para=>parallel: parallel tasks
    
                 st->op1(right)->cond
                 cond(yes, right)->c2
                 cond(no)->para
                 c2(true)->io->e
                 c2(false)->e
    
                 para(path1, bottom)->sub1(left)->op1
                 para(path2, right)->op2->e
    
    st@>op1({"stroke":"Red"})@>cond({"stroke":"Red","stroke-width":6,"arrow-end":"classic-wide-long"})@>c2({"stroke":"Red"})@>op2({"stroke":"Red"})@>e({"stroke":"Red"})</textarea></div>
            <div><button id="run" type="button">Run</button></div>
            <div id="canvas"></div>
        </body>
    </html>
    

    相关文章

      网友评论

          本文标题:markdown 流程图渲染Demo

          本文链接:https://www.haomeiwen.com/subject/qoaudltx.html