<!DOCTYPE html> <!-- saved from url=(0044)http://kenedict.com/networks/worldcup14/vis/ , thanks Andre!--> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF8"> <title>Dynamic Data - Importing from Gephi (JSON)</title> <script type="text/javascript" src="../../dist/vis.js"></script> <link type="text/css" rel="stylesheet" href="../../dist/vis.css"> <style type="text/css"> #mynetwork { width: 800px; height: 800px; border: 1px solid lightgray; } div.nodeContent { position: relative; border: 1px solid lightgray; width: 480px; height: 780px; margin-top: -802px; margin-left: 810px; padding: 10px; } pre { padding: 5px; margin: 5px; } .string { color: green; } .number { color: darkorange; } .boolean { color: blue; } .null { color: magenta; } .key { color: red; } </style> <script src="../googleAnalytics.js"></script> </head> <body> <h2>Dynamic Data - Importing from Gephi (JSON)</h2> <div style="width:700px; font-size:14px; text-align: justify;"> This example shows how to import a JSON file exported by Gephi. The two options available for the import are available through the checkboxes. You can download the Gephi JSON exporter here: <a href="https://marketplace.gephi.org/plugin/json-exporter/" target="_blank">https://marketplace.gephi.org/plugin/json-exporter/</a>. All of Gephi's attributes are also contained within the node elements. This means you can access all of this data through the DataSet. <br/> </div> <p> <label><input type="checkbox" id="allowedToMove"/> Allow to move after import.</label><br> <label><input type="checkbox" id="parseColor"/> Parse the color instead of copy (adds borders, highlights etc.)</label> </p> <div id="mynetwork"></div> <div class="nodeContent"><h4>Node Content:</h4> <pre id="nodeContent"></pre> </div> <script type="text/javascript"> var network; var nodes = new vis.DataSet(); var edges = new vis.DataSet(); var gephiImported; var allowedToMoveCheckbox = document.getElementById('allowedToMove'); allowedToMoveCheckbox.onchange = redrawAll; var parseColorCheckbox = document.getElementById('parseColor'); parseColorCheckbox.onchange = redrawAll; var nodeContent = document.getElementById('nodeContent'); loadJSON('./data/WorldCup2014.json', redrawAll); var container = document.getElementById('mynetwork'); var data = { nodes: nodes, edges: edges }; var options = { nodes: { shape: 'dot', font: { face: 'Tahoma' } }, edges: { width: 0.15, color: { inherit: 'from' }, smooth: { dynamic: false, type: 'continuous' } }, interaction: { tooltipDelay: 200 }, physics: { stabilization: false, barnesHut: { gravitationalConstant: -10000, springConstant: 0.002, springLength: 150 } }, rendering: { hideEdgesOnDrag: true } }; network = new vis.Network(container, data, options); /** * This function fills the DataSets. These DataSets will update the network. */ function redrawAll(gephiJSON) { if (gephiJSON.nodes === undefined) { gephiJSON = gephiImported; } else { gephiImported = gephiJSON; } nodes.clear(); edges.clear(); var allowedToMove = allowedToMoveCheckbox.checked; var parseColor = parseColorCheckbox.checked; var parsed = vis.network.gephiParser.parseGephi(gephiJSON, { allowedToMove: allowedToMove, parseColor: parseColor }); // add the parsed data to the DataSets. nodes.add(parsed.nodes); edges.add(parsed.edges); var data = nodes.get(2); // get the data from node 2 nodeContent.innerHTML = syntaxHighlight(data); // show the data in the div network.fit(); // zoom to fit } // from http://stackoverflow.com/questions/4810841/how-can-i-pretty-print-json-using-javascript function syntaxHighlight(json) { if (typeof json != 'string') { json = JSON.stringify(json, null, 2); } json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) { var cls = 'number'; if (/^"/.test(match)) { if (/:$/.test(match)) { cls = 'key'; } else { cls = 'string'; } } else if (/true|false/.test(match)) { cls = 'boolean'; } else if (/null/.test(match)) { cls = 'null'; } return '<span class="' + cls + '">' + match + '</span>'; }); } function loadJSON(path, success, error) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status === 200) { success(JSON.parse(xhr.responseText)); } else { error(xhr); } } }; xhr.open('GET', path, true); xhr.send(); } </script> </body> </html>