@pie-lib/charting 5.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/chart.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/chart.jsx"],"names":["log","Chart","charts","chartTypes","Bar","Histogram","LineDot","LineCross","DotPlot","LinePlot","props","state","chartType","ChartComponent","chart","find","type","Component","data","onDataChange","index","newCategory","integerIndex","parseInt","range","categoryDefaultLabel","label","value","step","deletable","editable","interactive","defineChart","map","d","classes","className","domain","size","title","addCategoryEnabled","theme","width","height","getChart","categories","getFilteredCategories","labelFontSize","typography","fontSize","correctValues","verticalLines","horizontalLines","leftAxis","common","graphProps","rootNode","maskSize","x","y","scale","xBand","bandWidth","bandwidth","barWidth","max","length","increaseHeight","top","rootCommon","controls","toolMenu","addCategory","r","changeData","changeCategory","React","PropTypes","object","isRequired","string","shape","number","min","axisLabel","arrayOf","labelStep","array","func","bool","styles","graphBox","transform","display","justifyContent","padding","spacing","unit","backgroundColor","color","primaryLight","borderTop","primaryDark","borderBottom","borderLeft","borderRight","root","overflow","svg","minHeight","withTheme"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { Root, createGraphProps } from '@pie-lib/plot';\nimport cloneDeep from 'lodash/cloneDeep';\nimport ChartGrid from './grid';\nimport ChartAxes from './axes';\nimport debug from 'debug';\nimport { color } from '@pie-lib/render-ui';\nimport {\n dataToXBand,\n getDomainAndRangeByChartType,\n getGridLinesAndAxisByChartType,\n getTopPadding\n} from './utils';\nimport ToolMenu from './tool-menu';\nimport chartTypes from './chart-types';\n\nconst log = debug('pie-lib:charts:chart');\n\nexport class Chart extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n chartType: PropTypes.string.isRequired,\n size: PropTypes.shape({\n width: PropTypes.number,\n height: PropTypes.number\n }),\n domain: PropTypes.shape({\n label: PropTypes.string,\n min: PropTypes.number,\n max: PropTypes.number,\n axisLabel: PropTypes.string\n }),\n data: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.number })),\n range: PropTypes.shape({\n label: PropTypes.string,\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number,\n labelStep: PropTypes.number,\n axisLabel: PropTypes.string\n }),\n charts: PropTypes.array,\n title: PropTypes.string,\n onDataChange: PropTypes.func,\n addCategoryEnabled: PropTypes.bool,\n categoryDefaultLabel: PropTypes.string,\n theme: PropTypes.object\n };\n\n static defaultProps = {\n size: {\n width: 480,\n height: 480\n }\n };\n\n state = {\n charts: [\n chartTypes.Bar(),\n chartTypes.Histogram(),\n chartTypes.LineDot(),\n chartTypes.LineCross(),\n chartTypes.DotPlot(),\n chartTypes.LinePlot()\n ]\n };\n\n getChart = () => {\n const charts = this.props.charts || this.state.charts;\n let { chartType } = this.props;\n let ChartComponent = null;\n let chart = null;\n\n if (chartType) {\n chart = charts && charts.find(chart => chart.type === chartType);\n ChartComponent = chart && chart.Component;\n } else {\n chart = charts && charts[0];\n ChartComponent = chart && chart.Component;\n chartType = chart && chart.type;\n }\n\n return {\n type: chartType,\n ChartComponent\n };\n };\n\n changeData = data => {\n const { onDataChange } = this.props;\n\n onDataChange(data);\n };\n\n changeCategory = (index, newCategory) => {\n const integerIndex = parseInt(index, 10);\n\n if (integerIndex >= 0) {\n const { data, onDataChange } = this.props;\n data[integerIndex] = {\n ...data[integerIndex],\n ...newCategory\n };\n\n onDataChange(data);\n }\n };\n\n addCategory = (chartType, range) => {\n const { onDataChange, data, categoryDefaultLabel } = this.props;\n\n onDataChange([\n ...data,\n {\n label: categoryDefaultLabel || 'New Bar',\n value: range.step,\n deletable: true,\n editable: true,\n interactive: true\n }\n ]);\n };\n\n getFilteredCategories = () => {\n const { data, defineChart } = this.props;\n\n return data\n ? data.map(d => ({\n ...d,\n deletable: defineChart || d.deletable\n }))\n : [];\n };\n\n render() {\n const {\n classes,\n className,\n domain,\n range,\n size,\n title,\n addCategoryEnabled,\n theme\n } = this.props;\n let { chartType } = this.props;\n\n const defineChart = this.props.defineChart || false;\n const { width, height } = size || {};\n\n const { ChartComponent } = this.getChart();\n const categories = this.getFilteredCategories();\n\n const labelFontSize = (theme && theme.typography && theme.typography.fontSize) || 14;\n const correctValues = getDomainAndRangeByChartType(\n domain,\n range,\n size,\n chartType,\n labelFontSize\n );\n\n const { verticalLines, horizontalLines, leftAxis } = getGridLinesAndAxisByChartType(\n correctValues.range,\n chartType\n );\n const common = {\n graphProps: createGraphProps(\n correctValues.domain,\n correctValues.range,\n size,\n () => this.rootNode\n )\n };\n\n log('[render] common:', common);\n\n const maskSize = { x: -10, y: -10, width: width + 20, height: height + 80 };\n const { scale } = common.graphProps;\n const xBand = dataToXBand(scale.x, categories, width, chartType);\n\n if (!ChartComponent) {\n return null;\n }\n\n const bandWidth = xBand.bandwidth();\n // for chartType \"line\", bandWidth will be 0, so we have to calculate it\n const barWidth = bandWidth || scale.x(correctValues.domain.max) / categories.length;\n const increaseHeight = defineChart ? 80 : 0;\n\n // if there are many categories, we have to rotate their names in order to fit\n // and we have to add extra value on top of some items\n const top = getTopPadding(barWidth);\n const rootCommon = cloneDeep(common);\n rootCommon.graphProps.size.height += top + increaseHeight;\n\n return (\n <div className={classNames(classes.class, className)}>\n <div className={classes.controls}>\n <ToolMenu\n className={classes.toolMenu}\n disabled={!addCategoryEnabled}\n addCategory={() => this.addCategory(chartType, correctValues.range)}\n />\n </div>\n <Root title={title} classes={classes} rootRef={r => (this.rootNode = r)} {...rootCommon}>\n <ChartGrid\n {...common}\n xBand={xBand}\n rowTickValues={horizontalLines}\n columnTickValues={verticalLines}\n />\n <ChartAxes\n {...common}\n defineChart={defineChart}\n categories={categories}\n xBand={xBand}\n leftAxis={leftAxis}\n onChange={this.changeData}\n onChangeCategory={this.changeCategory}\n top={top}\n />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" />\n </mask>\n <g id=\"marks\" mask=\"url('#myMask')\">\n <ChartComponent\n {...common}\n data={categories}\n onChange={this.changeData}\n onChangeCategory={this.changeCategory}\n />\n </g>\n </Root>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n graphBox: {\n transform: 'translate(60px, 35px)'\n },\n controls: {\n width: 'inherit',\n display: 'flex',\n justifyContent: 'space-between',\n padding: theme.spacing.unit,\n backgroundColor: color.primaryLight(),\n borderTop: `solid 1px ${color.primaryDark()}`,\n borderBottom: `solid 0px ${color.primaryDark()}`,\n borderLeft: `solid 1px ${color.primaryDark()}`,\n borderRight: `solid 1px ${color.primaryDark()}`\n },\n root: {\n overflow: 'hidden'\n },\n svg: {\n overflow: 'visible'\n },\n toolMenu: {\n minHeight: '36px'\n }\n});\n\nexport default withStyles(styles, { withTheme: true })(Chart);\n"],"file":"chart.js"}
1
+ {"version":3,"sources":["../src/chart.jsx"],"names":["log","Chart","charts","chartTypes","Bar","Histogram","LineDot","LineCross","DotPlot","LinePlot","props","state","chartType","ChartComponent","chart","find","type","Component","data","onDataChange","index","newCategory","integerIndex","parseInt","range","categoryDefaultLabel","label","value","step","deletable","editable","interactive","defineChart","map","d","classes","className","domain","size","title","addCategoryEnabled","theme","width","height","getChart","categories","getFilteredCategories","labelFontSize","typography","fontSize","correctValues","verticalLines","horizontalLines","leftAxis","common","graphProps","rootNode","maskSize","x","y","scale","xBand","bandWidth","bandwidth","barWidth","max","length","increaseHeight","top","rootCommon","controls","toolMenu","addCategory","r","changeData","changeCategory","React","PropTypes","object","isRequired","string","shape","number","min","axisLabel","arrayOf","labelStep","array","func","bool","styles","graphBox","transform","display","justifyContent","padding","spacing","unit","backgroundColor","color","primaryLight","borderTop","primaryDark","borderBottom","borderLeft","borderRight","root","overflow","svg","minHeight","withTheme"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { Root, createGraphProps } from '@pie-lib/plot';\nimport cloneDeep from 'lodash/cloneDeep';\nimport ChartGrid from './grid';\nimport ChartAxes from './axes';\nimport debug from 'debug';\nimport { color } from '@pie-lib/render-ui';\nimport {\n dataToXBand,\n getDomainAndRangeByChartType,\n getGridLinesAndAxisByChartType,\n getTopPadding\n} from './utils';\nimport ToolMenu from './tool-menu';\nimport chartTypes from './chart-types';\n\nconst log = debug('pie-lib:charts:chart');\n\nexport class Chart extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n chartType: PropTypes.string.isRequired,\n size: PropTypes.shape({\n width: PropTypes.number,\n height: PropTypes.number\n }),\n domain: PropTypes.shape({\n label: PropTypes.string,\n min: PropTypes.number,\n max: PropTypes.number,\n axisLabel: PropTypes.string\n }),\n data: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.number })),\n range: PropTypes.shape({\n label: PropTypes.string,\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number,\n labelStep: PropTypes.number,\n axisLabel: PropTypes.string\n }),\n charts: PropTypes.array,\n title: PropTypes.string,\n onDataChange: PropTypes.func,\n addCategoryEnabled: PropTypes.bool,\n categoryDefaultLabel: PropTypes.string,\n defineChart: PropTypes.bool,\n theme: PropTypes.object\n };\n\n static defaultProps = {\n size: {\n width: 480,\n height: 480\n }\n };\n\n state = {\n charts: [\n chartTypes.Bar(),\n chartTypes.Histogram(),\n chartTypes.LineDot(),\n chartTypes.LineCross(),\n chartTypes.DotPlot(),\n chartTypes.LinePlot()\n ]\n };\n\n getChart = () => {\n const charts = this.props.charts || this.state.charts;\n let { chartType } = this.props;\n let ChartComponent = null;\n let chart = null;\n\n if (chartType) {\n chart = charts && charts.find(chart => chart.type === chartType);\n ChartComponent = chart && chart.Component;\n } else {\n chart = charts && charts[0];\n ChartComponent = chart && chart.Component;\n chartType = chart && chart.type;\n }\n\n return {\n type: chartType,\n ChartComponent\n };\n };\n\n changeData = data => {\n const { onDataChange } = this.props;\n\n onDataChange(data);\n };\n\n changeCategory = (index, newCategory) => {\n const integerIndex = parseInt(index, 10);\n\n if (integerIndex >= 0) {\n const { data, onDataChange } = this.props;\n data[integerIndex] = {\n ...data[integerIndex],\n ...newCategory\n };\n\n onDataChange(data);\n }\n };\n\n addCategory = (chartType, range) => {\n const { onDataChange, data, categoryDefaultLabel } = this.props;\n\n onDataChange([\n ...data,\n {\n label: categoryDefaultLabel || 'New Bar',\n value: range.step,\n deletable: true,\n editable: true,\n interactive: true\n }\n ]);\n };\n\n getFilteredCategories = () => {\n const { data, defineChart } = this.props;\n\n return data\n ? data.map(d => ({\n ...d,\n deletable: defineChart || d.deletable\n }))\n : [];\n };\n\n render() {\n const {\n classes,\n className,\n domain,\n range,\n size,\n title,\n addCategoryEnabled,\n theme\n } = this.props;\n let { chartType } = this.props;\n\n const defineChart = this.props.defineChart || false;\n const { width, height } = size || {};\n\n const { ChartComponent } = this.getChart();\n const categories = this.getFilteredCategories();\n\n const labelFontSize = (theme && theme.typography && theme.typography.fontSize) || 14;\n const correctValues = getDomainAndRangeByChartType(\n domain,\n range,\n size,\n chartType,\n labelFontSize\n );\n\n const { verticalLines, horizontalLines, leftAxis } = getGridLinesAndAxisByChartType(\n correctValues.range,\n chartType\n );\n const common = {\n graphProps: createGraphProps(\n correctValues.domain,\n correctValues.range,\n size,\n () => this.rootNode\n )\n };\n\n log('[render] common:', common);\n\n const maskSize = { x: -10, y: -10, width: width + 20, height: height + 80 };\n const { scale } = common.graphProps;\n const xBand = dataToXBand(scale.x, categories, width, chartType);\n\n if (!ChartComponent) {\n return null;\n }\n\n const bandWidth = xBand.bandwidth();\n // for chartType \"line\", bandWidth will be 0, so we have to calculate it\n const barWidth = bandWidth || scale.x(correctValues.domain.max) / categories.length;\n const increaseHeight = defineChart ? 80 : 0;\n\n // if there are many categories, we have to rotate their names in order to fit\n // and we have to add extra value on top of some items\n const top = getTopPadding(barWidth);\n const rootCommon = cloneDeep(common);\n rootCommon.graphProps.size.height += top + increaseHeight;\n\n return (\n <div className={classNames(classes.class, className)}>\n <div className={classes.controls}>\n <ToolMenu\n className={classes.toolMenu}\n disabled={!addCategoryEnabled}\n addCategory={() => this.addCategory(chartType, correctValues.range)}\n />\n </div>\n <Root title={title} classes={classes} rootRef={r => (this.rootNode = r)} {...rootCommon}>\n <ChartGrid\n {...common}\n xBand={xBand}\n rowTickValues={horizontalLines}\n columnTickValues={verticalLines}\n />\n <ChartAxes\n {...common}\n defineChart={defineChart}\n categories={categories}\n xBand={xBand}\n leftAxis={leftAxis}\n onChange={this.changeData}\n onChangeCategory={this.changeCategory}\n top={top}\n />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" />\n </mask>\n <g id=\"marks\" mask=\"url('#myMask')\">\n <ChartComponent\n {...common}\n data={categories}\n defineChart={defineChart}\n onChange={this.changeData}\n onChangeCategory={this.changeCategory}\n />\n </g>\n </Root>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n graphBox: {\n transform: 'translate(60px, 35px)'\n },\n controls: {\n width: 'inherit',\n display: 'flex',\n justifyContent: 'space-between',\n padding: theme.spacing.unit,\n backgroundColor: color.primaryLight(),\n borderTop: `solid 1px ${color.primaryDark()}`,\n borderBottom: `solid 0px ${color.primaryDark()}`,\n borderLeft: `solid 1px ${color.primaryDark()}`,\n borderRight: `solid 1px ${color.primaryDark()}`\n },\n root: {\n overflow: 'hidden'\n },\n svg: {\n overflow: 'visible'\n },\n toolMenu: {\n minHeight: '36px'\n }\n});\n\nexport default withStyles(styles, { withTheme: true })(Chart);\n"],"file":"chart.js"}
package/lib/index.js CHANGED
@@ -9,6 +9,18 @@ Object.defineProperty(exports, "Chart", {
9
9
  return _chart["default"];
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "ChartType", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _chartType["default"];
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "ConfigureChartPanel", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _chartSetup["default"];
22
+ }
23
+ });
12
24
  Object.defineProperty(exports, "chartTypes", {
13
25
  enumerable: true,
14
26
  get: function get() {
@@ -20,5 +32,9 @@ var _chart = _interopRequireDefault(require("./chart"));
20
32
 
21
33
  var _chartTypes = _interopRequireDefault(require("./chart-types"));
22
34
 
35
+ var _chartSetup = _interopRequireDefault(require("./chart-setup"));
36
+
37
+ var _chartType = _interopRequireDefault(require("./chart-type"));
38
+
23
39
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
24
40
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["import Chart from './chart';\nimport chartTypes from './chart-types';\nexport { Chart, chartTypes };\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA","sourcesContent":["import Chart from './chart';\nimport chartTypes from './chart-types';\nimport ConfigureChartPanel from './chart-setup';\nimport ChartType from './chart-type';\n\nexport { Chart, chartTypes, ChartType, ConfigureChartPanel };\n"],"file":"index.js"}
@@ -85,7 +85,7 @@ var RawDragHandle = /*#__PURE__*/function (_React$Component) {
85
85
  y: y,
86
86
  classes: classes,
87
87
  className: (0, _classnames["default"])(className, !interactive && 'non-interactive'),
88
- correctness: interactive && correctness
88
+ correctness: correctness
89
89
  }, rest));
90
90
  }
