UNPKG

react-digraph

Version:
411 lines (410 loc) 12.1 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for src/components/graph-util.js</title> <meta charset="utf-8" /> <link rel="stylesheet" href="../../prettify.css" /> <link rel="stylesheet" href="../../base.css" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type='text/css'> .coverage-summary .sorter { background-image: url(../../sort-arrow-sprite.png); } </style> </head> <body> <div class='wrapper'> <div class='pad1'> <h1> <a href="../../index.html">All files</a> / <a href="index.html">src/components</a> graph-util.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">95.12% </span> <span class="quiet">Statements</span> <span class='fraction'>39/41</span> </div> <div class='fl pad1y space-right2'> <span class="strong">86.84% </span> <span class="quiet">Branches</span> <span class='fraction'>33/38</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Functions</span> <span class='fraction'>10/10</span> </div> <div class='fl pad1y space-right2'> <span class="strong">95.12% </span> <span class="quiet">Lines</span> <span class='fraction'>39/41</span> </div> </div> </div> <div class='status-line high'></div> <pre><table class="coverage"> <tr><td class="line-count quiet">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">77x</span> <span class="cline-any cline-yes">77x</span> <span class="cline-any cline-yes">27x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">77x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">77x</span> <span class="cline-any cline-yes">77x</span> <span class="cline-any cline-yes">16x</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">16x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">77x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">79x</span> <span class="cline-any cline-yes">18x</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">18x</span> <span class="cline-any cline-yes">18x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">18x</span> <span class="cline-any cline-yes">5x</span> <span class="cline-any cline-yes">5x</span> <span class="cline-any cline-yes">5x</span> <span class="cline-any cline-yes">5x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2x</span> <span class="cline-any cline-yes">2x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">5x</span> <span class="cline-any cline-yes">2x</span> <span class="cline-any cline-yes">3x</span> <span class="cline-any cline-yes">2x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">215x</span> <span class="cline-any cline-yes">215x</span> <span class="cline-any cline-yes">427x</span> <span class="cline-any cline-yes">260x</span> <span class="cline-any cline-yes">167x</span> <span class="cline-any cline-yes">166x</span> <span class="cline-any cline-yes">258x</span> <span class="cline-any cline-yes">12x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">215x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// @flow /* Copyright(c) 2018 Uber Technologies, Inc. &nbsp; Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at &nbsp; http://www.apache.org/licenses/LICENSE-2.0 &nbsp; Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ &nbsp; import { type IEdge } from './edge'; import { type INode } from './node'; &nbsp; export type INodeMapNode = { node: INode; originalArrIndex: number; incomingEdges: IEdge[]; outgoingEdges: IEdge[]; parents: INode[]; children: INode[]; }; &nbsp; class GraphUtils { static getNodesMap(arr: INode[], key: string) { const map = {}; arr.forEach((item, index) =&gt; { map[`key-${item[key]}`] = { children: [], incomingEdges: [], node: item, originalArrIndex: index, outgoingEdges: [], parents: [] }; }); return map; } &nbsp; static getEdgesMap(arr: IEdge[]) { const map = {}; arr.forEach((item, index) =&gt; { <span class="missing-if-branch" title="if path not taken" >I</span>if (!item.target) { <span class="cstat-no" title="statement not covered" > return;</span> } map[`${item.source || <span class="branch-1 cbranch-no" title="branch not covered" >''}</span>_${item.target}`] = { edge: item, originalArrIndex: index }; }); return map; } &nbsp; static linkNodesAndEdges(nodesMap: any, edges: IEdge[]) { edges.forEach((edge) =&gt; { <span class="missing-if-branch" title="if path not taken" >I</span>if (!edge.target) { <span class="cstat-no" title="statement not covered" > return;</span> } const nodeMapSourceNode = nodesMap[`key-${edge.source || <span class="branch-1 cbranch-no" title="branch not covered" >''}</span>`]; const nodeMapTargetNode = nodesMap[`key-${edge.target}`]; // avoid an orphaned edge if (nodeMapSourceNode &amp;&amp; nodeMapTargetNode) { nodeMapSourceNode.outgoingEdges.push(edge); nodeMapTargetNode.incomingEdges.push(edge); nodeMapSourceNode.children.push(nodeMapTargetNode); nodeMapTargetNode.parents.push(nodeMapSourceNode); } }); } &nbsp; static removeElementFromDom(id: string) { const container = document.getElementById(id); if (container &amp;&amp; container.parentNode) { container.parentNode.removeChild(container); return true; } return false; } &nbsp; static findParent(element: any, selector: string) { if (element &amp;&amp; element.matches &amp;&amp; element.matches(selector)) { return element; } else if (element &amp;&amp; element.parentNode) { return GraphUtils.findParent(element.parentNode, selector); } return null; } &nbsp; static classNames(...args: any[]) { let className = ''; for (const arg of args) { if (typeof arg === 'string' || typeof arg === 'number') { className += ` ${arg}`; } else if (typeof arg === 'object' &amp;&amp; !Array.isArray(arg) &amp;&amp; arg !== null) { Object.keys(arg).forEach((key) =&gt; { if (Boolean(arg[key])) { className += ` ${key}`; } }); } else <span class="missing-if-branch" title="else path not taken" >E</span>if (Array.isArray(arg)) { className += ` ${arg.join(' ')}`; } } &nbsp; return className.trim(); } } &nbsp; export default GraphUtils; &nbsp;</pre></td></tr> </table></pre> <div class='push'></div><!-- for sticky footer --> </div><!-- /wrapper --> <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Mon Oct 08 2018 13:14:28 GMT-0700 (Pacific Daylight Time) </div> </div> <script src="../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../sorter.js"></script> </body> </html>