| var glob = require('glob'); |
| var Canvas = require('canvas'); |
| var echarts = require('echarts'); |
| var fs = require('fs'); |
| var path = require('path'); |
| |
| require('echarts/map/js/china'); |
| |
| var options = { |
| bar: require('./option/bar'), |
| area: require('./option/area'), |
| scatter: require('./option/scatter'), |
| pie: require('./option/pie'), |
| graph: require('./option/graph'), |
| map: require('./option/map') |
| }; |
| var WIDTH = 600; |
| var HEIGHT = 400; |
| echarts.setCanvasCreator(function () { |
| return createCanvas(); |
| }); |
| |
| var font = new Canvas.Font('Helvetica', '/System/Library/Fonts/Helvetica.dfont'); |
| font.addFace('/System/Library/Fonts/Helvetica.dfont', 'bolder'); |
| |
| glob('../*.js', function (err, themePathList) { |
| themePathList.forEach(function (themePath) { |
| var themeName = path.basename(themePath, '.js'); |
| var canvasList = []; |
| require(themePath); |
| echarts.util.each(options, function (option) { |
| var canvas = createCanvas(); |
| var chart = echarts.init(canvas, themeName); |
| var optionNeedFix = option; |
| if (option.options) { |
| optionNeedFix = option.options[0]; |
| } |
| canvasList.push(canvas); |
| optionNeedFix.animation = false; |
| optionNeedFix.textStyle = { |
| fontFamily: 'Helvetica', |
| fontSize: 12 |
| }; |
| chart.setOption(option); |
| chart.dispose(); |
| }); |
| |
| var columnCount = 2; |
| var outputCanvas = new Canvas(WIDTH * columnCount, HEIGHT * canvasList.length / columnCount); |
| var outputCtx = outputCanvas.getContext('2d'); |
| canvasList.forEach(function (canvas, idx) { |
| outputCtx.drawImage(canvas, idx % columnCount * WIDTH, Math.floor(idx / columnCount) * HEIGHT, WIDTH, HEIGHT); |
| }); |
| |
| fs.writeFileSync('../thumb/' + themeName + '.png', outputCanvas.toBuffer()); |
| }); |
| }); |
| function createCanvas() { |
| var canvas = new Canvas(WIDTH, HEIGHT); |
| var ctx = canvas.getContext('2d'); |
| ctx.addFont(font); |
| return canvas; |
| } |