91
91
  }]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/line/common/drag-handle.jsx"],"names":["RawDragHandle","props","x","y","graphProps","classes","className","interactive","CustomDraggableComponent","correctness","rest","scale","React","Component","PropTypes","number","isRequired","width","types","GraphPropsType","object","string","bool","func","shape","value","label","DragHandle","theme","handle","fill","color","secondary","transition","secondaryDark","line","stroke","DraggableHandle","axis","fromDelta","delta","newPoint","utils","point","add","bounds","domain","range","area","left","top","bottom","right","anchorPoint"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEMA,a;;;;;;;;;;;;;WAgBJ,kBAAS;AACP,wBAUI,KAAKC,KAVT;AAAA,UACEC,CADF,eACEA,CADF;AAAA,UAEEC,CAFF,eAEEA,CAFF;AAAA,UAGEC,UAHF,eAGEA,UAHF;AAAA,UAIEC,OAJF,eAIEA,OAJF;AAAA,UAKEC,SALF,eAKEA,SALF;AAAA,UAMEC,WANF,eAMEA,WANF;AAAA,UAOEC,wBAPF,eAOEA,wBAPF;AAAA,UAQEC,WARF,eAQEA,WARF;AAAA,UASKC,IATL;;AAWA,UAAQC,KAAR,GAAkBP,UAAlB,CAAQO,KAAR;AACA,0BACE,gCAAC,wBAAD;AACE,QAAA,KAAK,EAAEA,KADT;AAEE,QAAA,CAAC,EAAET,CAFL;AAGE,QAAA,CAAC,EAAEC,CAHL;AAIE,QAAA,OAAO,EAAEE,OAJX;AAKE,QAAA,SAAS,EAAE,4BAAWC,SAAX,EAAsB,CAACC,WAAD,IAAgB,iBAAtC,CALb;AAME,QAAA,WAAW,EAAEA,WAAW,IAAIE;AAN9B,SAOMC,IAPN,EADF;AAWD;;;;EAxCyBE,kBAAMC,S;;gBAA5Bb,a,eACe;AACjBE,EAAAA,CAAC,EAAEY,sBAAUC,MAAV,CAAiBC,UADH;AAEjBb,EAAAA,CAAC,EAAEW,sBAAUC,MAAV,CAAiBC,UAFH;AAGjBC,EAAAA,KAAK,EAAEH,sBAAUC,MAHA;AAIjBX,EAAAA,UAAU,EAAEc,YAAMC,cAAN,CAAqBH,UAJhB;AAKjBX,EAAAA,OAAO,EAAES,sBAAUM,MAAV,CAAiBJ,UALT;AAMjBV,EAAAA,SAAS,EAAEQ,sBAAUO,MANJ;AAOjBd,EAAAA,WAAW,EAAEO,sBAAUQ,IAPN;AAQjBd,EAAAA,wBAAwB,EAAEM,sBAAUS,IARnB;AASjBd,EAAAA,WAAW,EAAEK,sBAAUU,KAAV,CAAgB;AAC3BC,IAAAA,KAAK,EAAEX,sBAAUO,MADU;AAE3BK,IAAAA,KAAK,EAAEZ,sBAAUO;AAFU,GAAhB;AATI,C;;AA0Cd,IAAMM,UAAU,GAAG,uBAAW,UAAAC,KAAK;AAAA,SAAK;AAC7CC,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAEC,gBAAMC,SAAN,EADA;AAENC,MAAAA,UAAU,EAAE,wCAFN;AAGN,iBAAW;AACTH,QAAAA,IAAI,EAAEC,gBAAMG,aAAN;AADG,OAHL;AAMN,mBAAa,qBAAQ,MAAR,CANP;AAON,qBAAe,uBAAU,MAAV,CAPT;AAQN,2BAAqB,sBAAS,MAAT;AARf,KADqC;AAW7CC,IAAAA,IAAI,EAAE;AACJC,MAAAA,MAAM,EAAEL,gBAAMC,SAAN,EADJ;AAEJC,MAAAA,UAAU,EAAE,wCAFR;AAGJ,iBAAW;AACTG,QAAAA,MAAM,EAAEL,gBAAMG,aAAN;AADC,OAHP;AAMJ,2BAAqB,sBAAS,QAAT,CANjB;AAOJ,mBAAa,qBAAQ,QAAR,CAPT;AAQJ,qBAAe,uBAAU,QAAV;AARX;AAXuC,GAAL;AAAA,CAAhB,EAqBtBlC,aArBsB,CAAnB;;AAuBP,IAAMqC,eAAe,GAAG,yBAAc;AACpCC,EAAAA,IAAI,EAAE,GAD8B;AAEpCC,EAAAA,SAAS,EAAE,mBAACtC,KAAD,EAAQuC,KAAR,EAAkB;AAC3B;AACAA,IAAAA,KAAK,CAACtC,CAAN,GAAU,CAAV;;AACA,QAAMuC,QAAQ,GAAGC,YAAMC,KAAN,CAAY1C,KAAZ,EAAmB2C,GAAnB,CAAuBF,YAAMC,KAAN,CAAYH,KAAZ,CAAvB,CAAjB;;AACA,WAAOC,QAAQ,CAACtC,CAAhB;AACD,GAPmC;AAQpC0C,EAAAA,MAAM,EAAE,gBAAC5C,KAAD,QAA8B;AAAA,QAApB6C,MAAoB,QAApBA,MAAoB;AAAA,QAAZC,KAAY,QAAZA,KAAY;AACpC,QAAMC,IAAI,GAAG;AAAEC,MAAAA,IAAI,EAAE,CAAR;AAAWC,MAAAA,GAAG,EAAEjD,KAAK,CAACE,CAAtB;AAAyBgD,MAAAA,MAAM,EAAElD,KAAK,CAACE,CAAvC;AAA0CiD,MAAAA,KAAK,EAAE;AAAjD,KAAb;AACA,WAAOV,YAAMG,MAAN,CAAaG,IAAb,EAAmBF,MAAnB,EAA2BC,KAA3B,CAAP;AACD,GAXmC;AAYpCM,EAAAA,WAAW,EAAE,qBAAApD,KAAK,EAAI;AACpB,WAAO;AAAEC,MAAAA,CAAC,EAAED,KAAK,CAACC,CAAX;AAAcC,MAAAA,CAAC,EAAEF,KAAK,CAACE;AAAvB,KAAP;AACD;AAdmC,CAAd,EAerBwB,UAfqB,CAAxB;eAiBeU,e","sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { gridDraggable, utils, types } from '@pie-lib/plot';\nimport { withStyles } from '@material-ui/core/styles/index';\nimport { color } from '@pie-lib/render-ui';\nimport PropTypes from 'prop-types';\nimport { correct, incorrect, disabled } from '../../common/styles';\n\nclass RawDragHandle extends React.Component {\n static propTypes = {\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n width: PropTypes.number,\n graphProps: types.GraphPropsType.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n interactive: PropTypes.bool,\n CustomDraggableComponent: PropTypes.func,\n correctness: PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string\n })\n };\n\n render() {\n const {\n x,\n y,\n graphProps,\n classes,\n className,\n interactive,\n CustomDraggableComponent,\n correctness,\n ...rest\n } = this.props;\n const { scale } = graphProps;\n return (\n <CustomDraggableComponent\n scale={scale}\n x={x}\n y={y}\n classes={classes}\n className={classNames(className, !interactive && 'non-interactive')}\n correctness={interactive && correctness}\n {...rest}\n />\n );\n }\n}\n\nexport const DragHandle = withStyles(theme => ({\n handle: {\n fill: color.secondary(),\n transition: 'fill 200ms linear, height 200ms linear',\n '&:hover': {\n fill: color.secondaryDark()\n },\n '&.correct': correct('fill'),\n '&.incorrect': incorrect('fill'),\n '&.non-interactive': disabled('fill')\n },\n line: {\n stroke: color.secondary(),\n transition: 'fill 200ms linear, height 200ms linear',\n '&:hover': {\n stroke: color.secondaryDark()\n },\n '&.non-interactive': disabled('stroke'),\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke')\n }\n}))(RawDragHandle);\n\nconst DraggableHandle = gridDraggable({\n axis: 'y',\n fromDelta: (props, delta) => {\n //TODO: should be in grid-draggable, if axis is y delta.x should always be 0.\n delta.x = 0;\n const newPoint = utils.point(props).add(utils.point(delta));\n return newPoint.y;\n },\n bounds: (props, { domain, range }) => {\n const area = { left: 0, top: props.y, bottom: props.y, right: 0 };\n return utils.bounds(area, domain, range);\n },\n anchorPoint: props => {\n return { x: props.x, y: props.y };\n }\n})(DragHandle);\n\nexport default DraggableHandle;\n"],"file":"drag-handle.js"}
