<!DOCTYPE HTML> <html> <head> <title>Graph2d | Performance</title> <style> body, html { font-family: arial, sans-serif; font-size: 11pt; } span.label { width:150px; display:inline-block; } </style> <!-- note: moment.js must be loaded before vis.js, else vis.js uses its embedded version of moment.js --> <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"> </script> <script src="./dist/vis.js"></script> <link href="./dist/vis-timeline-graph2d.min.css" rel="stylesheet" type="text/css" /> </head> <body> <br /> Click the button then choose a file to graph. <button onclick="openFile(dispFile)">Open a file</button> <pre id="contents"></pre> <div id="visualization"> <script type="text/javascript"> function dispFile(contents) { console.log(contents); console.log(typeof contents); var container = document.getElementById('visualization'); var items = JSON.parse(contents); var dataset = new vis.DataSet(items); var options = {}; var graph2d = new vis.Graph2d(container, dataset, options); } function clickElem(elem) { // Thx user1601638 on Stack Overflow (6/6/2018 - https://stackoverflow.com/questions/13405129/javascript-create-and-save-file ) var eventMouse = document.createEvent("MouseEvents"); eventMouse.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); elem.dispatchEvent(eventMouse); } function openFile(func) { readFile = function(e) { var file = e.target.files[0]; if (!file) { return; } var reader = new FileReader(); reader.onload = function(e) { var contents = e.target.result; fileInput.func(contents); document.body.removeChild(fileInput); } reader.readAsText(file); } fileInput = document.createElement("input"); fileInput.type='file'; fileInput.style.display='none'; fileInput.onchange=readFile; fileInput.func=func; document.body.appendChild(fileInput); clickElem(fileInput); } </script> </div> </body> </html>