var { normalizePosition, normalizeColor, normalizeColorInOptions, validateEnum } = require('./index'); function renderChart(slide, chartData) { var opts = {}; if (chartData.options) { for (var k in chartData.options) { if (chartData.options.hasOwnProperty(k)) opts[k] = chartData.options[k]; } } normalizePosition(opts); var validChartTypes = ['area', 'bar', 'bar3D', 'bubble', 'doughnut', 'line', 'pie', 'radar', 'scatter']; validateEnum(chartData.chartType, validChartTypes, 'chartType'); if (chartData.data) { for (var i = 0; i < chartData.data.length; i++) { var series = chartData.data[i]; if (series.labels && series.values && series.labels.length !== series.values.length) { console.warn('Chart series "' + (series.name || i) + '" has mismatched labels (' + series.labels.length + ') and values (' + series.values.length + ')'); } } } validateEnum(opts.barDir, ['bar', 'col'], 'barDir'); validateEnum(opts.barGrouping, ['clustered', 'stacked', 'standard'], 'barGrouping'); validateEnum(opts.radarStyle, ['standard', 'marker', 'filled'], 'radarStyle'); validateEnum(opts.legendPos, ['b', 'l', 'r', 't', 'tr'], 'legendPos'); validateEnum(opts.lineCap, ['flat', 'round', 'square'], 'lineCap'); validateEnum(opts.lineDataSymbol, ['circle', 'dash', 'diamond', 'dot', 'none', 'square', 'triangle'], 'lineDataSymbol'); validateEnum(opts.displayBlanksAs, ['gap', 'span', 'zero'], 'displayBlanksAs'); validateEnum(opts.bar3DShape, ['box', 'cylinder', 'cone', 'pyramid'], 'bar3DShape'); validateEnum(opts.dataLabelPosition, ['b', 'bestFit', 'ctr', 'l', 'r', 't', 'inEnd', 'outEnd'], 'dataLabelPosition'); validateEnum(opts.titleAlign, ['l', 'ctr', 'r'], 'titleAlign'); if (opts.chartColors) { for (var i = 0; i < opts.chartColors.length; i++) { var nc = normalizeColor(opts.chartColors[i]); if (nc) opts.chartColors[i] = nc; } } slide.addChart(chartData.chartType, chartData.data, opts); } module.exports = { renderChart };