@data-forge-plot/c3
Advanced tools
+1
-1
@@ -1,2 +0,2 @@ | ||
| module.exports=function(e){var t={};function a(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}return a.m=e,a.c=t,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(r,n,function(t){return e[t]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=1)}([function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(2),n=a(3);function i(e,t,a){var r=t.axisMap;if(r){var n=r[e];if(n)for(var i=0,o=n;i<o.length;i++){a[o[i].series]=e}}}function o(e){var t={};return i("y",e,t),i("y2",e,t),t}function u(e,t,a,i){var o=e.series,u=t.data.columns[o];i.type=function(e){return"number"===e?"indexed":"date"===e?"timeseries":"category"}(u),a&&(a.axisType&&"default"!==a.axisType&&(i.type=a.axisType),a.label&&(i.label=a.label)),i.show=!0,e.format&&(i.tick||(i.tick={}),i.tick.values=function(e,t,a,i){return"number"===a?e.data.values.map(function(e){return n(e[t]).format(i)}):"date"===a?e.data.values.map(function(e){return r(e[t]).format(i)}):void 0}(t,o,u,e.format))}function s(e,t,a,r){var n=t.axisMap;if(n){r[e]={show:!1};var i=r[e],o=n[e];o&&(Array.isArray(o)?o.forEach(function(e){u(e,t,a,i)}):u(o,t,a,i))}}function f(e,t,a,r){if(t.axisMap){s(e,t,a,r);var n=r[e];a&&void 0!==a.min&&(n.min=a.min),a&&void 0!==a.max&&(n.max=a.max)}}function l(e){var t={};return s("x",e,e.plotConfig.x,t),f("y",e,e.plotConfig.y,t),f("y2",e,e.plotConfig.y2,t),t}function c(e){var t={};if(e.axisMap)for(var a in e.axisMap){var r=e.axisMap[a];Array.isArray(r)?r.forEach(function(e){e.label&&(t[e.series]=e.label)}):r.label&&(t[r.series]=r.label)}return t}function d(e,t,a){var r=t.axisMap;if(r){var n=r[e];if(n)for(var i=0,o=n;i<o.length;i++){var u=o[i],s=u.series;if(a[s])return;u.x?a[s]=u.x.series:t.axisMap&&t.axisMap.x&&(a[s]=t.axisMap.x.series)}}}function p(e,t,a,r){if(!r[e]){var n=t.data.values.map(function(t){return t[e]});r[e]=!0,a.push([e].concat(n))}}function v(e,t,a,r){var n=t.axisMap;if(n){var i=n[e];if(i)for(var o=0,u=i;o<u.length;o++){var s=u[o];p(s.series,t,a,r);var f=s.x&&s.x.series||t.axisMap&&t.axisMap.x&&t.axisMap.x.series||null;f&&p(f,t,a,r)}}}t.formatChartDef=function(e){var t=e;if(e.data.index&&e.data.index.values&&e.data.index.values.length>0){(t=Object.assign({},e)).data=Object.assign({},e.data),t.data.columnOrder=e.data.columnOrder.slice(),t.data.columnOrder.push("__index__"),t.data.columns=Object.assign({},e.data.columns),t.data.columns.__index__=e.data.index.type,t.data.values=e.data.values.slice();for(var a=0;a<t.data.values.length;++a)(m=t.data.values[a]).__index__=e.data.index.values[a]}var n=t.data.values;if(t.data.columns){var i=Object.keys(t.data.columns);if(i.filter(function(e){return"date"===t.data.columns[e]})){n=n.slice();for(var u=0,s=i;u<s.length;u++){var f=s[u];if("date"===t.data.columns[f])for(var p=0,x=n;p<x.length;p++){var m;(m=x[p])[f]=r(m[f],r.ISO_8601).toDate()}}}}var h={};d("y",t,h),d("y2",t,h);var y=[],g={};return v("y",t,y,g),v("y2",t,y,g),{size:{width:t.plotConfig&&t.plotConfig.width||1200,height:t.plotConfig&&t.plotConfig.height||600},data:{xs:h,columns:y,type:t.plotConfig&&t.plotConfig.chartType||"line",axes:o(t),names:c(t)},axis:l(t),transition:{duration:0},point:{show:!1},legend:{show:t.plotConfig.legend&&t.plotConfig.legend.show}}}},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(0),n=a(0);t.formatChartDef=n.formatChartDef;var i=a(4),o=function(){function e(e){this.chart=e}return e.prototype.unmount=function(){this.chart&&(this.chart.destroy(),this.chart=void 0)},e.prototype.sizeToFit=function(){this.chart&&this.chart.resize()},e}();t.mountChart=function(e,t){var a=r.formatChartDef(e);a.bindto=t;var n=i.generate(a);return new o(n)}},function(e,t){e.exports=require("moment")},function(e,t){e.exports=require("numeral")},function(e,t){e.exports=require("c3")}]); | ||
| module.exports=function(t){var e={};function a(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}return a.m=t,a.c=e,a.d=function(t,e,r){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)a.d(r,n,function(e){return t[e]}.bind(null,n));return r},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=1)}([function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(2),n=a(3);function i(t,e,a){var r=e.axisMap;if(r){var n=r[t];if(n)for(var i=0,o=n;i<o.length;i++){a[o[i].series]=t}}}function o(t){var e={};return i("y",t,e),i("y2",t,e),e}function u(t,e,a,i){var o=t.series,u=e.data.columns[o];i.type=function(t){return"number"===t?"indexed":"date"===t?"timeseries":"category"}(u),a&&a.label&&(i.label=a.label),i.show=!0,t.format&&(i.tick||(i.tick={}),i.tick.values=function(t,e,a,i){return"number"===a?t.data.values.map(function(t){return n(t[e]).format(i)}):"date"===a?t.data.values.map(function(t){return r(t[e]).format(i)}):void 0}(e,o,u,t.format))}function s(t,e,a,r){var n=e.axisMap;if(n){r[t]={show:!1};var i=r[t],o=n[t];o&&(Array.isArray(o)?o.forEach(function(t){u(t,e,a,i)}):u(o,e,a,i))}}function f(t,e,a,r){if(e.axisMap){s(t,e,a,r);var n=r[t];a&&void 0!==a.min&&(n.min=a.min),a&&void 0!==a.max&&(n.max=a.max)}}function l(t){var e={};return s("x",t,t.plotConfig.x,e),f("y",t,t.plotConfig.y,e),f("y2",t,t.plotConfig.y2,e),e}function c(t){var e={};if(t.axisMap)for(var a in t.axisMap){var r=t.axisMap[a];Array.isArray(r)?r.forEach(function(t){t.label&&(e[t.series]=t.label)}):r.label&&(e[r.series]=r.label)}return e}function d(t,e,a){var r=e.axisMap;if(r){var n=r[t];if(n)for(var i=0,o=n;i<o.length;i++){var u=o[i],s=u.series;if(a[s])return;u.x?a[s]=u.x.series:e.axisMap&&e.axisMap.x&&(a[s]=e.axisMap.x.series)}}}function v(t,e,a,r){if(!r[t]){var n=e.data.values.map(function(e){return e[t]});r[t]=!0,a.push([t].concat(n))}}function p(t,e,a,r){var n=e.axisMap;if(n){var i=n[t];if(i)for(var o=0,u=i;o<u.length;o++){var s=u[o];v(s.series,e,a,r);var f=s.x&&s.x.series||e.axisMap&&e.axisMap.x&&e.axisMap.x.series||null;f&&v(f,e,a,r)}}}e.formatChartDef=function(t){var e=t;if(t.data.index&&t.data.index.values&&t.data.index.values.length>0){(e=Object.assign({},t)).data=Object.assign({},t.data),e.data.columnOrder=t.data.columnOrder.slice(),e.data.columnOrder.push("__index__"),e.data.columns=Object.assign({},t.data.columns),e.data.columns.__index__=t.data.index.type,e.data.values=t.data.values.slice();for(var a=0;a<e.data.values.length;++a)(m=e.data.values[a]).__index__=t.data.index.values[a]}var n=e.data.values;if(e.data.columns){var i=Object.keys(e.data.columns);if(i.filter(function(t){return"date"===e.data.columns[t]})){n=n.slice();for(var u=0,s=i;u<s.length;u++){var f=s[u];if("date"===e.data.columns[f])for(var v=0,x=n;v<x.length;v++){var m;(m=x[v])[f]=r(m[f],r.ISO_8601).toDate()}}}}var h={};d("y",e,h),d("y2",e,h);var y=[],g={};return p("y",e,y,g),p("y2",e,y,g),{size:{width:e.plotConfig&&e.plotConfig.width||1200,height:e.plotConfig&&e.plotConfig.height||600},data:{xs:h,columns:y,type:e.plotConfig&&e.plotConfig.chartType||"line",axes:o(e),names:c(e)},axis:l(e),transition:{duration:0},point:{show:!1},legend:{show:e.plotConfig.legend&&e.plotConfig.legend.show}}}},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(0),n=a(0);e.formatChartDef=n.formatChartDef;var i=a(4),o=function(){function t(t){this.chart=t}return t.prototype.unmount=function(){this.chart&&(this.chart.destroy(),this.chart=void 0)},t.prototype.sizeToFit=function(){this.chart&&this.chart.resize()},t}();e.mountChart=function(t,e){var a=r.formatChartDef(t);a.bindto=e;var n=i.generate(a);return new o(n)}},function(t,e){t.exports=require("moment")},function(t,e){t.exports=require("numeral")},function(t,e){t.exports=require("c3")}]); | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/lib/format-chart-def.ts","webpack:///./src/index.ts","webpack:///external \"moment\"","webpack:///external \"numeral\"","webpack:///external \"c3\""],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","moment","numeral","configureOneAxe","axisName","inputChartDef","c3Axes","axisMap","series","_i","series_1","length","configureAxes","configureOneSeries","seriesConfig","axisConfig","c3AxisDef","seriesName","dataType","data","columns","type","determineAxisType","axisType","label","show","format","tick","values","formatString","map","formatValues","configureOneAxis","c3Axis","Array","isArray","forEach","configureOneYAxis","undefined","min","max","configureAxis","plotConfig","x","y","y2","configureSeriesNames","seriesNames","extractXS","xs","series_2","ySeriesName","addColumn","columnsSet","columnData","row","push","concat","extractColumns","series_3","xSeriesName","formatChartDef","workingChartDef","index","assign","columnOrder","slice","__index__","columnNames","keys","filter","columnName","columnNames_1","_a","values_1","ISO_8601","toDate","size","width","height","chartType","axes","names","axis","transition","duration","point","legend","format_chart_def_1","format_chart_def_2","c3","C3Chart","chart","this","unmount","destroy","sizeToFit","resize","mountChart","chartDef","domElement","c3ChartDef","bindto","generate","require"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","import * as moment from \"moment\";\r\nimport * as numeral from \"numeral\";\r\nimport { IChartDef, IYAxisSeriesConfig, IAxisConfig, IAxisSeriesConfig, IYAxisConfig } from \"@data-forge-plot/chart-def\";\r\n\r\n/**\r\n * Configure a single axe.\r\n */\r\nfunction configureOneAxe(axisName: string, inputChartDef: IChartDef, c3Axes: any) {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n c3Axes[seriesConfig.series] = axisName;\r\n }\r\n}\r\n\r\n/**\r\n * Configure C3 axes.\r\n */\r\nfunction configureAxes(inputChartDef: IChartDef): any { // todo: I could type the c3 chart def?\r\n const c3Axes: any = {};\r\n configureOneAxe(\"y\", inputChartDef, c3Axes);\r\n configureOneAxe(\"y2\", inputChartDef, c3Axes);\r\n return c3Axes;\r\n}\r\n\r\n/**\r\n * Determine the default axis type based on data type.\r\n * TODO: This code could be simplified by removing this function. This should be choosen server-side!\r\n */\r\nfunction determineAxisType(dataType: string): string { // todo: return val could be an enum.\r\n if (dataType === \"number\") {\r\n return \"indexed\";\r\n }\r\n else if (dataType === \"date\") {\r\n return \"timeseries\";\r\n }\r\n else {\r\n return \"category\";\r\n }\r\n}\r\n\r\n/**\r\n * Format values for display.\r\n */\r\nfunction formatValues(\r\n inputChartDef: IChartDef,\r\n seriesName: string,\r\n dataType: string,\r\n formatString: string\r\n): string[] | undefined {\r\n if (dataType === \"number\") { // Use numeral to format numbers.\r\n return inputChartDef.data.values.map(value => numeral(value[seriesName]).format(formatString));\r\n }\r\n else if (dataType === \"date\") { // Use moment for date formating.\r\n return inputChartDef.data.values.map(value => moment(value[seriesName]).format(formatString));\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction configureOneSeries(\r\n seriesConfig: IAxisSeriesConfig,\r\n inputChartDef: IChartDef,\r\n axisConfig: IAxisConfig | undefined,\r\n c3AxisDef: any\r\n): void {\r\n // Default axis type based on data type.\r\n const seriesName = seriesConfig.series;\r\n const dataType = inputChartDef.data.columns[seriesName];\r\n c3AxisDef.type = determineAxisType(dataType);\r\n\r\n if (axisConfig) {\r\n if (axisConfig.axisType && axisConfig.axisType !== \"default\") {\r\n c3AxisDef.type = axisConfig.axisType;\r\n }\r\n\r\n if (axisConfig.label) {\r\n c3AxisDef.label = axisConfig.label;\r\n }\r\n }\r\n\r\n c3AxisDef.show = true;\r\n\r\n if (seriesConfig.format) {\r\n if (!c3AxisDef.tick) {\r\n c3AxisDef.tick = {};\r\n }\r\n\r\n c3AxisDef.tick.values = formatValues(inputChartDef, seriesName, dataType, seriesConfig.format);\r\n }\r\n}\r\n\r\n/**\r\n * Configure a single axis.\r\n */\r\nfunction configureOneAxis(axisName: string, inputChartDef: IChartDef, axisConfig: IAxisConfig | undefined, c3Axis: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n c3Axis[axisName] = { show: false };\r\n\r\n const c3AxisDef = c3Axis[axisName];\r\n const series: IAxisSeriesConfig = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(series)) {\r\n series.forEach(seriesConfig => {\r\n configureOneSeries(seriesConfig, inputChartDef, axisConfig, c3AxisDef);\r\n });\r\n }\r\n else {\r\n configureOneSeries(series, inputChartDef, axisConfig, c3AxisDef);\r\n }\r\n}\r\n\r\n/**\r\n * Configure a single Y axis.\r\n */\r\nfunction configureOneYAxis(axisName: string, inputChartDef: IChartDef, axisConfig: IYAxisConfig | undefined, c3Axis: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n configureOneAxis(axisName, inputChartDef, axisConfig, c3Axis);\r\n\r\n const c3AxisDef = c3Axis[axisName];\r\n if (axisConfig && axisConfig.min !== undefined) {\r\n c3AxisDef.min = axisConfig.min;\r\n }\r\n\r\n if (axisConfig && axisConfig.max !== undefined) {\r\n c3AxisDef.max = axisConfig.max;\r\n }\r\n}\r\n\r\n/**\r\n * Configure C3 axis'.\r\n */\r\nfunction configureAxis(inputChartDef: IChartDef): any {\r\n const c3Axis: any = {};\r\n\r\n configureOneAxis(\"x\", inputChartDef, inputChartDef.plotConfig.x, c3Axis);\r\n configureOneYAxis(\"y\", inputChartDef, inputChartDef.plotConfig.y, c3Axis);\r\n configureOneYAxis(\"y2\", inputChartDef, inputChartDef.plotConfig.y2, c3Axis);\r\n\r\n return c3Axis;\r\n}\r\n\r\n/**\r\n * Configure the names of series.\r\n */\r\nfunction configureSeriesNames(inputChartDef: IChartDef): any {\r\n const seriesNames: any = {};\r\n\r\n if (inputChartDef.axisMap) {\r\n for (const axisName in inputChartDef.axisMap) {\r\n const series: IAxisSeriesConfig = (inputChartDef.axisMap as any)[axisName];\r\n if (Array.isArray(series)) {\r\n series.forEach(seriesConfig => {\r\n if (seriesConfig.label) {\r\n seriesNames[seriesConfig.series] = seriesConfig.label;\r\n }\r\n });\r\n }\r\n else {\r\n if (series.label) {\r\n seriesNames[series.series] = series.label;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return seriesNames;\r\n}\r\n\r\n/**\r\n * Extract x axis series for y axis series.\r\n */\r\nfunction extractXS(axisName: string, inputChartDef: IChartDef, xs: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n const ySeriesName = seriesConfig.series;\r\n if (xs[ySeriesName]) {\r\n return; // Already set.\r\n }\r\n\r\n if (seriesConfig.x) {\r\n xs[ySeriesName] = (seriesConfig.x as IAxisSeriesConfig).series; // X explicitly associated with Y.\r\n }\r\n else if (inputChartDef.axisMap && inputChartDef.axisMap.x) {\r\n xs[ySeriesName] = inputChartDef.axisMap.x.series; // Default X.\r\n }\r\n }\r\n}\r\n\r\nfunction addColumn(seriesName: string, inputChartDef: IChartDef, columns: any[], columnsSet: any): void {\r\n if (columnsSet[seriesName]) {\r\n return; // Already set.\r\n }\r\n\r\n const columnData = inputChartDef.data.values.map(row => row[seriesName]);\r\n\r\n columnsSet[seriesName] = true;\r\n columns.push([seriesName].concat(columnData));\r\n}\r\n\r\n/**\r\n * Extract column data.\r\n */\r\nfunction extractColumns(axisName: string, inputChartDef: IChartDef, columns: any[], columnsSet: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n addColumn(seriesConfig.series, inputChartDef, columns, columnsSet);\r\n\r\n const xSeriesName = seriesConfig.x && (seriesConfig.x as IAxisSeriesConfig).series\r\n || inputChartDef.axisMap && inputChartDef.axisMap.x && inputChartDef.axisMap.x.series || null;\r\n if (xSeriesName) {\r\n addColumn(xSeriesName, inputChartDef, columns, columnsSet);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convert a data-forge-plot chart definition to a C3 chart definition.\r\n */\r\nexport function formatChartDef(inputChartDef: IChartDef): any {\r\n\r\n //\r\n // WORKAROUND: Merge the index in as a column.\r\n // This needs to be changed later and it shouldn't be part of the C3 template it should be\r\n // code that is shared to all templates.\r\n //\r\n let workingChartDef = inputChartDef;\r\n\r\n //TODO: This transformation should not be in the template!\r\n if (inputChartDef.data.index && inputChartDef.data.index.values && inputChartDef.data.index.values.length > 0) {\r\n workingChartDef = Object.assign({}, inputChartDef);\r\n workingChartDef.data = Object.assign({}, inputChartDef.data);\r\n workingChartDef.data.columnOrder = inputChartDef.data.columnOrder.slice(); // Clone array.\r\n workingChartDef.data.columnOrder.push(\"__index__\");\r\n workingChartDef.data.columns = Object.assign({}, inputChartDef.data.columns);\r\n workingChartDef.data.columns.__index__ = inputChartDef.data.index.type;\r\n workingChartDef.data.values = inputChartDef.data.values.slice(); // Clone array.\r\n for (let i = 0; i < workingChartDef.data.values.length; ++i) {\r\n const row = workingChartDef.data.values[i];\r\n row.__index__ = inputChartDef.data.index.values[i];\r\n }\r\n }\r\n\r\n let values = workingChartDef.data.values;\r\n\r\n //TODO: Dates need to be deserialized by the api.\r\n if (workingChartDef.data.columns) {\r\n const columnNames = Object.keys(workingChartDef.data.columns);\r\n const hasDates = columnNames.filter(columnName => workingChartDef.data.columns[columnName] === \"date\");\r\n if (hasDates) { // todo: this should be done by the plot api somehow!! The template should do minimal work.\r\n values = values.slice(); // Clone the date so we can inflate the dates.\r\n for (const columnName of columnNames) {\r\n if (workingChartDef.data.columns[columnName] === \"date\") { // This column is a date.\r\n for (const row of values) {\r\n row[columnName] = moment(row[columnName], moment.ISO_8601).toDate();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const xs: any = {};\r\n extractXS(\"y\", workingChartDef, xs);\r\n extractXS(\"y2\", workingChartDef, xs);\r\n\r\n const columns: any[] = [];\r\n const columnsSet: any = {};\r\n extractColumns(\"y\", workingChartDef, columns, columnsSet);\r\n extractColumns(\"y2\", workingChartDef, columns, columnsSet);\r\n\r\n const c3ChartDef = {\r\n size: {\r\n width: workingChartDef.plotConfig && workingChartDef.plotConfig.width || 1200,\r\n height: workingChartDef.plotConfig && workingChartDef.plotConfig.height || 600,\r\n },\r\n data: {\r\n xs,\r\n columns,\r\n type: workingChartDef.plotConfig && workingChartDef.plotConfig.chartType || \"line\",\r\n axes: configureAxes(workingChartDef),\r\n names: configureSeriesNames(workingChartDef),\r\n },\r\n axis: configureAxis(workingChartDef),\r\n transition: {\r\n duration: 0, // Disable animated transitions when we are capturing a static image.\r\n },\r\n point: {\r\n show: false,\r\n },\r\n legend: {\r\n show: workingChartDef.plotConfig.legend && workingChartDef.plotConfig.legend.show,\r\n },\r\n };\r\n\r\n return c3ChartDef;\r\n}\r\n","import { IChartDef } from \"@data-forge-plot/chart-def\";\r\nimport { formatChartDef } from \"./lib/format-chart-def\";\r\nexport { formatChartDef } from \"./lib/format-chart-def\";\r\nimport * as c3 from \"c3\";\r\n\r\n//\r\n// Interface to control and configure a mounted chart.\r\n//\r\nexport interface IChart {\r\n\r\n //\r\n // Unmount the chart.\r\n //\r\n unmount(): void;\r\n\r\n //\r\n // Size the chart to fit its container.\r\n //\r\n sizeToFit(): void;\r\n}\r\n\r\n//\r\n// Wrapper for a C3 chart.\r\n//\r\nclass C3Chart implements IChart {\r\n\r\n //\r\n // The C3 chart object.\r\n //\r\n private chart?: c3.ChartAPI;\r\n\r\n constructor(chart: c3.ChartAPI) {\r\n this.chart = chart;\r\n }\r\n\r\n //\r\n // Unmount the chart.\r\n //\r\n public unmount(): void {\r\n if (this.chart) {\r\n this.chart.destroy();\r\n this.chart = undefined;\r\n }\r\n }\r\n\r\n //\r\n // Size the chart to fit its container.\r\n //\r\n public sizeToFit(): void {\r\n if (this.chart) {\r\n this.chart.resize();\r\n }\r\n }\r\n}\r\n\r\n//\r\n// Mount the chart on the DOM element.\r\n//\r\nexport function mountChart(chartDef: IChartDef, domElement: HTMLElement): IChart {\r\n const c3ChartDef = formatChartDef(chartDef); //TODO: This can be properly typed to a c3 chart configuration!\r\n c3ChartDef.bindto = domElement;\r\n const chart = c3.generate(c3ChartDef);\r\n const c3Chart = new C3Chart(chart);\r\n return c3Chart;\r\n}","module.exports = require(\"moment\");","module.exports = require(\"numeral\");","module.exports = require(\"c3\");"],"sourceRoot":""} | ||
| {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/lib/format-chart-def.ts","webpack:///./src/index.ts","webpack:///external \"moment\"","webpack:///external \"numeral\"","webpack:///external \"c3\""],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","moment","numeral","configureOneAxe","axisName","inputChartDef","c3Axes","axisMap","series","_i","series_1","length","configureAxes","configureOneSeries","seriesConfig","axisConfig","c3AxisDef","seriesName","dataType","data","columns","type","determineAxisType","label","show","format","tick","values","formatString","map","formatValues","configureOneAxis","c3Axis","Array","isArray","forEach","configureOneYAxis","undefined","min","max","configureAxis","plotConfig","x","y","y2","configureSeriesNames","seriesNames","extractXS","xs","series_2","ySeriesName","addColumn","columnsSet","columnData","row","push","concat","extractColumns","series_3","xSeriesName","formatChartDef","workingChartDef","index","assign","columnOrder","slice","__index__","columnNames","keys","filter","columnName","columnNames_1","_a","values_1","ISO_8601","toDate","size","width","height","chartType","axes","names","axis","transition","duration","point","legend","format_chart_def_1","format_chart_def_2","c3","C3Chart","chart","this","unmount","destroy","sizeToFit","resize","mountChart","chartDef","domElement","c3ChartDef","bindto","generate","require"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","import * as moment from \"moment\";\r\nimport * as numeral from \"numeral\";\r\nimport { IChartDef, IYAxisSeriesConfig, IAxisConfig, IAxisSeriesConfig, IYAxisConfig } from \"@data-forge-plot/chart-def\";\r\n\r\n/**\r\n * Configure a single axe.\r\n */\r\nfunction configureOneAxe(axisName: string, inputChartDef: IChartDef, c3Axes: any) {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n c3Axes[seriesConfig.series] = axisName;\r\n }\r\n}\r\n\r\n/**\r\n * Configure C3 axes.\r\n */\r\nfunction configureAxes(inputChartDef: IChartDef): any { // todo: I could type the c3 chart def?\r\n const c3Axes: any = {};\r\n configureOneAxe(\"y\", inputChartDef, c3Axes);\r\n configureOneAxe(\"y2\", inputChartDef, c3Axes);\r\n return c3Axes;\r\n}\r\n\r\n/**\r\n * Determine the default axis type based on data type.\r\n * TODO: This code could be simplified by removing this function. This should be choosen server-side!\r\n */\r\nfunction determineAxisType(dataType: string): string { // todo: return val could be an enum.\r\n if (dataType === \"number\") {\r\n return \"indexed\";\r\n }\r\n else if (dataType === \"date\") {\r\n return \"timeseries\";\r\n }\r\n else {\r\n return \"category\";\r\n }\r\n}\r\n\r\n/**\r\n * Format values for display.\r\n */\r\nfunction formatValues(\r\n inputChartDef: IChartDef,\r\n seriesName: string,\r\n dataType: string,\r\n formatString: string\r\n): string[] | undefined {\r\n if (dataType === \"number\") { // Use numeral to format numbers.\r\n return inputChartDef.data.values.map(value => numeral(value[seriesName]).format(formatString));\r\n }\r\n else if (dataType === \"date\") { // Use moment for date formating.\r\n return inputChartDef.data.values.map(value => moment(value[seriesName]).format(formatString));\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction configureOneSeries(\r\n seriesConfig: IAxisSeriesConfig,\r\n inputChartDef: IChartDef,\r\n axisConfig: IAxisConfig | undefined,\r\n c3AxisDef: any\r\n): void {\r\n // Default axis type based on data type.\r\n const seriesName = seriesConfig.series;\r\n const dataType = inputChartDef.data.columns[seriesName];\r\n c3AxisDef.type = determineAxisType(dataType);\r\n\r\n if (axisConfig) {\r\n /*fio:\r\n if (axisConfig.axisType && axisConfig.axisType !== \"default\") {\r\n c3AxisDef.type = axisConfig.axisType;\r\n }\r\n */\r\n\r\n if (axisConfig.label) {\r\n c3AxisDef.label = axisConfig.label;\r\n }\r\n }\r\n\r\n c3AxisDef.show = true;\r\n\r\n if (seriesConfig.format) {\r\n if (!c3AxisDef.tick) {\r\n c3AxisDef.tick = {};\r\n }\r\n\r\n c3AxisDef.tick.values = formatValues(inputChartDef, seriesName, dataType, seriesConfig.format);\r\n }\r\n}\r\n\r\n/**\r\n * Configure a single axis.\r\n */\r\nfunction configureOneAxis(axisName: string, inputChartDef: IChartDef, axisConfig: IAxisConfig | undefined, c3Axis: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n c3Axis[axisName] = { show: false };\r\n\r\n const c3AxisDef = c3Axis[axisName];\r\n const series: IAxisSeriesConfig = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(series)) {\r\n series.forEach(seriesConfig => {\r\n configureOneSeries(seriesConfig, inputChartDef, axisConfig, c3AxisDef);\r\n });\r\n }\r\n else {\r\n configureOneSeries(series, inputChartDef, axisConfig, c3AxisDef);\r\n }\r\n}\r\n\r\n/**\r\n * Configure a single Y axis.\r\n */\r\nfunction configureOneYAxis(axisName: string, inputChartDef: IChartDef, axisConfig: IYAxisConfig | undefined, c3Axis: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n configureOneAxis(axisName, inputChartDef, axisConfig, c3Axis);\r\n\r\n const c3AxisDef = c3Axis[axisName];\r\n if (axisConfig && axisConfig.min !== undefined) {\r\n c3AxisDef.min = axisConfig.min;\r\n }\r\n\r\n if (axisConfig && axisConfig.max !== undefined) {\r\n c3AxisDef.max = axisConfig.max;\r\n }\r\n}\r\n\r\n/**\r\n * Configure C3 axis'.\r\n */\r\nfunction configureAxis(inputChartDef: IChartDef): any {\r\n const c3Axis: any = {};\r\n\r\n configureOneAxis(\"x\", inputChartDef, inputChartDef.plotConfig.x, c3Axis);\r\n configureOneYAxis(\"y\", inputChartDef, inputChartDef.plotConfig.y, c3Axis);\r\n configureOneYAxis(\"y2\", inputChartDef, inputChartDef.plotConfig.y2, c3Axis);\r\n\r\n return c3Axis;\r\n}\r\n\r\n/**\r\n * Configure the names of series.\r\n */\r\nfunction configureSeriesNames(inputChartDef: IChartDef): any {\r\n const seriesNames: any = {};\r\n\r\n if (inputChartDef.axisMap) {\r\n for (const axisName in inputChartDef.axisMap) {\r\n const series: IAxisSeriesConfig = (inputChartDef.axisMap as any)[axisName];\r\n if (Array.isArray(series)) {\r\n series.forEach(seriesConfig => {\r\n if (seriesConfig.label) {\r\n seriesNames[seriesConfig.series] = seriesConfig.label;\r\n }\r\n });\r\n }\r\n else {\r\n if (series.label) {\r\n seriesNames[series.series] = series.label;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return seriesNames;\r\n}\r\n\r\n/**\r\n * Extract x axis series for y axis series.\r\n */\r\nfunction extractXS(axisName: string, inputChartDef: IChartDef, xs: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n const ySeriesName = seriesConfig.series;\r\n if (xs[ySeriesName]) {\r\n return; // Already set.\r\n }\r\n\r\n if (seriesConfig.x) {\r\n xs[ySeriesName] = (seriesConfig.x as IAxisSeriesConfig).series; // X explicitly associated with Y.\r\n }\r\n else if (inputChartDef.axisMap && inputChartDef.axisMap.x) {\r\n xs[ySeriesName] = inputChartDef.axisMap.x.series; // Default X.\r\n }\r\n }\r\n}\r\n\r\nfunction addColumn(seriesName: string, inputChartDef: IChartDef, columns: any[], columnsSet: any): void {\r\n if (columnsSet[seriesName]) {\r\n return; // Already set.\r\n }\r\n\r\n const columnData = inputChartDef.data.values.map(row => row[seriesName]);\r\n\r\n columnsSet[seriesName] = true;\r\n columns.push([seriesName].concat(columnData));\r\n}\r\n\r\n/**\r\n * Extract column data.\r\n */\r\nfunction extractColumns(axisName: string, inputChartDef: IChartDef, columns: any[], columnsSet: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n addColumn(seriesConfig.series, inputChartDef, columns, columnsSet);\r\n\r\n const xSeriesName = seriesConfig.x && (seriesConfig.x as IAxisSeriesConfig).series\r\n || inputChartDef.axisMap && inputChartDef.axisMap.x && inputChartDef.axisMap.x.series || null;\r\n if (xSeriesName) {\r\n addColumn(xSeriesName, inputChartDef, columns, columnsSet);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convert a data-forge-plot chart definition to a C3 chart definition.\r\n */\r\nexport function formatChartDef(inputChartDef: IChartDef): any {\r\n\r\n //\r\n // WORKAROUND: Merge the index in as a column.\r\n // This needs to be changed later and it shouldn't be part of the C3 template it should be\r\n // code that is shared to all templates.\r\n //\r\n let workingChartDef = inputChartDef;\r\n\r\n //TODO: This transformation should not be in the template!\r\n if (inputChartDef.data.index && inputChartDef.data.index.values && inputChartDef.data.index.values.length > 0) {\r\n workingChartDef = Object.assign({}, inputChartDef);\r\n workingChartDef.data = Object.assign({}, inputChartDef.data);\r\n workingChartDef.data.columnOrder = inputChartDef.data.columnOrder.slice(); // Clone array.\r\n workingChartDef.data.columnOrder.push(\"__index__\");\r\n workingChartDef.data.columns = Object.assign({}, inputChartDef.data.columns);\r\n workingChartDef.data.columns.__index__ = inputChartDef.data.index.type;\r\n workingChartDef.data.values = inputChartDef.data.values.slice(); // Clone array.\r\n for (let i = 0; i < workingChartDef.data.values.length; ++i) {\r\n const row = workingChartDef.data.values[i];\r\n row.__index__ = inputChartDef.data.index.values[i];\r\n }\r\n }\r\n\r\n let values = workingChartDef.data.values;\r\n\r\n //TODO: Dates need to be deserialized by the api.\r\n if (workingChartDef.data.columns) {\r\n const columnNames = Object.keys(workingChartDef.data.columns);\r\n const hasDates = columnNames.filter(columnName => workingChartDef.data.columns[columnName] === \"date\");\r\n if (hasDates) { // todo: this should be done by the plot api somehow!! The template should do minimal work.\r\n values = values.slice(); // Clone the date so we can inflate the dates.\r\n for (const columnName of columnNames) {\r\n if (workingChartDef.data.columns[columnName] === \"date\") { // This column is a date.\r\n for (const row of values) {\r\n row[columnName] = moment(row[columnName], moment.ISO_8601).toDate();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const xs: any = {};\r\n extractXS(\"y\", workingChartDef, xs);\r\n extractXS(\"y2\", workingChartDef, xs);\r\n\r\n const columns: any[] = [];\r\n const columnsSet: any = {};\r\n extractColumns(\"y\", workingChartDef, columns, columnsSet);\r\n extractColumns(\"y2\", workingChartDef, columns, columnsSet);\r\n\r\n const c3ChartDef = {\r\n size: {\r\n width: workingChartDef.plotConfig && workingChartDef.plotConfig.width || 1200,\r\n height: workingChartDef.plotConfig && workingChartDef.plotConfig.height || 600,\r\n },\r\n data: {\r\n xs,\r\n columns,\r\n type: workingChartDef.plotConfig && workingChartDef.plotConfig.chartType || \"line\",\r\n axes: configureAxes(workingChartDef),\r\n names: configureSeriesNames(workingChartDef),\r\n },\r\n axis: configureAxis(workingChartDef),\r\n transition: {\r\n duration: 0, // Disable animated transitions when we are capturing a static image.\r\n },\r\n point: {\r\n show: false,\r\n },\r\n legend: {\r\n show: workingChartDef.plotConfig.legend && workingChartDef.plotConfig.legend.show,\r\n },\r\n };\r\n\r\n return c3ChartDef;\r\n}\r\n","import { IChartDef } from \"@data-forge-plot/chart-def\";\r\nimport { formatChartDef } from \"./lib/format-chart-def\";\r\nexport { formatChartDef } from \"./lib/format-chart-def\";\r\nimport * as c3 from \"c3\";\r\n\r\n//\r\n// Interface to control and configure a mounted chart.\r\n//\r\nexport interface IChart {\r\n\r\n //\r\n // Unmount the chart.\r\n //\r\n unmount(): void;\r\n\r\n //\r\n // Size the chart to fit its container.\r\n //\r\n sizeToFit(): void;\r\n}\r\n\r\n//\r\n// Wrapper for a C3 chart.\r\n//\r\nclass C3Chart implements IChart {\r\n\r\n //\r\n // The C3 chart object.\r\n //\r\n private chart?: c3.ChartAPI;\r\n\r\n constructor(chart: c3.ChartAPI) {\r\n this.chart = chart;\r\n }\r\n\r\n //\r\n // Unmount the chart.\r\n //\r\n public unmount(): void {\r\n if (this.chart) {\r\n this.chart.destroy();\r\n this.chart = undefined;\r\n }\r\n }\r\n\r\n //\r\n // Size the chart to fit its container.\r\n //\r\n public sizeToFit(): void {\r\n if (this.chart) {\r\n this.chart.resize();\r\n }\r\n }\r\n}\r\n\r\n//\r\n// Mount the chart on the DOM element.\r\n//\r\nexport function mountChart(chartDef: IChartDef, domElement: HTMLElement): IChart {\r\n const c3ChartDef = formatChartDef(chartDef); //TODO: This can be properly typed to a c3 chart configuration!\r\n c3ChartDef.bindto = domElement;\r\n const chart = c3.generate(c3ChartDef);\r\n const c3Chart = new C3Chart(chart);\r\n return c3Chart;\r\n}","module.exports = require(\"moment\");","module.exports = require(\"numeral\");","module.exports = require(\"c3\");"],"sourceRoot":""} |
@@ -1,1 +0,1 @@ | ||
| .c3 svg{font:10px sans-serif;-webkit-tap-highlight-color:transparent}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc rect{stroke:#fff;stroke-width:1}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:grey;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:1;fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-title{font:14px sans-serif}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #ccc}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#fff}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:#fff}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}.c3-chart-arc.c3-target g path{opacity:1}.c3-chart-arc.c3-target.c3-focused g path{opacity:1}.c3-drag-zoom.enabled{pointer-events:all!important;visibility:visible}.c3-drag-zoom.disabled{pointer-events:none!important;visibility:hidden}.c3-drag-zoom .extent{fill-opacity:.1} | ||
| .c3 svg{font:10px sans-serif;-webkit-tap-highlight-color:transparent}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc rect{stroke:#fff;stroke-width:1}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:grey;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:1;fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-title{font:14px sans-serif}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #ccc}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#fff}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip .value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:#fff}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}.c3-chart-arc.c3-target g path{opacity:1}.c3-chart-arc.c3-target.c3-focused g path{opacity:1}.c3-drag-zoom.enabled{pointer-events:all!important;visibility:visible}.c3-drag-zoom.disabled{pointer-events:none!important;visibility:hidden}.c3-drag-zoom .extent{fill-opacity:.1} |
+3
-3
| { | ||
| "name": "@data-forge-plot/c3", | ||
| "version": "0.1.1", | ||
| "version": "0.1.2", | ||
| "description": "Plugin to Data-Forge Plot that integrates support for the C3 charting library.", | ||
@@ -37,5 +37,5 @@ "main": "build/index.js", | ||
| "dependencies": { | ||
| "@data-forge-plot/chart-def": "^1.0.9", | ||
| "@data-forge-plot/chart-def": "^1.1.1", | ||
| "@data-forge/serialization": "^1.0.0", | ||
| "c3": "^0.6.13", | ||
| "c3": "^0.7.0", | ||
| "moment": "^2.24.0", | ||
@@ -42,0 +42,0 @@ "numeral": "^2.0.6" |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
4245005
0.87%48712
0.81%