UNPKG

react-digraph

Version:
345 lines (344 loc) 10.6 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for src/components/graph-controls.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-controls.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Statements</span> <span class='fraction'>13/13</span> </div> <div class='fl pad1y space-right2'> <span class="strong">70.83% </span> <span class="quiet">Branches</span> <span class='fraction'>17/24</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Functions</span> <span class='fraction'>5/5</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Lines</span> <span class='fraction'>13/13</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</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-yes">2x</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">7x</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">4x</span> <span class="cline-any cline-yes">4x</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">25x</span> <span class="cline-any cline-yes">25x</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">4x</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-yes">2x</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">8x</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></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; /* Zoom slider and zoom to fit controls for GraphView */ &nbsp; import React from 'react'; import FaExpand from 'react-icons/lib/fa/expand'; &nbsp; const steps = 100; // Slider steps &nbsp; type IGraphControlProps = { maxZoom?: number; minZoom?: number; zoomLevel: number; zoomToFit: (event: SyntheticMouseEvent&lt;HTMLButtonElement&gt;) =&gt; void; modifyZoom: (delta: number) =&gt; boolean; } &nbsp; class GraphControls extends React.Component&lt;IGraphControlProps&gt; { static defaultProps = { maxZoom: 1.5, minZoom: 0.15 }; &nbsp; constructor(props: IGraphControlProps) { super(props); } &nbsp; // Convert slider val (0-steps) to original zoom value range sliderToZoom(val: number) { const { minZoom, maxZoom } = this.props; return val * ((maxZoom || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span> - (minZoom || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span>) / steps + (minZoom || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span>; } &nbsp; // Convert zoom val (minZoom-maxZoom) to slider range zoomToSlider(val: number) { const { minZoom, maxZoom } = this.props; return (val - (minZoom || 0)) * steps / ((maxZoom || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span> - (minZoom || 0)); } &nbsp; // Modify current zoom of graph-view zoom = (e: any) =&gt; { const { minZoom, maxZoom } = this.props; const sliderVal = e.target.value; const zoomLevelNext = this.sliderToZoom(sliderVal); const delta = zoomLevelNext - this.props.zoomLevel; &nbsp; if (zoomLevelNext &lt;= (maxZoom || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span> &amp;&amp; zoomLevelNext &gt;= (minZoom || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span>) { this.props.modifyZoom(delta); } } &nbsp; render() { return ( &lt;div className="graph-controls"&gt; &lt;div className="slider-wrapper"&gt; &lt;span&gt;-&lt;/span&gt; &lt;input type="range" className="slider" min={this.zoomToSlider(this.props.minZoom || 0)} max={this.zoomToSlider(this.props.maxZoom || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span>} value={this.zoomToSlider(this.props.zoomLevel)} onChange={this.zoom} step="1" /&gt; &lt;span&gt;+&lt;/span&gt; &lt;/div&gt; &lt;button className="slider-button" onMouseDown={this.props.zoomToFit}&gt; &lt;FaExpand /&gt; &lt;/button&gt; &lt;/div&gt; ); } } &nbsp; export default GraphControls; &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 Tue Oct 02 2018 14:30:12 GMT-0700 (PDT) </div> </div> <script src="../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../sorter.js"></script> </body> </html>