|  | var fs = require('fs'); | 
|  | var system = require('system'); | 
|  | var page = require('webpage').create(); | 
|  |  | 
|  | // Examine console log for message from chart drawing | 
|  | page.onConsoleMessage = function(msg) { | 
|  | console.log(msg); | 
|  | if (msg === "ALL CHARTS READY") { | 
|  | window.charts_ready = true; | 
|  | } | 
|  | else if (msg.slice(0, 11) === "CHART READY") { | 
|  | var chart_id = msg.split(" ")[2]; | 
|  | console.log('grabbing ' + chart_id); | 
|  | var png_data = page.evaluate(function (chart_id) { | 
|  | var chart_div = document.getElementById(chart_id + '_png'); | 
|  | return chart_div.outerHTML; | 
|  | }, chart_id); | 
|  | fs.write(args[2] + '/' + chart_id + '.png', png_data, 'w'); | 
|  | } | 
|  | }; | 
|  |  | 
|  | // Check command line arguments | 
|  | var args = system.args; | 
|  | if (args.length != 3) { | 
|  | console.log("USAGE: " + args[0] + " REPORT_HTML OUT_DIR\n"); | 
|  | phantom.exit(1); | 
|  | } | 
|  |  | 
|  | // Open the web page | 
|  | page.open(args[1], function(status) { | 
|  | if (status == 'fail') { | 
|  | console.log("Failed to open file '" + args[1] + "'"); | 
|  | phantom.exit(1); | 
|  | } | 
|  | }); | 
|  |  | 
|  | // Check status every 100 ms | 
|  | interval = window.setInterval(function () { | 
|  | //console.log('waiting'); | 
|  | if (window.charts_ready) { | 
|  | clearTimeout(timer); | 
|  | clearInterval(interval); | 
|  |  | 
|  | var fname = args[1].replace(/\/+$/, "").split("/").pop() | 
|  | console.log("saving " + fname); | 
|  | fs.write(args[2] + '/' + fname, page.content, 'w'); | 
|  | phantom.exit(0); | 
|  | } | 
|  | }, 100); | 
|  |  | 
|  | // Time-out after 10 seconds | 
|  | timer = window.setTimeout(function () { | 
|  | clearInterval(interval); | 
|  | console.log("ERROR: timeout"); | 
|  | phantom.exit(1); | 
|  | }, 10000); |