UNPKG

mermaid

Version:

Markdownish syntax for generating flowcharts, sequence diagrams and gantt charts.

510 lines (453 loc) 45.2 kB
<!DOCTYPE html> <html> <head> <title>svgDraw.js</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="all" href="../../../doc-style.css" /> <script src="../../../doc-filelist.js"></script> <script> var relativeDir = "../../../", thisFile = "Users/knut/Documents/source/mermaid/src/diagrams/sequenceDiagram/svgDraw.js", defaultSidebar = true; </script> <script src="../../../doc-script.js"></script> <script src="../../../mermaid.js"></script> <link rel="stylesheet" href="../../../mermaid.css" /> </head> <body> <div id="sidebar_wrapper"> <div id="sidebar_switch"> <span class="tree">Files</span> <span class="headings">Headings</span> </div> <div id="tree"></div> <div id="headings"> <div class="heading h1"> <a href="#svgDraw.js">svgDraw.js</a> </div> </div> </div> <div id="sidebar-toggle"></div> <div id="container"><div class="background highlight"></div> <table cellpadding="0" cellspacing="0"> <tbody> <tr> <td class="docs"> <div class="pilwrap" id="svgDraw.js"> <h1> <a href="#svgDraw.js" name="svgDraw.js" class="pilcrow">&#182;</a>svgDraw.js </h1> </div> </td> <td class="code highlight"></td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-1" id="section-1">&#182;</a> </div> <div class="dox"> <div class="summary"><p>Created by knut on 14-12-20.</p> </div> <div class="body"> </div> </div> </td> <td class="code highlight"><div class="highlight"><pre><span class="kd">var</span> <span class="nx">log</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../../logger&#39;</span><span class="p">).</span><span class="nx">create</span><span class="p">();</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">drawRect</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">elem</span> <span class="p">,</span> <span class="nx">rectData</span><span class="p">){</span> <span class="kd">var</span> <span class="nx">rectElem</span> <span class="o">=</span> <span class="nx">elem</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;rect&quot;</span><span class="p">);</span> <span class="nx">rectElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;x&quot;</span><span class="p">,</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">x</span><span class="p">);</span> <span class="nx">rectElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;y&quot;</span><span class="p">,</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">y</span><span class="p">);</span> <span class="nx">rectElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;fill&quot;</span><span class="p">,</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">fill</span><span class="p">);</span> <span class="nx">rectElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;stroke&quot;</span><span class="p">,</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">stroke</span><span class="p">);</span> <span class="nx">rectElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;width&quot;</span><span class="p">,</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">width</span><span class="p">);</span> <span class="nx">rectElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;height&quot;</span><span class="p">,</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">height</span><span class="p">);</span> <span class="nx">rectElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;rx&quot;</span><span class="p">,</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">rx</span><span class="p">);</span> <span class="nx">rectElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;ry&quot;</span><span class="p">,</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">ry</span><span class="p">);</span> <span class="k">if</span><span class="p">(</span><span class="k">typeof</span> <span class="nx">rectData</span><span class="p">.</span><span class="kr">class</span> <span class="o">!==</span> <span class="s1">&#39;undefined&#39;</span><span class="p">){</span> <span class="nx">rectElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;class&quot;</span><span class="p">,</span> <span class="nx">rectData</span><span class="p">.</span><span class="kr">class</span><span class="p">);</span> <span class="p">}</span> <span class="k">return</span> <span class="nx">rectElem</span><span class="p">;</span> <span class="p">};</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">drawText</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">elem</span><span class="p">,</span> <span class="nx">textData</span><span class="p">,</span> <span class="nx">width</span><span class="p">)</span> <span class="p">{</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-2" id="section-2">&#182;</a> </div> <p>Remove and ignore br:s</p> </td> <td class="code highlight"><div class="highlight"><pre> <span class="kd">var</span> <span class="nx">nText</span> <span class="o">=</span> <span class="nx">textData</span><span class="p">.</span><span class="nx">text</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/&lt;br\/?&gt;/ig</span><span class="p">,</span><span class="s1">&#39; &#39;</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">textElem</span> <span class="o">=</span> <span class="nx">elem</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">&#39;text&#39;</span><span class="p">);</span> <span class="nx">textElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;x&#39;</span><span class="p">,</span> <span class="nx">textData</span><span class="p">.</span><span class="nx">x</span><span class="p">);</span> <span class="nx">textElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;y&#39;</span><span class="p">,</span> <span class="nx">textData</span><span class="p">.</span><span class="nx">y</span><span class="p">);</span> <span class="nx">textElem</span><span class="p">.</span><span class="nx">style</span><span class="p">(</span><span class="s1">&#39;text-anchor&#39;</span><span class="p">,</span> <span class="nx">textData</span><span class="p">.</span><span class="nx">anchor</span><span class="p">);</span> <span class="nx">textElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;fill&#39;</span><span class="p">,</span> <span class="nx">textData</span><span class="p">.</span><span class="nx">fill</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">textData</span><span class="p">.</span><span class="kr">class</span> <span class="o">!==</span> <span class="s1">&#39;undefined&#39;</span><span class="p">)</span> <span class="p">{</span> <span class="nx">textElem</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;class&quot;</span><span class="p">,</span> <span class="nx">textData</span><span class="p">.</span><span class="kr">class</span><span class="p">);</span> <span class="p">}</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-3" id="section-3">&#182;</a> </div> <div class="dox"> <div class="summary"><p>textData.text.split(/<br\/?>/ig).forEach(function(rowText){ var span = textElem.append(&#39;tspan&#39;); span.attr(&#39;x&#39;, textData.x +textData.textMargin); span.attr(&#39;dy&#39;, textData.dy); span.text(rowText); }); </p> </div> <div class="body"> </div> </div> </td> <td class="code highlight"><div class="highlight"><pre> <span class="kd">var</span> <span class="nx">span</span> <span class="o">=</span> <span class="nx">textElem</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">&#39;tspan&#39;</span><span class="p">);</span> <span class="nx">span</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;x&#39;</span><span class="p">,</span> <span class="nx">textData</span><span class="p">.</span><span class="nx">x</span><span class="p">);</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4" id="section-4">&#182;</a> </div> <p>span.attr(&#39;dy&#39;, textData.dy);</p> </td> <td class="code highlight"><div class="highlight"><pre> <span class="nx">span</span><span class="p">.</span><span class="nx">text</span><span class="p">(</span><span class="nx">nText</span><span class="p">);</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5" id="section-5">&#182;</a> </div> <p>if(typeof textElem.textwrap !== &#39;undefined&#39;){ textElem.textwrap({ x: textData.x, // bounding box is 300 pixels from the left y: textData.y, // bounding box is 400 pixels from the top width: width, // bounding box is 500 pixels across height: 1800 // bounding box is 600 pixels tall }, textData.textMargin); }</p> </td> <td class="code highlight"><div class="highlight"><pre> <span class="k">return</span> <span class="nx">textElem</span><span class="p">;</span> <span class="p">};</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">drawLabel</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">elem</span> <span class="p">,</span> <span class="nx">txtObject</span><span class="p">){</span> <span class="kd">var</span> <span class="nx">rectData</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">getNoteRect</span><span class="p">();</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span> <span class="nx">txtObject</span><span class="p">.</span><span class="nx">x</span><span class="p">;</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="nx">txtObject</span><span class="p">.</span><span class="nx">y</span><span class="p">;</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">width</span> <span class="o">=</span> <span class="mi">50</span><span class="p">;</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">height</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">fill</span> <span class="o">=</span> <span class="s1">&#39;#526e52&#39;</span><span class="p">;</span> <span class="nx">rectData</span><span class="p">.</span><span class="nx">stroke</span> <span class="o">=</span> <span class="s1">&#39;none&#39;</span><span class="p">;</span> <span class="nx">rectData</span><span class="p">.</span><span class="kr">class</span> <span class="o">=</span> <span class="s1">&#39;labelBox&#39;</span><span class="p">;</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6" id="section-6">&#182;</a> </div> <p>rectData.color = &#39;white&#39;;</p> </td> <td class="code highlight"><div class="highlight"><pre> <span class="nx">exports</span><span class="p">.</span><span class="nx">drawRect</span><span class="p">(</span><span class="nx">elem</span><span class="p">,</span> <span class="nx">rectData</span><span class="p">);</span> <span class="nx">txtObject</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="nx">txtObject</span><span class="p">.</span><span class="nx">y</span> <span class="o">+</span> <span class="nx">txtObject</span><span class="p">.</span><span class="nx">labelMargin</span><span class="p">;</span> <span class="nx">txtObject</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span> <span class="nx">txtObject</span><span class="p">.</span><span class="nx">x</span> <span class="o">+</span> <span class="mf">0.5</span><span class="o">*</span><span class="nx">txtObject</span><span class="p">.</span><span class="nx">labelMargin</span><span class="p">;</span> <span class="nx">txtObject</span><span class="p">.</span><span class="nx">fill</span> <span class="o">=</span> <span class="s1">&#39;white&#39;</span><span class="p">;</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">drawText</span><span class="p">(</span><span class="nx">elem</span><span class="p">,</span> <span class="nx">txtObject</span><span class="p">);</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7" id="section-7">&#182;</a> </div> <p>return textElem;</p> </td> <td class="code highlight"><div class="highlight"><pre> <span class="p">};</span> <span class="kd">var</span> <span class="nx">actorCnt</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8" id="section-8">&#182;</a> </div> <div class="dox"> <div class="summary"><p>Draws an actor in the diagram with the attaced line</p> </div> <div class="body"> </div> <div class="details"> <div class="dox_tag_title">Params</div> <div class="dox_tag_detail"> <span class="dox_tag_name">center</span> <span><ul> <li>The center of the the actor</li> </ul> </span> </div> <div class="dox_tag_detail"> <span class="dox_tag_name">pos</span> <span>The position if the actor in the liost of actors </span> </div> <div class="dox_tag_detail"> <span class="dox_tag_name">description</span> <span>The text in the box </span> </div> </div> </div> </td> <td class="code highlight"><div class="highlight"><pre> <span class="nx">exports</span><span class="p">.</span><span class="nx">drawActor</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">elem</span><span class="p">,</span> <span class="nx">left</span><span class="p">,</span> <span class="nx">verticalPos</span><span class="p">,</span> <span class="nx">description</span><span class="p">,</span><span class="nx">conf</span><span class="p">){</span> <span class="kd">var</span> <span class="nx">center</span> <span class="o">=</span> <span class="nx">left</span> <span class="o">+</span> <span class="p">(</span><span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="o">/</span><span class="mi">2</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">g</span> <span class="o">=</span> <span class="nx">elem</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;g&quot;</span><span class="p">);</span> <span class="k">if</span><span class="p">(</span><span class="nx">verticalPos</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="nx">actorCnt</span><span class="o">++</span><span class="p">;</span> <span class="nx">g</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;line&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">,</span> <span class="s1">&#39;actor&#39;</span><span class="o">+</span><span class="nx">actorCnt</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;x1&quot;</span><span class="p">,</span> <span class="nx">center</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;y1&quot;</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;x2&quot;</span><span class="p">,</span> <span class="nx">center</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;y2&quot;</span><span class="p">,</span> <span class="mi">2000</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;class&quot;</span><span class="p">,</span> <span class="s1">&#39;actor-line&#39;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;stroke-width&quot;</span><span class="p">,</span> <span class="s1">&#39;0.5px&#39;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;stroke&quot;</span><span class="p">,</span> <span class="s1">&#39;#999&#39;</span><span class="p">);</span> <span class="p">}</span> <span class="kd">var</span> <span class="nx">rect</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">getNoteRect</span><span class="p">();</span> <span class="nx">rect</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span> <span class="nx">left</span><span class="p">;</span> <span class="nx">rect</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="nx">verticalPos</span><span class="p">;</span> <span class="nx">rect</span><span class="p">.</span><span class="nx">fill</span> <span class="o">=</span> <span class="s1">&#39;#eaeaea&#39;</span><span class="p">;</span> <span class="nx">rect</span><span class="p">.</span><span class="nx">width</span> <span class="o">=</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="p">;</span> <span class="nx">rect</span><span class="p">.</span><span class="nx">height</span> <span class="o">=</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">height</span><span class="p">;</span> <span class="nx">rect</span><span class="p">.</span><span class="kr">class</span> <span class="o">=</span> <span class="s1">&#39;actor&#39;</span><span class="p">;</span> <span class="nx">rect</span><span class="p">.</span><span class="nx">rx</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">rect</span><span class="p">.</span><span class="nx">ry</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">drawRect</span><span class="p">(</span><span class="nx">g</span><span class="p">,</span> <span class="nx">rect</span><span class="p">);</span> <span class="nx">g</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;text&quot;</span><span class="p">)</span> <span class="c1">// text label for the x axis</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;x&quot;</span><span class="p">,</span> <span class="nx">center</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;y&quot;</span><span class="p">,</span> <span class="nx">verticalPos</span> <span class="o">+</span> <span class="p">(</span><span class="nx">conf</span><span class="p">.</span><span class="nx">height</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span><span class="o">+</span><span class="mi">5</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;class&#39;</span><span class="p">,</span><span class="s1">&#39;actor&#39;</span><span class="p">)</span> <span class="p">.</span><span class="nx">style</span><span class="p">(</span><span class="s2">&quot;text-anchor&quot;</span><span class="p">,</span> <span class="s2">&quot;middle&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">text</span><span class="p">(</span><span class="nx">description</span><span class="p">)</span> <span class="p">;</span> <span class="p">};</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9" id="section-9">&#182;</a> </div> <div class="dox"> <div class="summary"><p>Draws an actor in the diagram with the attaced line</p> </div> <div class="body"> </div> <div class="details"> <div class="dox_tag_title">Params</div> <div class="dox_tag_detail"> <span class="dox_tag_name">center</span> <span><ul> <li>The center of the the actor</li> </ul> </span> </div> <div class="dox_tag_detail"> <span class="dox_tag_name">pos</span> <span>The position if the actor in the list of actors </span> </div> <div class="dox_tag_detail"> <span class="dox_tag_name">description</span> <span>The text in the box </span> </div> </div> </div> </td> <td class="code highlight"><div class="highlight"><pre> <span class="nx">exports</span><span class="p">.</span><span class="nx">drawLoop</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">elem</span><span class="p">,</span><span class="nx">bounds</span><span class="p">,</span><span class="nx">labelText</span><span class="p">,</span> <span class="nx">conf</span><span class="p">){</span> <span class="kd">var</span> <span class="nx">g</span> <span class="o">=</span> <span class="nx">elem</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;g&quot;</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">drawLoopLine</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">startx</span><span class="p">,</span><span class="nx">starty</span><span class="p">,</span><span class="nx">stopx</span><span class="p">,</span><span class="nx">stopy</span><span class="p">){</span> <span class="nx">g</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;line&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;x1&quot;</span><span class="p">,</span> <span class="nx">startx</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;y1&quot;</span><span class="p">,</span> <span class="nx">starty</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;x2&quot;</span><span class="p">,</span> <span class="nx">stopx</span> <span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;y2&quot;</span><span class="p">,</span> <span class="nx">stopy</span> <span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;stroke-width&quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;stroke&quot;</span><span class="p">,</span> <span class="s2">&quot;#526e52&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;class&#39;</span><span class="p">,</span><span class="s1">&#39;loopLine&#39;</span><span class="p">);</span> <span class="p">};</span> <span class="nx">drawLoopLine</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">);</span> <span class="nx">drawLoopLine</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">);</span> <span class="nx">drawLoopLine</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">);</span> <span class="nx">drawLoopLine</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">);</span> <span class="k">if</span><span class="p">(</span><span class="k">typeof</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">elsey</span> <span class="o">!==</span> <span class="s1">&#39;undefined&#39;</span><span class="p">){</span> <span class="nx">drawLoopLine</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">elsey</span><span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span><span class="p">,</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">elsey</span> <span class="p">);</span> <span class="p">}</span> <span class="kd">var</span> <span class="nx">txt</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">getTextObj</span><span class="p">();</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">text</span> <span class="o">=</span> <span class="nx">labelText</span><span class="p">;</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">;</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">;</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">labelMargin</span> <span class="o">=</span> <span class="mf">1.5</span> <span class="o">*</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">;</span> <span class="nx">txt</span><span class="p">.</span><span class="kr">class</span> <span class="o">=</span> <span class="s1">&#39;labelText&#39;</span><span class="p">;</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">fill</span> <span class="o">=</span> <span class="s1">&#39;white&#39;</span><span class="p">;</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">drawLabel</span><span class="p">(</span><span class="nx">g</span><span class="p">,</span><span class="nx">txt</span><span class="p">);</span> <span class="nx">txt</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">getTextObj</span><span class="p">();</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">text</span> <span class="o">=</span> <span class="s1">&#39;[ &#39;</span> <span class="o">+</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">title</span> <span class="o">+</span> <span class="s1">&#39; ]&#39;</span><span class="p">;</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span> <span class="o">+</span> <span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="o">-</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">;</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span> <span class="o">+</span> <span class="mf">1.5</span> <span class="o">*</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">;</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">anchor</span> <span class="o">=</span> <span class="s1">&#39;middle&#39;</span><span class="p">;</span> <span class="nx">txt</span><span class="p">.</span><span class="kr">class</span> <span class="o">=</span> <span class="s1">&#39;loopText&#39;</span><span class="p">;</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">drawText</span><span class="p">(</span><span class="nx">g</span><span class="p">,</span><span class="nx">txt</span><span class="p">);</span> <span class="k">if</span><span class="p">(</span><span class="k">typeof</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">elseText</span> <span class="o">!==</span> <span class="s1">&#39;undefined&#39;</span><span class="p">)</span> <span class="p">{</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">text</span> <span class="o">=</span> <span class="s1">&#39;[ &#39;</span> <span class="o">+</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">elseText</span> <span class="o">+</span> <span class="s1">&#39; ]&#39;</span><span class="p">;</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="nx">bounds</span><span class="p">.</span><span class="nx">elsey</span> <span class="o">+</span> <span class="mf">1.5</span> <span class="o">*</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">;</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">drawText</span><span class="p">(</span><span class="nx">g</span><span class="p">,</span> <span class="nx">txt</span><span class="p">);</span> <span class="p">}</span> <span class="p">};</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10" id="section-10">&#182;</a> </div> <div class="dox"> <div class="summary"><p>Setup arrow head and define the marker. The result is appended to the svg.</p> </div> <div class="body"> </div> </div> </td> <td class="code highlight"><div class="highlight"><pre> <span class="nx">exports</span><span class="p">.</span><span class="nx">insertArrowHead</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">elem</span><span class="p">){</span> <span class="nx">elem</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;defs&quot;</span><span class="p">).</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;marker&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">,</span> <span class="s2">&quot;arrowhead&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;refX&quot;</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;refY&quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;markerWidth&quot;</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;markerHeight&quot;</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;orient&quot;</span><span class="p">,</span> <span class="s2">&quot;auto&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;path&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;d&quot;</span><span class="p">,</span> <span class="s2">&quot;M 0,0 V 4 L6,2 Z&quot;</span><span class="p">);</span> <span class="c1">//this is actual shape for arrowhead</span> <span class="p">};</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-11" id="section-11">&#182;</a> </div> <div class="dox"> <div class="summary"><p>Setup arrow head and define the marker. The result is appended to the svg.</p> </div> <div class="body"> </div> </div> </td> <td class="code highlight"><div class="highlight"><pre> <span class="nx">exports</span><span class="p">.</span><span class="nx">insertArrowCrossHead</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">elem</span><span class="p">){</span> <span class="kd">var</span> <span class="nx">defs</span> <span class="o">=</span> <span class="nx">elem</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;defs&quot;</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">marker</span> <span class="o">=</span> <span class="nx">defs</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;marker&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">,</span> <span class="s2">&quot;crosshead&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;markerWidth&quot;</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;markerHeight&quot;</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;orient&quot;</span><span class="p">,</span> <span class="s2">&quot;auto&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;refX&quot;</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;refY&quot;</span><span class="p">,</span> <span class="mi">4</span><span class="p">);</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-12" id="section-12">&#182;</a> </div> <p>The arrow</p> </td> <td class="code highlight"><div class="highlight"><pre> <span class="nx">marker</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;path&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;fill&quot;</span><span class="p">,</span><span class="s1">&#39;black&#39;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;stroke&quot;</span><span class="p">,</span><span class="s1">&#39;#000000&#39;</span><span class="p">)</span> <span class="p">.</span><span class="nx">style</span><span class="p">(</span><span class="s2">&quot;stroke-dasharray&quot;</span><span class="p">,</span> <span class="p">(</span><span class="s2">&quot;0, 0&quot;</span><span class="p">))</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;stroke-width&quot;</span><span class="p">,</span><span class="s1">&#39;1px&#39;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;d&quot;</span><span class="p">,</span> <span class="s2">&quot;M 9,2 V 6 L16,4 Z&quot;</span><span class="p">);</span> </pre></div> </td> </tr> <tr> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13" id="section-13">&#182;</a> </div> <p>The cross</p> </td> <td class="code highlight"><div class="highlight"><pre> <span class="nx">marker</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">&quot;path&quot;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;fill&quot;</span><span class="p">,</span><span class="s1">&#39;none&#39;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;stroke&quot;</span><span class="p">,</span><span class="s1">&#39;#000000&#39;</span><span class="p">)</span> <span class="p">.</span><span class="nx">style</span><span class="p">(</span><span class="s2">&quot;stroke-dasharray&quot;</span><span class="p">,</span> <span class="p">(</span><span class="s2">&quot;0, 0&quot;</span><span class="p">))</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;stroke-width&quot;</span><span class="p">,</span><span class="s1">&#39;1px&#39;</span><span class="p">)</span> <span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&quot;d&quot;</span><span class="p">,</span> <span class="s2">&quot;M 0,1 L 6,7 M 6,1 L 0,7&quot;</span><span class="p">)</span> <span class="p">;</span> <span class="c1">//this is actual shape for arrowhead</span> <span class="p">};</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">getTextObj</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span> <span class="kd">var</span> <span class="nx">txt</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">x</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">y</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">&#39;fill&#39;</span><span class="o">:</span><span class="s1">&#39;black&#39;</span><span class="p">,</span> <span class="s1">&#39;text-anchor&#39;</span><span class="o">:</span> <span class="s1">&#39;start&#39;</span><span class="p">,</span> <span class="nx">style</span><span class="o">:</span> <span class="s1">&#39;#666&#39;</span><span class="p">,</span> <span class="nx">width</span><span class="o">:</span> <span class="mi">100</span><span class="p">,</span> <span class="nx">height</span><span class="o">:</span> <span class="mi">100</span><span class="p">,</span> <span class="nx">textMargin</span><span class="o">:</span><span class="mi">0</span><span class="p">,</span> <span class="nx">rx</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">ry</span><span class="o">:</span> <span class="mi">0</span> <span class="p">};</span> <span class="k">return</span> <span class="nx">txt</span><span class="p">;</span> <span class="p">};</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">getNoteRect</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span> <span class="kd">var</span> <span class="nx">rect</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">x</span> <span class="o">:</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">y</span> <span class="o">:</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">fill</span> <span class="o">:</span> <span class="s1">&#39;#EDF2AE&#39;</span><span class="p">,</span> <span class="nx">stroke</span> <span class="o">:</span> <span class="s1">&#39;#666&#39;</span><span class="p">,</span> <span class="nx">width</span> <span class="o">:</span> <span class="mi">100</span><span class="p">,</span> <span class="nx">anchor</span> <span class="o">:</span> <span class="s1">&#39;start&#39;</span><span class="p">,</span> <span class="nx">height</span> <span class="o">:</span> <span class="mi">100</span><span class="p">,</span> <span class="nx">rx</span> <span class="o">:</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">ry</span> <span class="o">:</span> <span class="mi">0</span> <span class="p">};</span> <span class="k">return</span> <span class="nx">rect</span><span class="p">;</span> <span class="p">};</span> </pre></div> </td> </tr> </tbody> </table> </div> </body> </html>