{"version":3,"sources":["c3_renderers.coffee","c3_renderers.min.js"],"names":["callWithJQuery","pivotModule","exports","module","require","define","amd","jQuery","c3","$","makeC3Chart","chartOpts","pivotData","opts","agg","attrs","base","base1","base2","base3","base4","base5","base6","base7","c","categories","colKey","colKeys","columns","dataColumns","defaults","formatter","fullAggName","groupByTitle","h","hAxisTitle","headers","i","j","k","l","len","len1","len2","len3","len4","m","numCharsInHAxis","numSeries","params","ref","ref1","ref2","ref3","renderArea","result","rotationAngle","row","rowHeader","rowKey","rowKeys","s","scatterData","series","title","titleText","vAxisTitle","val","vals","x","xs","y","localeStrings","vs","by","extend","size","width","window","innerWidth","height","innerHeight","type","horizontal","stacked","getRowKeys","length","push","getColKeys","results","join","aggregatorName","valAttrs","t","rowAttrs","concat","colAttrs","slice","getAggregator","value","parseFloat","isFinite","style","text","format","axis","rotated","label","tick","rotate","multiline","data","order","tooltip","grouped","color","pattern","fit","legend","show","name","a","b","d","e","ref4","v","len5","n","shift","unshift","rows","groups","appendTo","bindto","generate","detach","remove","append","pivotUtilities","c3_renderers","Horizontal Bar Chart","Horizontal Stacked Bar Chart","Bar Chart","Stacked Bar Chart","Line Chart","Area Chart","Scatter Chart","call","this"],"mappings":"CAAA,WAAA,GAAAA,IAAAA,EAAiB,SAACC,GACd,MAAqB,gBAAXC,UAAyC,gBAAVC,QACrCF,EAAYG,QAAQ,UAAWA,QAAQ,OAClB,kBAAVC,SAAyBA,OAAOC,IAC3CD,QAAQ,SAAU,MAAOJ,GAGzBA,EAAYM,OAAQC,MAEb,SAACC,EAAGD,GAEf,GAAAE,EC8RA,OD9RAA,GAAc,SAACC,GCQb,MAHiB,OAAbA,IDLSA,MAAmB,SAACC,EAAWC,GAC1C,GAAAC,GAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,EAwBA,IAxBAzC,GACI0C,eAAgBC,GAAI,KAAMC,GAAI,MAC9BlE,OAEJK,EAAOJ,EAAEkE,QAAO,KAAU7C,EAAUjB,GCaP,OAAxBG,EAAOH,EAAKL,IAAIoE,OACnB5D,EDbM4D,SCe4B,OAA/B3D,EAAQJ,EAAKL,GAAGoE,MAAMC,QACzB5D,EDfW4D,MAASC,OAAOC,WAAa,KCiBL,OAAhC7D,EAAQL,EAAKL,GAAGoE,MAAMI,SACzB9D,EDjBW8D,OAAUF,OAAOG,YAAc,IAAM,ICmB5B,MAAlBtE,EAAUuE,ODlBdvE,EAAUuE,KAAQ,QCqBU,MAAxBvE,EAAUwE,aDpBdxE,EAAUwE,YAAc,GCuBC,MAArBxE,EAAUyE,UDtBdzE,EAAUyE,SAAW,GAErBxB,EAAUhD,EAAUyE,aACiB,IAAlBzB,EAAQ0B,QAA3B1B,EAAQ2B,SACR5D,EAAUf,EAAU4E,aACiB,IAAlB7D,EAAQ2D,QAA3B3D,EAAQ4D,SAERnD,EAAA,WC2BE,GAAIC,GAAGI,EAAKgD,CAEZ,KD7BSA,KAAApD,EAAA,EAAAI,EAAAd,EAAA2D,OAAAjD,EAAAI,EAAAJ,IC8BPH,EAAIP,EAAQU,GACZoD,EAAQF,KD/BDrD,EAAEwD,KAAK,KCiChB,OAAOD,MDhCTjC,EAAgB,EAEhBxB,EAAcpB,EAAU+E,eACrB/E,EAAUgF,SAASN,SAClBtD,GAAe,IAAIpB,EAAUgF,SAASF,KAAK,MAAM,KAEhC,YAAlB/E,EAAUuE,KAST,IARApB,GAAcO,KAAME,KAAMsB,MAC1B9E,EAAQH,EAAUkF,SAASC,OAAOnF,EAAUoF,UAC5C9B,GAAA,OAAAhB,EAAAnC,EAAA,IAAAmC,EAAwB,GACxBf,EAAA,OAAAgB,EAAApC,EAAA,IAAAoC,EAAwB,GACxBlB,EAAelB,EAAMkF,MAAM,GAAGP,KAAK,KACnCzB,GAAYC,GAC4D,KAAd/B,IAA1D8B,IAAa,IAAIpD,EAAK2D,cAAcC,GAAG,IAAGtC,GACkC,KAAhBF,IAA5DgC,IAAa,IAAIpD,EAAK2D,cAAcE,GAAG,IAAGzC,GAC1CI,EAAA,EAAAI,EAAAmB,EAAA0B,OAAAjD,EAAAI,EAAAJ,IACI,ICyCJsB,EAASC,EAAQvB,GDzCbC,EAAA,EAAAI,EAAAf,EAAA2D,OAAAhD,EAAAI,EAAAJ,IC2CFZ,EAASC,EAAQW,GD1CXxB,EAAMF,EAAUsF,cAAcvC,EAAQjC,GACnC,MAAAZ,EAAAqF,UACC/B,GAAOT,EAAOoC,OAAOrE,GACrBqC,GAASK,GAAK6B,MAAM,GAAGP,KAAK,KACf,KAAV3B,KAAkBA,GAAS,UC8CC,OAAlC5C,EAAQ2C,EAAYO,GAAGN,MAC1B5C,ED9CoB4C,QCgDiB,OAAlC3C,EAAQ0C,EAAYS,GAAGR,MAC1B3C,EDhDoB2C,QACdQ,GAAA,OAAAnB,EAAAgB,GAAA,IAAAhB,EAAc,EACdiB,GAAA,OAAAhB,EAAAe,GAAA,IAAAf,EAAc,EACdS,EAAYS,EAAER,IAAQwB,KAAKhB,IAC3BT,EAAYO,EAAEN,IAAQwB,KAAKlB,ICkDI,OAAlChD,EAAQyC,EAAY+B,GAAG9B,MAC1B1C,EDlDoB0C,QCoDoB,OAArCzC,EAAQwC,EAAY+B,EAAE9B,KAASM,MAClC/C,EDpD4B+C,QACtBP,EAAY+B,EAAE9B,IAAQM,IAAGE,IAAKzD,EAAIqF,aAxBlD,CA2BI,IADApD,EAAkB,EAClBR,EAAA,EAAAI,EAAAP,EAAAkD,OAAA/C,EAAAI,EAAAJ,ICyDA8B,GAAIjC,EAAQG,GDxDRQ,GAAmBsB,GAAEiB,MAKzB,KAJGvC,EAAkB,KACjBS,EAAgB,IAEpB5B,KACAY,EAAA,EAAAI,EAAAgB,EAAA0B,OAAA9C,EAAAI,EAAAJ,IAAA,CAGI,ICwDJmB,EAASC,EAAQpB,GD1DbkB,EAAYC,EAAO+B,KAAK,KACxBjC,GAAuB,KAAbC,EAAqB1B,EAAiB0B,GAChDZ,EAAA,EAAAD,EAAAlB,EAAA2D,OAAAxC,EAAAD,EAAAC,IC4DFpB,EAASC,EAAQmB,GD3DXqB,GAAMiC,WAAYxF,EAAUsF,cAAcvC,EAAQjC,GAAQyE,SACvDE,SAASlC,IACRV,EAAI8B,KAAKpB,IAETV,EAAI8B,KAAK,KACjB3D,GAAQ2D,KAAK9B,GAEjBS,GAAalC,EAEVrB,EAAUwE,YACThD,EAAavB,EAAUkF,SAASJ,KAAK,KACrCzD,EAAerB,EAAUoF,SAASN,KAAK,OAEvCvD,EAAavB,EAAUoF,SAASN,KAAK,KACrCzD,EAAerB,EAAUkF,SAASJ,KAAK,MAC3CzB,GAAYjC,EAC4D,KAAdG,IAA1D8B,IAAa,IAAIpD,EAAK2D,cAAcC,GAAG,IAAGtC,GACkC,KAAhBF,IAA5DgC,IAAa,IAAIpD,EAAK2D,cAAcE,GAAG,IAAGzC,GAgC9C,GA9BA+B,GAAQvD,EAAE,OAAQ6F,MAAO,0CACzBtC,GAAMuC,KAAKtC,IAEXlC,EAAYnB,EAAUsF,qBAAsBM,OAE5CvD,GACIwD,MACIC,QAAS/F,EAAUwE,WACnBZ,GACIoC,MAAOzC,GACP0C,SACJvC,GACIsC,MAAOxE,EACPyE,MACIC,OAAQrD,EACRsD,WAAW,KACvBC,MACI7B,KAAMvE,EAAUuE,KAChB8B,MAAO,MACXC,SACIC,SAAS,GACbC,OACIC,SAAW,UAAW,UAAW,UAAW,UACjC,UAAW,UAAW,UAAW,UACjC,UAAW,UAAW,UAAW,UACjC,UAAW,UAAW,UAAW,UACjC,UAAW,UAAW,UAAW,aAGpDnE,EAASxC,EAAEkE,QAAO,KAAU1B,EAAQpC,EAAKL,IACpB,YAAlBG,EAAUuE,KAAb,CACIZ,MACAtB,EAAY,EACZnB,IACA,KAAAgC,IAAAC,GAAAO,EACIrB,GAAa,EACbsB,GAAGT,GAAKA,EAAE,KACVhC,EAAY0D,MAAM1B,EAAE,MAAMkC,OAAOjC,EAAYO,EAAER,KAC/ChC,EAAY0D,MAAM1B,GAAGkC,OAAOjC,EAAYS,EAAEV,IAC9CZ,GAAO8D,KAAKzC,GAAKA,GACjBrB,EAAO8D,KAAKnF,QAAUC,EACtBoB,EAAOwD,KAAKpC,EAAEuC,MAAOS,KAAK,GACV,IAAbrE,IACCC,EAAOqE,QAASC,MAAM,IAC1BtE,EAAOgE,QAAQT,QACXxC,MAAO,WC2ET,MD3EYhC,IACVwF,KAAM,WC6ER,MD7EW,IACTrB,MAAO,SAACsB,EAAEC,EAAElG,EAAEmG,EAAEC,GACZ,GAAAC,ECgFN,ODhFMA,GAA8BD,EAAE,GAAzB7D,GAAA8D,EAANL,KAAqBjD,GAAAsD,EAAP1B,MAAU9B,GAAAwD,EAAAxD,EACzBtC,EAAU+B,EAAY+B,EAAE9B,IAAQM,IAAGE,WAE3CtB,GAAOwD,KAAKpC,EAAEa,KAAM,WCkFqB,OAAtC3D,EAAQ0B,EAAOwD,KAAKlC,EAAEqC,MAAMJ,SAC/BjF,EDlFmBiF,OAAU,SAACsB,GCmF5B,MDnFkC/F,GAAU+F,KAC9C7E,EAAOgE,QAAQT,QAASL,MAAO,SAAC2B,GCuF9B,MDvFoC/F,GAAU+F,KAE7CnH,EAAUwE,YACT1D,EAAA,WCyFF,GAAIsG,GAAMC,EAAGvC,CAEb,KD3FgBA,KAAAuC,EAAA,EAAAD,EAAAnG,EAAA0D,OAAA0C,EAAAD,EAAAC,IC4FdxG,EAAII,EAAQoG,GACZvC,EAAQF,KD7FM/D,EAAEyG,QC+FlB,OAAOxC,MD9FmB,IAArBhE,EAAW6D,QAAgB7D,EAAW,KAAMO,IAC3CP,GAAc,KAClBwB,EAAOwD,KAAKpC,EAAE5C,WAAaA,EACN,IAAlBW,EAAQkD,QAA8B,KAAdlD,EAAQ,KAC/BA,GAAWJ,IACfJ,EAAQsG,QAAQ9F,GAChBa,EAAO8D,KAAKoB,KAAOvG,IAEnBqB,EAAOwD,KAAKpC,EAAE5C,WAAaW,EAC3Ba,EAAO8D,KAAKnF,QAAUA,EAe9B,OAZGjB,GAAUyE,UACNzE,EAAUwE,WACTlC,EAAO8D,KAAKqB,QCmGd,WACE,GAAIL,GAAMC,EAAGvC,CAEb,KDtGsBA,KAAAuC,EAAA,EAAAD,EAAApG,EAAA2D,OAAA0C,EAAAD,EAAAC,ICuGpB3D,GAAI1C,EAAQqG,GACZvC,EAAQF,KDxGYlB,GAAEqB,KAAK,KC0G7B,OAAOD,ODxGPxC,EAAO8D,KAAKqB,QC6Gd,WACE,GAAIL,GAAMC,EAAGvC,CAEb,KDhHsBA,KAAAuC,EAAA,EAAAD,EAAAnE,EAAA0B,OAAA0C,EAAAD,EAAAC,ICiHpB3D,GAAIT,EAAQoE,GACZvC,EAAQF,KDlHYlB,GAAEqB,KAAK,KCoH7B,OAAOD,QDlHfnC,EAAa7C,EAAE,SAAS6F,MAAO,kBAAiB+B,SAAS5H,EAAE,SAC3D8C,EAAS9C,EAAE,SAAS4H,SAAS/E,GAC7BL,EAAOqF,OAAS/E,EAAO,GACvB/C,EAAG+H,SAAStF,GACZM,EAAOiF,SACPlF,EAAWmF,SACJhI,EAAE,SAASiI,OAAO1E,GAAOT,KAEpC9C,EAAEkI,eAAeC,cACbC,uBAAwBnI,GAAYwE,KAAM,MAAOC,YAAY,IAC7D2D,+BAAgCpI,GAAYwE,KAAM,MAAOE,SAAS,EAAMD,YAAY,IACpF4D,YAAarI,GAAYwE,KAAM,QAC/B8D,oBAAqBtI,GAAYwE,KAAM,MAAOE,SAAS,IACvD6D,aAAcvI,IACdwI,aAAcxI,GAAYwE,KAAM,OAAQE,SAAS,IACjD+D,gBAAiBzI,GAAYwE,KAAM,iBC+IxCkE,KAAKC","file":"c3_renderers.min.js","sourcesContent":["callWithJQuery = (pivotModule) ->\n if typeof exports is \"object\" and typeof module is \"object\" # CommonJS\n pivotModule require(\"jquery\"), require(\"c3\")\n else if typeof define is \"function\" and define.amd # AMD\n define [\"jquery\", \"c3\"], pivotModule\n # Plain browser env\n else\n pivotModule jQuery, c3\n\ncallWithJQuery ($, c3) ->\n\n makeC3Chart = (chartOpts = {}) -> (pivotData, opts) ->\n defaults =\n localeStrings: {vs: \"vs\", by: \"by\"}\n c3: {}\n\n opts = $.extend(true, {}, defaults, opts)\n opts.c3.size ?= {}\n opts.c3.size.width ?= window.innerWidth / 1.4\n opts.c3.size.height ?= window.innerHeight / 1.4 - 50\n chartOpts.type ?= \"line\"\n chartOpts.horizontal ?= false\n chartOpts.stacked ?= false\n\n rowKeys = pivotData.getRowKeys()\n rowKeys.push [] if rowKeys.length == 0\n colKeys = pivotData.getColKeys()\n colKeys.push [] if colKeys.length == 0\n\n headers = (h.join(\"-\") for h in colKeys)\n rotationAngle = 0\n\n fullAggName = pivotData.aggregatorName\n if pivotData.valAttrs.length\n fullAggName += \"(#{pivotData.valAttrs.join(\", \")})\"\n\n if chartOpts.type == \"scatter\"\n scatterData = x:{}, y:{}, t:{}\n attrs = pivotData.rowAttrs.concat(pivotData.colAttrs)\n vAxisTitle = attrs[0] ? \"\"\n hAxisTitle = attrs[1] ? \"\"\n groupByTitle = attrs.slice(2).join(\"-\")\n titleText = vAxisTitle\n titleText += \" #{opts.localeStrings.vs} #{hAxisTitle}\" if hAxisTitle != \"\"\n titleText += \" #{opts.localeStrings.by} #{groupByTitle}\" if groupByTitle != \"\"\n for rowKey in rowKeys\n for colKey in colKeys\n agg = pivotData.getAggregator(rowKey, colKey)\n if agg.value()?\n vals = rowKey.concat(colKey)\n series = vals.slice(2).join(\"-\")\n if series == \"\" then series = \"series\"\n scatterData.x[series] ?= []\n scatterData.y[series] ?= []\n y = vals[0] ? 0\n x = vals[1] ? 0\n scatterData.y[series].push y\n scatterData.x[series].push x\n scatterData.t[series] ?= {}\n scatterData.t[series][x] ?= {}\n scatterData.t[series][x][y] = agg.value()\n else\n numCharsInHAxis = 0\n for x in headers\n numCharsInHAxis += x.length\n if numCharsInHAxis > 50\n rotationAngle = 45\n\n columns = []\n for rowKey in rowKeys\n rowHeader = rowKey.join(\"-\")\n row = [if rowHeader == \"\" then fullAggName else rowHeader]\n for colKey in colKeys\n val = parseFloat pivotData.getAggregator(rowKey, colKey).value()\n if isFinite(val)\n row.push(val)\n else\n row.push(null)\n columns.push row\n\n vAxisTitle = fullAggName\n\n if chartOpts.horizontal\n hAxisTitle = pivotData.rowAttrs.join(\"-\")\n groupByTitle = pivotData.colAttrs.join(\"-\")\n else\n hAxisTitle = pivotData.colAttrs.join(\"-\")\n groupByTitle = pivotData.rowAttrs.join(\"-\")\n titleText = fullAggName\n titleText += \" #{opts.localeStrings.vs} #{hAxisTitle}\" if hAxisTitle != \"\"\n titleText += \" #{opts.localeStrings.by} #{groupByTitle}\" if groupByTitle != \"\"\n\n title = $(\"
\", {style: \"text-align: center; font-weight: bold\"})\n title.text(titleText)\n\n formatter = pivotData.getAggregator([], []).format\n\n params =\n axis:\n rotated: chartOpts.horizontal\n y:\n label: vAxisTitle\n tick: {}\n x:\n label: hAxisTitle\n tick:\n rotate: rotationAngle\n multiline: false\n data:\n type: chartOpts.type\n order: null\n tooltip:\n grouped: false\n color:\n pattern: [ \"#3366cc\", \"#dc3912\", \"#ff9900\", \"#109618\",\n \"#990099\", \"#0099c6\", \"#dd4477\", \"#66aa00\",\n \"#b82e2e\", \"#316395\", \"#994499\", \"#22aa99\",\n \"#aaaa11\", \"#6633cc\", \"#e67300\", \"#8b0707\",\n \"#651067\", \"#329262\", \"#5574a6\", \"#3b3eac\" ]\n\n\n params = $.extend(true, {}, params, opts.c3)\n if chartOpts.type == \"scatter\"\n xs = {}\n numSeries = 0\n dataColumns = []\n for s of scatterData.x\n numSeries += 1\n xs[s] = s+\"_x\"\n dataColumns.push [s+\"_x\"].concat(scatterData.x[s])\n dataColumns.push [s].concat(scatterData.y[s])\n params.data.xs = xs\n params.data.columns = dataColumns\n params.axis.x.tick = fit: false\n if numSeries == 1\n params.legend = show: false\n params.tooltip.format =\n title: -> fullAggName\n name: -> \"\"\n value: (a,b,c,d,e) ->\n {name: series, value: y, x} = e[0]\n formatter(scatterData.t[series][x][y])\n else\n params.axis.x.type= 'category'\n params.axis.y.tick.format ?= (v) -> formatter(v)\n params.tooltip.format = value: (v) -> formatter(v)\n\n if chartOpts.horizontal\n categories = (c.shift() for c in columns)\n if categories.length == 1 and categories[0] == fullAggName\n categories = [\"\"]\n params.axis.x.categories = categories\n if headers.length == 1 and headers[0] == \"\"\n headers = [fullAggName]\n columns.unshift(headers)\n params.data.rows = columns\n else\n params.axis.x.categories = headers\n params.data.columns = columns\n\n\n if chartOpts.stacked\n if chartOpts.horizontal\n params.data.groups = [x.join(\"-\") for x in colKeys]\n else\n params.data.groups = [x.join(\"-\") for x in rowKeys]\n\n renderArea = $(\"
\", {\n style: \"text-align: center; font-weight: bold\"\n });\n title.text(titleText);\n formatter = pivotData.getAggregator([], []).format;\n params = {\n axis: {\n rotated: chartOpts.horizontal,\n y: {\n label: vAxisTitle,\n tick: {}\n },\n x: {\n label: hAxisTitle,\n tick: {\n rotate: rotationAngle,\n multiline: false\n }\n }\n },\n data: {\n type: chartOpts.type,\n order: null\n },\n tooltip: {\n grouped: false\n },\n color: {\n pattern: [\"#3366cc\", \"#dc3912\", \"#ff9900\", \"#109618\", \"#990099\", \"#0099c6\", \"#dd4477\", \"#66aa00\", \"#b82e2e\", \"#316395\", \"#994499\", \"#22aa99\", \"#aaaa11\", \"#6633cc\", \"#e67300\", \"#8b0707\", \"#651067\", \"#329262\", \"#5574a6\", \"#3b3eac\"]\n }\n };\n params = $.extend(true, {}, params, opts.c3);\n if (chartOpts.type === \"scatter\") {\n xs = {};\n numSeries = 0;\n dataColumns = [];\n for (s in scatterData.x) {\n numSeries += 1;\n xs[s] = s + \"_x\";\n dataColumns.push([s + \"_x\"].concat(scatterData.x[s]));\n dataColumns.push([s].concat(scatterData.y[s]));\n }\n params.data.xs = xs;\n params.data.columns = dataColumns;\n params.axis.x.tick = {\n fit: false\n };\n if (numSeries === 1) {\n params.legend = {\n show: false\n };\n }\n params.tooltip.format = {\n title: function() {\n return fullAggName;\n },\n name: function() {\n return \"\";\n },\n value: function(a, b, c, d, e) {\n var ref4;\n ref4 = e[0], series = ref4.name, y = ref4.value, x = ref4.x;\n return formatter(scatterData.t[series][x][y]);\n }\n };\n } else {\n params.axis.x.type = 'category';\n if ((base7 = params.axis.y.tick).format == null) {\n base7.format = function(v) {\n return formatter(v);\n };\n }\n params.tooltip.format = {\n value: function(v) {\n return formatter(v);\n }\n };\n if (chartOpts.horizontal) {\n categories = (function() {\n var len5, n, results;\n results = [];\n for (n = 0, len5 = columns.length; n < len5; n++) {\n c = columns[n];\n results.push(c.shift());\n }\n return results;\n })();\n if (categories.length === 1 && categories[0] === fullAggName) {\n categories = [\"\"];\n }\n params.axis.x.categories = categories;\n if (headers.length === 1 && headers[0] === \"\") {\n headers = [fullAggName];\n }\n columns.unshift(headers);\n params.data.rows = columns;\n } else {\n params.axis.x.categories = headers;\n params.data.columns = columns;\n }\n }\n if (chartOpts.stacked) {\n if (chartOpts.horizontal) {\n params.data.groups = [\n (function() {\n var len5, n, results;\n results = [];\n for (n = 0, len5 = colKeys.length; n < len5; n++) {\n x = colKeys[n];\n results.push(x.join(\"-\"));\n }\n return results;\n })()\n ];\n } else {\n params.data.groups = [\n (function() {\n var len5, n, results;\n results = [];\n for (n = 0, len5 = rowKeys.length; n < len5; n++) {\n x = rowKeys[n];\n results.push(x.join(\"-\"));\n }\n return results;\n })()\n ];\n }\n }\n renderArea = $(\"