diff --git a/assets/README.md b/assets/README.md index 62586157b68b6dd1585fe2073684309d1dd26fe7..c868a2bd232748de8ecc8d19e65c6ec7a14f2a26 100644 --- a/assets/README.md +++ b/assets/README.md @@ -1,10 +1,10 @@ # Projekt CiS-Projekt 2021/22 -Citation network made with **D3.js** +Zitierungsnetzwerk erstellt mit **D3.js** -## Usage -### Input -Json file **json\_text.json** in directory +## Verwendung des Porgramms +### Eingabe +Json-Datei **json\_text.json** im Verzeichnis mit folgendem Format ```json { "nodes": [ @@ -27,21 +27,21 @@ Json file **json\_text.json** in directory } ``` -### Display the Citation Network -Starting a python web server: +### Anzeigen des Zitierungsnetzwerks +Starten eines Python Web Servers: ```sh cd <path to file> &&python3 -m http.server <port> ``` -Access to the server: +Zugriff auf den Server: [http://0.0.0.0/:\<port\>](http://0.0.0.0/:<port>) -## Files in Directory -- **index.html**: webpage -- **cn_default.js**: javascript code for force-directed graph, text elements and legend (default version) -- **cn_timeline.js**: javascript code for force-directed graph, text elements and legend (timeline version) -- **json_text.json**: example data +## Dateien im Verzeichnis +- **index.html**: Webseite +- **cn_default.js**: JavaScript-Code für den Graphen in Standardansicht +- **cn_timeline.js**: JavaScript-Code für den Graphen in Zeitstrahlansicht +- **json_text.json**: Beispiel-Daten -## Authors +## Authoren - Katja Ehlers -- Merle Stahl +- Merle Stahl \ No newline at end of file diff --git a/assets/documentation/documentation_cn_default/files.html b/assets/documentation/documentation_cn_default/files.html new file mode 100644 index 0000000000000000000000000000000000000000..10a01d06df51fa659a399bf4777cbf7ef22c9f70 --- /dev/null +++ b/assets/documentation/documentation_cn_default/files.html @@ -0,0 +1,216 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + + <title>JsDoc Reference - File Index</title> + <meta name="generator" content="JsDoc Toolkit" /> + + <style type="text/css"> + /* default.css */ +body +{ + font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif; + width: 800px; +} + +.header +{ + clear: both; + background-color: #ccc; + padding: 8px; +} + +h1 +{ + font-size: 150%; + font-weight: bold; + padding: 0; + margin: 1em 0 0 .3em; +} + +hr +{ + border: none 0; + border-top: 1px solid #7F8FB1; + height: 1px; +} + +pre.code +{ + display: block; + padding: 8px; + border: 1px dashed #ccc; +} + +#index +{ + margin-top: 24px; + float: left; + width: 160px; + position: absolute; + left: 8px; + background-color: #F3F3F3; + padding: 8px; +} + +#content +{ + margin-left: 190px; + width: 600px; +} + +.classList +{ + list-style-type: none; + padding: 0; + margin: 0 0 0 8px; + font-family: arial, sans-serif; + font-size: 1em; + overflow: auto; +} + +.classList li +{ + padding: 0; + margin: 0 0 8px 0; +} + +.summaryTable { width: 100%; } + +h1.classTitle +{ + font-size:170%; + line-height:130%; +} + +h2 { font-size: 110%; } +caption, div.sectionTitle +{ + background-color: #7F8FB1; + color: #fff; + font-size:130%; + text-align: left; + padding: 2px 6px 2px 6px; + border: 1px #7F8FB1 solid; +} + +div.sectionTitle { margin-bottom: 8px; } +.summaryTable thead { display: none; } + +.summaryTable td +{ + vertical-align: top; + padding: 4px; + border-bottom: 1px #7F8FB1 solid; + border-right: 1px #7F8FB1 solid; +} + +/*col#summaryAttributes {}*/ +.summaryTable td.attributes +{ + border-left: 1px #7F8FB1 solid; + width: 140px; + text-align: right; +} + +td.attributes, .fixedFont +{ + line-height: 15px; + color: #002EBE; + font-family: "Courier New",Courier,monospace; + font-size: 13px; +} + +.summaryTable td.nameDescription +{ + text-align: left; + font-size: 13px; + line-height: 15px; +} + +.summaryTable td.nameDescription, .description +{ + line-height: 15px; + padding: 4px; + padding-left: 4px; +} + +.summaryTable { margin-bottom: 8px; } + +ul.inheritsList +{ + list-style: square; + margin-left: 20px; + padding-left: 0; +} + +.detailList { + margin-left: 20px; + line-height: 15px; +} +.detailList dt { margin-left: 20px; } + +.detailList .heading +{ + font-weight: bold; + padding-bottom: 6px; + margin-left: 0; +} + +.light, td.attributes, .light a:link, .light a:visited +{ + color: #777; + font-style: italic; +} + +.fineprint +{ + text-align: right; + font-size: 10px; +} + </style> + </head> + + <body> + <div id="header"> +</div> + + <div id="index"> + <div align="center"><a href="index.html">Class Index</a> +| <a href="files.html">File Index</a></div> +<hr /> +<h2>Classes</h2> +<ul class="classList"> + + <li><i><a href="symbols/_global_.html">_global_</a></i></li> + +</ul> +<hr /> + </div> + + <div id="content"> + <h1 class="classTitle">File Index</h1> + + + <div> + <h2><a href="symbols/src/cn_default.js.html">cn_default.js</a></h2> + + <dl> + + + + + </dl> + </div> + <hr /> + + + </div> + <div class="fineprint" style="clear:both"> + + Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blankt">JsDoc Toolkit</a> 2.4.0 on Fri Jan 28 2022 12:32:45 GMT+0100 (MEZ) + </div> + </body> +</html> \ No newline at end of file diff --git a/assets/documentation/documentation_cn_default/index.html b/assets/documentation/documentation_cn_default/index.html new file mode 100644 index 0000000000000000000000000000000000000000..57bfd68225c7da0ab21ab15495f671b64f88f56c --- /dev/null +++ b/assets/documentation/documentation_cn_default/index.html @@ -0,0 +1,210 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + + <title>JsDoc Reference - Index</title> + <meta name="generator" content="JsDoc Toolkit" /> + + <style type="text/css"> + /* default.css */ +body +{ + font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif; + width: 800px; +} + +.header +{ + clear: both; + background-color: #ccc; + padding: 8px; +} + +h1 +{ + font-size: 150%; + font-weight: bold; + padding: 0; + margin: 1em 0 0 .3em; +} + +hr +{ + border: none 0; + border-top: 1px solid #7F8FB1; + height: 1px; +} + +pre.code +{ + display: block; + padding: 8px; + border: 1px dashed #ccc; +} + +#index +{ + margin-top: 24px; + float: left; + width: 160px; + position: absolute; + left: 8px; + background-color: #F3F3F3; + padding: 8px; +} + +#content +{ + margin-left: 190px; + width: 600px; +} + +.classList +{ + list-style-type: none; + padding: 0; + margin: 0 0 0 8px; + font-family: arial, sans-serif; + font-size: 1em; + overflow: auto; +} + +.classList li +{ + padding: 0; + margin: 0 0 8px 0; +} + +.summaryTable { width: 100%; } + +h1.classTitle +{ + font-size:170%; + line-height:130%; +} + +h2 { font-size: 110%; } +caption, div.sectionTitle +{ + background-color: #7F8FB1; + color: #fff; + font-size:130%; + text-align: left; + padding: 2px 6px 2px 6px; + border: 1px #7F8FB1 solid; +} + +div.sectionTitle { margin-bottom: 8px; } +.summaryTable thead { display: none; } + +.summaryTable td +{ + vertical-align: top; + padding: 4px; + border-bottom: 1px #7F8FB1 solid; + border-right: 1px #7F8FB1 solid; +} + +/*col#summaryAttributes {}*/ +.summaryTable td.attributes +{ + border-left: 1px #7F8FB1 solid; + width: 140px; + text-align: right; +} + +td.attributes, .fixedFont +{ + line-height: 15px; + color: #002EBE; + font-family: "Courier New",Courier,monospace; + font-size: 13px; +} + +.summaryTable td.nameDescription +{ + text-align: left; + font-size: 13px; + line-height: 15px; +} + +.summaryTable td.nameDescription, .description +{ + line-height: 15px; + padding: 4px; + padding-left: 4px; +} + +.summaryTable { margin-bottom: 8px; } + +ul.inheritsList +{ + list-style: square; + margin-left: 20px; + padding-left: 0; +} + +.detailList { + margin-left: 20px; + line-height: 15px; +} +.detailList dt { margin-left: 20px; } + +.detailList .heading +{ + font-weight: bold; + padding-bottom: 6px; + margin-left: 0; +} + +.light, td.attributes, .light a:link, .light a:visited +{ + color: #777; + font-style: italic; +} + +.fineprint +{ + text-align: right; + font-size: 10px; +} + </style> + </head> + + <body> + <div id="header"> +</div> + + <div id="index"> + <div align="center"><a href="index.html">Class Index</a> +| <a href="files.html">File Index</a></div> +<hr /> +<h2>Classes</h2> +<ul class="classList"> + + <li><i><a href="symbols/_global_.html">_global_</a></i></li> + +</ul> +<hr /> + </div> + + <div id="content"> + <h1 class="classTitle">Class Index</h1> + + + <div> + <h2><a href="symbols/_global_.html">_global_</a></h2> + + </div> + <hr /> + + + </div> + <div class="fineprint" style="clear:both"> + + Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blankt">JsDoc Toolkit</a> 2.4.0 on Fri Jan 28 2022 12:32:45 GMT+0100 (MEZ) + </div> + </body> +</html> \ No newline at end of file diff --git a/assets/documentation/documentation_cn_default/symbols/_global_.html b/assets/documentation/documentation_cn_default/symbols/_global_.html new file mode 100644 index 0000000000000000000000000000000000000000..98e9070e89925a6ba626cedfa6a033b0f3c072c2 --- /dev/null +++ b/assets/documentation/documentation_cn_default/symbols/_global_.html @@ -0,0 +1,1738 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + <meta name="generator" content="JsDoc Toolkit" /> + + <title>JsDoc Reference - _global_</title> + + <style type="text/css"> + /* default.css */ +body +{ + font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif; + width: 800px; +} + +.header +{ + clear: both; + background-color: #ccc; + padding: 8px; +} + +h1 +{ + font-size: 150%; + font-weight: bold; + padding: 0; + margin: 1em 0 0 .3em; +} + +hr +{ + border: none 0; + border-top: 1px solid #7F8FB1; + height: 1px; +} + +pre.code +{ + display: block; + padding: 8px; + border: 1px dashed #ccc; +} + +#index +{ + margin-top: 24px; + float: left; + width: 160px; + position: absolute; + left: 8px; + background-color: #F3F3F3; + padding: 8px; +} + +#content +{ + margin-left: 190px; + width: 600px; +} + +.classList +{ + list-style-type: none; + padding: 0; + margin: 0 0 0 8px; + font-family: arial, sans-serif; + font-size: 1em; + overflow: auto; +} + +.classList li +{ + padding: 0; + margin: 0 0 8px 0; +} + +.summaryTable { width: 100%; } + +h1.classTitle +{ + font-size:170%; + line-height:130%; +} + +h2 { font-size: 110%; } +caption, div.sectionTitle +{ + background-color: #7F8FB1; + color: #fff; + font-size:130%; + text-align: left; + padding: 2px 6px 2px 6px; + border: 1px #7F8FB1 solid; +} + +div.sectionTitle { margin-bottom: 8px; } +.summaryTable thead { display: none; } + +.summaryTable td +{ + vertical-align: top; + padding: 4px; + border-bottom: 1px #7F8FB1 solid; + border-right: 1px #7F8FB1 solid; +} + +/*col#summaryAttributes {}*/ +.summaryTable td.attributes +{ + border-left: 1px #7F8FB1 solid; + width: 140px; + text-align: right; +} + +td.attributes, .fixedFont +{ + line-height: 15px; + color: #002EBE; + font-family: "Courier New",Courier,monospace; + font-size: 13px; +} + +.summaryTable td.nameDescription +{ + text-align: left; + font-size: 13px; + line-height: 15px; +} + +.summaryTable td.nameDescription, .description +{ + line-height: 15px; + padding: 4px; + padding-left: 4px; +} + +.summaryTable { margin-bottom: 8px; } + +ul.inheritsList +{ + list-style: square; + margin-left: 20px; + padding-left: 0; +} + +.detailList { + margin-left: 20px; + line-height: 15px; +} +.detailList dt { margin-left: 20px; } + +.detailList .heading +{ + font-weight: bold; + padding-bottom: 6px; + margin-left: 0; +} + +.light, td.attributes, .light a:link, .light a:visited +{ + color: #777; + font-style: italic; +} + +.fineprint +{ + text-align: right; + font-size: 10px; +} + </style> + </head> + + <body> +<!-- ============================== header ================================= --> + <!-- begin static/header.html --> + <div id="header"> +</div> + <!-- end static/header.html --> + +<!-- ============================== classes index ============================ --> + <div id="index"> + <!-- begin publish.classesIndex --> + <div align="center"><a href="../index.html">Class Index</a> +| <a href="../files.html">File Index</a></div> +<hr /> +<h2>Classes</h2> +<ul class="classList"> + + <li><i><a href="../symbols/_global_.html">_global_</a></i></li> + +</ul> +<hr /> + <!-- end publish.classesIndex --> + </div> + + <div id="content"> +<!-- ============================== class title ============================ --> + <h1 class="classTitle"> + + Built-In Namespace _global_ + </h1> + +<!-- ============================== class summary ========================== --> + <p class="description"> + + + + + + + </p> + +<!-- ============================== constructor summary ==================== --> + + +<!-- ============================== properties summary ===================== --> + + + + <table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class _global_."> + <caption>Field Summary</caption> + <thead> + <tr> + <th scope="col">Field Attributes</th> + <th scope="col">Field Name and Description</th> + </tr> + </thead> + <tbody> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#color">color</a></b> + </div> + <div class="description">scale functions that return y coordinate/color of node depending on group</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#g">g</a></b> + </div> + <div class="description">creates group element</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#intervalId">intervalId</a></b> + </div> + <div class="description">checks at a fixed interval whether the contents of the JSON file have changed + and reloads the program if necessary</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#link">link</a></b> + </div> + <div class="description">creates link object</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#rect">rect</a></b> + </div> + <div class="description">creates a background with a click functionality</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#simulation">simulation</a></b> + </div> + <div class="description">creates a new simulation +updates the positions of the links and nodes when the + state of the layout has changed (simulation has advanced by a tick)</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#svg">svg</a></b> + </div> + <div class="description">creates svg object and associated attributes +applies the zoom behavior to svg</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#svg_legend">svg_legend</a></b> + </div> + <div class="description">creates svg object (legend) with text, circles and arrows</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#to_remove">to_remove</a></b> + </div> + <div class="description">saves highlighted node for click functionality</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#zoom">zoom</a></b> + </div> + <div class="description">creates a new zoom behavior</div> + </td> + </tr> + + </tbody> + </table> + + + + + +<!-- ============================== methods summary ======================== --> + + + + <table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class _global_."> + <caption>Method Summary</caption> + <thead> + <tr> + <th scope="col">Method Attributes</th> + <th scope="col">Method Name and Description</th> + </tr> + </thead> + <tbody> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#click_background">click_background</a></b>() + </div> + <div class="description">removes the highlights of the circles and their links</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#click_node">click_node</a></b>(node) + </div> + <div class="description">sets color of circle and its links to black and removes the previous highlights +displays overview info of node in textbox</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#display_abstract">display_abstract</a></b>(a-) + </div> + <div class="description">displays abstract in textbox if a is true, overview text otherwise</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#dragged_node">dragged_node</a></b>(node) + </div> + <div class="description">applies dragging to the node</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#fix_nodes">fix_nodes</a></b>(this_node) + </div> + <div class="description">fix positions of all nodes except for the current node</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#get_svg_string">get_svg_string</a></b>(svgNode) + </div> + <div class="description">generate svgString</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#handle_tick">handle_tick</a></b>() + </div> + <div class="description">updates the positions of the links and nodes</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#handle_transformation">handle_transformation</a></b>() + </div> + <div class="description">applies the transformation (zooming or dragging) to the g element</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#highlight_button">highlight_button</a></b>(btn) + </div> + <div class="description">sets color of btn to dark gray</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#is_link_for_node">is_link_for_node</a></b>(node, link) + </div> + <div class="description">returns true if link is directly connected to node and false if it is not</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#mark_link">mark_link</a></b>(node) + </div> + <div class="description">sets color of link (line and arrowhead) to black if it is directly connected to node +and to grey otherwise</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#reset_button_highlight">reset_button_highlight</a></b>() + </div> + <div class="description">sets color of all buttons to default light gray</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#reset_view">reset_view</a></b>() + </div> + <div class="description">transforms svg so that the zoom and drag is reset</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#save_svg">save_svg</a></b>() + </div> + <div class="description">save svg as png</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#self_citation">self_citation</a></b>(source, target) + </div> + <div class="description">returns true if journals have a common author (self-citation)</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#start_drag_node">start_drag_node</a></b>(node) + </div> + <div class="description">initializes dragging of the node</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#svg_string_to_image">svg_string_to_image</a></b>(svgString, width, height, format, callback) + </div> + <div class="description">convert svgString to image and export it</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#textbox_content">textbox_content</a></b>(node) + </div> + <div class="description">saves text for overview and abstract of node +outputs node info to textbox</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#update">update</a></b>(nodes, links) + </div> + <div class="description">calls update functions for links and nodes +adds the nodes, links and tick functionality to the simulation</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#update_links">update_links</a></b>(links) + </div> + <div class="description">initializes and shows links (edges)</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#update_marker">update_marker</a></b>(color, target) + </div> + <div class="description">creates arrowhead and returns its url</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#update_nodes">update_nodes</a></b>(nodes) + </div> + <div class="description">initializes and shows nodes with circles, texts and a click functionality +creates a new drag behavior and applies it to the circles</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#zoom_to_graph">zoom_to_graph</a></b>() + </div> + <div class="description">transforms svg so that the zoom is adapted to the size of the graph</div> + </td> + </tr> + + </tbody> + </table> + + + + +<!-- ============================== events summary ======================== --> + + +<!-- ============================== constructor details ==================== --> + + +<!-- ============================== field details ========================== --> + + <div class="sectionTitle"> + Field Detail + </div> + + <a name="color"> </a> + <div class="fixedFont"> + + + <b>color</b> + + </div> + <div class="description"> + scale functions that return y coordinate/color of node depending on group + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="g"> </a> + <div class="fixedFont"> + + + <b>g</b> + + </div> + <div class="description"> + creates group element + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="intervalId"> </a> + <div class="fixedFont"> + + + <b>intervalId</b> + + </div> + <div class="description"> + checks at a fixed interval whether the contents of the JSON file have changed + and reloads the program if necessary + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="link"> </a> + <div class="fixedFont"> + + + <b>link</b> + + </div> + <div class="description"> + creates link object + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="rect"> </a> + <div class="fixedFont"> + + + <b>rect</b> + + </div> + <div class="description"> + creates a background with a click functionality + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="simulation"> </a> + <div class="fixedFont"> + + + <b>simulation</b> + + </div> + <div class="description"> + creates a new simulation +updates the positions of the links and nodes when the + state of the layout has changed (simulation has advanced by a tick) + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="svg"> </a> + <div class="fixedFont"> + + + <b>svg</b> + + </div> + <div class="description"> + creates svg object and associated attributes +applies the zoom behavior to svg + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="svg_legend"> </a> + <div class="fixedFont"> + + + <b>svg_legend</b> + + </div> + <div class="description"> + creates svg object (legend) with text, circles and arrows + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="to_remove"> </a> + <div class="fixedFont"> + + + <b>to_remove</b> + + </div> + <div class="description"> + saves highlighted node for click functionality + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="zoom"> </a> + <div class="fixedFont"> + + + <b>zoom</b> + + </div> + <div class="description"> + creates a new zoom behavior + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + + + + +<!-- ============================== method details ========================= --> + + <div class="sectionTitle"> + Method Detail + </div> + + <a name="click_background"> </a> + <div class="fixedFont"> + + + <b>click_background</b>() + + </div> + <div class="description"> + removes the highlights of the circles and their links + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="click_node"> </a> + <div class="fixedFont"> + + + <b>click_node</b>(node) + + </div> + <div class="description"> + sets color of circle and its links to black and removes the previous highlights +displays overview info of node in textbox + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="display_abstract"> </a> + <div class="fixedFont"> + + + <b>display_abstract</b>(a-) + + </div> + <div class="description"> + displays abstract in textbox if a is true, overview text otherwise + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{bool}</span> <b>a-</b> + + </dt> + <dd>bool</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="dragged_node"> </a> + <div class="fixedFont"> + + + <b>dragged_node</b>(node) + + </div> + <div class="description"> + applies dragging to the node + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="fix_nodes"> </a> + <div class="fixedFont"> + + + <b>fix_nodes</b>(this_node) + + </div> + <div class="description"> + fix positions of all nodes except for the current node + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>this_node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="get_svg_string"> </a> + <div class="fixedFont"> + + + <b>get_svg_string</b>(svgNode) + + </div> + <div class="description"> + generate svgString + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>svgNode</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="handle_tick"> </a> + <div class="fixedFont"> + + + <b>handle_tick</b>() + + </div> + <div class="description"> + updates the positions of the links and nodes + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="handle_transformation"> </a> + <div class="fixedFont"> + + + <b>handle_transformation</b>() + + </div> + <div class="description"> + applies the transformation (zooming or dragging) to the g element + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="highlight_button"> </a> + <div class="fixedFont"> + + + <b>highlight_button</b>(btn) + + </div> + <div class="description"> + sets color of btn to dark gray + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>btn</b> + + </dt> + <dd>- button</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="is_link_for_node"> </a> + <div class="fixedFont"> + + + <b>is_link_for_node</b>(node, link) + + </div> + <div class="description"> + returns true if link is directly connected to node and false if it is not + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>link</b> + + </dt> + <dd>- link</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="mark_link"> </a> + <div class="fixedFont"> + + + <b>mark_link</b>(node) + + </div> + <div class="description"> + sets color of link (line and arrowhead) to black if it is directly connected to node +and to grey otherwise + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="reset_button_highlight"> </a> + <div class="fixedFont"> + + + <b>reset_button_highlight</b>() + + </div> + <div class="description"> + sets color of all buttons to default light gray + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="reset_view"> </a> + <div class="fixedFont"> + + + <b>reset_view</b>() + + </div> + <div class="description"> + transforms svg so that the zoom and drag is reset + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="save_svg"> </a> + <div class="fixedFont"> + + + <b>save_svg</b>() + + </div> + <div class="description"> + save svg as png + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="self_citation"> </a> + <div class="fixedFont"> + + + <b>self_citation</b>(source, target) + + </div> + <div class="description"> + returns true if journals have a common author (self-citation) + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>source</b> + + </dt> + <dd>- node</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>target</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="start_drag_node"> </a> + <div class="fixedFont"> + + + <b>start_drag_node</b>(node) + + </div> + <div class="description"> + initializes dragging of the node + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="svg_string_to_image"> </a> + <div class="fixedFont"> + + + <b>svg_string_to_image</b>(svgString, width, height, format, callback) + + </div> + <div class="description"> + convert svgString to image and export it + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>svgString</b> + + </dt> + <dd>- svgString</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>width</b> + + </dt> + <dd>- width of image</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>height</b> + + </dt> + <dd>- height of image</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>format</b> + + </dt> + <dd>- format to save image in</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>callback</b> + + </dt> + <dd>- callback function</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="textbox_content"> </a> + <div class="fixedFont"> + + + <b>textbox_content</b>(node) + + </div> + <div class="description"> + saves text for overview and abstract of node +outputs node info to textbox + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="update"> </a> + <div class="fixedFont"> + + + <b>update</b>(nodes, links) + + </div> + <div class="description"> + calls update functions for links and nodes +adds the nodes, links and tick functionality to the simulation + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>nodes</b> + + </dt> + <dd>- nodes</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>links</b> + + </dt> + <dd>- links</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="update_links"> </a> + <div class="fixedFont"> + + + <b>update_links</b>(links) + + </div> + <div class="description"> + initializes and shows links (edges) + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>links</b> + + </dt> + <dd>- links</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="update_marker"> </a> + <div class="fixedFont"> + + + <b>update_marker</b>(color, target) + + </div> + <div class="description"> + creates arrowhead and returns its url + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{string}</span> <b>color</b> + + </dt> + <dd>- color of arrowhead</dd> + + <dt> + <span class="light fixedFont">{string}</span> <b>target</b> + + </dt> + <dd>- target node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="update_nodes"> </a> + <div class="fixedFont"> + + + <b>update_nodes</b>(nodes) + + </div> + <div class="description"> + initializes and shows nodes with circles, texts and a click functionality +creates a new drag behavior and applies it to the circles + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>nodes</b> + + </dt> + <dd>- nodes</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="zoom_to_graph"> </a> + <div class="fixedFont"> + + + <b>zoom_to_graph</b>() + + </div> + <div class="description"> + transforms svg so that the zoom is adapted to the size of the graph + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_default.js.html">cn_default.js</a>. + + + </div> + + + + + + + + + + + + + + + +<!-- ============================== event details ========================= --> + + + <hr /> + </div> + + +<!-- ============================== footer ================================= --> + <div class="fineprint" style="clear:both"> + + Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Fri Jan 28 2022 12:32:45 GMT+0100 (MEZ) + </div> + </body> +</html> diff --git a/assets/documentation/documentation_cn_default/symbols/src/cn_default.js.html b/assets/documentation/documentation_cn_default/symbols/src/cn_default.js.html new file mode 100644 index 0000000000000000000000000000000000000000..d9ec45a02c164f2cb350665c07e4180a501c3922 --- /dev/null +++ b/assets/documentation/documentation_cn_default/symbols/src/cn_default.js.html @@ -0,0 +1,581 @@ +<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style> + .KEYW {color: #933;} + .COMM {color: #bbb; font-style: italic;} + .NUMB {color: #393;} + .STRN {color: #393;} + .REGX {color: #339;} + .line {border-right: 1px dotted #666; color: #666; font-style: normal;} + </style></head><body><pre><span class='line'> 1</span> <span class="COMM">/** +<span class='line'> 2</span> * creates a new zoom behavior +<span class='line'> 3</span> */</span><span class="WHIT"> +<span class='line'> 4</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">zoom</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.zoom</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">"zoom"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handle_transformation</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 5</span> +<span class='line'> 6</span> </span><span class="COMM">/** +<span class='line'> 7</span> * creates svg object and associated attributes +<span class='line'> 8</span> * applies the zoom behavior to svg +<span class='line'> 9</span> */</span><span class="WHIT"> +<span class='line'> 10</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">"svg.graph"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 11</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">zoom</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 12</span> </span><span class="NAME">width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.attr</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 13</span> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.attr</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 14</span> </span><span class="NAME">zoom_perc</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 15</span> +<span class='line'> 16</span> </span><span class="COMM">/** +<span class='line'> 17</span> * scale functions that return y coordinate/color of node depending on group +<span class='line'> 18</span> */</span><span class="WHIT"> +<span class='line'> 19</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">color</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.scaleOrdinal</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 20</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">domain</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"Citedby"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Input"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Reference"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 21</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">range</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">'#01d7c0'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'#7fa9d4'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'#a15eb2'</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 22</span> </span><span class="NAME">y_scale</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.scaleOrdinal</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 23</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">domain</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"Citedby"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Input"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Reference"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 24</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">range</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">400</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 25</span> +<span class='line'> 26</span> </span><span class="COMM">/** +<span class='line'> 27</span> * creates node object and (default) radius +<span class='line'> 28</span> */</span><span class="WHIT"> +<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 30</span> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 31</span> +<span class='line'> 32</span> </span><span class="COMM">/** +<span class='line'> 33</span> * saves highlighted node for click functionality +<span class='line'> 34</span> */</span><span class="WHIT"> +<span class='line'> 35</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">to_remove</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 36</span> +<span class='line'> 37</span> </span><span class="COMM">/** +<span class='line'> 38</span> * creates link object +<span class='line'> 39</span> */</span><span class="WHIT"> +<span class='line'> 40</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">link</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 41</span> +<span class='line'> 42</span> </span><span class="COMM">/** +<span class='line'> 43</span> * creates a background with a click functionality +<span class='line'> 44</span> */</span><span class="WHIT"> +<span class='line'> 45</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rect</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.append</span><span class="PUNC">(</span><span class="STRN">"rect"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 46</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 47</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 48</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 49</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 50</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"fill"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'white'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 51</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">click_background</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 52</span> +<span class='line'> 53</span> </span><span class="COMM">/** +<span class='line'> 54</span> * creates svg object (legend) with text, circles and arrows +<span class='line'> 55</span> */</span><span class="WHIT"> +<span class='line'> 56</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svg_legend</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">"svg.legendsvg"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 57</span> </span><span class="NAME">legend_position</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">65</span><span class="PUNC">,</span><span class="NUMB">95</span><span class="PUNC">,</span><span class="NUMB">125</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 58</span> </span><span class="NAME">arrow_legend_position</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NUMB">25</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 59</span> </span><span class="NAME">arrow_group_names</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"Citation"</span><span class="PUNC">,</span><span class="STRN">"Self-Citation"</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 60</span> </span><span class="NAME">group_names</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"Cited-by"</span><span class="PUNC">,</span><span class="STRN">"Input"</span><span class="PUNC">,</span><span class="STRN">"Reference"</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 61</span> </span><span class="NAME">line_type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.scaleOrdinal</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 62</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">domain</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"line"</span><span class="PUNC">,</span><span class="STRN">"dotted"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 63</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">range</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"8,0"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="PUNC">(</span><span class="STRN">"8,8"</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 64</span> </span><span class="NAME">text_info</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 65</span> </span><span class="NAME">text_abstract</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 66</span> </span><span class="WHIT"> +<span class='line'> 67</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">legend</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg_legend.selectAll</span><span class="PUNC">(</span><span class="STRN">".legend"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">data</span><span class="PUNC">(</span><span class="NAME">legend_position</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 69</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">enter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 70</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">"g"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="STRN">"legend"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 72</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"transform"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"translate(0,"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 73</span> </span><span class="WHIT"> +<span class='line'> 74</span> </span><span class="NAME">legend.append</span><span class="PUNC">(</span><span class="STRN">"text"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 75</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">80</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 76</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 77</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"dy"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">".35em"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 78</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"text-anchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"start"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 79</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">group_names</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 80</span> </span><span class="WHIT"> +<span class='line'> 81</span> </span><span class="NAME">legend.append</span><span class="PUNC">(</span><span class="STRN">"circle"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 82</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"r"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 83</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"cx"</span><span class="PUNC">,</span><span class="NUMB">30</span><span class="PUNC">-</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 84</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"fill"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 85</span> </span><span class="WHIT"> +<span class='line'> 86</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">legend_arrow</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg_legend.selectAll</span><span class="PUNC">(</span><span class="STRN">".legendarr"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 87</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">data</span><span class="PUNC">(</span><span class="NAME">arrow_legend_position</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 88</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">enter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 89</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">"g"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 90</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="STRN">"legendarr"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 91</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"transform"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"translate(0,"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 92</span> </span><span class="WHIT"> +<span class='line'> 93</span> </span><span class="NAME">legend_arrow.append</span><span class="PUNC">(</span><span class="STRN">"line"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 94</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 95</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x2"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">50</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y2"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke-dasharray"</span><span class="PUNC">,</span><span class="NAME">line_type</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'#999'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>100</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke-width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"1px"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>101</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">'pointer-events'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>102</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'marker-end'</span><span class="PUNC">,</span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="STRN">'#999'</span><span class="PUNC">,</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>103</span> +<span class='line'>104</span> </span><span class="NAME">legend_arrow.append</span><span class="PUNC">(</span><span class="STRN">"text"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>105</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">80</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>106</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>107</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"dy"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">".35em"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>108</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"text-anchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"start"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>109</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">arrow_group_names</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>110</span> +<span class='line'>111</span> </span><span class="COMM">/** +<span class='line'>112</span> * creates a new simulation +<span class='line'>113</span> * updates the positions of the links and nodes when the +<span class='line'>114</span> state of the layout has changed (simulation has advanced by a tick) +<span class='line'>115</span> */</span><span class="WHIT"> +<span class='line'>116</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">simulation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.forceSimulation</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>117</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">force</span><span class="PUNC">(</span><span class="STRN">"link"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.forceLink</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">id</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d.doi</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">distance</span><span class="PUNC">(</span><span class="NUMB">50</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>118</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">strength</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>119</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d.group</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"Input"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>120</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>121</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>122</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">force</span><span class="PUNC">(</span><span class="STRN">"collide"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.forceCollide</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>123</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d.group</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"Input"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">70</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>124</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">70</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>125</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">strength</span><span class="PUNC">(</span><span class="NUMB">0.5</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>126</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">force</span><span class="PUNC">(</span><span class="STRN">"charge"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.forceManyBody</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">strength</span><span class="PUNC">(</span><span class="NUMB">0.001</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>127</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">force</span><span class="PUNC">(</span><span class="STRN">"center"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.forceCenter</span><span class="PUNC">(</span><span class="NAME">width</span><span class="PUNC">/</span><span class="NUMB">2</span><span class="PUNC">-</span><span class="NUMB">20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">/</span><span class="NUMB">2</span><span class="PUNC">+</span><span class="NUMB">20</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>128</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">force</span><span class="PUNC">(</span><span class="STRN">"yscale"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.forceY</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>129</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">strength</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>130</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d.group</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"Input"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">300</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>131</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>132</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">y</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">y_scale</span><span class="PUNC">(</span><span class="NAME">d.group</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>133</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">alpha</span><span class="PUNC">(</span><span class="NUMB">0.004</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>134</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">velocityDecay</span><span class="PUNC">(</span><span class="NUMB">0.65</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>135</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">"end"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">zoom_to_graph</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>136</span> +<span class='line'>137</span> </span><span class="COMM">/** +<span class='line'>138</span> * creates group element +<span class='line'>139</span> */</span><span class="WHIT"> +<span class='line'>140</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">g</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.append</span><span class="PUNC">(</span><span class="STRN">"g"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>141</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"everything"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>142</span> +<span class='line'>143</span> </span><span class="COMM">/** +<span class='line'>144</span> * loads JSON data and calls the update function +<span class='line'>145</span> */</span><span class="WHIT"> +<span class='line'>146</span> </span><span class="NAME">d3.json</span><span class="PUNC">(</span><span class="STRN">"json_text.json"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">then</span><span class="PUNC">(</span><span class="NAME">success</span><span class="PUNC">,</span><span class="NAME">failure</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>147</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">success</span><span class="PUNC">(</span><span class="NAME">graph</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>148</span> </span><span class="WHIT"> </span><span class="NAME">update</span><span class="PUNC">(</span><span class="NAME">graph.links</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">graph.nodes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>149</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>150</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">failure</span><span class="PUNC">(</span><span class="NAME">graph</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>151</span> </span><span class="WHIT"> </span><span class="NAME">localStorage.setItem</span><span class="PUNC">(</span><span class="STRN">"oldjson"</span><span class="PUNC">,</span><span class="STRN">"keineJson"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>152</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>153</span> +<span class='line'>154</span> </span><span class="COMM">/** +<span class='line'>155</span> * checks at a fixed interval whether the contents of the JSON file have changed +<span class='line'>156</span> and reloads the program if necessary +<span class='line'>157</span> */</span><span class="WHIT"> +<span class='line'>158</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">intervalId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">window.setInterval</span><span class="PUNC">(</span><span class="NAME">check_if_json_changed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">500</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>159</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">check_if_json_changed</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>160</span> </span><span class="WHIT"> </span><span class="NAME">d3.json</span><span class="PUNC">(</span><span class="STRN">"json_text.json"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">then</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">graph</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>161</span> </span><span class="WHIT"> </span><span class="NAME">newjson_string</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">JSON.stringify</span><span class="PUNC">(</span><span class="NAME">graph</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>162</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newjson</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CryptoJS.MD5</span><span class="PUNC">(</span><span class="NAME">newjson_string</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>163</span> </span><span class="WHIT"> </span><span class="NAME">oldjson</span><span class="PUNC">=</span><span class="NAME">localStorage.getItem</span><span class="PUNC">(</span><span class="STRN">"oldjson"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>164</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">newjson</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">oldjson</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>165</span> </span><span class="WHIT"> </span><span class="NAME">localStorage.setItem</span><span class="PUNC">(</span><span class="STRN">"oldjson"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newjson</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>166</span> </span><span class="WHIT"> </span><span class="NAME">window.location.reload</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>167</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>168</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>169</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>170</span> +<span class='line'>171</span> </span><span class="COMM">/** +<span class='line'>172</span> * calls update functions for links and nodes +<span class='line'>173</span> * adds the nodes, links and tick functionality to the simulation +<span class='line'>174</span> * @param {object} nodes - nodes +<span class='line'>175</span> * @param {object} links - links +<span class='line'>176</span> */</span><span class="WHIT"> +<span class='line'>177</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">update</span><span class="PUNC">(</span><span class="NAME">links</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>178</span> </span><span class="WHIT"> </span><span class="NAME">update_links</span><span class="PUNC">(</span><span class="NAME">links</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>179</span> </span><span class="WHIT"> </span><span class="NAME">update_nodes</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>180</span> </span><span class="WHIT"> +<span class='line'>181</span> </span><span class="NAME">simulation.nodes</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>182</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">"tick"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handle_tick</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>183</span> </span><span class="WHIT"> </span><span class="NAME">simulation.force</span><span class="PUNC">(</span><span class="STRN">"link"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>184</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">links</span><span class="PUNC">(</span><span class="NAME">links</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>185</span> </span><span class="WHIT"> +<span class='line'>186</span> </span><span class="NAME">link.attr</span><span class="PUNC">(</span><span class="STRN">'marker-end'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="STRN">"#999"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d.target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>187</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke-dasharray"</span><span class="PUNC">,</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">self_citation</span><span class="PUNC">(</span><span class="NAME">d.source</span><span class="PUNC">,</span><span class="NAME">d.target</span><span class="PUNC">)</span><span class="PUNC">?</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"8,8"</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"1,0"</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>188</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>189</span> +<span class='line'>190</span> </span><span class="COMM">/** +<span class='line'>191</span> * initializes and shows links (edges) +<span class='line'>192</span> * @param {object} links - links +<span class='line'>193</span> */</span><span class="WHIT"> +<span class='line'>194</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">update_links</span><span class="PUNC">(</span><span class="NAME">links</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>195</span> </span><span class="WHIT"> </span><span class="NAME">link</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">g.append</span><span class="PUNC">(</span><span class="STRN">"g"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>196</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">selectAll</span><span class="PUNC">(</span><span class="STRN">".link"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>197</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">data</span><span class="PUNC">(</span><span class="NAME">links</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>198</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">enter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>199</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">"line"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>200</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke-width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"1px"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>201</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"#999"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>202</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"link"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>203</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>204</span> +<span class='line'>205</span> </span><span class="COMM">/** +<span class='line'>206</span> * initializes and shows nodes with circles, texts and a click functionality +<span class='line'>207</span> * creates a new drag behavior and applies it to the circles +<span class='line'>208</span> * @param {object} nodes - nodes +<span class='line'>209</span> */</span><span class="WHIT"> +<span class='line'>210</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">update_nodes</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>211</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">g.selectAll</span><span class="PUNC">(</span><span class="STRN">".node"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>212</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">data</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>213</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">enter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>214</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">"g"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>215</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"node"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>216</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">d3.drag</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>217</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">"start"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">start_drag_node</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>218</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">"drag"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dragged_node</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>219</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>220</span> +<span class='line'>221</span> </span><span class="WHIT"> </span><span class="NAME">node.append</span><span class="PUNC">(</span><span class="STRN">"circle"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>222</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"circle"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>223</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"r"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">1.5</span><span class="PUNC">*</span><span class="NAME">r</span><span class="PUNC">+</span><span class="NAME">d.citations</span><span class="PUNC">*</span><span class="NUMB">0.15</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>224</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"fill"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">(</span><span class="NAME">d.group</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>225</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">click_node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>226</span> +<span class='line'>227</span> </span><span class="WHIT"> </span><span class="NAME">node.append</span><span class="PUNC">(</span><span class="STRN">"text"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>228</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"text"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>229</span> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"font-size"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"15px"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>230</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">'pointer-events'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'auto'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>231</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">const</span><span class="WHIT"> </span><span class="NAME">first_author</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.author</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">" "</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>232</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">first_author</span><span class="PUNC">[</span><span class="NAME">first_author.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>233</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">click_node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>234</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>235</span> +<span class='line'>236</span> </span><span class="COMM">/** +<span class='line'>237</span> * creates arrowhead and returns its url +<span class='line'>238</span> * @param {string} color - color of arrowhead +<span class='line'>239</span> * @param {string} target - target node +<span class='line'>240</span> */</span><span class="WHIT"> +<span class='line'>241</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="NAME">color</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">target</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>242</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">radius</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1.5</span><span class="PUNC">*</span><span class="NAME">r</span><span class="PUNC">+</span><span class="NAME">target.citations</span><span class="PUNC">*</span><span class="NUMB">0.15</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>243</span> </span><span class="WHIT"> </span><span class="NAME">svg.append</span><span class="PUNC">(</span><span class="STRN">'defs'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">'marker'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>244</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'id'</span><span class="PUNC">,</span><span class="NAME">color.replace</span><span class="PUNC">(</span><span class="STRN">"#"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="NAME">radius</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>245</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'viewBox'</span><span class="PUNC">,</span><span class="STRN">'-0 -5 10 10'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>246</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'refX'</span><span class="PUNC">,</span><span class="NAME">radius</span><span class="PUNC">+</span><span class="NUMB">9.5</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>247</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'refY'</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>248</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'orient'</span><span class="PUNC">,</span><span class="STRN">'auto'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>249</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'markerWidth'</span><span class="PUNC">,</span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>250</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'markerHeight'</span><span class="PUNC">,</span><span class="NUMB">15</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>251</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'xoverflow'</span><span class="PUNC">,</span><span class="STRN">'visible'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>252</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">'svg:path'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>253</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'d'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'M 0,-5 L 10 ,0 L 0,5'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>254</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'fill'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>255</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">'stroke'</span><span class="PUNC">,</span><span class="STRN">'none'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>256</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"url("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">color</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">radius</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>257</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>258</span> +<span class='line'>259</span> </span><span class="COMM">/** +<span class='line'>260</span> * sets color of circle and its links to black and removes the previous highlights +<span class='line'>261</span> * displays overview info of node in textbox +<span class='line'>262</span> * @param {object} node - node +<span class='line'>263</span> */</span><span class="WHIT"> +<span class='line'>264</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">click_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>265</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="NAME">this.parentNode</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">raise</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>266</span> </span><span class="WHIT"> </span><span class="NAME">fix_nodes</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>267</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">to_remove</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>268</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="NAME">to_remove</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">selectAll</span><span class="PUNC">(</span><span class="STRN">".circle"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>269</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>270</span> </span><span class="WHIT"> </span><span class="NAME">to_remove</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.parentNode</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>271</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="NAME">this.parentNode</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">selectAll</span><span class="PUNC">(</span><span class="STRN">".circle"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="STRN">"black"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>272</span> </span><span class="WHIT"> </span><span class="NAME">mark_link</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>273</span> </span><span class="WHIT"> </span><span class="NAME">textbox_content</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>274</span> </span><span class="WHIT"> </span><span class="NAME">reset_button_highlight</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>275</span> </span><span class="WHIT"> </span><span class="NAME">highlight_button</span><span class="PUNC">(</span><span class="STRN">"overview"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>276</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>277</span> +<span class='line'>278</span> </span><span class="COMM">/** +<span class='line'>279</span> * removes the highlights of the circles and their links +<span class='line'>280</span> */</span><span class="WHIT"> +<span class='line'>281</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">click_background</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>282</span> </span><span class="WHIT"> </span><span class="NAME">fix_nodes</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>283</span> </span><span class="WHIT"> </span><span class="NAME">d3.selectAll</span><span class="PUNC">(</span><span class="STRN">".circle"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>284</span> </span><span class="WHIT"> </span><span class="NAME">d3.selectAll</span><span class="PUNC">(</span><span class="STRN">".link"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>285</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"#999"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>286</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'marker-end'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="STRN">'#999'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d.target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>287</span> </span><span class="WHIT"> </span><span class="NAME">text_abstract</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>288</span> </span><span class="WHIT"> </span><span class="NAME">text_info</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>289</span> </span><span class="WHIT"> </span><span class="NAME">reset_button_highlight</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>290</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">'textbox'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Click node"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>291</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>292</span> +<span class='line'>293</span> </span><span class="COMM">/** +<span class='line'>294</span> * returns true if journals have a common author (self-citation) +<span class='line'>295</span> * @param {object} source - node +<span class='line'>296</span> * @param {object} target - node +<span class='line'>297</span> */</span><span class="WHIT"> +<span class='line'>298</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">self_citation</span><span class="PUNC">(</span><span class="NAME">source</span><span class="PUNC">,</span><span class="NAME">target</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>299</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">source.author.some</span><span class="PUNC">(</span><span class="NAME">item</span><span class="PUNC">=</span><span class="PUNC">></span><span class="NAME">target.author.includes</span><span class="PUNC">(</span><span class="NAME">item</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>300</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>301</span> +<span class='line'>302</span> </span><span class="COMM">/** +<span class='line'>303</span> * sets color of link (line and arrowhead) to black if it is directly connected to node +<span class='line'>304</span> * and to grey otherwise +<span class='line'>305</span> * @param {object} node - node +<span class='line'>306</span> */</span><span class="WHIT"> +<span class='line'>307</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">mark_link</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>308</span> </span><span class="WHIT"> </span><span class="NAME">d3.selectAll</span><span class="PUNC">(</span><span class="STRN">".link"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>309</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>310</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">is_link_for_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"black"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"#DEDEDE"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>311</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'marker-end'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>312</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">is_link_for_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="STRN">'#000000'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">o.target</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="STRN">'#DEDEDE'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">o.target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>313</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>314</span> +<span class='line'>315</span> </span><span class="COMM">/** +<span class='line'>316</span> * returns true if link is directly connected to node and false if it is not +<span class='line'>317</span> * @param {object} node - node +<span class='line'>318</span> * @param {object} link - link +<span class='line'>319</span> */</span><span class="WHIT"> +<span class='line'>320</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">is_link_for_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">link</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>321</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">link.source.index</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">node.index</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">link.target.index</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">node.index</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>322</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>323</span> +<span class='line'>324</span> </span><span class="COMM">/** +<span class='line'>325</span> * saves text for overview and abstract of node +<span class='line'>326</span> * outputs node info to textbox +<span class='line'>327</span> * @param {object} node - node +<span class='line'>328</span> */</span><span class="WHIT"> +<span class='line'>329</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">textbox_content</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>330</span> </span><span class="WHIT"> </span><span class="NAME">authors</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.author</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> +<span class='line'>331</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">node.author.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>332</span> </span><span class="WHIT"> </span><span class="NAME">authors</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">", "</span><span class="PUNC">+</span><span class="NAME">node.author</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>333</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>334</span> </span><span class="WHIT"> </span><span class="NAME">text_info</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Title:"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'</br>'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">node.name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> +<span class='line'>335</span> </span><span class="WHIT"> </span><span class="STRN">'</br>'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">"Author:"</span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'</br>'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="NAME">authors</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">"Date:"</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="WHIT"> +<span class='line'>336</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="NAME">node.year</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">"Journal:"</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="NAME">node.journal</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">"DOI:"</span><span class="WHIT"> +<span class='line'>337</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="NAME">node.doi</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">"Citations:"</span><span class="WHIT"> +<span class='line'>338</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="NAME">node.citations</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>339</span> </span><span class="WHIT"> </span><span class="NAME">text_abstract</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.abstract</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>340</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">'textbox'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text_info</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>341</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>342</span> +<span class='line'>343</span> </span><span class="COMM">/** +<span class='line'>344</span> * sets color of btn to dark gray +<span class='line'>345</span> * @param {object} btn - button +<span class='line'>346</span> */</span><span class="WHIT"> +<span class='line'>347</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">highlight_button</span><span class="PUNC">(</span><span class="NAME">btn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>348</span> </span><span class="WHIT"> </span><span class="NAME">reset_button_highlight</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>349</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="NAME">btn</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style.background</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"#CACACA"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>350</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>351</span> +<span class='line'>352</span> </span><span class="COMM">/** +<span class='line'>353</span> * sets color of all buttons to default light gray +<span class='line'>354</span> */</span><span class="WHIT"> +<span class='line'>355</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">reset_button_highlight</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>356</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">"overview"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style.background</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>357</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">"abstract"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style.background</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>358</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>359</span> +<span class='line'>360</span> </span><span class="COMM">/** +<span class='line'>361</span> * displays abstract in textbox if a is true, overview text otherwise +<span class='line'>362</span> * @param {bool} a- bool +<span class='line'>363</span> */</span><span class="WHIT"> +<span class='line'>364</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">display_abstract</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>365</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">text_abstract</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">text_info</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>366</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">'textbox'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Click node"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>367</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>368</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>369</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>370</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">'textbox'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text_abstract</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>371</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>372</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>373</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">'textbox'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text_info</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>374</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>375</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>376</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>377</span> +<span class='line'>378</span> </span><span class="COMM">/** +<span class='line'>379</span> * updates the positions of the links and nodes +<span class='line'>380</span> */</span><span class="WHIT"> +<span class='line'>381</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">handle_tick</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>382</span> </span><span class="WHIT"> </span><span class="NAME">link.attr</span><span class="PUNC">(</span><span class="STRN">"x1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d.source.x</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>383</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d.source.y</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>384</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x2"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d.target.x</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>385</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y2"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d.target.y</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>386</span> </span><span class="WHIT"> </span><span class="NAME">node.attr</span><span class="PUNC">(</span><span class="STRN">"transform"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"translate("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d.x</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d.y</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>387</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>388</span> +<span class='line'>389</span> </span><span class="COMM">/** +<span class='line'>390</span> * initializes dragging of the node +<span class='line'>391</span> * @param {object} node - node +<span class='line'>392</span> */</span><span class="WHIT"> +<span class='line'>393</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">start_drag_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>394</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">raise</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>395</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">d3.event.active</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>396</span> </span><span class="NAME">simulation.alphaTarget</span><span class="PUNC">(</span><span class="NUMB">0.3</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">restart</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>397</span> </span><span class="WHIT"> </span><span class="NAME">node.fx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.x</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>398</span> </span><span class="WHIT"> </span><span class="NAME">node.fy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.y</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>399</span> </span><span class="WHIT"> </span><span class="NAME">fix_nodes</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>400</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>401</span> +<span class='line'>402</span> </span><span class="COMM">/** +<span class='line'>403</span> * applies dragging to the node +<span class='line'>404</span> * @param {object} node - node +<span class='line'>405</span> */</span><span class="WHIT"> +<span class='line'>406</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">dragged_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>407</span> </span><span class="WHIT"> </span><span class="NAME">node.fx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.event.x</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>408</span> </span><span class="WHIT"> </span><span class="NAME">node.fy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.event.y</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>409</span> </span><span class="WHIT"> </span><span class="NAME">fix_nodes</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>410</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>411</span> +<span class='line'>412</span> </span><span class="COMM">/** +<span class='line'>413</span> * fix positions of all nodes except for the current node +<span class='line'>414</span> * @param {object} this_node - node +<span class='line'>415</span> */</span><span class="WHIT"> +<span class='line'>416</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">fix_nodes</span><span class="PUNC">(</span><span class="NAME">this_node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>417</span> </span><span class="WHIT"> </span><span class="NAME">node.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>418</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this_node</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>419</span> </span><span class="WHIT"> </span><span class="NAME">d.fx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.x</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>420</span> </span><span class="WHIT"> </span><span class="NAME">d.fy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.y</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>421</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>422</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>423</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>424</span> +<span class='line'>425</span> </span><span class="COMM">/** +<span class='line'>426</span> * applies the transformation (zooming or dragging) to the g element +<span class='line'>427</span> */</span><span class="WHIT"> +<span class='line'>428</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">handle_transformation</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>429</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">'g'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"transform"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.event.transform</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>430</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>431</span> +<span class='line'>432</span> </span><span class="COMM">/** +<span class='line'>433</span> * transforms svg so that the zoom is adapted to the size of the graph +<span class='line'>434</span> */</span><span class="WHIT"> +<span class='line'>435</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">zoom_to_graph</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>436</span> </span><span class="WHIT"> </span><span class="NAME">node_bounds</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.selectAll</span><span class="PUNC">(</span><span class="STRN">"svg.graph"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">node</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBBox</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>437</span> </span><span class="WHIT"> </span><span class="NAME">svg_bounds</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">"rect"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">node</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBBox</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>438</span> +<span class='line'>439</span> </span><span class="WHIT"> </span><span class="NAME">perc_x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">/</span><span class="PUNC">(</span><span class="NAME">node_bounds.width</span><span class="PUNC">+</span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>440</span> </span><span class="WHIT"> </span><span class="NAME">perc_y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">/</span><span class="PUNC">(</span><span class="NAME">node_bounds.height</span><span class="PUNC">+</span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>441</span> </span><span class="WHIT"> </span><span class="NAME">zoom_perc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.min</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">perc_x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">perc_y</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>442</span> </span><span class="WHIT"> +<span class='line'>443</span> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">'svg'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>444</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">zoom.scaleBy</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">zoom_perc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>445</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>446</span> +<span class='line'>447</span> </span><span class="COMM">/** +<span class='line'>448</span> * transforms svg so that the zoom and drag is reset +<span class='line'>449</span> */</span><span class="WHIT"> +<span class='line'>450</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">reset_view</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>451</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">'svg'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>452</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">zoom.scaleTo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>453</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">'svg'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>454</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">zoom.translateTo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0.5</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0.5</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>455</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">'svg'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>456</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">zoom.scaleBy</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">zoom_perc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>457</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>458</span> +<span class='line'>459</span> </span><span class="COMM">/** +<span class='line'>460</span> * save svg as png +<span class='line'>461</span> */</span><span class="WHIT"> +<span class='line'>462</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">save_svg</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>463</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">get_svg_string</span><span class="PUNC">(</span><span class="NAME">svg.node</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>464</span> </span><span class="WHIT"> </span><span class="NAME">svg_string_to_image</span><span class="PUNC">(</span><span class="NAME">svgString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">*</span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">*</span><span class="NAME">height</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'png'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">save</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// passes Blob and filesize String to the callback</span><span class="WHIT"> +<span class='line'>465</span> +<span class='line'>466</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">save</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">dataBlob</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">filesize</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>467</span> </span><span class="WHIT"> </span><span class="NAME">saveAs</span><span class="PUNC">(</span><span class="NAME">dataBlob</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'D3 vis exported to PNG.png'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// FileSaver.js function</span><span class="WHIT"> +<span class='line'>468</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>469</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>470</span> +<span class='line'>471</span> </span><span class="COMM">/** +<span class='line'>472</span> * generate svgString +<span class='line'>473</span> * @param {object} svgNode - node +<span class='line'>474</span> */</span><span class="WHIT"> +<span class='line'>475</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">get_svg_string</span><span class="PUNC">(</span><span class="NAME">svgNode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>476</span> </span><span class="WHIT"> </span><span class="NAME">svgNode.setAttribute</span><span class="PUNC">(</span><span class="STRN">'xlink'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'http://www.w3.org/1999/xlink'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>477</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cssStyleText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">get_css_styles</span><span class="PUNC">(</span><span class="NAME">svgNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>478</span> </span><span class="WHIT"> </span><span class="NAME">append_css</span><span class="PUNC">(</span><span class="NAME">cssStyleText</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">svgNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>479</span> +<span class='line'>480</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">serializer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">XMLSerializer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>481</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">serializer.serializeToString</span><span class="PUNC">(</span><span class="NAME">svgNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>482</span> </span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svgString.replace</span><span class="PUNC">(</span><span class="REGX">/(\w+)?:?xlink=/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'xmlns:xlink='</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// Fix root xlink without namespace</span><span class="WHIT"> +<span class='line'>483</span> </span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svgString.replace</span><span class="PUNC">(</span><span class="REGX">/NS\d+:href/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'xlink:href'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// Safari NS namespace fix</span><span class="WHIT"> +<span class='line'>484</span> +<span class='line'>485</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>486</span> +<span class='line'>487</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">get_css_styles</span><span class="PUNC">(</span><span class="NAME">parentElement</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>488</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">selectorTextArr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>489</span> +<span class='line'>490</span> </span><span class="WHIT"> </span><span class="COMM">// Add Parent element Id and Classes to the list</span><span class="WHIT"> +<span class='line'>491</span> </span><span class="WHIT"> </span><span class="NAME">selectorTextArr.push</span><span class="PUNC">(</span><span class="STRN">'#'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">parentElement.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>492</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">parentElement.classList.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>493</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">contains</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">+</span><span class="NAME">parentElement.classList</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selectorTextArr</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>494</span> </span><span class="WHIT"> </span><span class="NAME">selectorTextArr.push</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">+</span><span class="NAME">parentElement.classList</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>495</span> +<span class='line'>496</span> </span><span class="WHIT"> </span><span class="COMM">// Add Children element Ids and Classes to the list</span><span class="WHIT"> +<span class='line'>497</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parentElement.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"*"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>498</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">nodes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>499</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>500</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">contains</span><span class="PUNC">(</span><span class="STRN">'#'</span><span class="PUNC">+</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selectorTextArr</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>501</span> </span><span class="WHIT"> </span><span class="NAME">selectorTextArr.push</span><span class="PUNC">(</span><span class="STRN">'#'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>502</span> +<span class='line'>503</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">classList</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>504</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">classes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>505</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">contains</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">+</span><span class="NAME">classes</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selectorTextArr</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>506</span> </span><span class="WHIT"> </span><span class="NAME">selectorTextArr.push</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">+</span><span class="NAME">classes</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>507</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>508</span> +<span class='line'>509</span> </span><span class="WHIT"> </span><span class="COMM">// Extract CSS Rules</span><span class="WHIT"> +<span class='line'>510</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">extractedCSSText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>511</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">document.styleSheets.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>512</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.styleSheets</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>513</span> </span><span class="WHIT"> +<span class='line'>514</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>515</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">s.cssRules</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>516</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>517</span> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>518</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">e.name</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'SecurityError'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// for Firefox</span><span class="WHIT"> +<span class='line'>519</span> </span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>520</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>521</span> +<span class='line'>522</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cssRules</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s.cssRules</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>523</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">cssRules.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>524</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">contains</span><span class="PUNC">(</span><span class="NAME">cssRules</span><span class="PUNC">[</span><span class="NAME">r</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">selectorText</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selectorTextArr</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>525</span> </span><span class="WHIT"> </span><span class="NAME">extractedCSSText</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cssRules</span><span class="PUNC">[</span><span class="NAME">r</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">cssText</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>526</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>527</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>528</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">extractedCSSText</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>529</span> +<span class='line'>530</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">contains</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">,</span><span class="NAME">arr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>531</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">arr.indexOf</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>532</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>533</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>534</span> +<span class='line'>535</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">append_css</span><span class="PUNC">(</span><span class="NAME">cssText</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>536</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">styleElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"style"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>537</span> </span><span class="WHIT"> </span><span class="NAME">styleElement.setAttribute</span><span class="PUNC">(</span><span class="STRN">"type"</span><span class="PUNC">,</span><span class="STRN">"text/css"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>538</span> </span><span class="NAME">styleElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cssText</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>539</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">refNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.hasChildNodes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">element.children</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>540</span> </span><span class="WHIT"> </span><span class="NAME">element.insertBefore</span><span class="PUNC">(</span><span class="NAME">styleElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">refNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>541</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>542</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>543</span> +<span class='line'>544</span> </span><span class="COMM">/** +<span class='line'>545</span> * convert svgString to image and export it +<span class='line'>546</span> * @param {object} svgString - svgString +<span class='line'>547</span> * @param {object} width - width of image +<span class='line'>548</span> * @param {object} height - height of image +<span class='line'>549</span> * @param {object} format - format to save image in +<span class='line'>550</span> * @param {object} callback - callback function +<span class='line'>551</span> */</span><span class="WHIT"> +<span class='line'>552</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">svg_string_to_image</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">format</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>553</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">format</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">format</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">format</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'png'</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>554</span> +<span class='line'>555</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">imgsrc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'data:image/svg+xml;base64,'</span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">btoa</span><span class="PUNC">(</span><span class="NAME">unescape</span><span class="PUNC">(</span><span class="NAME">encodeURIComponent</span><span class="PUNC">(</span><span class="NAME">svgString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// Convert SVG string to data URL</span><span class="WHIT"> +<span class='line'>556</span> +<span class='line'>557</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"canvas"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>558</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">context</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">canvas.getContext</span><span class="PUNC">(</span><span class="STRN">"2d"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>559</span> +<span class='line'>560</span> </span><span class="WHIT"> </span><span class="NAME">canvas.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>561</span> </span><span class="WHIT"> </span><span class="NAME">canvas.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>562</span> +<span class='line'>563</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>564</span> </span><span class="WHIT"> </span><span class="NAME">image.onload</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>565</span> </span><span class="WHIT"> </span><span class="NAME">context.clearRect</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>566</span> </span><span class="WHIT"> </span><span class="NAME">context.drawImage</span><span class="PUNC">(</span><span class="NAME">image</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>567</span> +<span class='line'>568</span> </span><span class="WHIT"> </span><span class="NAME">canvas.toBlob</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">blob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>569</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">filesize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.round</span><span class="PUNC">(</span><span class="NAME">blob.length</span><span class="PUNC">/</span><span class="NUMB">1024</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">' KB'</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>570</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">blob</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">filesize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>571</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>572</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>573</span> </span><span class="WHIT"> </span><span class="NAME">image.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">imgsrc</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>574</span> </span><span class="PUNC">}</span></pre></body></html> \ No newline at end of file diff --git a/assets/documentation/documentation_cn_timeline/files.html b/assets/documentation/documentation_cn_timeline/files.html new file mode 100644 index 0000000000000000000000000000000000000000..56ec2b21cb7140ac365dd9a200d65a34ab4fd3fb --- /dev/null +++ b/assets/documentation/documentation_cn_timeline/files.html @@ -0,0 +1,216 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + + <title>JsDoc Reference - File Index</title> + <meta name="generator" content="JsDoc Toolkit" /> + + <style type="text/css"> + /* default.css */ +body +{ + font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif; + width: 800px; +} + +.header +{ + clear: both; + background-color: #ccc; + padding: 8px; +} + +h1 +{ + font-size: 150%; + font-weight: bold; + padding: 0; + margin: 1em 0 0 .3em; +} + +hr +{ + border: none 0; + border-top: 1px solid #7F8FB1; + height: 1px; +} + +pre.code +{ + display: block; + padding: 8px; + border: 1px dashed #ccc; +} + +#index +{ + margin-top: 24px; + float: left; + width: 160px; + position: absolute; + left: 8px; + background-color: #F3F3F3; + padding: 8px; +} + +#content +{ + margin-left: 190px; + width: 600px; +} + +.classList +{ + list-style-type: none; + padding: 0; + margin: 0 0 0 8px; + font-family: arial, sans-serif; + font-size: 1em; + overflow: auto; +} + +.classList li +{ + padding: 0; + margin: 0 0 8px 0; +} + +.summaryTable { width: 100%; } + +h1.classTitle +{ + font-size:170%; + line-height:130%; +} + +h2 { font-size: 110%; } +caption, div.sectionTitle +{ + background-color: #7F8FB1; + color: #fff; + font-size:130%; + text-align: left; + padding: 2px 6px 2px 6px; + border: 1px #7F8FB1 solid; +} + +div.sectionTitle { margin-bottom: 8px; } +.summaryTable thead { display: none; } + +.summaryTable td +{ + vertical-align: top; + padding: 4px; + border-bottom: 1px #7F8FB1 solid; + border-right: 1px #7F8FB1 solid; +} + +/*col#summaryAttributes {}*/ +.summaryTable td.attributes +{ + border-left: 1px #7F8FB1 solid; + width: 140px; + text-align: right; +} + +td.attributes, .fixedFont +{ + line-height: 15px; + color: #002EBE; + font-family: "Courier New",Courier,monospace; + font-size: 13px; +} + +.summaryTable td.nameDescription +{ + text-align: left; + font-size: 13px; + line-height: 15px; +} + +.summaryTable td.nameDescription, .description +{ + line-height: 15px; + padding: 4px; + padding-left: 4px; +} + +.summaryTable { margin-bottom: 8px; } + +ul.inheritsList +{ + list-style: square; + margin-left: 20px; + padding-left: 0; +} + +.detailList { + margin-left: 20px; + line-height: 15px; +} +.detailList dt { margin-left: 20px; } + +.detailList .heading +{ + font-weight: bold; + padding-bottom: 6px; + margin-left: 0; +} + +.light, td.attributes, .light a:link, .light a:visited +{ + color: #777; + font-style: italic; +} + +.fineprint +{ + text-align: right; + font-size: 10px; +} + </style> + </head> + + <body> + <div id="header"> +</div> + + <div id="index"> + <div align="center"><a href="index.html">Class Index</a> +| <a href="files.html">File Index</a></div> +<hr /> +<h2>Classes</h2> +<ul class="classList"> + + <li><i><a href="symbols/_global_.html">_global_</a></i></li> + +</ul> +<hr /> + </div> + + <div id="content"> + <h1 class="classTitle">File Index</h1> + + + <div> + <h2><a href="symbols/src/cn_timeline.js.html">cn_timeline.js</a></h2> + + <dl> + + + + + </dl> + </div> + <hr /> + + + </div> + <div class="fineprint" style="clear:both"> + + Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blankt">JsDoc Toolkit</a> 2.4.0 on Fri Jan 28 2022 12:39:00 GMT+0100 (MEZ) + </div> + </body> +</html> \ No newline at end of file diff --git a/assets/documentation/documentation_cn_timeline/index.html b/assets/documentation/documentation_cn_timeline/index.html new file mode 100644 index 0000000000000000000000000000000000000000..0d90fb1eb114c3613a9f0994c3d2914330e026f1 --- /dev/null +++ b/assets/documentation/documentation_cn_timeline/index.html @@ -0,0 +1,210 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + + <title>JsDoc Reference - Index</title> + <meta name="generator" content="JsDoc Toolkit" /> + + <style type="text/css"> + /* default.css */ +body +{ + font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif; + width: 800px; +} + +.header +{ + clear: both; + background-color: #ccc; + padding: 8px; +} + +h1 +{ + font-size: 150%; + font-weight: bold; + padding: 0; + margin: 1em 0 0 .3em; +} + +hr +{ + border: none 0; + border-top: 1px solid #7F8FB1; + height: 1px; +} + +pre.code +{ + display: block; + padding: 8px; + border: 1px dashed #ccc; +} + +#index +{ + margin-top: 24px; + float: left; + width: 160px; + position: absolute; + left: 8px; + background-color: #F3F3F3; + padding: 8px; +} + +#content +{ + margin-left: 190px; + width: 600px; +} + +.classList +{ + list-style-type: none; + padding: 0; + margin: 0 0 0 8px; + font-family: arial, sans-serif; + font-size: 1em; + overflow: auto; +} + +.classList li +{ + padding: 0; + margin: 0 0 8px 0; +} + +.summaryTable { width: 100%; } + +h1.classTitle +{ + font-size:170%; + line-height:130%; +} + +h2 { font-size: 110%; } +caption, div.sectionTitle +{ + background-color: #7F8FB1; + color: #fff; + font-size:130%; + text-align: left; + padding: 2px 6px 2px 6px; + border: 1px #7F8FB1 solid; +} + +div.sectionTitle { margin-bottom: 8px; } +.summaryTable thead { display: none; } + +.summaryTable td +{ + vertical-align: top; + padding: 4px; + border-bottom: 1px #7F8FB1 solid; + border-right: 1px #7F8FB1 solid; +} + +/*col#summaryAttributes {}*/ +.summaryTable td.attributes +{ + border-left: 1px #7F8FB1 solid; + width: 140px; + text-align: right; +} + +td.attributes, .fixedFont +{ + line-height: 15px; + color: #002EBE; + font-family: "Courier New",Courier,monospace; + font-size: 13px; +} + +.summaryTable td.nameDescription +{ + text-align: left; + font-size: 13px; + line-height: 15px; +} + +.summaryTable td.nameDescription, .description +{ + line-height: 15px; + padding: 4px; + padding-left: 4px; +} + +.summaryTable { margin-bottom: 8px; } + +ul.inheritsList +{ + list-style: square; + margin-left: 20px; + padding-left: 0; +} + +.detailList { + margin-left: 20px; + line-height: 15px; +} +.detailList dt { margin-left: 20px; } + +.detailList .heading +{ + font-weight: bold; + padding-bottom: 6px; + margin-left: 0; +} + +.light, td.attributes, .light a:link, .light a:visited +{ + color: #777; + font-style: italic; +} + +.fineprint +{ + text-align: right; + font-size: 10px; +} + </style> + </head> + + <body> + <div id="header"> +</div> + + <div id="index"> + <div align="center"><a href="index.html">Class Index</a> +| <a href="files.html">File Index</a></div> +<hr /> +<h2>Classes</h2> +<ul class="classList"> + + <li><i><a href="symbols/_global_.html">_global_</a></i></li> + +</ul> +<hr /> + </div> + + <div id="content"> + <h1 class="classTitle">Class Index</h1> + + + <div> + <h2><a href="symbols/_global_.html">_global_</a></h2> + + </div> + <hr /> + + + </div> + <div class="fineprint" style="clear:both"> + + Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blankt">JsDoc Toolkit</a> 2.4.0 on Fri Jan 28 2022 12:39:00 GMT+0100 (MEZ) + </div> + </body> +</html> \ No newline at end of file diff --git a/assets/documentation/documentation_cn_timeline/symbols/_global_.html b/assets/documentation/documentation_cn_timeline/symbols/_global_.html new file mode 100644 index 0000000000000000000000000000000000000000..29fb15b07da35b80a39e665b9a3d57211a44c9ac --- /dev/null +++ b/assets/documentation/documentation_cn_timeline/symbols/_global_.html @@ -0,0 +1,1856 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + <meta name="generator" content="JsDoc Toolkit" /> + + <title>JsDoc Reference - _global_</title> + + <style type="text/css"> + /* default.css */ +body +{ + font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif; + width: 800px; +} + +.header +{ + clear: both; + background-color: #ccc; + padding: 8px; +} + +h1 +{ + font-size: 150%; + font-weight: bold; + padding: 0; + margin: 1em 0 0 .3em; +} + +hr +{ + border: none 0; + border-top: 1px solid #7F8FB1; + height: 1px; +} + +pre.code +{ + display: block; + padding: 8px; + border: 1px dashed #ccc; +} + +#index +{ + margin-top: 24px; + float: left; + width: 160px; + position: absolute; + left: 8px; + background-color: #F3F3F3; + padding: 8px; +} + +#content +{ + margin-left: 190px; + width: 600px; +} + +.classList +{ + list-style-type: none; + padding: 0; + margin: 0 0 0 8px; + font-family: arial, sans-serif; + font-size: 1em; + overflow: auto; +} + +.classList li +{ + padding: 0; + margin: 0 0 8px 0; +} + +.summaryTable { width: 100%; } + +h1.classTitle +{ + font-size:170%; + line-height:130%; +} + +h2 { font-size: 110%; } +caption, div.sectionTitle +{ + background-color: #7F8FB1; + color: #fff; + font-size:130%; + text-align: left; + padding: 2px 6px 2px 6px; + border: 1px #7F8FB1 solid; +} + +div.sectionTitle { margin-bottom: 8px; } +.summaryTable thead { display: none; } + +.summaryTable td +{ + vertical-align: top; + padding: 4px; + border-bottom: 1px #7F8FB1 solid; + border-right: 1px #7F8FB1 solid; +} + +/*col#summaryAttributes {}*/ +.summaryTable td.attributes +{ + border-left: 1px #7F8FB1 solid; + width: 140px; + text-align: right; +} + +td.attributes, .fixedFont +{ + line-height: 15px; + color: #002EBE; + font-family: "Courier New",Courier,monospace; + font-size: 13px; +} + +.summaryTable td.nameDescription +{ + text-align: left; + font-size: 13px; + line-height: 15px; +} + +.summaryTable td.nameDescription, .description +{ + line-height: 15px; + padding: 4px; + padding-left: 4px; +} + +.summaryTable { margin-bottom: 8px; } + +ul.inheritsList +{ + list-style: square; + margin-left: 20px; + padding-left: 0; +} + +.detailList { + margin-left: 20px; + line-height: 15px; +} +.detailList dt { margin-left: 20px; } + +.detailList .heading +{ + font-weight: bold; + padding-bottom: 6px; + margin-left: 0; +} + +.light, td.attributes, .light a:link, .light a:visited +{ + color: #777; + font-style: italic; +} + +.fineprint +{ + text-align: right; + font-size: 10px; +} + </style> + </head> + + <body> +<!-- ============================== header ================================= --> + <!-- begin static/header.html --> + <div id="header"> +</div> + <!-- end static/header.html --> + +<!-- ============================== classes index ============================ --> + <div id="index"> + <!-- begin publish.classesIndex --> + <div align="center"><a href="../index.html">Class Index</a> +| <a href="../files.html">File Index</a></div> +<hr /> +<h2>Classes</h2> +<ul class="classList"> + + <li><i><a href="../symbols/_global_.html">_global_</a></i></li> + +</ul> +<hr /> + <!-- end publish.classesIndex --> + </div> + + <div id="content"> +<!-- ============================== class title ============================ --> + <h1 class="classTitle"> + + Built-In Namespace _global_ + </h1> + +<!-- ============================== class summary ========================== --> + <p class="description"> + + + + + + + </p> + +<!-- ============================== constructor summary ==================== --> + + +<!-- ============================== properties summary ===================== --> + + + + <table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class _global_."> + <caption>Field Summary</caption> + <thead> + <tr> + <th scope="col">Field Attributes</th> + <th scope="col">Field Name and Description</th> + </tr> + </thead> + <tbody> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#color">color</a></b> + </div> + <div class="description">scale functions that return y coordinate/color of node depending on group</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#g">g</a></b> + </div> + <div class="description">creates group element</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#gX">gX</a></b> + </div> + <div class="description">draws x-axis</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#intervalId">intervalId</a></b> + </div> + <div class="description">checks at a fixed interval whether the contents of the JSON file have changed + and reloads the program if necessary</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#link">link</a></b> + </div> + <div class="description">creates link object</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#rect">rect</a></b> + </div> + <div class="description">creates a background with a click functionality</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#simulation">simulation</a></b> + </div> + <div class="description">creates a new simulation +updates the positions of the links and nodes when the + state of the layout has changed (simulation has advanced by a tick)</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#svg">svg</a></b> + </div> + <div class="description">creates svg object and associated attributes +applies the zoom behavior to svg</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#svg_legend">svg_legend</a></b> + </div> + <div class="description">creates svg object (legend) with text, circles and arrows</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#to_remove">to_remove</a></b> + </div> + <div class="description">saves highlighted node for click functionality</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#xAxis">xAxis</a></b> + </div> + <div class="description">creates x-axis element</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"> + <b><a href="../symbols/_global_.html#zoom">zoom</a></b> + </div> + <div class="description">creates a new zoom behavior</div> + </td> + </tr> + + </tbody> + </table> + + + + + +<!-- ============================== methods summary ======================== --> + + + + <table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class _global_."> + <caption>Method Summary</caption> + <thead> + <tr> + <th scope="col">Method Attributes</th> + <th scope="col">Method Name and Description</th> + </tr> + </thead> + <tbody> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#click_background">click_background</a></b>() + </div> + <div class="description">removes the highlights of the circles and their links</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#click_node">click_node</a></b>(node) + </div> + <div class="description">sets color of circle and its links to black and removes the previous highlights +displays overview info of node in textbox</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#display_abstract">display_abstract</a></b>(a-) + </div> + <div class="description">displays abstract in textbox if a is true, overview text otherwise</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#dragged_node">dragged_node</a></b>(node) + </div> + <div class="description">applies the dragging to the node</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#fix_nodes">fix_nodes</a></b>(this_node) + </div> + <div class="description">fix positions of all nodes except for the current node</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#get_svg_string">get_svg_string</a></b>(svgNode) + </div> + <div class="description">generate svgString</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#handle_tick">handle_tick</a></b>() + </div> + <div class="description">updates the positions of the links and nodes</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#handle_transformation">handle_transformation</a></b>() + </div> + <div class="description">applies the transformation (zooming or dragging) to the g element</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#highlight_button">highlight_button</a></b>(btn) + </div> + <div class="description">sets color of btn to dark gray</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#is_link_for_node">is_link_for_node</a></b>(node, link) + </div> + <div class="description">returns true if link is directly connected to node and false if it is not</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#mark_link">mark_link</a></b>(node) + </div> + <div class="description">sets color of link (line and arrowhead) to black if it is directly connected to node +and to grey otherwise</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#reset_button_highlight">reset_button_highlight</a></b>() + </div> + <div class="description">sets color of all buttons to default light gray</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#reset_view">reset_view</a></b>() + </div> + <div class="description">transforms svg so that the zoom and drag is reset</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#save_svg">save_svg</a></b>() + </div> + <div class="description">save svg as png</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#self_citation">self_citation</a></b>(source, target) + </div> + <div class="description">returns true if journals have a common author (self-citation)</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#start_drag_node">start_drag_node</a></b>(node) + </div> + <div class="description">initializes the dragging of the node</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#svg_string_to_image">svg_string_to_image</a></b>(svgString, width, height, format, callback) + </div> + <div class="description">convert svgString to image and export it</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#textbox_content">textbox_content</a></b>(node) + </div> + <div class="description">saves text for overview and abstract of node +outputs node info to textbox</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#update">update</a></b>(nodes, links) + </div> + <div class="description">calls update functions for links, nodes and x-axis +adds the nodes, links and tick functionality to the simulation</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#update_links">update_links</a></b>(links) + </div> + <div class="description">initializes and shows links (edges)</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#update_marker">update_marker</a></b>(color, target) + </div> + <div class="description">creates arrowhead and returns its url</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#update_nodes">update_nodes</a></b>(nodes) + </div> + <div class="description">initializes and shows nodes with circles, texts and a click functionality +creates a new drag behavior and applies it to the circles</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#update_xaxis">update_xaxis</a></b>(nodes) + </div> + <div class="description">initializes and shows x-axis</div> + </td> + </tr> + + <tr> + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/_global_.html#zoom_to_graph">zoom_to_graph</a></b>() + </div> + <div class="description">transforms svg so that the zoom is adapted to the size of the graph</div> + </td> + </tr> + + </tbody> + </table> + + + + +<!-- ============================== events summary ======================== --> + + +<!-- ============================== constructor details ==================== --> + + +<!-- ============================== field details ========================== --> + + <div class="sectionTitle"> + Field Detail + </div> + + <a name="color"> </a> + <div class="fixedFont"> + + + <b>color</b> + + </div> + <div class="description"> + scale functions that return y coordinate/color of node depending on group + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="g"> </a> + <div class="fixedFont"> + + + <b>g</b> + + </div> + <div class="description"> + creates group element + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="gX"> </a> + <div class="fixedFont"> + + + <b>gX</b> + + </div> + <div class="description"> + draws x-axis + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="intervalId"> </a> + <div class="fixedFont"> + + + <b>intervalId</b> + + </div> + <div class="description"> + checks at a fixed interval whether the contents of the JSON file have changed + and reloads the program if necessary + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="link"> </a> + <div class="fixedFont"> + + + <b>link</b> + + </div> + <div class="description"> + creates link object + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="rect"> </a> + <div class="fixedFont"> + + + <b>rect</b> + + </div> + <div class="description"> + creates a background with a click functionality + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="simulation"> </a> + <div class="fixedFont"> + + + <b>simulation</b> + + </div> + <div class="description"> + creates a new simulation +updates the positions of the links and nodes when the + state of the layout has changed (simulation has advanced by a tick) + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="svg"> </a> + <div class="fixedFont"> + + + <b>svg</b> + + </div> + <div class="description"> + creates svg object and associated attributes +applies the zoom behavior to svg + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="svg_legend"> </a> + <div class="fixedFont"> + + + <b>svg_legend</b> + + </div> + <div class="description"> + creates svg object (legend) with text, circles and arrows + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="to_remove"> </a> + <div class="fixedFont"> + + + <b>to_remove</b> + + </div> + <div class="description"> + saves highlighted node for click functionality + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="xAxis"> </a> + <div class="fixedFont"> + + + <b>xAxis</b> + + </div> + <div class="description"> + creates x-axis element + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + <hr /> + + <a name="zoom"> </a> + <div class="fixedFont"> + + + <b>zoom</b> + + </div> + <div class="description"> + creates a new zoom behavior + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + + + + +<!-- ============================== method details ========================= --> + + <div class="sectionTitle"> + Method Detail + </div> + + <a name="click_background"> </a> + <div class="fixedFont"> + + + <b>click_background</b>() + + </div> + <div class="description"> + removes the highlights of the circles and their links + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="click_node"> </a> + <div class="fixedFont"> + + + <b>click_node</b>(node) + + </div> + <div class="description"> + sets color of circle and its links to black and removes the previous highlights +displays overview info of node in textbox + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="display_abstract"> </a> + <div class="fixedFont"> + + + <b>display_abstract</b>(a-) + + </div> + <div class="description"> + displays abstract in textbox if a is true, overview text otherwise + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{bool}</span> <b>a-</b> + + </dt> + <dd>bool</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="dragged_node"> </a> + <div class="fixedFont"> + + + <b>dragged_node</b>(node) + + </div> + <div class="description"> + applies the dragging to the node + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="fix_nodes"> </a> + <div class="fixedFont"> + + + <b>fix_nodes</b>(this_node) + + </div> + <div class="description"> + fix positions of all nodes except for the current node + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>this_node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="get_svg_string"> </a> + <div class="fixedFont"> + + + <b>get_svg_string</b>(svgNode) + + </div> + <div class="description"> + generate svgString + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>svgNode</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="handle_tick"> </a> + <div class="fixedFont"> + + + <b>handle_tick</b>() + + </div> + <div class="description"> + updates the positions of the links and nodes + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="handle_transformation"> </a> + <div class="fixedFont"> + + + <b>handle_transformation</b>() + + </div> + <div class="description"> + applies the transformation (zooming or dragging) to the g element + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="highlight_button"> </a> + <div class="fixedFont"> + + + <b>highlight_button</b>(btn) + + </div> + <div class="description"> + sets color of btn to dark gray + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>btn</b> + + </dt> + <dd>- button</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="is_link_for_node"> </a> + <div class="fixedFont"> + + + <b>is_link_for_node</b>(node, link) + + </div> + <div class="description"> + returns true if link is directly connected to node and false if it is not + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>link</b> + + </dt> + <dd>- link</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="mark_link"> </a> + <div class="fixedFont"> + + + <b>mark_link</b>(node) + + </div> + <div class="description"> + sets color of link (line and arrowhead) to black if it is directly connected to node +and to grey otherwise + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="reset_button_highlight"> </a> + <div class="fixedFont"> + + + <b>reset_button_highlight</b>() + + </div> + <div class="description"> + sets color of all buttons to default light gray + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="reset_view"> </a> + <div class="fixedFont"> + + + <b>reset_view</b>() + + </div> + <div class="description"> + transforms svg so that the zoom and drag is reset + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="save_svg"> </a> + <div class="fixedFont"> + + + <b>save_svg</b>() + + </div> + <div class="description"> + save svg as png + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + + + + <hr /> + + <a name="self_citation"> </a> + <div class="fixedFont"> + + + <b>self_citation</b>(source, target) + + </div> + <div class="description"> + returns true if journals have a common author (self-citation) + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>source</b> + + </dt> + <dd>- node</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>target</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="start_drag_node"> </a> + <div class="fixedFont"> + + + <b>start_drag_node</b>(node) + + </div> + <div class="description"> + initializes the dragging of the node + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="svg_string_to_image"> </a> + <div class="fixedFont"> + + + <b>svg_string_to_image</b>(svgString, width, height, format, callback) + + </div> + <div class="description"> + convert svgString to image and export it + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>svgString</b> + + </dt> + <dd>- svgString</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>width</b> + + </dt> + <dd>- width of image</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>height</b> + + </dt> + <dd>- height of image</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>format</b> + + </dt> + <dd>- format to save image in</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>callback</b> + + </dt> + <dd>- callback function</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="textbox_content"> </a> + <div class="fixedFont"> + + + <b>textbox_content</b>(node) + + </div> + <div class="description"> + saves text for overview and abstract of node +outputs node info to textbox + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>node</b> + + </dt> + <dd>- node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="update"> </a> + <div class="fixedFont"> + + + <b>update</b>(nodes, links) + + </div> + <div class="description"> + calls update functions for links, nodes and x-axis +adds the nodes, links and tick functionality to the simulation + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>nodes</b> + + </dt> + <dd>- nodes</dd> + + <dt> + <span class="light fixedFont">{object}</span> <b>links</b> + + </dt> + <dd>- links</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="update_links"> </a> + <div class="fixedFont"> + + + <b>update_links</b>(links) + + </div> + <div class="description"> + initializes and shows links (edges) + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>links</b> + + </dt> + <dd>- links</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="update_marker"> </a> + <div class="fixedFont"> + + + <b>update_marker</b>(color, target) + + </div> + <div class="description"> + creates arrowhead and returns its url + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{string}</span> <b>color</b> + + </dt> + <dd>- color of arrowhead</dd> + + <dt> + <span class="light fixedFont">{string}</span> <b>target</b> + + </dt> + <dd>- target node</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="update_nodes"> </a> + <div class="fixedFont"> + + + <b>update_nodes</b>(nodes) + + </div> + <div class="description"> + initializes and shows nodes with circles, texts and a click functionality +creates a new drag behavior and applies it to the circles + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>nodes</b> + + </dt> + <dd>- nodes</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="update_xaxis"> </a> + <div class="fixedFont"> + + + <b>update_xaxis</b>(nodes) + + </div> + <div class="description"> + initializes and shows x-axis + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + <dl class="detailList"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{object}</span> <b>nodes</b> + + </dt> + <dd>- nodes</dd> + + </dl> + + + + + + + + + <hr /> + + <a name="zoom_to_graph"> </a> + <div class="fixedFont"> + + + <b>zoom_to_graph</b>() + + </div> + <div class="description"> + transforms svg so that the zoom is adapted to the size of the graph + + <br /> + <i>Defined in: </i> <a href="../symbols/src/cn_timeline.js.html">cn_timeline.js</a>. + + + </div> + + + + + + + + + + + + + + + +<!-- ============================== event details ========================= --> + + + <hr /> + </div> + + +<!-- ============================== footer ================================= --> + <div class="fineprint" style="clear:both"> + + Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Fri Jan 28 2022 12:39:00 GMT+0100 (MEZ) + </div> + </body> +</html> diff --git a/assets/documentation/documentation_cn_timeline/symbols/src/cn_timeline.js.html b/assets/documentation/documentation_cn_timeline/symbols/src/cn_timeline.js.html new file mode 100644 index 0000000000000000000000000000000000000000..76d4a8771afb7fc1610e11080d422305041fa53f --- /dev/null +++ b/assets/documentation/documentation_cn_timeline/symbols/src/cn_timeline.js.html @@ -0,0 +1,616 @@ +<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style> + .KEYW {color: #933;} + .COMM {color: #bbb; font-style: italic;} + .NUMB {color: #393;} + .STRN {color: #393;} + .REGX {color: #339;} + .line {border-right: 1px dotted #666; color: #666; font-style: normal;} + </style></head><body><pre><span class='line'> 1</span> <span class="COMM">/** +<span class='line'> 2</span> * creates a new zoom behavior +<span class='line'> 3</span> */</span><span class="WHIT"> +<span class='line'> 4</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">zoom</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.zoom</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">"zoom"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handle_transformation</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 5</span> +<span class='line'> 6</span> </span><span class="COMM">/** +<span class='line'> 7</span> * creates svg object and associated attributes +<span class='line'> 8</span> * applies the zoom behavior to svg +<span class='line'> 9</span> */</span><span class="WHIT"> +<span class='line'> 10</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">"svg.graph"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 11</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">zoom</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 12</span> </span><span class="NAME">width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.attr</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 13</span> </span><span class="NAME">height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.attr</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 14</span> </span><span class="NAME">zoom_perc</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 15</span> +<span class='line'> 16</span> </span><span class="COMM">/** +<span class='line'> 17</span> * scale functions that return y coordinate/color of node depending on group +<span class='line'> 18</span> */</span><span class="WHIT"> +<span class='line'> 19</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">color</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.scaleOrdinal</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 20</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">domain</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"Citedby"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Input"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Reference"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 21</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">range</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">'#01d7c0'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'#7fa9d4'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'#a15eb2'</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 22</span> </span><span class="NAME">y_scale</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.scaleOrdinal</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 23</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">domain</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"Citedby"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Input"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Reference"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 24</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">range</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">400</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 25</span> +<span class='line'> 26</span> </span><span class="COMM">/** +<span class='line'> 27</span> * creates node object and (default) radius +<span class='line'> 28</span> */</span><span class="WHIT"> +<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 30</span> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 31</span> +<span class='line'> 32</span> </span><span class="COMM">/** +<span class='line'> 33</span> * saves highlighted node for click functionality +<span class='line'> 34</span> */</span><span class="WHIT"> +<span class='line'> 35</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">to_remove</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 36</span> +<span class='line'> 37</span> </span><span class="COMM">/** +<span class='line'> 38</span> * creates link object +<span class='line'> 39</span> */</span><span class="WHIT"> +<span class='line'> 40</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">link</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 41</span> +<span class='line'> 42</span> </span><span class="COMM">/** +<span class='line'> 43</span> * creates a background with a click functionality +<span class='line'> 44</span> */</span><span class="WHIT"> +<span class='line'> 45</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rect</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.append</span><span class="PUNC">(</span><span class="STRN">"rect"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 46</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 47</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 48</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 49</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 50</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"fill"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'white'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 51</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">click_background</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 52</span> +<span class='line'> 53</span> </span><span class="COMM">/** +<span class='line'> 54</span> * creates svg object (legend) with text, circles and arrows +<span class='line'> 55</span> */</span><span class="WHIT"> +<span class='line'> 56</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svg_legend</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">"svg.legendsvg"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 57</span> </span><span class="NAME">legend_position</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">65</span><span class="PUNC">,</span><span class="NUMB">95</span><span class="PUNC">,</span><span class="NUMB">125</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 58</span> </span><span class="NAME">arrow_legend_position</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NUMB">25</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 59</span> </span><span class="NAME">arrow_group_names</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"Citation"</span><span class="PUNC">,</span><span class="STRN">"Self-Citation"</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 60</span> </span><span class="NAME">group_names</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"Cited-by"</span><span class="PUNC">,</span><span class="STRN">"Input"</span><span class="PUNC">,</span><span class="STRN">"Reference"</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 61</span> </span><span class="NAME">line_type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.scaleOrdinal</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 62</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">domain</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"line"</span><span class="PUNC">,</span><span class="STRN">"dotted"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 63</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">range</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"8,0"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="PUNC">(</span><span class="STRN">"8,8"</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 64</span> </span><span class="NAME">text_info</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 65</span> </span><span class="NAME">text_abstract</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 66</span> </span><span class="WHIT"> +<span class='line'> 67</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">legend</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg_legend.selectAll</span><span class="PUNC">(</span><span class="STRN">".legend"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">data</span><span class="PUNC">(</span><span class="NAME">legend_position</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 69</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">enter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 70</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">"g"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="STRN">"legend"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 72</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"transform"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"translate(0,"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 73</span> </span><span class="WHIT"> +<span class='line'> 74</span> </span><span class="NAME">legend.append</span><span class="PUNC">(</span><span class="STRN">"text"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 75</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">80</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 76</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 77</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"dy"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">".35em"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 78</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"text-anchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"start"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 79</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">group_names</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 80</span> </span><span class="WHIT"> +<span class='line'> 81</span> </span><span class="NAME">legend.append</span><span class="PUNC">(</span><span class="STRN">"circle"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 82</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"r"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 83</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"cx"</span><span class="PUNC">,</span><span class="NUMB">30</span><span class="PUNC">-</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 84</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"fill"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 85</span> </span><span class="WHIT"> +<span class='line'> 86</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">legend_arrow</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg_legend.selectAll</span><span class="PUNC">(</span><span class="STRN">".legendarr"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 87</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">data</span><span class="PUNC">(</span><span class="NAME">arrow_legend_position</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 88</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">enter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 89</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">"g"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 90</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="STRN">"legendarr"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 91</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"transform"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"translate(0,"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 92</span> </span><span class="WHIT"> +<span class='line'> 93</span> </span><span class="NAME">legend_arrow.append</span><span class="PUNC">(</span><span class="STRN">"line"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 94</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 95</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x2"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">50</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y2"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke-dasharray"</span><span class="PUNC">,</span><span class="NAME">line_type</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'#999'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>100</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke-width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"1px"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>101</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">'pointer-events'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>102</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'marker-end'</span><span class="PUNC">,</span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="STRN">'#999'</span><span class="PUNC">,</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>103</span> +<span class='line'>104</span> </span><span class="NAME">legend_arrow.append</span><span class="PUNC">(</span><span class="STRN">"text"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>105</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">80</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>106</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>107</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"dy"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">".35em"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>108</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"text-anchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"start"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>109</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">arrow_group_names</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>110</span> +<span class='line'>111</span> </span><span class="COMM">/** +<span class='line'>112</span> * creates a new simulation +<span class='line'>113</span> * updates the positions of the links and nodes when the +<span class='line'>114</span> state of the layout has changed (simulation has advanced by a tick) +<span class='line'>115</span> */</span><span class="WHIT"> +<span class='line'>116</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">simulation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.forceSimulation</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>117</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">force</span><span class="PUNC">(</span><span class="STRN">"link"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.forceLink</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">id</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d.doi</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">distance</span><span class="PUNC">(</span><span class="NUMB">50</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>118</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">strength</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>119</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d.group</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"Input"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>120</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>121</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>122</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">force</span><span class="PUNC">(</span><span class="STRN">"collide"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.forceCollide</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>123</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d.group</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"Input"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">70</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>124</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">75</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>125</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">strength</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>126</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">force</span><span class="PUNC">(</span><span class="STRN">"charge"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.forceManyBody</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">strength</span><span class="PUNC">(</span><span class="NUMB">0.001</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>127</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">force</span><span class="PUNC">(</span><span class="STRN">"center"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.forceCenter</span><span class="PUNC">(</span><span class="NAME">width</span><span class="PUNC">/</span><span class="NUMB">2</span><span class="PUNC">-</span><span class="NUMB">20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">/</span><span class="NUMB">2</span><span class="PUNC">+</span><span class="NUMB">40</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>128</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">alpha</span><span class="PUNC">(</span><span class="NUMB">0.004</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>129</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">velocityDecay</span><span class="PUNC">(</span><span class="NUMB">0.65</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>130</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">"end"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">zoom_to_graph</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>131</span> +<span class='line'>132</span> </span><span class="COMM">/** +<span class='line'>133</span> * creates group element +<span class='line'>134</span> */</span><span class="WHIT"> +<span class='line'>135</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">g</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.append</span><span class="PUNC">(</span><span class="STRN">"g"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>136</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"everything"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>137</span> +<span class='line'>138</span> </span><span class="COMM">/** +<span class='line'>139</span> * creates x-axis element +<span class='line'>140</span> */</span><span class="WHIT"> +<span class='line'>141</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xAxis</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.axisBottom</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>142</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">tickFormat</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">%</span><span class="NUMB">1</span><span class="PUNC">==</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>143</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">ticks</span><span class="PUNC">(</span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>144</span> +<span class='line'>145</span> </span><span class="COMM">/** +<span class='line'>146</span> * draws x-axis +<span class='line'>147</span> */</span><span class="WHIT"> +<span class='line'>148</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">gX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.append</span><span class="PUNC">(</span><span class="STRN">"g"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>149</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"axis axis--x"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>150</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"transform"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"translate(0,25)"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>151</span> </span><span class="NAME">gX.append</span><span class="PUNC">(</span><span class="STRN">"text"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>152</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">5</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>153</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">85</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>154</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"text-anchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"end"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>155</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">'fill'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'black'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>156</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="STRN">"Year"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>157</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"font-size"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"15px"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>158</span> +<span class='line'>159</span> </span><span class="COMM">/** +<span class='line'>160</span> * loads JSON data and calls the update function +<span class='line'>161</span> */</span><span class="WHIT"> +<span class='line'>162</span> </span><span class="NAME">d3.json</span><span class="PUNC">(</span><span class="STRN">"json_text.json"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">then</span><span class="PUNC">(</span><span class="NAME">success</span><span class="PUNC">,</span><span class="NAME">failure</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>163</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">success</span><span class="PUNC">(</span><span class="NAME">graph</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>164</span> </span><span class="WHIT"> </span><span class="NAME">update</span><span class="PUNC">(</span><span class="NAME">graph.links</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">graph.nodes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>165</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>166</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">failure</span><span class="PUNC">(</span><span class="NAME">graph</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>167</span> </span><span class="WHIT"> </span><span class="NAME">localStorage.setItem</span><span class="PUNC">(</span><span class="STRN">"oldjson"</span><span class="PUNC">,</span><span class="STRN">"keineJson"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>168</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>169</span> +<span class='line'>170</span> </span><span class="COMM">/** +<span class='line'>171</span> * checks at a fixed interval whether the contents of the JSON file have changed +<span class='line'>172</span> and reloads the program if necessary +<span class='line'>173</span> */</span><span class="WHIT"> +<span class='line'>174</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">intervalId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">window.setInterval</span><span class="PUNC">(</span><span class="NAME">check_if_json_changed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">500</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>175</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">check_if_json_changed</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>176</span> </span><span class="WHIT"> </span><span class="NAME">d3.json</span><span class="PUNC">(</span><span class="STRN">"json_text.json"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">then</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">graph</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>177</span> </span><span class="WHIT"> </span><span class="NAME">newjson_string</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">JSON.stringify</span><span class="PUNC">(</span><span class="NAME">graph</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>178</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newjson</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CryptoJS.MD5</span><span class="PUNC">(</span><span class="NAME">newjson_string</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>179</span> </span><span class="WHIT"> </span><span class="NAME">oldjson</span><span class="PUNC">=</span><span class="NAME">localStorage.getItem</span><span class="PUNC">(</span><span class="STRN">"oldjson"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>180</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">newjson</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">oldjson</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>181</span> </span><span class="WHIT"> </span><span class="NAME">localStorage.setItem</span><span class="PUNC">(</span><span class="STRN">"oldjson"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newjson</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>182</span> </span><span class="WHIT"> </span><span class="NAME">window.location.reload</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>183</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>184</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>185</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>186</span> +<span class='line'>187</span> </span><span class="COMM">/** +<span class='line'>188</span> * calls update functions for links, nodes and x-axis +<span class='line'>189</span> * adds the nodes, links and tick functionality to the simulation +<span class='line'>190</span> * @param {object} nodes - nodes +<span class='line'>191</span> * @param {object} links - links +<span class='line'>192</span> */</span><span class="WHIT"> +<span class='line'>193</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">update</span><span class="PUNC">(</span><span class="NAME">links</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>194</span> </span><span class="WHIT"> </span><span class="NAME">update_xaxis</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>195</span> </span><span class="WHIT"> </span><span class="NAME">update_links</span><span class="PUNC">(</span><span class="NAME">links</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>196</span> </span><span class="WHIT"> </span><span class="NAME">update_nodes</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>197</span> </span><span class="WHIT"> +<span class='line'>198</span> </span><span class="NAME">simulation.nodes</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>199</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">"tick"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handle_tick</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>200</span> </span><span class="WHIT"> </span><span class="NAME">simulation.force</span><span class="PUNC">(</span><span class="STRN">"link"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>201</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">links</span><span class="PUNC">(</span><span class="NAME">links</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>202</span> </span><span class="WHIT"> +<span class='line'>203</span> </span><span class="NAME">link.attr</span><span class="PUNC">(</span><span class="STRN">'marker-end'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="STRN">"#999"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d.target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>204</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke-dasharray"</span><span class="PUNC">,</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">self_citation</span><span class="PUNC">(</span><span class="NAME">d.source</span><span class="PUNC">,</span><span class="NAME">d.target</span><span class="PUNC">)</span><span class="PUNC">?</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"8,8"</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"1,0"</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>205</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>206</span> +<span class='line'>207</span> </span><span class="COMM">/** +<span class='line'>208</span> * initializes and shows x-axis +<span class='line'>209</span> * @param {object} nodes - nodes +<span class='line'>210</span> */</span><span class="WHIT"> +<span class='line'>211</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">update_xaxis</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>212</span> </span><span class="WHIT"> </span><span class="NAME">years</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>213</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">nodes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>214</span> </span><span class="WHIT"> </span><span class="NAME">years.push</span><span class="PUNC">(</span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="REGX">/\d{4}\s*$/</span><span class="PUNC">.</span><span class="NAME">exec</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="STRN">"year"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>215</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>216</span> +<span class='line'>217</span> </span><span class="WHIT"> </span><span class="NAME">xscale</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.scaleLinear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>218</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">domain</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">d3.min</span><span class="PUNC">(</span><span class="NAME">years</span><span class="PUNC">)</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.max</span><span class="PUNC">(</span><span class="NAME">years</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>219</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">range</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>220</span> +<span class='line'>221</span> </span><span class="WHIT"> </span><span class="NAME">xAxis.scale</span><span class="PUNC">(</span><span class="NAME">xscale</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>222</span> </span><span class="WHIT"> </span><span class="NAME">gX.call</span><span class="PUNC">(</span><span class="NAME">xAxis</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>223</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>224</span> +<span class='line'>225</span> </span><span class="COMM">/** +<span class='line'>226</span> * initializes and shows links (edges) +<span class='line'>227</span> * @param {object} links - links +<span class='line'>228</span> */</span><span class="WHIT"> +<span class='line'>229</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">update_links</span><span class="PUNC">(</span><span class="NAME">links</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>230</span> </span><span class="WHIT"> </span><span class="NAME">link</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">g.append</span><span class="PUNC">(</span><span class="STRN">"g"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>231</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">selectAll</span><span class="PUNC">(</span><span class="STRN">".link"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>232</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">data</span><span class="PUNC">(</span><span class="NAME">links</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>233</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">enter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>234</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">"line"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>235</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke-width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"1px"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>236</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"#999"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>237</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"link"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>238</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>239</span> +<span class='line'>240</span> </span><span class="COMM">/** +<span class='line'>241</span> * initializes and shows nodes with circles, texts and a click functionality +<span class='line'>242</span> * creates a new drag behavior and applies it to the circles +<span class='line'>243</span> * @param {object} nodes - nodes +<span class='line'>244</span> */</span><span class="WHIT"> +<span class='line'>245</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">update_nodes</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>246</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">g.selectAll</span><span class="PUNC">(</span><span class="STRN">".node"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>247</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">data</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>248</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">enter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>249</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">"g"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>250</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"node"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>251</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">d3.drag</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>252</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">"start"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">start_drag_node</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>253</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">"drag"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dragged_node</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>254</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>255</span> +<span class='line'>256</span> </span><span class="WHIT"> </span><span class="NAME">node.append</span><span class="PUNC">(</span><span class="STRN">"circle"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>257</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"circle"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>258</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"r"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">1.5</span><span class="PUNC">*</span><span class="NAME">r</span><span class="PUNC">+</span><span class="NAME">d.citations</span><span class="PUNC">*</span><span class="NUMB">0.15</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>259</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"fill"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">(</span><span class="NAME">d.group</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>260</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">click_node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>261</span> +<span class='line'>262</span> </span><span class="WHIT"> </span><span class="NAME">node.append</span><span class="PUNC">(</span><span class="STRN">"text"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>263</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"class"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"text"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>264</span> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"font-size"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"15px"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>265</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">'pointer-events'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'auto'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>266</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">text</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">const</span><span class="WHIT"> </span><span class="NAME">first_author</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.author</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">" "</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>267</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">first_author</span><span class="PUNC">[</span><span class="NAME">first_author.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>268</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">on</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">click_node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>269</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>270</span> +<span class='line'>271</span> </span><span class="COMM">/** +<span class='line'>272</span> * creates arrowhead and returns its url +<span class='line'>273</span> * @param {string} color - color of arrowhead +<span class='line'>274</span> * @param {string} target - target node +<span class='line'>275</span> */</span><span class="WHIT"> +<span class='line'>276</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="NAME">color</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">target</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>277</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">radius</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1.5</span><span class="PUNC">*</span><span class="NAME">r</span><span class="PUNC">+</span><span class="NAME">target.citations</span><span class="PUNC">*</span><span class="NUMB">0.15</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>278</span> </span><span class="WHIT"> </span><span class="NAME">svg.append</span><span class="PUNC">(</span><span class="STRN">'defs'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">'marker'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>279</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'id'</span><span class="PUNC">,</span><span class="NAME">color.replace</span><span class="PUNC">(</span><span class="STRN">"#"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="NAME">radius</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>280</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'viewBox'</span><span class="PUNC">,</span><span class="STRN">'-0 -5 10 10'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>281</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'refX'</span><span class="PUNC">,</span><span class="NAME">radius</span><span class="PUNC">+</span><span class="NUMB">9.5</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>282</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'refY'</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>283</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'orient'</span><span class="PUNC">,</span><span class="STRN">'auto'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>284</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'markerWidth'</span><span class="PUNC">,</span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>285</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'markerHeight'</span><span class="PUNC">,</span><span class="NUMB">15</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>286</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'xoverflow'</span><span class="PUNC">,</span><span class="STRN">'visible'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>287</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">append</span><span class="PUNC">(</span><span class="STRN">'svg:path'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>288</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'d'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'M 0,-5 L 10 ,0 L 0,5'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>289</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'fill'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>290</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">'stroke'</span><span class="PUNC">,</span><span class="STRN">'none'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>291</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"url("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">color</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">radius</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>292</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>293</span> +<span class='line'>294</span> </span><span class="COMM">/** +<span class='line'>295</span> * sets color of circle and its links to black and removes the previous highlights +<span class='line'>296</span> * displays overview info of node in textbox +<span class='line'>297</span> * @param {object} node - node +<span class='line'>298</span> */</span><span class="WHIT"> +<span class='line'>299</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">click_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>300</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="NAME">this.parentNode</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">raise</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>301</span> </span><span class="WHIT"> </span><span class="NAME">fix_nodes</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>302</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">to_remove</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>303</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="NAME">to_remove</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">selectAll</span><span class="PUNC">(</span><span class="STRN">".circle"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>304</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>305</span> </span><span class="WHIT"> </span><span class="NAME">to_remove</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.parentNode</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>306</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="NAME">this.parentNode</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">selectAll</span><span class="PUNC">(</span><span class="STRN">".circle"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="STRN">"black"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>307</span> </span><span class="WHIT"> </span><span class="NAME">mark_link</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>308</span> </span><span class="WHIT"> </span><span class="NAME">textbox_content</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>309</span> </span><span class="WHIT"> </span><span class="NAME">reset_button_highlight</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>310</span> </span><span class="WHIT"> </span><span class="NAME">highlight_button</span><span class="PUNC">(</span><span class="STRN">"overview"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>311</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>312</span> +<span class='line'>313</span> </span><span class="COMM">/** +<span class='line'>314</span> * removes the highlights of the circles and their links +<span class='line'>315</span> */</span><span class="WHIT"> +<span class='line'>316</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">click_background</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>317</span> </span><span class="WHIT"> </span><span class="NAME">fix_nodes</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>318</span> </span><span class="WHIT"> </span><span class="NAME">d3.selectAll</span><span class="PUNC">(</span><span class="STRN">".circle"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>319</span> </span><span class="WHIT"> </span><span class="NAME">d3.selectAll</span><span class="PUNC">(</span><span class="STRN">".link"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>320</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"#999"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>321</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'marker-end'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="STRN">'#999'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d.target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>322</span> </span><span class="WHIT"> </span><span class="NAME">text_abstract</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>323</span> </span><span class="WHIT"> </span><span class="NAME">text_info</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>324</span> </span><span class="WHIT"> </span><span class="NAME">reset_button_highlight</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>325</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">'textbox'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Click node"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>326</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>327</span> +<span class='line'>328</span> </span><span class="COMM">/** +<span class='line'>329</span> * returns true if journals have a common author (self-citation) +<span class='line'>330</span> * @param {object} source - node +<span class='line'>331</span> * @param {object} target - node +<span class='line'>332</span> */</span><span class="WHIT"> +<span class='line'>333</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">self_citation</span><span class="PUNC">(</span><span class="NAME">source</span><span class="PUNC">,</span><span class="NAME">target</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>334</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">source.author.some</span><span class="PUNC">(</span><span class="NAME">item</span><span class="PUNC">=</span><span class="PUNC">></span><span class="NAME">target.author.includes</span><span class="PUNC">(</span><span class="NAME">item</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>335</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>336</span> +<span class='line'>337</span> </span><span class="COMM">/** +<span class='line'>338</span> * sets color of link (line and arrowhead) to black if it is directly connected to node +<span class='line'>339</span> * and to grey otherwise +<span class='line'>340</span> * @param {object} node - node +<span class='line'>341</span> */</span><span class="WHIT"> +<span class='line'>342</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">mark_link</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>343</span> </span><span class="WHIT"> </span><span class="NAME">d3.selectAll</span><span class="PUNC">(</span><span class="STRN">".link"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>344</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">style</span><span class="PUNC">(</span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>345</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">is_link_for_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"black"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"#DEDEDE"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>346</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">'marker-end'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>347</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">is_link_for_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="STRN">'#000000'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">o.target</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">update_marker</span><span class="PUNC">(</span><span class="STRN">"#DEDEDE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">o.target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>348</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>349</span> +<span class='line'>350</span> </span><span class="COMM">/** +<span class='line'>351</span> * returns true if link is directly connected to node and false if it is not +<span class='line'>352</span> * @param {object} node - node +<span class='line'>353</span> * @param {object} link - link +<span class='line'>354</span> */</span><span class="WHIT"> +<span class='line'>355</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">is_link_for_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">link</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>356</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">link.source.index</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">node.index</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">link.target.index</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">node.index</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>357</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>358</span> +<span class='line'>359</span> </span><span class="COMM">/** +<span class='line'>360</span> * saves text for overview and abstract of node +<span class='line'>361</span> * outputs node info to textbox +<span class='line'>362</span> * @param {object} node - node +<span class='line'>363</span> */</span><span class="WHIT"> +<span class='line'>364</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">textbox_content</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>365</span> </span><span class="WHIT"> </span><span class="NAME">authors</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.author</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> +<span class='line'>366</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">node.author.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>367</span> </span><span class="WHIT"> </span><span class="NAME">authors</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">", "</span><span class="PUNC">+</span><span class="NAME">node.author</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>368</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>369</span> </span><span class="WHIT"> </span><span class="NAME">text_info</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Title:"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'</br>'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">node.name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> +<span class='line'>370</span> </span><span class="WHIT"> </span><span class="STRN">'</br>'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">"Author:"</span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'</br>'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="NAME">authors</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">"Date:"</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="WHIT"> +<span class='line'>371</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="NAME">node.year</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">"Journal:"</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="NAME">node.journal</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">"DOI:"</span><span class="WHIT"> +<span class='line'>372</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="NAME">node.doi</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="STRN">"Citations:"</span><span class="WHIT"> +<span class='line'>373</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="STRN">'</br>'</span><span class="PUNC">+</span><span class="NAME">node.citations</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>374</span> </span><span class="WHIT"> </span><span class="NAME">text_abstract</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.abstract</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>375</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">'textbox'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text_info</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>376</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>377</span> +<span class='line'>378</span> </span><span class="COMM">/** +<span class='line'>379</span> * sets color of btn to dark gray +<span class='line'>380</span> * @param {object} btn - button +<span class='line'>381</span> */</span><span class="WHIT"> +<span class='line'>382</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">highlight_button</span><span class="PUNC">(</span><span class="NAME">btn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>383</span> </span><span class="WHIT"> </span><span class="NAME">reset_button_highlight</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>384</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="NAME">btn</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style.background</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"#CACACA"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>385</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>386</span> +<span class='line'>387</span> </span><span class="COMM">/** +<span class='line'>388</span> * sets color of all buttons to default light gray +<span class='line'>389</span> */</span><span class="WHIT"> +<span class='line'>390</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">reset_button_highlight</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>391</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">"overview"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style.background</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>392</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">"abstract"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">style.background</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>393</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>394</span> +<span class='line'>395</span> </span><span class="COMM">/** +<span class='line'>396</span> * displays abstract in textbox if a is true, overview text otherwise +<span class='line'>397</span> * @param {bool} a- bool +<span class='line'>398</span> */</span><span class="WHIT"> +<span class='line'>399</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">display_abstract</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>400</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">text_abstract</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">text_info</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>401</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">'textbox'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Click node"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>402</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>403</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>404</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>405</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">'textbox'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text_abstract</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>406</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>407</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>408</span> </span><span class="WHIT"> </span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="STRN">'textbox'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text_info</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>409</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>410</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>411</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>412</span> +<span class='line'>413</span> </span><span class="COMM">/** +<span class='line'>414</span> * updates the positions of the links and nodes +<span class='line'>415</span> */</span><span class="WHIT"> +<span class='line'>416</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">handle_tick</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>417</span> </span><span class="WHIT"> </span><span class="NAME">link.attr</span><span class="PUNC">(</span><span class="STRN">"x1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">xscale</span><span class="PUNC">(</span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="REGX">/\d{4}\s*$/</span><span class="PUNC">.</span><span class="NAME">exec</span><span class="PUNC">(</span><span class="NAME">d.source.year</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>418</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d.source.y</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>419</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"x2"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">xscale</span><span class="PUNC">(</span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="REGX">/\d{4}\s*$/</span><span class="PUNC">.</span><span class="NAME">exec</span><span class="PUNC">(</span><span class="NAME">d.target.year</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>420</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"y2"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d.target.y</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>421</span> </span><span class="WHIT"> </span><span class="NAME">node.attr</span><span class="PUNC">(</span><span class="STRN">"transform"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"translate("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">xscale</span><span class="PUNC">(</span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="REGX">/\d{4}\s*$/</span><span class="PUNC">.</span><span class="NAME">exec</span><span class="PUNC">(</span><span class="NAME">d.year</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d.y</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>422</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>423</span> +<span class='line'>424</span> </span><span class="COMM">/** +<span class='line'>425</span> * initializes the dragging of the node +<span class='line'>426</span> * @param {object} node - node +<span class='line'>427</span> */</span><span class="WHIT"> +<span class='line'>428</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">start_drag_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>429</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">raise</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>430</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">d3.event.active</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>431</span> </span><span class="NAME">simulation.alphaTarget</span><span class="PUNC">(</span><span class="NUMB">0.3</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">restart</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>432</span> </span><span class="WHIT"> </span><span class="NAME">node.fy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.y</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>433</span> </span><span class="WHIT"> </span><span class="NAME">fix_nodes</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>434</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>435</span> +<span class='line'>436</span> </span><span class="COMM">/** +<span class='line'>437</span> * applies the dragging to the node +<span class='line'>438</span> * @param {object} node - node +<span class='line'>439</span> */</span><span class="WHIT"> +<span class='line'>440</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">dragged_node</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>441</span> </span><span class="WHIT"> </span><span class="NAME">node.fy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.event.y</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>442</span> </span><span class="WHIT"> </span><span class="NAME">fix_nodes</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>443</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>444</span> +<span class='line'>445</span> </span><span class="COMM">/** +<span class='line'>446</span> * fix positions of all nodes except for the current node +<span class='line'>447</span> * @param {object} this_node - node +<span class='line'>448</span> */</span><span class="WHIT"> +<span class='line'>449</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">fix_nodes</span><span class="PUNC">(</span><span class="NAME">this_node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>450</span> </span><span class="WHIT"> </span><span class="NAME">node.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>451</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this_node</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>452</span> </span><span class="WHIT"> </span><span class="NAME">d.fx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.x</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>453</span> </span><span class="WHIT"> </span><span class="NAME">d.fy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.y</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>454</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>455</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>456</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>457</span> +<span class='line'>458</span> </span><span class="COMM">/** +<span class='line'>459</span> * applies the transformation (zooming or dragging) to the g element +<span class='line'>460</span> */</span><span class="WHIT"> +<span class='line'>461</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">handle_transformation</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>462</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">'g'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">attr</span><span class="PUNC">(</span><span class="STRN">"transform"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d3.event.transform</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>463</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">new_xScale</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.event.transform.rescaleX</span><span class="PUNC">(</span><span class="NAME">xscale</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>464</span> </span><span class="WHIT"> </span><span class="NAME">gX.call</span><span class="PUNC">(</span><span class="NAME">xAxis.scale</span><span class="PUNC">(</span><span class="NAME">new_xScale</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>465</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>466</span> +<span class='line'>467</span> </span><span class="COMM">/** +<span class='line'>468</span> * transforms svg so that the zoom is adapted to the size of the graph +<span class='line'>469</span> */</span><span class="WHIT"> +<span class='line'>470</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">zoom_to_graph</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>471</span> </span><span class="WHIT"> </span><span class="NAME">node_bounds</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.selectAll</span><span class="PUNC">(</span><span class="STRN">"svg.graph"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">node</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBBox</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>472</span> </span><span class="WHIT"> </span><span class="NAME">svg_bounds</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">"rect"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">node</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBBox</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>473</span> +<span class='line'>474</span> </span><span class="WHIT"> </span><span class="NAME">perc_x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">/</span><span class="PUNC">(</span><span class="NAME">node_bounds.width</span><span class="PUNC">+</span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>475</span> </span><span class="WHIT"> </span><span class="NAME">perc_y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">/</span><span class="PUNC">(</span><span class="NAME">node_bounds.height</span><span class="PUNC">+</span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>476</span> </span><span class="WHIT"> </span><span class="NAME">zoom_perc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d3.min</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">perc_x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">perc_y</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>477</span> </span><span class="WHIT"> +<span class='line'>478</span> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">'svg'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>479</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">zoom.scaleBy</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">zoom_perc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>480</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>481</span> +<span class='line'>482</span> </span><span class="COMM">/** +<span class='line'>483</span> * transforms svg so that the zoom and drag is reset +<span class='line'>484</span> */</span><span class="WHIT"> +<span class='line'>485</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">reset_view</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>486</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">'svg'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>487</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">zoom.scaleTo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>488</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">'svg'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>489</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">zoom.translateTo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0.5</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0.5</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>490</span> </span><span class="WHIT"> </span><span class="NAME">d3.select</span><span class="PUNC">(</span><span class="STRN">'svg'</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>491</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="NAME">zoom.scaleBy</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">zoom_perc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>492</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>493</span> +<span class='line'>494</span> </span><span class="COMM">/** +<span class='line'>495</span> * save svg as png +<span class='line'>496</span> */</span><span class="WHIT"> +<span class='line'>497</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">save_svg</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>498</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">get_svg_string</span><span class="PUNC">(</span><span class="NAME">svg.node</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>499</span> </span><span class="WHIT"> </span><span class="NAME">svg_string_to_image</span><span class="PUNC">(</span><span class="NAME">svgString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">*</span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">*</span><span class="NAME">height</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'png'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">save</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// passes Blob and filesize String to the callback</span><span class="WHIT"> +<span class='line'>500</span> +<span class='line'>501</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">save</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">dataBlob</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">filesize</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>502</span> </span><span class="WHIT"> </span><span class="NAME">saveAs</span><span class="PUNC">(</span><span class="NAME">dataBlob</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'D3 vis exported to PNG.png'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// FileSaver.js function</span><span class="WHIT"> +<span class='line'>503</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>504</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>505</span> +<span class='line'>506</span> </span><span class="COMM">/** +<span class='line'>507</span> * generate svgString +<span class='line'>508</span> * @param {object} svgNode - node +<span class='line'>509</span> */</span><span class="WHIT"> +<span class='line'>510</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">get_svg_string</span><span class="PUNC">(</span><span class="NAME">svgNode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>511</span> </span><span class="WHIT"> </span><span class="NAME">svgNode.setAttribute</span><span class="PUNC">(</span><span class="STRN">'xlink'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'http://www.w3.org/1999/xlink'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>512</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cssStyleText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">get_css_styles</span><span class="PUNC">(</span><span class="NAME">svgNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>513</span> </span><span class="WHIT"> </span><span class="NAME">append_css</span><span class="PUNC">(</span><span class="NAME">cssStyleText</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">svgNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>514</span> +<span class='line'>515</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">serializer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">XMLSerializer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>516</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">serializer.serializeToString</span><span class="PUNC">(</span><span class="NAME">svgNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>517</span> </span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svgString.replace</span><span class="PUNC">(</span><span class="REGX">/(\w+)?:?xlink=/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'xmlns:xlink='</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// Fix root xlink without namespace</span><span class="WHIT"> +<span class='line'>518</span> </span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svgString.replace</span><span class="PUNC">(</span><span class="REGX">/NS\d+:href/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'xlink:href'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// Safari NS namespace fix</span><span class="WHIT"> +<span class='line'>519</span> +<span class='line'>520</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>521</span> +<span class='line'>522</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">get_css_styles</span><span class="PUNC">(</span><span class="NAME">parentElement</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>523</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">selectorTextArr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>524</span> +<span class='line'>525</span> </span><span class="WHIT"> </span><span class="COMM">// Add Parent element Id and Classes to the list</span><span class="WHIT"> +<span class='line'>526</span> </span><span class="WHIT"> </span><span class="NAME">selectorTextArr.push</span><span class="PUNC">(</span><span class="STRN">'#'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">parentElement.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>527</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">parentElement.classList.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>528</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">contains</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">+</span><span class="NAME">parentElement.classList</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selectorTextArr</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>529</span> </span><span class="WHIT"> </span><span class="NAME">selectorTextArr.push</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">+</span><span class="NAME">parentElement.classList</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>530</span> +<span class='line'>531</span> </span><span class="WHIT"> </span><span class="COMM">// Add Children element Ids and Classes to the list</span><span class="WHIT"> +<span class='line'>532</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parentElement.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"*"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>533</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">nodes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>534</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>535</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">contains</span><span class="PUNC">(</span><span class="STRN">'#'</span><span class="PUNC">+</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selectorTextArr</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>536</span> </span><span class="WHIT"> </span><span class="NAME">selectorTextArr.push</span><span class="PUNC">(</span><span class="STRN">'#'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>537</span> +<span class='line'>538</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">classList</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>539</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">classes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>540</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">contains</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">+</span><span class="NAME">classes</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selectorTextArr</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>541</span> </span><span class="WHIT"> </span><span class="NAME">selectorTextArr.push</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">+</span><span class="NAME">classes</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>542</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>543</span> +<span class='line'>544</span> </span><span class="WHIT"> </span><span class="COMM">// Extract CSS Rules</span><span class="WHIT"> +<span class='line'>545</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">extractedCSSText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>546</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">document.styleSheets.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>547</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.styleSheets</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>548</span> </span><span class="WHIT"> +<span class='line'>549</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>550</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">s.cssRules</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>551</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>552</span> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>553</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">e.name</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'SecurityError'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// for Firefox</span><span class="WHIT"> +<span class='line'>554</span> </span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>555</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>556</span> +<span class='line'>557</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cssRules</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s.cssRules</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>558</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">cssRules.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>559</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">contains</span><span class="PUNC">(</span><span class="NAME">cssRules</span><span class="PUNC">[</span><span class="NAME">r</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">selectorText</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selectorTextArr</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'>560</span> </span><span class="WHIT"> </span><span class="NAME">extractedCSSText</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cssRules</span><span class="PUNC">[</span><span class="NAME">r</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">cssText</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>561</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>562</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>563</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">extractedCSSText</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>564</span> +<span class='line'>565</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">contains</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">,</span><span class="NAME">arr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>566</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">arr.indexOf</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>567</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>568</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>569</span> +<span class='line'>570</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">append_css</span><span class="PUNC">(</span><span class="NAME">cssText</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>571</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">styleElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"style"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>572</span> </span><span class="WHIT"> </span><span class="NAME">styleElement.setAttribute</span><span class="PUNC">(</span><span class="STRN">"type"</span><span class="PUNC">,</span><span class="STRN">"text/css"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>573</span> </span><span class="NAME">styleElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cssText</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>574</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">refNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">element.hasChildNodes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">element.children</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>575</span> </span><span class="WHIT"> </span><span class="NAME">element.insertBefore</span><span class="PUNC">(</span><span class="NAME">styleElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">refNode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>576</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>577</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>578</span> +<span class='line'>579</span> </span><span class="COMM">/** +<span class='line'>580</span> * convert svgString to image and export it +<span class='line'>581</span> * @param {object} svgString - svgString +<span class='line'>582</span> * @param {object} width - width of image +<span class='line'>583</span> * @param {object} height - height of image +<span class='line'>584</span> * @param {object} format - format to save image in +<span class='line'>585</span> * @param {object} callback - callback function +<span class='line'>586</span> */</span><span class="WHIT"> +<span class='line'>587</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">svg_string_to_image</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">svgString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">format</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>588</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">format</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">format</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">format</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'png'</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>589</span> +<span class='line'>590</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">imgsrc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'data:image/svg+xml;base64,'</span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">btoa</span><span class="PUNC">(</span><span class="NAME">unescape</span><span class="PUNC">(</span><span class="NAME">encodeURIComponent</span><span class="PUNC">(</span><span class="NAME">svgString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// Convert SVG string to data URL</span><span class="WHIT"> +<span class='line'>591</span> +<span class='line'>592</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"canvas"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>593</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">context</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">canvas.getContext</span><span class="PUNC">(</span><span class="STRN">"2d"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>594</span> +<span class='line'>595</span> </span><span class="WHIT"> </span><span class="NAME">canvas.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>596</span> </span><span class="WHIT"> </span><span class="NAME">canvas.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>597</span> +<span class='line'>598</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>599</span> </span><span class="WHIT"> </span><span class="NAME">image.onload</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>600</span> </span><span class="WHIT"> </span><span class="NAME">context.clearRect</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>601</span> </span><span class="WHIT"> </span><span class="NAME">context.drawImage</span><span class="PUNC">(</span><span class="NAME">image</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>602</span> +<span class='line'>603</span> </span><span class="WHIT"> </span><span class="NAME">canvas.toBlob</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">blob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>604</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">filesize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.round</span><span class="PUNC">(</span><span class="NAME">blob.length</span><span class="PUNC">/</span><span class="NUMB">1024</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">' KB'</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>605</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">blob</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">filesize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>606</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>607</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>608</span> </span><span class="WHIT"> </span><span class="NAME">image.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">imgsrc</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>609</span> </span><span class="PUNC">}</span></pre></body></html> \ No newline at end of file