'use strict'; /* global Plotly:true */ var fs = require('fs'); var gui = require('nw.gui'); var MOCK = '../../plotly/plotly.js/test/image/mocks/gl2d_marker_line_width.json'; var FORMATS = ['svg', 'jpeg', 'png']; var BASE_FILENAME = 'out'; FORMATS.forEach(generateOne); function generateOne(format) { var imageOptions = { format: format, imageDataOnly: true }; var outPath = BASE_FILENAME + '.' + format; var div = document.createElement('div'); fs.readFile(MOCK, 'utf-8', function(err, raw) { if(err) throw err; var fig = JSON.parse(raw); Plotly.plot(div, fig) .then(toImage) .then(decodeImage) .then(saveToFile) .then(quit); }); function toImage(gd) { return Plotly.toImage(gd, imageOptions); } function decodeImage(img) { return new Promise(function(resolve) { switch(imageOptions.format) { case 'png': case 'jpeg': img = new Buffer(img, 'base64'); break; case 'svg': break; } resolve(img); }); } function saveToFile(img) { return new Promise(function(resolve, reject) { fs.writeFile(outPath, img, function(err) { if(err) reject(err); resolve(outPath); }); }); } function quit() { log('generated ' + outPath) gui.App.quit(); } } function log(msg) { process.stdout.write(msg + '\n'); }