1
+ {"version":3,"sources":["../../../src/line/common/drag-handle.jsx"],"names":["RawDragHandle","props","x","y","graphProps","classes","className","interactive","CustomDraggableComponent","correctness","rest","scale","React","Component","PropTypes","number","isRequired","width","types","GraphPropsType","object","string","bool","func","shape","value","label","DragHandle","theme","handle","fill","color","secondary","transition","secondaryDark","line","stroke","DraggableHandle","axis","fromDelta","delta","newPoint","utils","point","add","bounds","domain","range","area","left","top","bottom","right","anchorPoint"],"mappings":"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","sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { gridDraggable, utils, types } from '@pie-lib/plot';\nimport { withStyles } from '@material-ui/core/styles/index';\nimport { color } from '@pie-lib/render-ui';\nimport PropTypes from 'prop-types';\nimport { correct, incorrect, disabled } from '../../common/styles';\n\nclass RawDragHandle extends React.Component {\n static propTypes = {\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n width: PropTypes.number,\n graphProps: types.GraphPropsType.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n interactive: PropTypes.bool,\n CustomDraggableComponent: PropTypes.func,\n correctness: PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string\n })\n };\n\n render() {\n const {\n x,\n y,\n graphProps,\n classes,\n className,\n interactive,\n CustomDraggableComponent,\n correctness,\n ...rest\n } = this.props;\n\n const { scale } = graphProps;\n return (\n <CustomDraggableComponent\n scale={scale}\n x={x}\n y={y}\n classes={classes}\n className={classNames(className, !interactive && 'non-interactive')}\n correctness={correctness}\n {...rest}\n />\n );\n }\n}\n\nexport const DragHandle = withStyles(theme => ({\n handle: {\n fill: color.secondary(),\n transition: 'fill 200ms linear, height 200ms linear',\n '&:hover': {\n fill: color.secondaryDark()\n },\n '&.correct': correct('fill'),\n '&.incorrect': incorrect('fill'),\n '&.non-interactive': disabled('fill')\n },\n line: {\n stroke: color.secondary(),\n transition: 'fill 200ms linear, height 200ms linear',\n '&:hover': {\n stroke: color.secondaryDark()\n },\n '&.non-interactive': disabled('stroke'),\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke')\n }\n}))(RawDragHandle);\n\nconst DraggableHandle = gridDraggable({\n axis: 'y',\n fromDelta: (props, delta) => {\n //TODO: should be in grid-draggable, if axis is y delta.x should always be 0.\n delta.x = 0;\n const newPoint = utils.point(props).add(utils.point(delta));\n return newPoint.y;\n },\n bounds: (props, { domain, range }) => {\n const area = { left: 0, top: props.y, bottom: props.y, right: 0 };\n return utils.bounds(area, domain, range);\n },\n anchorPoint: props => {\n return { x: props.x, y: props.y };\n }\n})(DragHandle);\n\nexport default DraggableHandle;\n"],"file":"drag-handle.js"}
@@ -150,7 +150,8 @@ var RawLine = /*#__PURE__*/function (_React$Component) {
150
150
  graphProps = _this$props.graphProps,
151
151
  data = _this$props.data,
152
152
  classes = _this$props.classes,
153
- CustomDraggableComponent = _this$props.CustomDraggableComponent;
153
+ CustomDraggableComponent = _this$props.CustomDraggableComponent,
154
+ defineChart = _this$props.defineChart;
154
155
  var _this$state = this.state,
155
156
  lineState = _this$state.line,
156
157
  dragging = _this$state.dragging;
@@ -167,12 +168,13 @@ var RawLine = /*#__PURE__*/function (_React$Component) {
167
168
  className: classes.line
168
169
  }), lineToUse && lineToUse.map(function (point, i) {
169
170
  var r = 6;
170
- var Component = point.interactive ? _dragHandle["default"] : _dragHandle.DragHandle;
171
+ var enableDraggable = defineChart ? true : point.interactive;
172
+ var Component = enableDraggable ? _dragHandle["default"] : _dragHandle.DragHandle;
171
173
  return /*#__PURE__*/_react["default"].createElement(Component, {
172
174
  key: "point-".concat(point.x, "-").concat(i),
173
175
  x: point.x,
174
176
  y: point.dragValue !== undefined ? point.dragValue : point.y,
175
- interactive: point.interactive,
177
+ interactive: enableDraggable,
176
178
  r: r,
177
179
  onDragStart: function onDragStart() {
178
180
  return _this2.setState({
@@ -206,6 +208,7 @@ _defineProperty(RawLine, "propTypes", {
206
208
  xBand: _propTypes["default"].func,
207
209
  index: _propTypes["default"].number.isRequired,
208
210
  graphProps: _plot.types.GraphPropsType.isRequired,
211
+ defineChart: _propTypes["default"].bool,
209
212
  data: _propTypes["default"].arrayOf(_propTypes["default"].shape({
210
213
  label: _propTypes["default"].string,
211
214
  value: _propTypes["default"].number
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/line/common/line.jsx"],"names":["getData","data","domain","max","length","map","el","i","x","y","value","RawLine","props","line","setState","index","onChange","dragging","state","existing","next","newLine","dragValue","setDragValue","undefined","graphProps","nextProps","classes","CustomDraggableComponent","lineState","scale","lineToUse","d","point","r","Component","interactive","DraggableHandle","DragHandle","v","dragStop","correctness","React","PropTypes","func","number","object","label","string","xBand","isRequired","types","GraphPropsType","arrayOf","shape","StyledLine","theme","fill","stroke","color","primaryLight","strokeWidth","transition","primaryDark","Line","category","changeLine","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Group } from '@vx/group';\nimport { LinePath } from '@vx/shape';\nimport PropTypes from 'prop-types';\nimport { types } from '@pie-lib/plot';\nimport DraggableHandle, { DragHandle } from './drag-handle';\nimport { withStyles } from '@material-ui/core/styles/index';\nimport isEqual from 'lodash/isEqual';\nimport { color } from '@pie-lib/render-ui';\n\nconst getData = (data, domain) => {\n const { max } = domain || {};\n const length = data.length;\n\n if (!max || !length) {\n return [];\n }\n\n return data.map((el, i) => ({\n ...el,\n x: length > 1 ? i * (max / (length - 1)) : 0.5,\n y: el.value\n }));\n};\n\nexport class RawLine extends React.Component {\n static propTypes = {\n onChange: PropTypes.func,\n value: PropTypes.number,\n classes: PropTypes.object,\n label: PropTypes.string,\n xBand: PropTypes.func,\n index: PropTypes.number.isRequired,\n graphProps: types.GraphPropsType.isRequired,\n data: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.number\n })\n ),\n CustomDraggableComponent: PropTypes.func\n };\n\n static defaultProps = {\n index: 0\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dragValue: undefined,\n line: getData(props.data, props.graphProps.domain)\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!isEqual(this.props.data, nextProps.data)) {\n this.setState({\n line: getData(nextProps.data, nextProps.graphProps.domain)\n });\n }\n }\n\n setDragValue = line => this.setState({ line });\n\n dragStop = index => {\n const { onChange } = this.props;\n this.setState({ dragging: false }, () => {\n onChange(index, this.state.line[index]);\n });\n };\n\n dragValue = (index, existing, next) => {\n const newLine = [...this.state.line];\n newLine[index].dragValue = next;\n this.setDragValue(newLine);\n };\n\n render() {\n const { graphProps, data, classes, CustomDraggableComponent } = this.props;\n const { line: lineState, dragging } = this.state;\n const { scale } = graphProps;\n const lineToUse = dragging ? lineState : getData(data, graphProps.domain);\n\n return (\n <React.Fragment>\n <LinePath\n data={lineToUse}\n x={d => scale.x(d.x)}\n y={d => scale.y(d.dragValue !== undefined ? d.dragValue : d.y)}\n className={classes.line}\n />\n {lineToUse &&\n lineToUse.map((point, i) => {\n const r = 6;\n const Component = point.interactive ? DraggableHandle : DragHandle;\n\n return (\n <Component\n key={`point-${point.x}-${i}`}\n x={point.x}\n y={point.dragValue !== undefined ? point.dragValue : point.y}\n interactive={point.interactive}\n r={r}\n onDragStart={() => this.setState({ dragging: true })}\n onDrag={v =>\n this.dragValue(i, point.dragValue !== undefined ? point.dragValue : point.y, v)\n }\n onDragStop={() => this.dragStop(i)}\n graphProps={graphProps}\n CustomDraggableComponent={CustomDraggableComponent}\n correctness={point.correctness}\n />\n );\n })}\n </React.Fragment>\n );\n }\n}\n\nconst StyledLine = withStyles(theme => ({\n line: {\n fill: 'transparent',\n stroke: color.primaryLight(),\n strokeWidth: 3,\n transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',\n '&:hover': {\n strokeWidth: 6,\n stroke: color.primaryDark()\n }\n }\n}))(RawLine);\n\nexport class Line extends React.Component {\n static propTypes = {\n data: PropTypes.array,\n onChange: PropTypes.func,\n xBand: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired\n };\n\n changeLine = (index, category) => {\n const { onChange } = this.props;\n const newLine = [...this.props.data];\n const { dragValue, value } = category;\n\n newLine[index].value = dragValue >= 0 ? dragValue : value;\n\n onChange(newLine);\n };\n\n render() {\n const props = this.props;\n\n return (\n <Group>\n <StyledLine {...props} onChange={this.changeLine} />\n </Group>\n );\n }\n}\n\nexport default Line;\n"],"file":"line.js"}
1
+ {"version":3,"sources":["../../../src/line/common/line.jsx"],"names":["getData","data","domain","max","length","map","el","i","x","y","value","RawLine","props","line","setState","index","onChange","dragging","state","existing","next","newLine","dragValue","setDragValue","undefined","graphProps","nextProps","classes","CustomDraggableComponent","defineChart","lineState","scale","lineToUse","d","point","r","enableDraggable","interactive","Component","DraggableHandle","DragHandle","v","dragStop","correctness","React","PropTypes","func","number","object","label","string","xBand","isRequired","types","GraphPropsType","bool","arrayOf","shape","StyledLine","theme","fill","stroke","color","primaryLight","strokeWidth","transition","primaryDark","Line","category","changeLine","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Group } from '@vx/group';\nimport { LinePath } from '@vx/shape';\nimport PropTypes from 'prop-types';\nimport { types } from '@pie-lib/plot';\nimport DraggableHandle, { DragHandle } from './drag-handle';\nimport { withStyles } from '@material-ui/core/styles/index';\nimport isEqual from 'lodash/isEqual';\nimport { color } from '@pie-lib/render-ui';\n\nconst getData = (data, domain) => {\n const { max } = domain || {};\n const length = data.length;\n\n if (!max || !length) {\n return [];\n }\n\n return data.map((el, i) => ({\n ...el,\n x: length > 1 ? i * (max / (length - 1)) : 0.5,\n y: el.value\n }));\n};\n\nexport class RawLine extends React.Component {\n static propTypes = {\n onChange: PropTypes.func,\n value: PropTypes.number,\n classes: PropTypes.object,\n label: PropTypes.string,\n xBand: PropTypes.func,\n index: PropTypes.number.isRequired,\n graphProps: types.GraphPropsType.isRequired,\n defineChart: PropTypes.bool,\n data: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.number\n })\n ),\n CustomDraggableComponent: PropTypes.func\n };\n\n static defaultProps = {\n index: 0\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dragValue: undefined,\n line: getData(props.data, props.graphProps.domain)\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!isEqual(this.props.data, nextProps.data)) {\n this.setState({\n line: getData(nextProps.data, nextProps.graphProps.domain)\n });\n }\n }\n\n setDragValue = line => this.setState({ line });\n\n dragStop = index => {\n const { onChange } = this.props;\n this.setState({ dragging: false }, () => {\n onChange(index, this.state.line[index]);\n });\n };\n\n dragValue = (index, existing, next) => {\n const newLine = [...this.state.line];\n newLine[index].dragValue = next;\n this.setDragValue(newLine);\n };\n\n render() {\n const { graphProps, data, classes, CustomDraggableComponent, defineChart } = this.props;\n const { line: lineState, dragging } = this.state;\n const { scale } = graphProps;\n const lineToUse = dragging ? lineState : getData(data, graphProps.domain);\n\n return (\n <React.Fragment>\n <LinePath\n data={lineToUse}\n x={d => scale.x(d.x)}\n y={d => scale.y(d.dragValue !== undefined ? d.dragValue : d.y)}\n className={classes.line}\n />\n {lineToUse &&\n lineToUse.map((point, i) => {\n const r = 6;\n const enableDraggable = defineChart ? true : point.interactive;\n const Component = enableDraggable ? DraggableHandle : DragHandle;\n\n return (\n <Component\n key={`point-${point.x}-${i}`}\n x={point.x}\n y={point.dragValue !== undefined ? point.dragValue : point.y}\n interactive={enableDraggable}\n r={r}\n onDragStart={() => this.setState({ dragging: true })}\n onDrag={v =>\n this.dragValue(i, point.dragValue !== undefined ? point.dragValue : point.y, v)\n }\n onDragStop={() => this.dragStop(i)}\n graphProps={graphProps}\n CustomDraggableComponent={CustomDraggableComponent}\n correctness={point.correctness}\n />\n );\n })}\n </React.Fragment>\n );\n }\n}\n\nconst StyledLine = withStyles(theme => ({\n line: {\n fill: 'transparent',\n stroke: color.primaryLight(),\n strokeWidth: 3,\n transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',\n '&:hover': {\n strokeWidth: 6,\n stroke: color.primaryDark()\n }\n }\n}))(RawLine);\n\nexport class Line extends React.Component {\n static propTypes = {\n data: PropTypes.array,\n onChange: PropTypes.func,\n xBand: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired\n };\n\n changeLine = (index, category) => {\n const { onChange } = this.props;\n const newLine = [...this.props.data];\n const { dragValue, value } = category;\n\n newLine[index].value = dragValue >= 0 ? dragValue : value;\n\n onChange(newLine);\n };\n\n render() {\n const props = this.props;\n\n return (\n <Group>\n <StyledLine {...props} onChange={this.changeLine} />\n </Group>\n );\n }\n}\n\nexport default Line;\n"],"file":"line.js"}
@@ -225,12 +225,13 @@ var Plot = /*#__PURE__*/function (_React$Component2) {
225
225
  graphProps = _this$props3.graphProps,
226
226
  xBand = _this$props3.xBand,
227
227
  CustomBarElement = _this$props3.CustomBarElement,
228
- _onChangeCategory = _this$props3.onChangeCategory;
228
+ _onChangeCategory = _this$props3.onChangeCategory,
229
+ defineChart = _this$props3.defineChart;
229
230
  return /*#__PURE__*/_react["default"].createElement(_group.Group, null, (data || []).map(function (d, index) {
230
231
  return /*#__PURE__*/_react["default"].createElement(Bar, {
231
232
  value: d.value,
232
233
  label: d.label,
233
- interactive: d.interactive,
234
+ interactive: defineChart ? true : d.interactive,
234
235
  xBand: xBand,
235
236
  index: index,
236
237
  key: "bar-".concat(d.label, "-").concat(d.value, "-").concat(index),
@@ -255,6 +256,7 @@ _defineProperty(Plot, "propTypes", {
255
256
  onChangeCategory: _propTypes["default"].func,
256
257
  xBand: _propTypes["default"].func,
257
258
  graphProps: _plot.types.GraphPropsType.isRequired,
259
+ defineChart: _propTypes["default"].bool,
258
260
  CustomBarElement: _propTypes["default"].func
259
261
  });
260
262
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plot/common/plot.jsx"],"names":["log","RawPlot","props","dragValue","setState","label","onChangeCategory","state","undefined","value","setDragValue","existing","next","graphProps","classes","xBand","index","CustomBarElement","interactive","correctness","scale","range","size","max","v","Number","isFinite","barWidth","bandwidth","barHeight","y","barX","values","i","push","pointHeight","height","pointDiameter","Component","DraggableHandle","DragHandle","map","dragStop","React","PropTypes","func","number","object","string","isRequired","types","GraphPropsType","bool","shape","Bar","theme","dot","fill","color","primaryLight","line","stroke","Plot","data","d","category","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { types } from '@pie-lib/plot';\nimport { Group } from '@vx/group';\nimport { withStyles } from '@material-ui/core/styles/index';\nimport DraggableHandle, { DragHandle } from '../../common/drag-handle';\nimport debug from 'debug';\nimport { color } from '@pie-lib/render-ui';\nimport { bandKey } from '../../utils';\nimport { correct, incorrect } from '../../common/styles';\n\nconst log = debug('pie-lib:chart:bars');\n\nexport class RawPlot extends React.Component {\n static propTypes = {\n onChangeCategory: PropTypes.func,\n value: PropTypes.number,\n classes: PropTypes.object,\n label: PropTypes.string,\n xBand: PropTypes.func,\n index: PropTypes.number.isRequired,\n graphProps: types.GraphPropsType.isRequired,\n CustomBarElement: PropTypes.func,\n interactive: PropTypes.bool,\n correctness: PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string\n })\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dragValue: undefined\n };\n }\n\n setDragValue = dragValue => this.setState({ dragValue });\n\n dragStop = () => {\n const { label, onChangeCategory } = this.props;\n const { dragValue } = this.state;\n log('[dragStop]', dragValue);\n\n if (dragValue !== undefined) {\n onChangeCategory({ label, value: dragValue });\n }\n\n this.setDragValue(undefined);\n };\n\n dragValue = (existing, next) => {\n log('[dragValue] next:', next);\n\n this.setDragValue(next);\n };\n\n render() {\n const {\n graphProps,\n value,\n label,\n classes,\n xBand,\n index,\n CustomBarElement,\n interactive,\n correctness\n } = this.props;\n const { scale, range, size } = graphProps;\n const { max } = range || {};\n const { dragValue } = this.state;\n\n const v = Number.isFinite(dragValue) ? dragValue : value;\n const barWidth = xBand.bandwidth();\n const barHeight = scale.y(range.max - v);\n const barX = xBand(bandKey({ label }, index));\n\n log('label:', label, 'barX:', barX, 'v: ', v, 'barHeight:', barHeight, 'barWidth: ', barWidth);\n\n const values = [];\n\n for (let i = 0; i < v; i++) {\n values.push(i);\n }\n\n const pointHeight = size.height / max;\n const pointDiameter = (pointHeight > barWidth ? barWidth : pointHeight) * 0.8;\n const Component = interactive ? DraggableHandle : DragHandle;\n\n return (\n <React.Fragment>\n {values.map(index =>\n CustomBarElement({\n index,\n pointDiameter,\n barX,\n barWidth,\n pointHeight,\n label,\n value,\n classes,\n scale\n })\n )}\n <Component\n x={barX}\n y={v}\n interactive={interactive}\n width={barWidth}\n onDrag={v => this.dragValue(value, v)}\n onDragStop={this.dragStop}\n graphProps={graphProps}\n correctness={correctness}\n />\n </React.Fragment>\n );\n }\n}\n\nconst Bar = withStyles(theme => ({\n dot: {\n fill: color.primaryLight(),\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke')\n },\n line: {\n stroke: color.primaryLight(),\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke')\n }\n}))(RawPlot);\n\nexport class Plot extends React.Component {\n static propTypes = {\n data: PropTypes.array,\n onChangeCategory: PropTypes.func,\n xBand: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n CustomBarElement: PropTypes.func\n };\n\n render() {\n const { data, graphProps, xBand, CustomBarElement, onChangeCategory } = this.props;\n\n return (\n <Group>\n {(data || []).map((d, index) => (\n <Bar\n value={d.value}\n label={d.label}\n interactive={d.interactive}\n xBand={xBand}\n index={index}\n key={`bar-${d.label}-${d.value}-${index}`}\n onChangeCategory={category => onChangeCategory(index, category)}\n graphProps={graphProps}\n CustomBarElement={CustomBarElement}\n correctness={d.correctness}\n />\n ))}\n </Group>\n );\n }\n}\n\nexport default Plot;\n"],"file":"plot.js"}
1
+ {"version":3,"sources":["../../../src/plot/common/plot.jsx"],"names":["log","RawPlot","props","dragValue","setState","label","onChangeCategory","state","undefined","value","setDragValue","existing","next","graphProps","classes","xBand","index","CustomBarElement","interactive","correctness","scale","range","size","max","v","Number","isFinite","barWidth","bandwidth","barHeight","y","barX","values","i","push","pointHeight","height","pointDiameter","Component","DraggableHandle","DragHandle","map","dragStop","React","PropTypes","func","number","object","string","isRequired","types","GraphPropsType","bool","shape","Bar","theme","dot","fill","color","primaryLight","line","stroke","Plot","data","defineChart","d","category","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { types } from '@pie-lib/plot';\nimport { Group } from '@vx/group';\nimport { withStyles } from '@material-ui/core/styles/index';\nimport DraggableHandle, { DragHandle } from '../../common/drag-handle';\nimport debug from 'debug';\nimport { color } from '@pie-lib/render-ui';\nimport { bandKey } from '../../utils';\nimport { correct, incorrect } from '../../common/styles';\n\nconst log = debug('pie-lib:chart:bars');\n\nexport class RawPlot extends React.Component {\n static propTypes = {\n onChangeCategory: PropTypes.func,\n value: PropTypes.number,\n classes: PropTypes.object,\n label: PropTypes.string,\n xBand: PropTypes.func,\n index: PropTypes.number.isRequired,\n graphProps: types.GraphPropsType.isRequired,\n CustomBarElement: PropTypes.func,\n interactive: PropTypes.bool,\n correctness: PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string\n })\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dragValue: undefined\n };\n }\n\n setDragValue = dragValue => this.setState({ dragValue });\n\n dragStop = () => {\n const { label, onChangeCategory } = this.props;\n const { dragValue } = this.state;\n log('[dragStop]', dragValue);\n\n if (dragValue !== undefined) {\n onChangeCategory({ label, value: dragValue });\n }\n\n this.setDragValue(undefined);\n };\n\n dragValue = (existing, next) => {\n log('[dragValue] next:', next);\n\n this.setDragValue(next);\n };\n\n render() {\n const {\n graphProps,\n value,\n label,\n classes,\n xBand,\n index,\n CustomBarElement,\n interactive,\n correctness\n } = this.props;\n\n const { scale, range, size } = graphProps;\n const { max } = range || {};\n const { dragValue } = this.state;\n\n const v = Number.isFinite(dragValue) ? dragValue : value;\n const barWidth = xBand.bandwidth();\n const barHeight = scale.y(range.max - v);\n const barX = xBand(bandKey({ label }, index));\n\n log('label:', label, 'barX:', barX, 'v: ', v, 'barHeight:', barHeight, 'barWidth: ', barWidth);\n\n const values = [];\n\n for (let i = 0; i < v; i++) {\n values.push(i);\n }\n\n const pointHeight = size.height / max;\n const pointDiameter = (pointHeight > barWidth ? barWidth : pointHeight) * 0.8;\n const Component = interactive ? DraggableHandle : DragHandle;\n\n return (\n <React.Fragment>\n {values.map(index =>\n CustomBarElement({\n index,\n pointDiameter,\n barX,\n barWidth,\n pointHeight,\n label,\n value,\n classes,\n scale\n })\n )}\n <Component\n x={barX}\n y={v}\n interactive={interactive}\n width={barWidth}\n onDrag={v => this.dragValue(value, v)}\n onDragStop={this.dragStop}\n graphProps={graphProps}\n correctness={correctness}\n />\n </React.Fragment>\n );\n }\n}\n\nconst Bar = withStyles(theme => ({\n dot: {\n fill: color.primaryLight(),\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke')\n },\n line: {\n stroke: color.primaryLight(),\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke')\n }\n}))(RawPlot);\n\nexport class Plot extends React.Component {\n static propTypes = {\n data: PropTypes.array,\n onChangeCategory: PropTypes.func,\n xBand: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n defineChart: PropTypes.bool,\n CustomBarElement: PropTypes.func\n };\n\n render() {\n const { data, graphProps, xBand, CustomBarElement, onChangeCategory, defineChart } = this.props;\n\n return (\n <Group>\n {(data || []).map((d, index) => (\n <Bar\n value={d.value}\n label={d.label}\n interactive={defineChart ? true : d.interactive}\n xBand={xBand}\n index={index}\n key={`bar-${d.label}-${d.value}-${index}`}\n onChangeCategory={category => onChangeCategory(index, category)}\n graphProps={graphProps}\n CustomBarElement={CustomBarElement}\n correctness={d.correctness}\n />\n ))}\n </Group>\n );\n }\n}\n\nexport default Plot;\n"],"file":"plot.js"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "5.0.0",
6
+ "version": "5.1.0",
7
7
  "description": "charting",
8
8
  "keywords": [
9
9
  "react",
@@ -43,5 +43,5 @@
43
43
  "peerDependencies": {
44
44
  "react": "^16.8.1"
45
45
  },
46
- "gitHead": "bbd7351bcde5346df8b8fa6091253e5d5e95c50f"
46
+ "gitHead": "2f841d92dcda7472f18cbce517eb664dec2f6442"
47
47
  }
package/src/axes.jsx CHANGED
@@ -97,7 +97,7 @@ export class TickComponent extends React.Component {
97
97
  )}
98
98
  <MarkLabel
99
99
  inputRef={r => (this.input = r)}
100
- disabled={!editable}
100
+ disabled={defineChart ? false : !editable}
101
101
  mark={category}
102
102
  graphProps={graphProps}
103
103
  onChange={newLabel => this.changeCategory(index, newLabel)}
@@ -65,6 +65,7 @@ export class RawBar extends React.Component {
65
65
  interactive,
66
66
  correctness
67
67
  } = this.props;
68
+
68
69
  const { scale, range } = graphProps;
69
70
  const { dragValue } = this.state;
70
71
 
@@ -112,18 +113,20 @@ export class Bars extends React.Component {
112
113
  static propTypes = {
113
114
  data: PropTypes.array,
114
115
  onChangeCategory: PropTypes.func,
116
+ defineChart: PropTypes.bool,
115
117
  xBand: PropTypes.func,
116
118
  graphProps: types.GraphPropsType.isRequired
117
119
  };
118
120
 
119
121
  render() {
120
- const { data, graphProps, xBand, onChangeCategory } = this.props;
122
+ const { data, graphProps, xBand, onChangeCategory, defineChart } = this.props;
123
+
121
124
  return (
122
125
  <Group>
123
126
  {(data || []).map((d, index) => (
124
127
  <Bar
125
128
  value={d.value}
126
- interactive={d.interactive}
129
+ interactive={defineChart ? true : d.interactive}
127
130
  label={d.label}
128
131
  xBand={xBand}
129
132
  index={index}
@@ -0,0 +1,163 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { color } from '@pie-lib/render-ui';
4
+ import { withStyles } from '@material-ui/core/styles';
5
+ import Typography from '@material-ui/core/Typography';
6
+ import ChartType from './chart-type';
7
+ import { NumberTextFieldCustom } from '@pie-lib/config-ui';
8
+
9
+ const ConfigureChartPanel = props => {
10
+ const { classes, model, onChange } = props;
11
+ const { range } = model;
12
+ const size = model.graph;
13
+
14
+ const rangeProps = chartType => {
15
+ return chartType.includes('Plot') ? { min: 3, max: 10 } : { min: 0.05, max: 10000 };
16
+ };
17
+
18
+ const onSizeChanged = (key, value) => {
19
+ const graph = { ...size, [key]: value };
20
+
21
+ onChange({ ...model, graph });
22
+ };
23
+
24
+ const onRangeChanged = (key, value) => {
25
+ const parsedValue = parseInt(value);
26
+
27
+ range[key] = parsedValue;
28
+
29
+ onChange({ ...model, range });
30
+ };
31
+
32
+ const onChartTypeChange = chartType => onChange({ ...model, chartType });
33
+
34
+ return (
35
+ <div className={classes.wrapper}>
36
+ <Typography variant={'subtitle1'}>Configure Chart</Typography>
37
+ <div className={classes.content}>
38
+ <div className={classes.rowView}>
39
+ <ChartType value={model.chartType} onChange={e => onChartTypeChange(e.target.value)} />
40
+ <NumberTextFieldCustom
41
+ className={classes.mediumTextField}
42
+ label="Max Value"
43
+ value={range.max}
44
+ min={rangeProps(model.chartType).min}
45
+ max={rangeProps(model.chartType).max}
46
+ variant="outlined"
47
+ onChange={(e, v) => onRangeChanged('max', v)}
48
+ />
49
+ </div>
50
+ <div className={classes.rowView}>
51
+ <NumberTextFieldCustom
52
+ className={classes.mediumTextField}
53
+ label="Grid Interval"
54
+ value={range.step}
55
+ min={0}
56
+ max={10000}
57
+ variant="outlined"
58
+ onChange={(e, v) => onRangeChanged('step', v)}
59
+ />
60
+ <NumberTextFieldCustom
61
+ className={classes.mediumTextField}
62
+ label={'Label Interval'}
63
+ value={range.labelStep}
64
+ min={0}
65
+ max={10000}
66
+ variant={'outlined'}
67
+ onChange={(e, v) => onRangeChanged('labelStep', v)}
68
+ />
69
+ </div>
70
+ <div className={classes.dimensions}>
71
+ <div>
72
+ <Typography>Dimensions(px)</Typography>
73
+ </div>
74
+ <div className={classes.columnView}>
75
+ <NumberTextFieldCustom
76
+ className={classes.textField}
77
+ label={'Width'}
78
+ value={size.width}
79
+ min={50}
80
+ max={700}
81
+ variant={'outlined'}
82
+ onChange={(e, v) => onSizeChanged('width', v)}
83
+ />
84
+ <Typography className={classes.disabled}>Min 50, Max 700</Typography>
85
+ </div>
86
+ <div className={classes.columnView}>
87
+ <NumberTextFieldCustom
88
+ className={classes.textField}
89
+ label={'Height'}
90
+ value={size.height}
91
+ min={400}
92
+ max={700}
93
+ variant={'outlined'}
94
+ onChange={(e, v) => onSizeChanged('height', v)}
95
+ />
96
+ <Typography className={classes.disabled}>Min 400, Max 700</Typography>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ );
102
+ };
103
+
104
+ ConfigureChartPanel.propTypes = {
105
+ classes: PropTypes.object,
106
+ sizeConstraints: PropTypes.object,
107
+ domain: PropTypes.object,
108
+ gridIntervalValues: PropTypes.object,
109
+ includeAxes: PropTypes.bool,
110
+ labelIntervalValues: PropTypes.object,
111
+ onChange: PropTypes.function,
112
+ range: PropTypes.object,
113
+ size: PropTypes.object
114
+ };
115
+
116
+ const styles = theme => ({
117
+ wrapper: {
118
+ width: '450px'
119
+ },
120
+ content: {
121
+ display: 'flex',
122
+ flexDirection: 'column',
123
+ width: '100%',
124
+ marginTop: '24px'
125
+ },
126
+ columnView: {
127
+ display: 'flex',
128
+ flexDirection: 'column',
129
+ alignItems: 'center'
130
+ },
131
+ rowView: {
132
+ display: 'flex',
133
+ justifyContent: 'space-around',
134
+ alignItems: 'center'
135
+ },
136
+ textField: {
137
+ width: '130px',
138
+ margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`
139
+ },
140
+ mediumTextField: {
141
+ width: '160px',
142
+ margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`
143
+ },
144
+ largeTextField: {
145
+ width: '230px',
146
+ margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`
147
+ },
148
+ text: {
149
+ fontStyle: 'italic',
150
+ margin: `${theme.spacing.unit}px 0`
151
+ },
152
+ dimensions: {
153
+ display: 'flex',
154
+ justifyContent: 'space-between',
155
+ alignItems: 'center',
156
+ margin: '24px 0px'
157
+ },
158
+ disabled: {
159
+ color: color.disabled()
160
+ }
161
+ });
162
+
163
+ export default withStyles(styles)(ConfigureChartPanel);
@@ -0,0 +1,41 @@
1
+ import React from 'react';
2
+ import { withStyles } from '@material-ui/core/styles';
3
+ import MenuItem from '@material-ui/core/MenuItem';
4
+ import FormControl from '@material-ui/core/FormControl';
5
+ import InputLabel from '@material-ui/core/InputLabel';
6
+ import Select from '@material-ui/core/Select';
7
+ import OutlinedInput from '@material-ui/core/OutlinedInput';
8
+
9
+ const ChartType = withStyles(theme => ({
10
+ chartType: {
11
+ width: '160px'
12
+ },
13
+ chartTypeLabel: {
14
+ backgroundColor: 'transparent'
15
+ }
16
+ }))(({ onChange, value, classes }) => {
17
+ return (
18
+ <div className={classes.chartType}>
19
+ <FormControl variant={'outlined'} className={classes.chartType}>
20
+ <InputLabel htmlFor="type-helper" className={classes.chartTypeLabel}>
21
+ ChartType
22
+ </InputLabel>
23
+
24
+ <Select
25
+ value={value}
26
+ onChange={onChange}
27
+ input={<OutlinedInput name="type" id="type-helper" />}
28
+ >
29
+ <MenuItem value={'histogram'}>Histogram</MenuItem>
30
+ <MenuItem value={'bar'}>Bar</MenuItem>
31
+ <MenuItem value={'lineDot'}>Line Dot</MenuItem>
32
+ <MenuItem value={'lineCross'}>Line Cross</MenuItem>
33
+ <MenuItem value={'dotPlot'}>Dot Plot</MenuItem>
34
+ <MenuItem value={'linePlot'}>Line Plot</MenuItem>
35
+ </Select>
36
+ </FormControl>
37
+ </div>
38
+ );
39
+ });
40
+
41
+ export default ChartType;
package/src/chart.jsx CHANGED
@@ -48,6 +48,7 @@ export class Chart extends React.Component {
48
48
  onDataChange: PropTypes.func,
49
49
  addCategoryEnabled: PropTypes.bool,
50
50
  categoryDefaultLabel: PropTypes.string,
51
+ defineChart: PropTypes.bool,
51
52
  theme: PropTypes.object
52
53
  };
53
54
 
@@ -231,6 +232,7 @@ export class Chart extends React.Component {
231
232
  <ChartComponent
232
233
  {...common}
233
234
  data={categories}
235
+ defineChart={defineChart}
234
236
  onChange={this.changeData}
235
237
  onChangeCategory={this.changeCategory}
236
238
  />
package/src/index.js CHANGED
@@ -1,3 +1,6 @@
1
1
  import Chart from './chart';
2
2
  import chartTypes from './chart-types';
3
- export { Chart, chartTypes };
3
+ import ConfigureChartPanel from './chart-setup';
4
+ import ChartType from './chart-type';
5
+
6
+ export { Chart, chartTypes, ChartType, ConfigureChartPanel };
@@ -34,6 +34,7 @@ class RawDragHandle extends React.Component {
34
34
  correctness,
35
35
  ...rest
36
36
  } = this.props;
37
+
37
38
  const { scale } = graphProps;
38
39
  return (
39
40
  <CustomDraggableComponent
@@ -42,7 +43,7 @@ class RawDragHandle extends React.Component {
42
43
  y={y}
43
44
  classes={classes}
44
45
  className={classNames(className, !interactive && 'non-interactive')}
45
- correctness={interactive && correctness}
46
+ correctness={correctness}
46
47
  {...rest}
47
48
  />
48
49
  );