| 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); |