diff --git a/chart/base.js b/chart/base.js index 82030fd..bc4724c 100644 --- a/chart/base.js +++ b/chart/base.js @@ -5,6 +5,7 @@ var xml2js = require ("xml2js"); var VError = require ("verror"); var fs = require ("fs"); var async = require ("async"); +//const util = require('util') var Chart = Backbone.Model.extend ({ /* Read XML file from xlsx as object @@ -56,6 +57,7 @@ var Chart = Backbone.Model.extend ({ */ writeTable: function (cb) { var me = this; + var chartName = me.chart me.read ({file: "xl/worksheets/sheet2.xml"}, function (err, o) { if (err) { return cb (new VError (err, "writeTable")); @@ -83,6 +85,15 @@ var Chart = Backbone.Model.extend ({ spans: "1:" + (me.titles.length + 1) } }; + if(chartName == "scatter"){ + var c = [{ + $: { + r: "A" + (y + 2), + t: "n" + }, + v: f + }]; + }else{ var c = [{ $: { r: "A" + (y + 2), @@ -90,6 +101,7 @@ var Chart = Backbone.Model.extend ({ }, v: me.getStr (f) }]; + }; _.each (me.titles, function (t, x) { c.push ({ $: { @@ -147,21 +159,21 @@ var Chart = Backbone.Model.extend ({ axId.push (o.$.val); }); }; - _.each (["line", "radar", "area", "scatter", "pie"], function (chart) { + _.each (["line" , "radar" , "area" , "scatter" , "pie"], function (chart) { if (!me.charts [chart]) { delete o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:" + chart + "Chart"]; } else { addId (o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:" + chart + "Chart"]); }; }); - if (!me.charts ["column"] && !me.charts ["bar"]) { + if (!me.charts ["column"] && !me.charts ["bar"] && !me.charts ["stack-bar"] && !me.charts ["percentage_stack-bar"] && !me.charts ["horizontal_stack-bar"] && !me.charts ["horizontal_percentage_stack-bar"]) { delete o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:barChart"]; } else - if (me.charts ["column"] && !me.charts ["bar"]) { + if (me.charts ["column"] || me.charts ["stack-bar"] || me.charts ["percentage_stack-bar"] && !me.charts ["bar"] && !me.charts ["horizontal_stack-bar"] && !me.charts ["horizontal_percentage_stack-bar"]) { o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:barChart"] = o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:barChart"][0]; addId (o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:barChart"]); } else - if (!me.charts ["column"] && me.charts ["bar"]) { + if (me.charts ["bar"] || me.charts ["horizontal_stack-bar"] || me.charts ["horizontal_percentage_stack-bar"] && !me.charts ["column"] ) { o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:barChart"] = o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:barChart"][1]; addId (o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:barChart"]); } else { @@ -197,6 +209,7 @@ var Chart = Backbone.Model.extend ({ } var ser = {}; _.each (me.titles, function (t, i) { + //console.log(me.titles); var chart = me.data [t].chart || me.chart; var r = { "c:idx": { @@ -284,21 +297,23 @@ var Chart = Backbone.Model.extend ({ }; }; ser [chart] = ser [chart] || []; + //console.log(ser[chart]); ser [chart].push (r); + //console.log(util.inspect(ser, false, null, true /* enable colors */)) }); /* var tag = chart == "column" ? "bar" : chart; o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:barChart"][0]["c:ser"] = ser; */ _.each (ser, function (ser, chart) { - if (chart == "column") { + if (chart == "column" || chart == "stack-bar" || chart == "percentage_stack-bar") { if (me.tplName == "charts") { o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:barChart"][0]["c:ser"] = ser; } else { o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:barChart"]["c:ser"] = ser; }; } else - if (chart == "bar") { + if (chart == "bar" || chart == "horizontal_stack-bar" || chart == "horizontal_percentage_stack-bar") { if (me.tplName == "charts") { o ["c:chartSpace"]["c:chart"]["c:plotArea"]["c:barChart"][1]["c:ser"] = ser; } else { @@ -392,6 +407,10 @@ var Chart = Backbone.Model.extend ({ me.tplName = "pie"; return; }; + if (me.chart == "combo") { + me.tplName = "combo"; + return; + }; if (_.keys (charts).length == 1) { me.tplName = _.keys (charts) [0]; return; @@ -430,7 +449,7 @@ var Chart = Backbone.Model.extend ({ _.each (me.titles, function (t) { me.data [t] = me.data [t] || {}; _.each (me.fields, function (f) { - me.data [t][f] = me.data [t][f] || (me.deleteEmptyCells ? '' : 0); //deleteEmptyCells - don't display missing values as 0 + me.data [t][f] = me.data [t][f] || 0; }); }); me.writeTable (cb); diff --git a/template/charts.xlsx b/template/charts.xlsx new file mode 100644 index 0000000..57bae62 Binary files /dev/null and b/template/charts.xlsx differ diff --git a/template/combo.xlsx b/template/combo.xlsx new file mode 100644 index 0000000..21a0d33 Binary files /dev/null and b/template/combo.xlsx differ diff --git a/template/horizontal_percentage_stack-bar.xlsx b/template/horizontal_percentage_stack-bar.xlsx new file mode 100644 index 0000000..8b02fb4 Binary files /dev/null and b/template/horizontal_percentage_stack-bar.xlsx differ diff --git a/template/horizontal_stack-bar.xlsx b/template/horizontal_stack-bar.xlsx new file mode 100644 index 0000000..c6623a3 Binary files /dev/null and b/template/horizontal_stack-bar.xlsx differ diff --git a/template/percentage_stack-bar.xlsx b/template/percentage_stack-bar.xlsx new file mode 100644 index 0000000..492f3c8 Binary files /dev/null and b/template/percentage_stack-bar.xlsx differ diff --git a/template/stack-bar.xlsx b/template/stack-bar.xlsx new file mode 100644 index 0000000..3472282 Binary files /dev/null and b/template/stack-bar.xlsx differ