@pie-lib/charting 5.1.0 → 5.1.3

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/lib/axes.js +37 -61
  3. package/lib/axes.js.map +1 -1
  4. package/lib/bars/bar.js +19 -30
  5. package/lib/bars/bar.js.map +1 -1
  6. package/lib/bars/common/bars.js +30 -46
  7. package/lib/bars/common/bars.js.map +1 -1
  8. package/lib/bars/histogram.js +19 -30
  9. package/lib/bars/histogram.js.map +1 -1
  10. package/lib/chart-setup.js +65 -33
  11. package/lib/chart-setup.js.map +1 -1
  12. package/lib/chart-type.js +2 -2
  13. package/lib/chart-type.js.map +1 -1
  14. package/lib/chart-types.js +2 -2
  15. package/lib/chart-types.js.map +1 -1
  16. package/lib/chart.js +45 -70
  17. package/lib/chart.js.map +1 -1
  18. package/lib/common/drag-handle.js +26 -41
  19. package/lib/common/drag-handle.js.map +1 -1
  20. package/lib/common/styles.js +7 -5
  21. package/lib/common/styles.js.map +1 -1
  22. package/lib/grid.js +19 -31
  23. package/lib/grid.js.map +1 -1
  24. package/lib/index.js +2 -2
  25. package/lib/index.js.map +1 -1
  26. package/lib/line/common/drag-handle.js +24 -38
  27. package/lib/line/common/drag-handle.js.map +1 -1
  28. package/lib/line/common/line.js +40 -71
  29. package/lib/line/common/line.js.map +1 -1
  30. package/lib/line/line-cross.js +25 -39
  31. package/lib/line/line-cross.js.map +1 -1
  32. package/lib/line/line-dot.js +24 -38
  33. package/lib/line/line-dot.js.map +1 -1
  34. package/lib/mark-label.js +13 -21
  35. package/lib/mark-label.js.map +1 -1
  36. package/lib/plot/common/plot.js +30 -46
  37. package/lib/plot/common/plot.js.map +1 -1
  38. package/lib/plot/dot.js +20 -31
  39. package/lib/plot/dot.js.map +1 -1
  40. package/lib/plot/line.js +21 -32
  41. package/lib/plot/line.js.map +1 -1
  42. package/lib/tool-menu.js +19 -32
  43. package/lib/tool-menu.js.map +1 -1
  44. package/lib/utils.js +10 -75
  45. package/lib/utils.js.map +1 -1
  46. package/package.json +2 -2
  47. package/src/axes.jsx +4 -2
  48. package/src/bars/common/bars.jsx +1 -1
  49. package/src/chart-setup.jsx +48 -25
  50. package/src/chart-type.js +21 -23
  51. package/src/chart.jsx +7 -21
  52. package/src/line/common/line.jsx +1 -1
  53. package/src/mark-label.jsx +3 -1
  54. package/src/plot/common/plot.jsx +1 -1
  55. package/src/utils.js +4 -75
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.js"],"names":["tickCount","utils","bounds","point","bandKey","d","index","label","dataToXBand","scaleX","data","width","type","rangeRound","domain","map","padding","range","getTickValues","prop","tickValues","tickVal","min","max","push","Math","round","step","customLabelStep","rangeMax","size","labelFontSize","ceilMax","ceil","segmentLength","height","ticksToFitInOneSegment","tickWidthPerSegment","rawLabelStep","roundedStep","labelStep","crowdedTicks","numberOfSegments","modulo","a","b","Number","isInteger","decimals","toString","split","pop","length","aux","pow","getDomainAndRangeByChartType","chartType","isNaN","crowded","intMin","intMax","getGridLinesAndAxisByChartType","verticalLines","undefined","horizontalLines","leftAxis","getRotateAngle","fontSize","getTopPadding","barWidth"],"mappings":"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","sourcesContent":["import { scaleBand, scalePoint } from '@vx/scale';\nimport { utils } from '@pie-lib/plot';\n\nexport const tickCount = utils.tickCount;\nexport const bounds = utils.bounds;\nexport const point = utils.point;\n\nexport const bandKey = (d, index) => `${index}-${d.label || '-'}`;\n\nexport const dataToXBand = (scaleX, data, width, type) => {\n switch (type) {\n case 'bar':\n case 'dotPlot':\n case 'linePlot':\n return scaleBand({\n rangeRound: [0, width],\n domain: data && data.map(bandKey),\n padding: 0.2\n });\n case 'histogram':\n return scaleBand({\n rangeRound: [0, width],\n domain: data && data.map(bandKey),\n padding: 0\n });\n case 'lineCross':\n case 'lineDot':\n return scalePoint({\n domain: data && data.map(bandKey),\n rangeRound: [0, width]\n });\n default:\n return scaleBand({\n range: [0, width],\n domain: data && data.map(bandKey),\n padding: 0\n });\n }\n};\n\nexport const getTickValues = (prop = {}) => {\n const tickValues = [];\n let tickVal = prop.min;\n\n while (tickVal <= prop.max) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 100) / 100;\n }\n\n return tickValues;\n};\n\nexport const customLabelStep = (rangeMax, size, labelFontSize) => {\n const ceilMax = Math.ceil(rangeMax);\n const segmentLength = size.height / ceilMax;\n const ticksToFitInOneSegment = 2;\n\n // how many ticksWidth fit in a segment\n const tickWidthPerSegment = segmentLength / labelFontSize;\n const rawLabelStep = ticksToFitInOneSegment / tickWidthPerSegment;\n const roundedStep = Math.ceil((rawLabelStep * 10) / 10);\n\n let labelStep;\n\n if (rawLabelStep > 0.15) {\n labelStep = roundedStep;\n } else if (rawLabelStep < 0.05) {\n labelStep = 0.1;\n } else {\n labelStep = 0.5;\n }\n\n return labelStep;\n};\n\nexport const crowdedTicks = (rangeMax, customLabelStep, size, labelFontSize) => {\n const ceilMax = Math.ceil(rangeMax);\n\n const numberOfSegments = ceilMax * customLabelStep;\n\n return size.height / numberOfSegments < labelFontSize && size.height / numberOfSegments > 0.5;\n};\n\n// multiply values with 10^number_of_decimals if needed because modulo function(%) is only defined for integers\nconst modulo = (a, b) => {\n if (Number.isInteger(b)) {\n return a % b;\n }\n\n const decimals = b\n .toString()\n .split('.')\n .pop().length;\n const aux = Math.pow(10, decimals);\n\n return (a * aux) % (b * aux);\n};\n\nexport const getDomainAndRangeByChartType = (domain, range, size, chartType, labelFontSize) => {\n let { step, labelStep, min, max } = range || {};\n\n if (!min) {\n min = 0;\n }\n\n if (!max || max < 0) {\n max = range.min + 1;\n }\n\n if (labelStep && !step) {\n step = labelStep;\n }\n if (!labelStep || (isNaN(labelStep) && step)) {\n let customLabelStep = step;\n let crowded = crowdedTicks(max, customLabelStep, size, labelFontSize);\n\n if (crowded) {\n customLabelStep = customLabelStep * 2;\n }\n\n labelStep = customLabelStep;\n }\n\n if (!step || (isNaN(step) && !labelStep) || isNaN(labelStep)) {\n labelStep = customLabelStep(max, size, labelFontSize);\n\n if (labelStep <= 1) {\n step = labelStep;\n } else if (labelStep <= 4) {\n step = 1;\n } else if (labelStep > 4 && labelStep < 10) {\n step = labelStep / 2;\n } else {\n step = labelStep / 3;\n }\n }\n\n if (modulo(max, step) !== 0) {\n max = max + step;\n }\n\n range.max = max;\n\n switch (chartType) {\n // if chart is dot plot or line plot, we should ignore step and make sure that min & max are integer values\n case 'dotPlot':\n case 'linePlot': {\n const intMin = Math.round(min);\n const intMax = Math.round(max);\n\n return {\n domain: {\n ...domain,\n step: 1,\n labelStep: 1,\n min: 0,\n max: 1\n },\n range: {\n ...range,\n min: intMin,\n max: intMin === intMax ? intMin + 1 : intMax,\n labelStep,\n step: 1\n }\n };\n }\n default:\n return {\n domain: {\n ...domain,\n step: 1,\n labelStep: 1,\n min: 0,\n max: 1\n },\n range: {\n ...range,\n labelStep,\n step\n }\n };\n }\n};\n\nexport const getGridLinesAndAxisByChartType = (range, chartType) => {\n switch (chartType) {\n case 'lineDot':\n case 'lineCross':\n return {\n verticalLines: undefined,\n horizontalLines: getTickValues(range),\n leftAxis: true\n };\n case 'dotPlot':\n case 'linePlot':\n return {\n verticalLines: [],\n horizontalLines: [],\n leftAxis: false\n };\n default:\n return {\n verticalLines: [],\n horizontalLines: getTickValues(range),\n leftAxis: true\n };\n }\n};\n\nexport const getRotateAngle = (fontSize, height) => {\n if (height >= fontSize * 2) {\n return 25;\n }\n\n return 0;\n};\n\nexport const getTopPadding = barWidth => {\n if (barWidth < 30) {\n return 50;\n }\n\n if (barWidth < 40) {\n return 30;\n }\n\n if (barWidth < 60) {\n return 15;\n }\n\n return 0;\n};\n"],"file":"utils.js"}
1
+ {"version":3,"sources":["../src/utils.js"],"names":["tickCount","utils","bounds","point","bandKey","d","index","label","dataToXBand","scaleX","data","width","type","rangeRound","domain","map","padding","range","getTickValues","prop","tickValues","tickVal","min","max","push","Math","round","step","getDomainAndRangeByChartType","chartType","labelStep","isNaN","intMin","intMax","getGridLinesAndAxisByChartType","verticalLines","undefined","horizontalLines","leftAxis","getRotateAngle","fontSize","height","getTopPadding","barWidth"],"mappings":"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","sourcesContent":["import { scaleBand, scalePoint } from '@vx/scale';\nimport { utils } from '@pie-lib/plot';\n\nexport const tickCount = utils.tickCount;\nexport const bounds = utils.bounds;\nexport const point = utils.point;\n\nexport const bandKey = (d, index) => `${index}-${d.label || '-'}`;\n\nexport const dataToXBand = (scaleX, data, width, type) => {\n switch (type) {\n case 'bar':\n case 'dotPlot':\n case 'linePlot':\n return scaleBand({\n rangeRound: [0, width],\n domain: data && data.map(bandKey),\n padding: 0.2\n });\n case 'histogram':\n return scaleBand({\n rangeRound: [0, width],\n domain: data && data.map(bandKey),\n padding: 0\n });\n case 'lineCross':\n case 'lineDot':\n return scalePoint({\n domain: data && data.map(bandKey),\n rangeRound: [0, width]\n });\n default:\n return scaleBand({\n range: [0, width],\n domain: data && data.map(bandKey),\n padding: 0\n });\n }\n};\n\nexport const getTickValues = (prop = {}) => {\n const tickValues = [];\n let tickVal = prop.min;\n\n while (tickVal <= prop.max) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 100) / 100;\n }\n\n return tickValues;\n};\n\nexport const getDomainAndRangeByChartType = (domain, range, chartType) => {\n let { step, labelStep, min, max } = range || {};\n\n if (!min) {\n min = 0;\n }\n\n if (!max || max < 0) {\n max = range.min + 1;\n }\n\n if (!step) {\n step = labelStep || 1;\n }\n if (!labelStep || (isNaN(labelStep) && step)) {\n labelStep = step || 1;\n }\n\n range.max = max;\n\n switch (chartType) {\n // if chart is dot plot or line plot, we should ignore step and make sure that min & max are integer values\n case 'dotPlot':\n case 'linePlot': {\n const intMin = Math.round(min);\n const intMax = Math.round(max);\n\n return {\n domain: {\n ...domain,\n step: 1,\n labelStep: 1,\n min: 0,\n max: 1\n },\n range: {\n ...range,\n min: intMin,\n max: intMin === intMax ? intMin + 1 : intMax,\n labelStep,\n step: 1\n }\n };\n }\n default:\n return {\n domain: {\n ...domain,\n step: 1,\n labelStep: 1,\n min: 0,\n max: 1\n },\n range: {\n ...range,\n labelStep,\n step\n }\n };\n }\n};\n\nexport const getGridLinesAndAxisByChartType = (range, chartType) => {\n switch (chartType) {\n case 'lineDot':\n case 'lineCross':\n return {\n verticalLines: undefined,\n horizontalLines: getTickValues(range),\n leftAxis: true\n };\n case 'dotPlot':\n case 'linePlot':\n return {\n verticalLines: [],\n horizontalLines: [],\n leftAxis: false\n };\n default:\n return {\n verticalLines: [],\n horizontalLines: getTickValues(range),\n leftAxis: true\n };\n }\n};\n\nexport const getRotateAngle = (fontSize, height) => {\n if (height >= fontSize * 2) {\n return 25;\n }\n\n return 0;\n};\n\nexport const getTopPadding = barWidth => {\n if (barWidth < 30) {\n return 50;\n }\n\n if (barWidth < 40) {\n return 30;\n }\n\n if (barWidth < 60) {\n return 15;\n }\n\n return 0;\n};\n"],"file":"utils.js"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "5.1.0",
6
+ "version": "5.1.3",
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": "2f841d92dcda7472f18cbce517eb664dec2f6442"
46
+ "gitHead": "45e12d524142a6576c9ebb9292de01a34e88fc03"
47
47
  }
package/src/axes.jsx CHANGED
@@ -60,7 +60,8 @@ export class TickComponent extends React.Component {
60
60
 
61
61
  const index = parseInt(formattedValue.split('-')[0], 10);
62
62
  const category = categories[index];
63
- const { deletable, editable, interactive, label, correctness } = category || {};
63
+ const { deletable, editable, interactive, label, correctness, autoFocus, inDefineChart } =
64
+ category || {};
64
65
  const barX = xBand(bandKey({ label }, index));
65
66
  const longestCategory = (categories || []).reduce((a, b) => {
66
67
  const lengthA = a && a.label ? a.label.length : 0;
@@ -96,8 +97,9 @@ export class TickComponent extends React.Component {
96
97
  </div>
97
98
  )}
98
99
  <MarkLabel
100
+ autoFocus={inDefineChart ? defineChart && autoFocus : autoFocus}
99
101
  inputRef={r => (this.input = r)}
100
- disabled={defineChart ? false : !editable}
102
+ disabled={!defineChart && !editable}
101
103
  mark={category}
102
104
  graphProps={graphProps}
103
105
  onChange={newLabel => this.changeCategory(index, newLabel)}
@@ -126,7 +126,7 @@ export class Bars extends React.Component {
126
126
  {(data || []).map((d, index) => (
127
127
  <Bar
128
128
  value={d.value}
129
- interactive={defineChart ? true : d.interactive}
129
+ interactive={defineChart || d.interactive}
130
130
  label={d.label}
131
131
  xBand={xBand}
132
132
  index={index}
@@ -7,10 +7,36 @@ import ChartType from './chart-type';
7
7
  import { NumberTextFieldCustom } from '@pie-lib/config-ui';
8
8
 
9
9
  const ConfigureChartPanel = props => {
10
- const { classes, model, onChange } = props;
10
+ const { classes, model, onChange, gridValues = {}, labelValues = {} } = props;
11
11
  const { range } = model;
12
12
  const size = model.graph;
13
13
 
14
+ const gridOptions =
15
+ gridValues && gridValues.range ? { customValues: gridValues.range } : { min: 0, max: 10000 };
16
+ const labelOptions =
17
+ labelValues && labelValues.range ? { customValues: labelValues.range } : { min: 0, max: 10000 };
18
+
19
+ const stepConfig = (
20
+ <div className={classes.rowView}>
21
+ <NumberTextFieldCustom
22
+ className={classes.mediumTextField}
23
+ label="Grid Interval"
24
+ value={range.step}
25
+ variant="outlined"
26
+ onChange={(e, v) => onRangeChanged('step', v)}
27
+ {...gridOptions}
28
+ />
29
+ <NumberTextFieldCustom
30
+ className={classes.mediumTextField}
31
+ label={'Label Interval'}
32
+ value={range.labelStep}
33
+ variant={'outlined'}
34
+ onChange={(e, v) => onRangeChanged('labelStep', v)}
35
+ {...labelOptions}
36
+ />
37
+ </div>
38
+ );
39
+
14
40
  const rangeProps = chartType => {
15
41
  return chartType.includes('Plot') ? { min: 3, max: 10 } : { min: 0.05, max: 10000 };
16
42
  };
@@ -22,14 +48,30 @@ const ConfigureChartPanel = props => {
22
48
  };
23
49
 
24
50
  const onRangeChanged = (key, value) => {
25
- const parsedValue = parseInt(value);
26
-
27
- range[key] = parsedValue;
51
+ range[key] = value;
28
52
 
29
53
  onChange({ ...model, range });
30
54
  };
31
55
 
32
- const onChartTypeChange = chartType => onChange({ ...model, chartType });
56
+ const onChartTypeChange = chartType => {
57
+ if (chartType.includes('Plot')) {
58
+ rangeProps.min = 3;
59
+ rangeProps.max = 10;
60
+
61
+ if (range.max > 10 || range.max < 3) {
62
+ range.max = 10;
63
+ }
64
+
65
+ range.step = 1;
66
+ range.labelStep = 1;
67
+
68
+ onChange({ ...model, range, chartType });
69
+
70
+ return;
71
+ }
72
+
73
+ onChange({ ...model, chartType });
74
+ };
33
75
 
34
76
  return (
35
77
  <div className={classes.wrapper}>
@@ -47,26 +89,7 @@ const ConfigureChartPanel = props => {
47
89
  onChange={(e, v) => onRangeChanged('max', v)}
48
90
  />
49
91
  </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>
92
+ {!model.chartType.includes('Plot') && stepConfig}
70
93
  <div className={classes.dimensions}>
71
94
  <div>
72
95
  <Typography>Dimensions(px)</Typography>
package/src/chart-type.js CHANGED
@@ -13,29 +13,27 @@ const ChartType = withStyles(theme => ({
13
13
  chartTypeLabel: {
14
14
  backgroundColor: 'transparent'
15
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>
16
+ }))(({ onChange, value, classes }) => (
17
+ <div className={classes.chartType}>
18
+ <FormControl variant={'outlined'} className={classes.chartType}>
19
+ <InputLabel htmlFor="type-helper" className={classes.chartTypeLabel}>
20
+ ChartType
21
+ </InputLabel>
23
22
 
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
- });
23
+ <Select
24
+ value={value}
25
+ onChange={onChange}
26
+ input={<OutlinedInput name="type" id="type-helper" />}
27
+ >
28
+ <MenuItem value={'histogram'}>Histogram</MenuItem>
29
+ <MenuItem value={'bar'}>Bar</MenuItem>
30
+ <MenuItem value={'lineDot'}>Line Dot</MenuItem>
31
+ <MenuItem value={'lineCross'}>Line Cross</MenuItem>
32
+ <MenuItem value={'dotPlot'}>Dot Plot</MenuItem>
33
+ <MenuItem value={'linePlot'}>Line Plot</MenuItem>
34
+ </Select>
35
+ </FormControl>
36
+ </div>
37
+ ));
40
38
 
41
39
  export default ChartType;
package/src/chart.jsx CHANGED
@@ -111,12 +111,14 @@ export class Chart extends React.Component {
111
111
  }
112
112
  };
113
113
 
114
- addCategory = (chartType, range) => {
115
- const { onDataChange, data, categoryDefaultLabel } = this.props;
114
+ addCategory = range => {
115
+ const { onDataChange, data, categoryDefaultLabel, defineChart } = this.props;
116
116
 
117
117
  onDataChange([
118
118
  ...data,
119
119
  {
120
+ inDefineChart: defineChart,
121
+ autoFocus: true,
120
122
  label: categoryDefaultLabel || 'New Bar',
121
123
  value: range.step,
122
124
  deletable: true,
@@ -138,16 +140,7 @@ export class Chart extends React.Component {
138
140
  };
139
141
 
140
142
  render() {
141
- const {
142
- classes,
143
- className,
144
- domain,
145
- range,
146
- size,
147
- title,
148
- addCategoryEnabled,
149
- theme
150
- } = this.props;
143
+ const { classes, className, domain, range, size, title, addCategoryEnabled } = this.props;
151
144
  let { chartType } = this.props;
152
145
 
153
146
  const defineChart = this.props.defineChart || false;
@@ -156,14 +149,7 @@ export class Chart extends React.Component {
156
149
  const { ChartComponent } = this.getChart();
157
150
  const categories = this.getFilteredCategories();
158
151
 
159
- const labelFontSize = (theme && theme.typography && theme.typography.fontSize) || 14;
160
- const correctValues = getDomainAndRangeByChartType(
161
- domain,
162
- range,
163
- size,
164
- chartType,
165
- labelFontSize
166
- );
152
+ const correctValues = getDomainAndRangeByChartType(domain, range, chartType);
167
153
 
168
154
  const { verticalLines, horizontalLines, leftAxis } = getGridLinesAndAxisByChartType(
169
155
  correctValues.range,
@@ -205,7 +191,7 @@ export class Chart extends React.Component {
205
191
  <ToolMenu
206
192
  className={classes.toolMenu}
207
193
  disabled={!addCategoryEnabled}
208
- addCategory={() => this.addCategory(chartType, correctValues.range)}
194
+ addCategory={() => this.addCategory(correctValues.range)}
209
195
  />
210
196
  </div>
211
197
  <Root title={title} classes={classes} rootRef={r => (this.rootNode = r)} {...rootCommon}>
@@ -94,7 +94,7 @@ export class RawLine extends React.Component {
94
94
  {lineToUse &&
95
95
  lineToUse.map((point, i) => {
96
96
  const r = 6;
97
- const enableDraggable = defineChart ? true : point.interactive;
97
+ const enableDraggable = defineChart || point.interactive;
98
98
  const Component = enableDraggable ? DraggableHandle : DragHandle;
99
99
 
100
100
  return (
@@ -33,7 +33,8 @@ export const MarkLabel = props => {
33
33
  inputRef: externalInputRef,
34
34
  barWidth,
35
35
  rotate,
36
- correctness
36
+ correctness,
37
+ autoFocus
37
38
  } = props;
38
39
  const [label, setLabel] = useState(mark.label);
39
40
  const onChange = e => setLabel(e.target.value);
@@ -54,6 +55,7 @@ export const MarkLabel = props => {
54
55
 
55
56
  return (
56
57
  <AutosizeInput
58
+ autoFocus={autoFocus}
57
59
  inputRef={r => {
58
60
  _ref(r);
59
61
  externalInputRef(r);
@@ -151,7 +151,7 @@ export class Plot extends React.Component {
151
151
  <Bar
152
152
  value={d.value}
153
153
  label={d.label}
154
- interactive={defineChart ? true : d.interactive}
154
+ interactive={defineChart || d.interactive}
155
155
  xBand={xBand}
156
156
  index={index}
157
157
  key={`bar-${d.label}-${d.value}-${index}`}
package/src/utils.js CHANGED
@@ -50,53 +50,7 @@ export const getTickValues = (prop = {}) => {
50
50
  return tickValues;
51
51
  };
52
52
 
53
- export const customLabelStep = (rangeMax, size, labelFontSize) => {
54
- const ceilMax = Math.ceil(rangeMax);
55
- const segmentLength = size.height / ceilMax;
56
- const ticksToFitInOneSegment = 2;
57
-
58
- // how many ticksWidth fit in a segment
59
- const tickWidthPerSegment = segmentLength / labelFontSize;
60
- const rawLabelStep = ticksToFitInOneSegment / tickWidthPerSegment;
61
- const roundedStep = Math.ceil((rawLabelStep * 10) / 10);
62
-
63
- let labelStep;
64
-
65
- if (rawLabelStep > 0.15) {
66
- labelStep = roundedStep;
67
- } else if (rawLabelStep < 0.05) {
68
- labelStep = 0.1;
69
- } else {
70
- labelStep = 0.5;
71
- }
72
-
73
- return labelStep;
74
- };
75
-
76
- export const crowdedTicks = (rangeMax, customLabelStep, size, labelFontSize) => {
77
- const ceilMax = Math.ceil(rangeMax);
78
-
79
- const numberOfSegments = ceilMax * customLabelStep;
80
-
81
- return size.height / numberOfSegments < labelFontSize && size.height / numberOfSegments > 0.5;
82
- };
83
-
84
- // multiply values with 10^number_of_decimals if needed because modulo function(%) is only defined for integers
85
- const modulo = (a, b) => {
86
- if (Number.isInteger(b)) {
87
- return a % b;
88
- }
89
-
90
- const decimals = b
91
- .toString()
92
- .split('.')
93
- .pop().length;
94
- const aux = Math.pow(10, decimals);
95
-
96
- return (a * aux) % (b * aux);
97
- };
98
-
99
- export const getDomainAndRangeByChartType = (domain, range, size, chartType, labelFontSize) => {
53
+ export const getDomainAndRangeByChartType = (domain, range, chartType) => {
100
54
  let { step, labelStep, min, max } = range || {};
101
55
 
102
56
  if (!min) {
@@ -107,36 +61,11 @@ export const getDomainAndRangeByChartType = (domain, range, size, chartType, lab
107
61
  max = range.min + 1;
108
62
  }
109
63
 
110
- if (labelStep && !step) {
111
- step = labelStep;
64
+ if (!step) {
65
+ step = labelStep || 1;
112
66
  }
113
67
  if (!labelStep || (isNaN(labelStep) && step)) {
114
- let customLabelStep = step;
115
- let crowded = crowdedTicks(max, customLabelStep, size, labelFontSize);
116
-
117
- if (crowded) {
118
- customLabelStep = customLabelStep * 2;
119
- }
120
-
121
- labelStep = customLabelStep;
122
- }
123
-
124
- if (!step || (isNaN(step) && !labelStep) || isNaN(labelStep)) {
125
- labelStep = customLabelStep(max, size, labelFontSize);
126
-
127
- if (labelStep <= 1) {
128
- step = labelStep;
129
- } else if (labelStep <= 4) {
130
- step = 1;
131
- } else if (labelStep > 4 && labelStep < 10) {
132
- step = labelStep / 2;
133
- } else {
134
- step = labelStep / 3;
135
- }
136
- }
137
-
138
- if (modulo(max, step) !== 0) {
139
- max = max + step;
68
+ labelStep = step || 1;
140
69
  }
141
70
 
142
71
  range.max = max;