@pie-lib/graphing 2.6.0 → 2.6.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [2.6.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.6.2...@pie-lib/graphing@2.6.3) (2022-06-13)
7
+
8
+ **Note:** Version bump only for package @pie-lib/graphing
9
+
10
+
11
+
12
+
13
+
14
+ ## [2.6.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.6.1...@pie-lib/graphing@2.6.2) (2022-05-30)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * unable to load items locally ([17ab686](https://github.com/pie-framework/pie-lib/commit/17ab6864557288aef6ec1d9a130cb508e2591562))
20
+
21
+
22
+
23
+
24
+
25
+ ## [2.6.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.6.0...@pie-lib/graphing@2.6.1) (2022-05-24)
26
+
27
+ **Note:** Version bump only for package @pie-lib/graphing
28
+
29
+
30
+
31
+
32
+
6
33
  # [2.6.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.5.1...@pie-lib/graphing@2.6.0) (2022-05-10)
7
34
 
8
35
 
@@ -0,0 +1,390 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _renderUi = require("@pie-lib/render-ui");
13
+
14
+ var _styles = require("@material-ui/core/styles");
15
+
16
+ var _ExpansionPanelSummary = _interopRequireDefault(require("@material-ui/core/ExpansionPanelSummary"));
17
+
18
+ var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
19
+
20
+ var _ExpansionPanelDetails = _interopRequireDefault(require("@material-ui/core/ExpansionPanelDetails"));
21
+
22
+ var _ExpansionPanel = _interopRequireDefault(require("@material-ui/core/ExpansionPanel"));
23
+
24
+ var _ExpandMore = _interopRequireDefault(require("@material-ui/icons/ExpandMore"));
25
+
26
+ var _configUi = require("@pie-lib/config-ui");
27
+
28
+ var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
29
+
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
+
32
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
33
+
34
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
35
+
36
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
37
+
38
+ var GridConfig = function GridConfig(props) {
39
+ var classes = props.classes,
40
+ disabled = props.disabled,
41
+ labelValue = props.labelValue,
42
+ labelValues = props.labelValues,
43
+ gridValue = props.gridValue,
44
+ gridValues = props.gridValues,
45
+ _onChange = props.onChange;
46
+ return /*#__PURE__*/_react["default"].createElement("div", {
47
+ className: classes.columnView
48
+ }, /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
49
+ className: classes.mediumTextField,
50
+ label: "Grid Interval",
51
+ value: gridValue,
52
+ customValues: gridValues,
53
+ variant: "outlined",
54
+ disabled: disabled,
55
+ onChange: function onChange(e, v) {
56
+ return _onChange('step', v);
57
+ }
58
+ }), /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
59
+ className: classes.mediumTextField,
60
+ label: "Label Interval",
61
+ value: labelValue,
62
+ customValues: labelValues,
63
+ variant: "outlined",
64
+ disabled: disabled,
65
+ onChange: function onChange(e, v) {
66
+ return _onChange('labelStep', v);
67
+ }
68
+ }));
69
+ };
70
+
71
+ var AxisConfig = function AxisConfig(props) {
72
+ var classes = props.classes,
73
+ disabled = props.disabled,
74
+ label = props.label,
75
+ maxValue = props.maxValue,
76
+ minValue = props.minValue,
77
+ _onChange2 = props.onChange,
78
+ type = props.type;
79
+ var activePlugins = ['bold', 'italic', 'underline', 'strikethrough' // 'languageCharacters'
80
+ ];
81
+ return /*#__PURE__*/_react["default"].createElement("div", {
82
+ className: classes.columnView
83
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
84
+ variant: "subtitle2"
85
+ }, /*#__PURE__*/_react["default"].createElement("i", null, type === 'domain' ? 'x' : 'y'), "-axis"), /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
86
+ className: classes.mediumTextField,
87
+ label: "Min Value",
88
+ value: minValue,
89
+ min: -10000,
90
+ max: maxValue - 0.01,
91
+ variant: "outlined",
92
+ disabled: disabled,
93
+ onChange: function onChange(e, v) {
94
+ return _onChange2('min', v);
95
+ }
96
+ }), /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
97
+ className: classes.mediumTextField,
98
+ label: "Max Value",
99
+ value: maxValue,
100
+ min: minValue + 0.01,
101
+ max: 10000,
102
+ variant: "outlined",
103
+ disabled: disabled,
104
+ onChange: function onChange(e, v) {
105
+ return _onChange2('max', v);
106
+ }
107
+ }), /*#__PURE__*/_react["default"].createElement(_renderUi.InputContainer, {
108
+ label: "Label",
109
+ className: classes.mediumTextField
110
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
111
+ className: classes.axisLabel,
112
+ onChange: function onChange(value) {
113
+ return _onChange2('axisLabel', value);
114
+ },
115
+ markup: label || '',
116
+ charactersLimit: 5,
117
+ activePlugins: activePlugins
118
+ })));
119
+ };
120
+
121
+ var GridSetup = function GridSetup(props) {
122
+ var classes = props.classes,
123
+ domain = props.domain,
124
+ dimensionsEnabled = props.dimensionsEnabled,
125
+ _props$gridValues = props.gridValues,
126
+ gridValues = _props$gridValues === void 0 ? {} : _props$gridValues,
127
+ includeAxes = props.includeAxes,
128
+ _props$labelValues = props.labelValues,
129
+ labelValues = _props$labelValues === void 0 ? {} : _props$labelValues,
130
+ onChange = props.onChange,
131
+ range = props.range,
132
+ size = props.size,
133
+ sizeConstraints = props.sizeConstraints,
134
+ standardGrid = props.standardGrid;
135
+ var gridProps = {
136
+ min: 2,
137
+ max: 41
138
+ };
139
+
140
+ var onIncludeAxes = function onIncludeAxes(includeAxes) {
141
+ var noAxesConfig = function noAxesConfig(type) {
142
+ var axis = type === 'domain' ? domain : range;
143
+ return {
144
+ min: 1,
145
+ max: axis.max < gridProps.min || axis.max > gridProps.max ? 16 : axis.max,
146
+ step: 1,
147
+ labelStep: 0
148
+ };
149
+ };
150
+
151
+ var updatedRange = _objectSpread(_objectSpread({}, range), includeAxes ? {
152
+ labelStep: 1
153
+ } : noAxesConfig('range'));
154
+
155
+ var updatedDomain = _objectSpread(_objectSpread({}, domain), includeAxes ? {
156
+ labelStep: 1
157
+ } : noAxesConfig('domain'));
158
+
159
+ onChange({
160
+ includeAxes: includeAxes,
161
+ range: updatedRange,
162
+ domain: updatedDomain
163
+ });
164
+ };
165
+
166
+ var onStandardGridChanged = function onStandardGridChanged(value) {
167
+ onChange({
168
+ standardGrid: value,
169
+ range: _objectSpread(_objectSpread({}, domain), {}, {
170
+ axisLabel: range.axisLabel
171
+ }),
172
+ graph: _objectSpread(_objectSpread({}, size), {}, {
173
+ height: size.width
174
+ })
175
+ });
176
+ };
177
+
178
+ var onSizeChanged = function onSizeChanged(key, value) {
179
+ var graph = _objectSpread(_objectSpread({}, size), {}, _defineProperty({}, key, value));
180
+
181
+ if (standardGrid) {
182
+ graph.height = value;
183
+ }
184
+
185
+ onChange({
186
+ graph: graph
187
+ });
188
+ };
189
+
190
+ var onDomainChanged = function onDomainChanged(key, value) {
191
+ domain[key] = value;
192
+
193
+ if (standardGrid && key !== 'axisLabel') {
194
+ range[key] = value;
195
+ }
196
+
197
+ onChange({
198
+ domain: domain,
199
+ range: range
200
+ });
201
+ };
202
+
203
+ var onRangeChanged = function onRangeChanged(key, value) {
204
+ range[key] = value;
205
+ onChange({
206
+ range: range
207
+ });
208
+ };
209
+
210
+ var axesConfig = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
211
+ className: classes.rowView
212
+ }, /*#__PURE__*/_react["default"].createElement(AxisConfig, {
213
+ classes: classes,
214
+ type: "domain",
215
+ minValue: domain.min,
216
+ maxValue: domain.max,
217
+ label: domain.axisLabel,
218
+ includeAxes: includeAxes,
219
+ onChange: onDomainChanged
220
+ }), /*#__PURE__*/_react["default"].createElement(AxisConfig, {
221
+ classes: classes,
222
+ type: "range",
223
+ minValue: range.min,
224
+ maxValue: range.max,
225
+ label: range.axisLabel,
226
+ disabled: standardGrid,
227
+ includeAxes: includeAxes,
228
+ onChange: onRangeChanged
229
+ })), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
230
+ className: classes.text
231
+ }, "If you want the axis to be visible, use a zero or negative Min Value, and a positive Max Value"), /*#__PURE__*/_react["default"].createElement("div", {
232
+ className: classes.rowView
233
+ }, /*#__PURE__*/_react["default"].createElement(GridConfig, {
234
+ classes: classes,
235
+ gridValue: domain.step,
236
+ labelValue: domain.labelStep,
237
+ gridValues: gridValues.domain || [],
238
+ labelValues: labelValues.domain || [],
239
+ onChange: onDomainChanged
240
+ }), /*#__PURE__*/_react["default"].createElement(GridConfig, {
241
+ classes: classes,
242
+ disabled: standardGrid,
243
+ gridValue: range.step,
244
+ labelValue: range.labelStep,
245
+ gridValues: gridValues.range || [],
246
+ labelValues: labelValues.range || [],
247
+ onChange: onRangeChanged
248
+ })), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
249
+ className: classes.text
250
+ }, "For unnumbered gridlines, enter a label interval of 0"));
251
+
252
+ var gridlinesConfig = /*#__PURE__*/_react["default"].createElement("div", {
253
+ className: classes.columnView
254
+ }, /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
255
+ className: classes.largeTextField,
256
+ label: "Number of Horizontal Gridlines",
257
+ value: domain.max,
258
+ min: !includeAxes && gridProps.min,
259
+ max: !includeAxes && gridProps.max,
260
+ variant: "outlined",
261
+ onChange: function onChange(e, v) {
262
+ return onDomainChanged('max', v);
263
+ }
264
+ }), /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
265
+ className: classes.largeTextField,
266
+ label: "Number of Vertical Gridlines",
267
+ value: range.max,
268
+ min: !includeAxes && gridProps.min,
269
+ max: !includeAxes && gridProps.max,
270
+ variant: "outlined",
271
+ disabled: standardGrid,
272
+ onChange: function onChange(e, v) {
273
+ return onRangeChanged('max', v);
274
+ }
275
+ }));
276
+
277
+ return /*#__PURE__*/_react["default"].createElement("div", {
278
+ className: classes.wrapper
279
+ }, /*#__PURE__*/_react["default"].createElement(_ExpansionPanel["default"], null, /*#__PURE__*/_react["default"].createElement(_ExpansionPanelSummary["default"], {
280
+ expandIcon: /*#__PURE__*/_react["default"].createElement(_ExpandMore["default"], null)
281
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
282
+ variant: "subtitle1"
283
+ }, "Customize Grid Setup")), /*#__PURE__*/_react["default"].createElement(_ExpansionPanelDetails["default"], null, /*#__PURE__*/_react["default"].createElement("div", {
284
+ className: classes.content
285
+ }, /*#__PURE__*/_react["default"].createElement(_configUi.Toggle, {
286
+ label: "Include axes and labels?",
287
+ toggle: onIncludeAxes,
288
+ checked: includeAxes
289
+ }), /*#__PURE__*/_react["default"].createElement(_configUi.Toggle, {
290
+ label: "Constrain to standard coordinate grid?",
291
+ toggle: onStandardGridChanged,
292
+ checked: standardGrid
293
+ }), includeAxes ? axesConfig : gridlinesConfig, dimensionsEnabled && /*#__PURE__*/_react["default"].createElement("div", {
294
+ className: classes.dimensions
295
+ }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_Typography["default"], null, "Dimensions(px)"), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
296
+ className: classes.disabled
297
+ }, "Min ", sizeConstraints.min, ", Max ", sizeConstraints.max)), /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
298
+ className: classes.textField,
299
+ label: "Width",
300
+ value: size.width,
301
+ min: sizeConstraints.min,
302
+ max: sizeConstraints.max,
303
+ step: sizeConstraints.step,
304
+ variant: "outlined",
305
+ onChange: function onChange(e, v) {
306
+ return onSizeChanged('width', v);
307
+ }
308
+ }), /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
309
+ className: classes.textField,
310
+ label: "Height",
311
+ value: size.height,
312
+ min: sizeConstraints.min,
313
+ max: sizeConstraints.max,
314
+ step: sizeConstraints.step,
315
+ variant: "outlined",
316
+ disabled: standardGrid,
317
+ onChange: function onChange(e, v) {
318
+ return onSizeChanged('height', v);
319
+ }
320
+ }))))));
321
+ };
322
+
323
+ GridSetup.propTypes = {
324
+ classes: _propTypes["default"].object,
325
+ domain: _propTypes["default"].object,
326
+ dimensionsEnabled: _propTypes["default"].object,
327
+ gridValues: _propTypes["default"].object,
328
+ includeAxes: _propTypes["default"].bool,
329
+ labelValues: _propTypes["default"].object,
330
+ onChange: _propTypes["default"]["function"],
331
+ range: _propTypes["default"].object,
332
+ size: _propTypes["default"].object,
333
+ sizeConstraints: _propTypes["default"].object,
334
+ standardGrid: _propTypes["default"].bool
335
+ };
336
+
337
+ var styles = function styles(theme) {
338
+ return {
339
+ wrapper: {
340
+ width: '450px'
341
+ },
342
+ content: {
343
+ display: 'flex',
344
+ flexDirection: 'column',
345
+ width: '100%'
346
+ },
347
+ columnView: {
348
+ display: 'flex',
349
+ flexDirection: 'column',
350
+ alignItems: 'center'
351
+ },
352
+ rowView: {
353
+ display: 'flex',
354
+ justifyContent: 'space-around',
355
+ alignItems: 'center'
356
+ },
357
+ textField: {
358
+ width: '130px',
359
+ margin: "".concat(theme.spacing.unit, "px ").concat(theme.spacing.unit / 2, "px")
360
+ },
361
+ mediumTextField: {
362
+ width: '160px',
363
+ margin: "".concat(theme.spacing.unit, "px ").concat(theme.spacing.unit / 2, "px")
364
+ },
365
+ largeTextField: {
366
+ width: '230px',
367
+ margin: "".concat(theme.spacing.unit, "px ").concat(theme.spacing.unit / 2, "px")
368
+ },
369
+ text: {
370
+ fontStyle: 'italic',
371
+ margin: "".concat(theme.spacing.unit, "px 0")
372
+ },
373
+ dimensions: {
374
+ display: 'flex',
375
+ justifyContent: 'space-between',
376
+ alignItems: 'center'
377
+ },
378
+ disabled: {
379
+ color: _renderUi.color.disabled()
380
+ },
381
+ axisLabel: {
382
+ paddingTop: theme.spacing.unit * 2
383
+ }
384
+ };
385
+ };
386
+
387
+ var _default = (0, _styles.withStyles)(styles)(GridSetup);
388
+
389
+ exports["default"] = _default;
390
+ //# sourceMappingURL=grid-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/grid-setup.jsx"],"names":["GridConfig","props","classes","disabled","labelValue","labelValues","gridValue","gridValues","onChange","columnView","mediumTextField","e","v","AxisConfig","label","maxValue","minValue","type","activePlugins","axisLabel","value","GridSetup","domain","dimensionsEnabled","includeAxes","range","size","sizeConstraints","standardGrid","gridProps","min","max","onIncludeAxes","noAxesConfig","axis","step","labelStep","updatedRange","updatedDomain","onStandardGridChanged","graph","height","width","onSizeChanged","key","onDomainChanged","onRangeChanged","axesConfig","rowView","text","gridlinesConfig","largeTextField","wrapper","content","dimensions","textField","propTypes","PropTypes","object","bool","styles","theme","display","flexDirection","alignItems","justifyContent","margin","spacing","unit","fontStyle","color","paddingTop"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { color, InputContainer } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { NumberTextFieldCustom, Toggle } from '@pie-lib/config-ui';\nimport EditableHTML from '@pie-lib/editable-html';\n\nconst GridConfig = props => {\n const { classes, disabled, labelValue, labelValues, gridValue, gridValues, onChange } = props;\n\n return (\n <div className={classes.columnView}>\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label=\"Grid Interval\"\n value={gridValue}\n customValues={gridValues}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('step', v)}\n />\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label=\"Label Interval\"\n value={labelValue}\n customValues={labelValues}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('labelStep', v)}\n />\n </div>\n );\n};\n\nconst AxisConfig = props => {\n const { classes, disabled, label, maxValue, minValue, onChange, type } = props;\n const activePlugins = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough'\n // 'languageCharacters'\n ];\n\n return (\n <div className={classes.columnView}>\n <Typography variant=\"subtitle2\">\n <i>{type === 'domain' ? 'x' : 'y'}</i>\n -axis\n </Typography>\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label=\"Min Value\"\n value={minValue}\n min={-10000}\n max={maxValue - 0.01}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('min', v)}\n />\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label=\"Max Value\"\n value={maxValue}\n min={minValue + 0.01}\n max={10000}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('max', v)}\n />\n <InputContainer label=\"Label\" className={classes.mediumTextField}>\n <EditableHTML\n className={classes.axisLabel}\n onChange={value => onChange('axisLabel', value)}\n markup={label || ''}\n charactersLimit={5}\n activePlugins={activePlugins}\n />\n </InputContainer>\n </div>\n );\n};\n\nconst GridSetup = props => {\n const {\n classes,\n domain,\n dimensionsEnabled,\n gridValues = {},\n includeAxes,\n labelValues = {},\n onChange,\n range,\n size,\n sizeConstraints,\n standardGrid\n } = props;\n const gridProps = { min: 2, max: 41 };\n\n const onIncludeAxes = includeAxes => {\n const noAxesConfig = type => {\n const axis = type === 'domain' ? domain : range;\n\n return {\n min: 1,\n max: axis.max < gridProps.min || axis.max > gridProps.max ? 16 : axis.max,\n step: 1,\n labelStep: 0\n };\n };\n\n const updatedRange = {\n ...range,\n ...(includeAxes ? { labelStep: 1 } : noAxesConfig('range'))\n };\n const updatedDomain = {\n ...domain,\n ...(includeAxes ? { labelStep: 1 } : noAxesConfig('domain'))\n };\n\n onChange({ includeAxes, range: updatedRange, domain: updatedDomain });\n };\n\n const onStandardGridChanged = value => {\n onChange({\n standardGrid: value,\n range: {\n ...domain,\n axisLabel: range.axisLabel\n },\n graph: {\n ...size,\n height: size.width\n }\n });\n };\n\n const onSizeChanged = (key, value) => {\n const graph = { ...size, [key]: value };\n\n if (standardGrid) {\n graph.height = value;\n }\n\n onChange({ graph });\n };\n\n const onDomainChanged = (key, value) => {\n domain[key] = value;\n\n if (standardGrid && key !== 'axisLabel') {\n range[key] = value;\n }\n\n onChange({ domain, range });\n };\n\n const onRangeChanged = (key, value) => {\n range[key] = value;\n\n onChange({ range });\n };\n\n const axesConfig = (\n <React.Fragment>\n <div className={classes.rowView}>\n <AxisConfig\n classes={classes}\n type=\"domain\"\n minValue={domain.min}\n maxValue={domain.max}\n label={domain.axisLabel}\n includeAxes={includeAxes}\n onChange={onDomainChanged}\n />\n <AxisConfig\n classes={classes}\n type=\"range\"\n minValue={range.min}\n maxValue={range.max}\n label={range.axisLabel}\n disabled={standardGrid}\n includeAxes={includeAxes}\n onChange={onRangeChanged}\n />\n </div>\n <Typography className={classes.text}>\n If you want the axis to be visible, use a zero or negative Min Value, and a positive Max\n Value\n </Typography>\n <div className={classes.rowView}>\n <GridConfig\n classes={classes}\n gridValue={domain.step}\n labelValue={domain.labelStep}\n gridValues={gridValues.domain || []}\n labelValues={labelValues.domain || []}\n onChange={onDomainChanged}\n />\n <GridConfig\n classes={classes}\n disabled={standardGrid}\n gridValue={range.step}\n labelValue={range.labelStep}\n gridValues={gridValues.range || []}\n labelValues={labelValues.range || []}\n onChange={onRangeChanged}\n />\n </div>\n <Typography className={classes.text}>\n For unnumbered gridlines, enter a label interval of 0\n </Typography>\n </React.Fragment>\n );\n\n const gridlinesConfig = (\n <div className={classes.columnView}>\n <NumberTextFieldCustom\n className={classes.largeTextField}\n label=\"Number of Horizontal Gridlines\"\n value={domain.max}\n min={!includeAxes && gridProps.min}\n max={!includeAxes && gridProps.max}\n variant=\"outlined\"\n onChange={(e, v) => onDomainChanged('max', v)}\n />\n <NumberTextFieldCustom\n className={classes.largeTextField}\n label=\"Number of Vertical Gridlines\"\n value={range.max}\n min={!includeAxes && gridProps.min}\n max={!includeAxes && gridProps.max}\n variant=\"outlined\"\n disabled={standardGrid}\n onChange={(e, v) => onRangeChanged('max', v)}\n />\n </div>\n );\n\n return (\n <div className={classes.wrapper}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>\n <Typography variant=\"subtitle1\">Customize Grid Setup</Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails>\n <div className={classes.content}>\n <Toggle label=\"Include axes and labels?\" toggle={onIncludeAxes} checked={includeAxes} />\n <Toggle\n label=\"Constrain to standard coordinate grid?\"\n toggle={onStandardGridChanged}\n checked={standardGrid}\n />\n {includeAxes ? axesConfig : gridlinesConfig}\n {dimensionsEnabled && (\n <div className={classes.dimensions}>\n <div>\n <Typography>Dimensions(px)</Typography>\n <Typography className={classes.disabled}>\n Min {sizeConstraints.min}, Max {sizeConstraints.max}\n </Typography>\n </div>\n <NumberTextFieldCustom\n className={classes.textField}\n label=\"Width\"\n value={size.width}\n min={sizeConstraints.min}\n max={sizeConstraints.max}\n step={sizeConstraints.step}\n variant=\"outlined\"\n onChange={(e, v) => onSizeChanged('width', v)}\n />\n <NumberTextFieldCustom\n className={classes.textField}\n label=\"Height\"\n value={size.height}\n min={sizeConstraints.min}\n max={sizeConstraints.max}\n step={sizeConstraints.step}\n variant=\"outlined\"\n disabled={standardGrid}\n onChange={(e, v) => onSizeChanged('height', v)}\n />\n </div>\n )}\n </div>\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n );\n};\n\nGridSetup.propTypes = {\n classes: PropTypes.object,\n domain: PropTypes.object,\n dimensionsEnabled: PropTypes.object,\n gridValues: PropTypes.object,\n includeAxes: PropTypes.bool,\n labelValues: PropTypes.object,\n onChange: PropTypes.function,\n range: PropTypes.object,\n size: PropTypes.object,\n sizeConstraints: PropTypes.object,\n standardGrid: PropTypes.bool\n};\n\nconst styles = theme => ({\n wrapper: {\n width: '450px'\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%'\n },\n columnView: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n },\n rowView: {\n display: 'flex',\n justifyContent: 'space-around',\n alignItems: 'center'\n },\n textField: {\n width: '130px',\n margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`\n },\n mediumTextField: {\n width: '160px',\n margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`\n },\n largeTextField: {\n width: '230px',\n margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`\n },\n text: {\n fontStyle: 'italic',\n margin: `${theme.spacing.unit}px 0`\n },\n dimensions: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center'\n },\n disabled: {\n color: color.disabled()\n },\n axisLabel: {\n paddingTop: theme.spacing.unit * 2\n }\n});\n\nexport default withStyles(styles)(GridSetup);\n"],"file":"grid-setup.js"}
package/lib/grid.js CHANGED
@@ -127,13 +127,6 @@ var Grid = /*#__PURE__*/function (_React$Component) {
127
127
  }
