mermaid
Version:
Markdownish syntax for generating flowcharts, sequence diagrams and gantt charts.
510 lines (453 loc) • 45.2 kB
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">¶</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">¶</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">'../../logger'</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">"rect"</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">"x"</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">"y"</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">"fill"</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">"stroke"</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">"width"</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">"height"</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">"rx"</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">"ry"</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">'undefined'</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">"class"</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">¶</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">/<br\/?>/ig</span><span class="p">,</span><span class="s1">' '</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">'text'</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">'x'</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">'y'</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">'text-anchor'</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">'fill'</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">'undefined'</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">"class"</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">¶</a>
</div>
<div class="dox">
<div class="summary"><p>textData.text.split(/<br\/?>/ig).forEach(function(rowText){
var span = textElem.append('tspan');
span.attr('x', textData.x +textData.textMargin);
span.attr('dy', 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">'tspan'</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">'x'</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">¶</a>
</div>
<p>span.attr('dy', 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">¶</a>
</div>
<p>if(typeof textElem.textwrap !== 'undefined'){
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">'#526e52'</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">'none'</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">'labelBox'</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">¶</a>
</div>
<p>rectData.color = 'white';</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">'white'</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">¶</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">¶</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">"g"</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">"line"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"id"</span><span class="p">,</span> <span class="s1">'actor'</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">"x1"</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">"y1"</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">"x2"</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">"y2"</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">"class"</span><span class="p">,</span> <span class="s1">'actor-line'</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"stroke-width"</span><span class="p">,</span> <span class="s1">'0.5px'</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"stroke"</span><span class="p">,</span> <span class="s1">'#999'</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">'#eaeaea'</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">'actor'</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">"text"</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">"x"</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">"y"</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">'class'</span><span class="p">,</span><span class="s1">'actor'</span><span class="p">)</span>
<span class="p">.</span><span class="nx">style</span><span class="p">(</span><span class="s2">"text-anchor"</span><span class="p">,</span> <span class="s2">"middle"</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">¶</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">"g"</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">"line"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"x1"</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">"y1"</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">"x2"</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">"y2"</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">"stroke-width"</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">"stroke"</span><span class="p">,</span> <span class="s2">"#526e52"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">'class'</span><span class="p">,</span><span class="s1">'loopLine'</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">'undefined'</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">'labelText'</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">'white'</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">'[ '</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">' ]'</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">'middle'</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">'loopText'</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">'undefined'</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">'[ '</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">' ]'</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">¶</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">"defs"</span><span class="p">).</span><span class="nx">append</span><span class="p">(</span><span class="s2">"marker"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"id"</span><span class="p">,</span> <span class="s2">"arrowhead"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"refX"</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">"refY"</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">"markerWidth"</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">"markerHeight"</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">"orient"</span><span class="p">,</span> <span class="s2">"auto"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">"path"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"d"</span><span class="p">,</span> <span class="s2">"M 0,0 V 4 L6,2 Z"</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">¶</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">"defs"</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">"marker"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"id"</span><span class="p">,</span> <span class="s2">"crosshead"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"markerWidth"</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">"markerHeight"</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">"orient"</span><span class="p">,</span> <span class="s2">"auto"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"refX"</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">"refY"</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">¶</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">"path"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"fill"</span><span class="p">,</span><span class="s1">'black'</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"stroke"</span><span class="p">,</span><span class="s1">'#000000'</span><span class="p">)</span>
<span class="p">.</span><span class="nx">style</span><span class="p">(</span><span class="s2">"stroke-dasharray"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"0, 0"</span><span class="p">))</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"stroke-width"</span><span class="p">,</span><span class="s1">'1px'</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"d"</span><span class="p">,</span> <span class="s2">"M 9,2 V 6 L16,4 Z"</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">¶</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">"path"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"fill"</span><span class="p">,</span><span class="s1">'none'</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"stroke"</span><span class="p">,</span><span class="s1">'#000000'</span><span class="p">)</span>
<span class="p">.</span><span class="nx">style</span><span class="p">(</span><span class="s2">"stroke-dasharray"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"0, 0"</span><span class="p">))</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"stroke-width"</span><span class="p">,</span><span class="s1">'1px'</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"d"</span><span class="p">,</span> <span class="s2">"M 0,1 L 6,7 M 6,1 L 0,7"</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">'fill'</span><span class="o">:</span><span class="s1">'black'</span><span class="p">,</span>
<span class="s1">'text-anchor'</span><span class="o">:</span> <span class="s1">'start'</span><span class="p">,</span>
<span class="nx">style</span><span class="o">:</span> <span class="s1">'#666'</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">'#EDF2AE'</span><span class="p">,</span>
<span class="nx">stroke</span> <span class="o">:</span> <span class="s1">'#666'</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">'start'</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>