128
128
 
129
129
  _createClass(Grid, [{
130
- key: "shouldComponentUpdate",
131
- value: function shouldComponentUpdate(nextProps) {
132
- var graphProps = this.props.graphProps;
133
- var nextGraphProps = nextProps.graphProps;
134
- return !_plot.utils.isDomainRangeEqual(graphProps, nextGraphProps);
135
- }
136
- }, {
137
130
  key: "render",
138
131
  value: function render() {
139
132
  var _this2 = this;
package/lib/grid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/grid.jsx"],"names":["Grid","rowTickValues","columnTickValues","props","graphProps","scale","size","width","height","domain","range","rowTickLabelValues","step","labelStep","filter","value","includes","columnTickLabelValues","minValueLength","length","Math","min","toString","replace","maxValueLength","max","rowLabelLength","horizontalDistanceToZero","x","verticalDistanceToZero","y","columnLabelLength","rowStrokeDasharray","columnStrokeDasharray","displayAdditionalGrid","filteredColumnValues","filteredRowValues","nextProps","nextGraphProps","utils","isDomainRangeEqual","classes","getAdditionalGridProps","r","grid","color","primary","React","Component","disabled","PropTypes","bool","disabledAdditionalGrid","object","isRequired","types","GraphPropsType","stroke"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as vx from '@vx/grid';\nimport { types, utils } from '@pie-lib/plot';\nimport { color } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getTickValues } from './utils';\n\nexport class Grid extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n disabledAdditionalGrid: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n graphProps: types.GraphPropsType.isRequired\n };\n\n shouldComponentUpdate(nextProps) {\n const { graphProps } = this.props;\n const { graphProps: nextGraphProps } = nextProps;\n\n return !utils.isDomainRangeEqual(graphProps, nextGraphProps);\n }\n\n getAdditionalGridProps = (rowTickValues, columnTickValues) => {\n const {\n graphProps: {\n scale,\n size: { width, height },\n domain,\n range\n }\n } = this.props;\n const rowTickLabelValues = getTickValues({\n ...range,\n step: range.labelStep\n }).filter(value => rowTickValues.includes(value));\n const columnTickLabelValues = getTickValues({\n ...domain,\n step: domain.labelStep\n }).filter(value => columnTickValues.includes(value));\n\n const minValueLength =\n (rowTickLabelValues.length &&\n Math.min(...rowTickLabelValues)\n .toString()\n .replace(/[.-]/g, '').length) ||\n 1;\n const maxValueLength =\n (rowTickLabelValues.length &&\n Math.max(...rowTickLabelValues)\n .toString()\n .replace(/[.-]/g, '').length) ||\n 1;\n\n const rowLabelLength = Math.max(minValueLength, maxValueLength) * 9 + 22;\n const horizontalDistanceToZero = scale.x(0);\n const verticalDistanceToZero = scale.y(0);\n const columnLabelLength = 28;\n const rowStrokeDasharray = `${horizontalDistanceToZero -\n rowLabelLength} ${rowLabelLength} ${width}`;\n const columnStrokeDasharray = `${verticalDistanceToZero} ${columnLabelLength} ${height}`;\n\n const displayAdditionalGrid =\n domain.labelStep > 0 &&\n range.labelStep > 0 &&\n rowTickLabelValues &&\n columnTickLabelValues &&\n rowTickLabelValues.length > 1 &&\n columnTickLabelValues.length > 1 &&\n (rowTickLabelValues.length !== rowTickValues.length ||\n columnTickLabelValues.length !== columnTickValues.length);\n\n const filteredColumnValues = columnTickLabelValues.filter(\n value => value >= 0 || horizontalDistanceToZero - scale.x(value) > rowLabelLength\n );\n const filteredRowValues = rowTickLabelValues.filter(\n value => value >= 0 || scale.y(value) - verticalDistanceToZero > columnLabelLength\n );\n\n return {\n rowTickLabelValues: filteredRowValues,\n columnTickLabelValues: filteredColumnValues,\n rowStrokeDasharray,\n columnStrokeDasharray,\n displayAdditionalGrid\n };\n };\n\n render() {\n const { classes, graphProps } = this.props;\n const {\n scale,\n size: { height, width },\n domain,\n range\n } = graphProps;\n const rowTickValues = getTickValues(range);\n const columnTickValues = getTickValues(domain);\n const {\n rowTickLabelValues,\n columnTickLabelValues,\n rowStrokeDasharray,\n columnStrokeDasharray,\n displayAdditionalGrid\n } = this.getAdditionalGridProps(rowTickValues, columnTickValues);\n\n return (\n <>\n <vx.Grid\n innerRef={r => (this.grid = r)}\n xScale={scale.x}\n yScale={scale.y}\n width={width}\n height={height}\n className={classes.grid}\n rowTickValues={rowTickValues}\n columnTickValues={columnTickValues}\n />\n {displayAdditionalGrid && (\n <>\n <vx.GridRows\n scale={scale.y}\n width={width}\n tickValues={rowTickLabelValues}\n stroke={color.primary()}\n strokeDasharray={rowStrokeDasharray}\n />\n <vx.GridColumns\n scale={scale.x}\n height={height}\n tickValues={columnTickLabelValues}\n stroke={color.primary()}\n strokeDasharray={columnStrokeDasharray}\n />\n </>\n )}\n </>\n );\n }\n}\n\nexport default withStyles(() => ({\n grid: {\n stroke: 'purple' // TODO hardcoded color\n }\n}))(Grid);\n"],"file":"grid.js"}
1
+ {"version":3,"sources":["../src/grid.jsx"],"names":["Grid","rowTickValues","columnTickValues","props","graphProps","scale","size","width","height","domain","range","rowTickLabelValues","step","labelStep","filter","value","includes","columnTickLabelValues","minValueLength","length","Math","min","toString","replace","maxValueLength","max","rowLabelLength","horizontalDistanceToZero","x","verticalDistanceToZero","y","columnLabelLength","rowStrokeDasharray","columnStrokeDasharray","displayAdditionalGrid","filteredColumnValues","filteredRowValues","classes","getAdditionalGridProps","r","grid","color","primary","React","Component","disabled","PropTypes","bool","disabledAdditionalGrid","object","isRequired","types","GraphPropsType","stroke"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as vx from '@vx/grid';\nimport { types, utils } from '@pie-lib/plot';\nimport { color } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getTickValues } from './utils';\n\nexport class Grid extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n disabledAdditionalGrid: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n graphProps: types.GraphPropsType.isRequired\n };\n\n getAdditionalGridProps = (rowTickValues, columnTickValues) => {\n const {\n graphProps: {\n scale,\n size: { width, height },\n domain,\n range\n }\n } = this.props;\n const rowTickLabelValues = getTickValues({\n ...range,\n step: range.labelStep\n }).filter(value => rowTickValues.includes(value));\n const columnTickLabelValues = getTickValues({\n ...domain,\n step: domain.labelStep\n }).filter(value => columnTickValues.includes(value));\n\n const minValueLength =\n (rowTickLabelValues.length &&\n Math.min(...rowTickLabelValues)\n .toString()\n .replace(/[.-]/g, '').length) ||\n 1;\n const maxValueLength =\n (rowTickLabelValues.length &&\n Math.max(...rowTickLabelValues)\n .toString()\n .replace(/[.-]/g, '').length) ||\n 1;\n\n const rowLabelLength = Math.max(minValueLength, maxValueLength) * 9 + 22;\n const horizontalDistanceToZero = scale.x(0);\n const verticalDistanceToZero = scale.y(0);\n const columnLabelLength = 28;\n const rowStrokeDasharray = `${horizontalDistanceToZero -\n rowLabelLength} ${rowLabelLength} ${width}`;\n const columnStrokeDasharray = `${verticalDistanceToZero} ${columnLabelLength} ${height}`;\n\n const displayAdditionalGrid =\n domain.labelStep > 0 &&\n range.labelStep > 0 &&\n rowTickLabelValues &&\n columnTickLabelValues &&\n rowTickLabelValues.length > 1 &&\n columnTickLabelValues.length > 1 &&\n (rowTickLabelValues.length !== rowTickValues.length ||\n columnTickLabelValues.length !== columnTickValues.length);\n\n const filteredColumnValues = columnTickLabelValues.filter(\n value => value >= 0 || horizontalDistanceToZero - scale.x(value) > rowLabelLength\n );\n const filteredRowValues = rowTickLabelValues.filter(\n value => value >= 0 || scale.y(value) - verticalDistanceToZero > columnLabelLength\n );\n\n return {\n rowTickLabelValues: filteredRowValues,\n columnTickLabelValues: filteredColumnValues,\n rowStrokeDasharray,\n columnStrokeDasharray,\n displayAdditionalGrid\n };\n };\n\n render() {\n const { classes, graphProps } = this.props;\n const {\n scale,\n size: { height, width },\n domain,\n range\n } = graphProps;\n const rowTickValues = getTickValues(range);\n const columnTickValues = getTickValues(domain);\n const {\n rowTickLabelValues,\n columnTickLabelValues,\n rowStrokeDasharray,\n columnStrokeDasharray,\n displayAdditionalGrid\n } = this.getAdditionalGridProps(rowTickValues, columnTickValues);\n\n return (\n <>\n <vx.Grid\n innerRef={r => (this.grid = r)}\n xScale={scale.x}\n yScale={scale.y}\n width={width}\n height={height}\n className={classes.grid}\n rowTickValues={rowTickValues}\n columnTickValues={columnTickValues}\n />\n {displayAdditionalGrid && (\n <>\n <vx.GridRows\n scale={scale.y}\n width={width}\n tickValues={rowTickLabelValues}\n stroke={color.primary()}\n strokeDasharray={rowStrokeDasharray}\n />\n <vx.GridColumns\n scale={scale.x}\n height={height}\n tickValues={columnTickLabelValues}\n stroke={color.primary()}\n strokeDasharray={columnStrokeDasharray}\n />\n </>\n )}\n </>\n );\n }\n}\n\nexport default withStyles(() => ({\n grid: {\n stroke: 'purple' // TODO hardcoded color\n }\n}))(Grid);\n"],"file":"grid.js"}
package/lib/index.js CHANGED
@@ -17,6 +17,12 @@ Object.defineProperty(exports, "GraphContainer", {
17
17
  return _container["default"];
18
18
  }
19
19
  });
20
+ Object.defineProperty(exports, "GridSetup", {
21
+ enumerable: true,
22
+ get: function get() {
23
+ return _gridSetup["default"];
24
+ }
25
+ });
20
26
  Object.defineProperty(exports, "ToolMenu", {
21
27
  enumerable: true,
22
28
  get: function get() {
@@ -29,6 +35,8 @@ var _graph = _interopRequireDefault(require("./graph"));
29
35
 
30
36
  var _container = _interopRequireDefault(require("./container"));
31
37
 
38
+ var _gridSetup = _interopRequireDefault(require("./grid-setup"));
39
+
32
40
  var tools = _interopRequireWildcard(require("./tools"));
33
41
 
34
42
  exports.tools = tools;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;AACA","sourcesContent":["import Graph from './graph';\nimport GraphContainer from './container';\nimport * as tools from './tools';\nimport ToolMenu from './tool-menu';\n\nexport { Graph, GraphContainer, ToolMenu, tools };\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AACA","sourcesContent":["import Graph from './graph';\nimport GraphContainer from './container';\nimport GridSetup from './grid-setup';\nimport * as tools from './tools';\nimport ToolMenu from './tool-menu';\n\nexport { Graph, GraphContainer, GridSetup, ToolMenu, tools };\n"],"file":"index.js"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "2.6.0",
6
+ "version": "2.6.3",
7
7
  "description": "Graphing components",
8
8
  "keywords": [
9
9
  "react",
@@ -20,7 +20,7 @@
20
20
  "@material-ui/core": "^3.8.3",
21
21
  "@pie-lib/graphing-utils": "^1.1.20",
22
22
  "@pie-lib/plot": "^2.2.0",
23
- "@pie-lib/render-ui": "^4.12.6",
23
+ "@pie-lib/render-ui": "^4.12.9",
24
24
  "@vx/axis": "^0.0.189",
25
25
  "@vx/clip-path": "^0.0.189",
26
26
  "@vx/event": "^0.0.189",
@@ -43,6 +43,6 @@
43
43
  "peerDependencies": {
44
44
  "react": "^16.8.1"
45
45
  },
46
- "gitHead": "84fbd889875b1e3a0539451a940fb772fc46162a",
46
+ "gitHead": "531a7f4895323a9d524cfb96f7e26a5f1ab9f7c1",
47
47
  "scripts": {}
48
48
  }
@@ -0,0 +1,360 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { color, InputContainer } from '@pie-lib/render-ui';
4
+ import { withStyles } from '@material-ui/core/styles';
5
+ import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';
6
+ import Typography from '@material-ui/core/Typography';
7
+ import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
8
+ import ExpansionPanel from '@material-ui/core/ExpansionPanel';
9
+ import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
10
+ import { NumberTextFieldCustom, Toggle } from '@pie-lib/config-ui';
11
+ import EditableHTML from '@pie-lib/editable-html';
12
+
13
+ const GridConfig = props => {
14
+ const { classes, disabled, labelValue, labelValues, gridValue, gridValues, onChange } = props;
15
+
16
+ return (
17
+ <div className={classes.columnView}>
18
+ <NumberTextFieldCustom
19
+ className={classes.mediumTextField}
20
+ label="Grid Interval"
21
+ value={gridValue}
22
+ customValues={gridValues}
23
+ variant="outlined"
24
+ disabled={disabled}
25
+ onChange={(e, v) => onChange('step', v)}
26
+ />
27
+ <NumberTextFieldCustom
28
+ className={classes.mediumTextField}
29
+ label="Label Interval"
30
+ value={labelValue}
31
+ customValues={labelValues}
32
+ variant="outlined"
33
+ disabled={disabled}
34
+ onChange={(e, v) => onChange('labelStep', v)}
35
+ />
36
+ </div>
37
+ );
38
+ };
39
+
40
+ const AxisConfig = props => {
41
+ const { classes, disabled, label, maxValue, minValue, onChange, type } = props;
42
+ const activePlugins = [
43
+ 'bold',
44
+ 'italic',
45
+ 'underline',
46
+ 'strikethrough'
47
+ // 'languageCharacters'
48
+ ];
49
+
50
+ return (
51
+ <div className={classes.columnView}>
52
+ <Typography variant="subtitle2">
53
+ <i>{type === 'domain' ? 'x' : 'y'}</i>
54
+ -axis
55
+ </Typography>
56
+ <NumberTextFieldCustom
57
+ className={classes.mediumTextField}
58
+ label="Min Value"
59
+ value={minValue}
60
+ min={-10000}
61
+ max={maxValue - 0.01}
62
+ variant="outlined"
63
+ disabled={disabled}
64
+ onChange={(e, v) => onChange('min', v)}
65
+ />
66
+ <NumberTextFieldCustom
67
+ className={classes.mediumTextField}
68
+ label="Max Value"
69
+ value={maxValue}
70
+ min={minValue + 0.01}
71
+ max={10000}
72
+ variant="outlined"
73
+ disabled={disabled}
74
+ onChange={(e, v) => onChange('max', v)}
75
+ />
76
+ <InputContainer label="Label" className={classes.mediumTextField}>
77
+ <EditableHTML
78
+ className={classes.axisLabel}
79
+ onChange={value => onChange('axisLabel', value)}
80
+ markup={label || ''}
81
+ charactersLimit={5}
82
+ activePlugins={activePlugins}
83
+ />
84
+ </InputContainer>
85
+ </div>
86
+ );
87
+ };
88
+
89
+ const GridSetup = props => {
90
+ const {
91
+ classes,
92
+ domain,
93
+ dimensionsEnabled,
94
+ gridValues = {},
95
+ includeAxes,
96
+ labelValues = {},
97
+ onChange,
98
+ range,
99
+ size,
100
+ sizeConstraints,
101
+ standardGrid
102
+ } = props;
103
+ const gridProps = { min: 2, max: 41 };
104
+
105
+ const onIncludeAxes = includeAxes => {
106
+ const noAxesConfig = type => {
107
+ const axis = type === 'domain' ? domain : range;
108
+
109
+ return {
110
+ min: 1,
111
+ max: axis.max < gridProps.min || axis.max > gridProps.max ? 16 : axis.max,
112
+ step: 1,
113
+ labelStep: 0
114
+ };
115
+ };
116
+
117
+ const updatedRange = {
118
+ ...range,
119
+ ...(includeAxes ? { labelStep: 1 } : noAxesConfig('range'))
120
+ };
121
+ const updatedDomain = {
122
+ ...domain,
123
+ ...(includeAxes ? { labelStep: 1 } : noAxesConfig('domain'))
124
+ };
125
+
126
+ onChange({ includeAxes, range: updatedRange, domain: updatedDomain });
127
+ };
128
+
129
+ const onStandardGridChanged = value => {
130
+ onChange({
131
+ standardGrid: value,
132
+ range: {
133
+ ...domain,
134
+ axisLabel: range.axisLabel
135
+ },
136
+ graph: {
137
+ ...size,
138
+ height: size.width
139
+ }
140
+ });
141
+ };
142
+
143
+ const onSizeChanged = (key, value) => {
144
+ const graph = { ...size, [key]: value };
145
+
146
+ if (standardGrid) {
147
+ graph.height = value;
148
+ }
149
+
150
+ onChange({ graph });
151
+ };
152
+
153
+ const onDomainChanged = (key, value) => {
154
+ domain[key] = value;
155
+
156
+ if (standardGrid && key !== 'axisLabel') {
157
+ range[key] = value;
158
+ }
159
+
160
+ onChange({ domain, range });
161
+ };
162
+
163
+ const onRangeChanged = (key, value) => {
164
+ range[key] = value;
165
+
166
+ onChange({ range });
167
+ };
168
+
169
+ const axesConfig = (
170
+ <React.Fragment>
171
+ <div className={classes.rowView}>
172
+ <AxisConfig
173
+ classes={classes}
174
+ type="domain"
175
+ minValue={domain.min}
176
+ maxValue={domain.max}
177
+ label={domain.axisLabel}
178
+ includeAxes={includeAxes}
179
+ onChange={onDomainChanged}
180
+ />
181
+ <AxisConfig
182
+ classes={classes}
183
+ type="range"
184
+ minValue={range.min}
185
+ maxValue={range.max}
186
+ label={range.axisLabel}
187
+ disabled={standardGrid}
188
+ includeAxes={includeAxes}
189
+ onChange={onRangeChanged}
190
+ />
191
+ </div>
192
+ <Typography className={classes.text}>
193
+ If you want the axis to be visible, use a zero or negative Min Value, and a positive Max
194
+ Value
195
+ </Typography>
196
+ <div className={classes.rowView}>
197
+ <GridConfig
198
+ classes={classes}
199
+ gridValue={domain.step}
200
+ labelValue={domain.labelStep}
201
+ gridValues={gridValues.domain || []}
202
+ labelValues={labelValues.domain || []}
203
+ onChange={onDomainChanged}
204
+ />
205
+ <GridConfig
206
+ classes={classes}
207
+ disabled={standardGrid}
208
+ gridValue={range.step}
209
+ labelValue={range.labelStep}
210
+ gridValues={gridValues.range || []}
211
+ labelValues={labelValues.range || []}
212
+ onChange={onRangeChanged}
213
+ />
214
+ </div>
215
+ <Typography className={classes.text}>
216
+ For unnumbered gridlines, enter a label interval of 0
217
+ </Typography>
218
+ </React.Fragment>
219
+ );
220
+
221
+ const gridlinesConfig = (
222
+ <div className={classes.columnView}>
223
+ <NumberTextFieldCustom
224
+ className={classes.largeTextField}
225
+ label="Number of Horizontal Gridlines"
226
+ value={domain.max}
227
+ min={!includeAxes && gridProps.min}
228
+ max={!includeAxes && gridProps.max}
229
+ variant="outlined"
230
+ onChange={(e, v) => onDomainChanged('max', v)}
231
+ />
232
+ <NumberTextFieldCustom
233
+ className={classes.largeTextField}
234
+ label="Number of Vertical Gridlines"
235
+ value={range.max}
236
+ min={!includeAxes && gridProps.min}
237
+ max={!includeAxes && gridProps.max}
238
+ variant="outlined"
239
+ disabled={standardGrid}
240
+ onChange={(e, v) => onRangeChanged('max', v)}
241
+ />
242
+ </div>
243
+ );
244
+
245
+ return (
246
+ <div className={classes.wrapper}>
247
+ <ExpansionPanel>
248
+ <ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>
249
+ <Typography variant="subtitle1">Customize Grid Setup</Typography>
250
+ </ExpansionPanelSummary>
251
+ <ExpansionPanelDetails>
252
+ <div className={classes.content}>
253
+ <Toggle label="Include axes and labels?" toggle={onIncludeAxes} checked={includeAxes} />
254
+ <Toggle
255
+ label="Constrain to standard coordinate grid?"
256
+ toggle={onStandardGridChanged}
257
+ checked={standardGrid}
258
+ />
259
+ {includeAxes ? axesConfig : gridlinesConfig}
260
+ {dimensionsEnabled && (
261
+ <div className={classes.dimensions}>
262
+ <div>
263
+ <Typography>Dimensions(px)</Typography>
264
+ <Typography className={classes.disabled}>
265
+ Min {sizeConstraints.min}, Max {sizeConstraints.max}
266
+ </Typography>
267
+ </div>
268
+ <NumberTextFieldCustom
269
+ className={classes.textField}
270
+ label="Width"
271
+ value={size.width}
272
+ min={sizeConstraints.min}
273
+ max={sizeConstraints.max}
274
+ step={sizeConstraints.step}
275
+ variant="outlined"
276
+ onChange={(e, v) => onSizeChanged('width', v)}
277
+ />
278
+ <NumberTextFieldCustom
279
+ className={classes.textField}
280
+ label="Height"
281
+ value={size.height}
282
+ min={sizeConstraints.min}
283
+ max={sizeConstraints.max}
284
+ step={sizeConstraints.step}
285
+ variant="outlined"
286
+ disabled={standardGrid}
287
+ onChange={(e, v) => onSizeChanged('height', v)}
288
+ />
289
+ </div>
290
+ )}
291
+ </div>
292
+ </ExpansionPanelDetails>
293
+ </ExpansionPanel>
294
+ </div>
295
+ );
296
+ };
297
+
298
+ GridSetup.propTypes = {
299
+ classes: PropTypes.object,
300
+ domain: PropTypes.object,
301
+ dimensionsEnabled: PropTypes.object,
302
+ gridValues: PropTypes.object,
303
+ includeAxes: PropTypes.bool,
304
+ labelValues: PropTypes.object,
305
+ onChange: PropTypes.function,
306
+ range: PropTypes.object,
307
+ size: PropTypes.object,
308
+ sizeConstraints: PropTypes.object,
309
+ standardGrid: PropTypes.bool
310
+ };
311
+
312
+ const styles = theme => ({
313
+ wrapper: {
314
+ width: '450px'
315
+ },
316
+ content: {
317
+ display: 'flex',
318
+ flexDirection: 'column',
319
+ width: '100%'
320
+ },
321
+ columnView: {
322
+ display: 'flex',
323
+ flexDirection: 'column',
324
+ alignItems: 'center'
325
+ },
326
+ rowView: {
327
+ display: 'flex',
328
+ justifyContent: 'space-around',
329
+ alignItems: 'center'
330
+ },
331
+ textField: {
332
+ width: '130px',
333
+ margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`
334
+ },
335
+ mediumTextField: {
336
+ width: '160px',
337
+ margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`
338
+ },
339
+ largeTextField: {
340
+ width: '230px',
341
+ margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`
342
+ },
343
+ text: {
344
+ fontStyle: 'italic',
345
+ margin: `${theme.spacing.unit}px 0`
346
+ },
347
+ dimensions: {
348
+ display: 'flex',
349
+ justifyContent: 'space-between',
350
+ alignItems: 'center'
351
+ },
352
+ disabled: {
353
+ color: color.disabled()
354
+ },
355
+ axisLabel: {
356
+ paddingTop: theme.spacing.unit * 2
357
+ }
358
+ });
359
+
360
+ export default withStyles(styles)(GridSetup);
package/src/grid.jsx CHANGED
@@ -14,13 +14,6 @@ export class Grid extends React.Component {
14
14
  graphProps: types.GraphPropsType.isRequired
15
15
  };
16
16
 
17
- shouldComponentUpdate(nextProps) {
18
- const { graphProps } = this.props;
19
- const { graphProps: nextGraphProps } = nextProps;
20
-
21
- return !utils.isDomainRangeEqual(graphProps, nextGraphProps);
22
- }
23
-
24
17
  getAdditionalGridProps = (rowTickValues, columnTickValues) => {
25
18
  const {
26
19
  graphProps: {
package/src/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import Graph from './graph';
2
2
  import GraphContainer from './container';
3
+ import GridSetup from './grid-setup';
3
4
  import * as tools from './tools';
4
5
  import ToolMenu from './tool-menu';
5
6
 
6
- export { Graph, GraphContainer, ToolMenu, tools };
7
+ export { Graph, GraphContainer, GridSetup, ToolMenu, tools };