@pie-lib/graphing 2.4.3-next.350 → 2.4.3-next.406
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/axis/arrow.js +15 -25
- package/lib/axis/arrow.js.map +1 -1
- package/lib/axis/axes.js +41 -73
- package/lib/axis/axes.js.map +1 -1
- package/lib/axis/index.js +1 -1
- package/lib/bg.js +20 -31
- package/lib/bg.js.map +1 -1
- package/lib/container/index.js +27 -41
- package/lib/container/index.js.map +1 -1
- package/lib/container/reducer.js +2 -2
- package/lib/container/reducer.js.map +1 -1
- package/lib/coordinates-label.js +5 -5
- package/lib/coordinates-label.js.map +1 -1
- package/lib/graph-with-controls.js +81 -43
- package/lib/graph-with-controls.js.map +1 -1
- package/lib/graph.js +45 -69
- package/lib/graph.js.map +1 -1
- package/lib/grid-setup.js +72 -27
- package/lib/grid-setup.js.map +1 -1
- package/lib/grid.js +28 -46
- package/lib/grid.js.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/labels.js +22 -38
- package/lib/labels.js.map +1 -1
- package/lib/mark-label.js +10 -20
- package/lib/mark-label.js.map +1 -1
- package/lib/toggle-bar.js +22 -33
- package/lib/toggle-bar.js.map +1 -1
- package/lib/tool-menu.js +21 -32
- package/lib/tool-menu.js.map +1 -1
- package/lib/tools/circle/bg-circle.js +27 -38
- package/lib/tools/circle/bg-circle.js.map +1 -1
- package/lib/tools/circle/component.js +36 -54
- package/lib/tools/circle/component.js.map +1 -1
- package/lib/tools/circle/index.js +5 -5
- package/lib/tools/circle/index.js.map +1 -1
- package/lib/tools/line/component.js +11 -25
- package/lib/tools/line/component.js.map +1 -1
- package/lib/tools/line/index.js +2 -2
- package/lib/tools/line/index.js.map +1 -1
- package/lib/tools/parabola/component.js +2 -2
- package/lib/tools/parabola/component.js.map +1 -1
- package/lib/tools/parabola/index.js +5 -5
- package/lib/tools/parabola/index.js.map +1 -1
- package/lib/tools/point/component.js +30 -47
- package/lib/tools/point/component.js.map +1 -1
- package/lib/tools/point/index.js +5 -5
- package/lib/tools/point/index.js.map +1 -1
- package/lib/tools/polygon/component.js +59 -107
- package/lib/tools/polygon/component.js.map +1 -1
- package/lib/tools/polygon/index.js +9 -19
- package/lib/tools/polygon/index.js.map +1 -1
- package/lib/tools/polygon/line.js +28 -41
- package/lib/tools/polygon/line.js.map +1 -1
- package/lib/tools/polygon/polygon.js +28 -42
- package/lib/tools/polygon/polygon.js.map +1 -1
- package/lib/tools/ray/component.js +11 -25
- package/lib/tools/ray/component.js.map +1 -1
- package/lib/tools/ray/index.js +2 -2
- package/lib/tools/ray/index.js.map +1 -1
- package/lib/tools/segment/component.js +8 -11
- package/lib/tools/segment/component.js.map +1 -1
- package/lib/tools/segment/index.js +2 -2
- package/lib/tools/segment/index.js.map +1 -1
- package/lib/tools/shared/arrow-head.js +2 -2
- package/lib/tools/shared/arrow-head.js.map +1 -1
- package/lib/tools/shared/line/index.js +43 -66
- package/lib/tools/shared/line/index.js.map +1 -1
- package/lib/tools/shared/line/line-path.js +29 -42
- package/lib/tools/shared/line/line-path.js.map +1 -1
- package/lib/tools/shared/line/with-root-edge.js +12 -14
- package/lib/tools/shared/line/with-root-edge.js.map +1 -1
- package/lib/tools/shared/point/arrow-point.js +24 -39
- package/lib/tools/shared/point/arrow-point.js.map +1 -1
- package/lib/tools/shared/point/arrow.js +23 -37
- package/lib/tools/shared/point/arrow.js.map +1 -1
- package/lib/tools/shared/point/base-point.js +24 -38
- package/lib/tools/shared/point/base-point.js.map +1 -1
- package/lib/tools/shared/point/index.js +6 -6
- package/lib/tools/shared/point/index.js.map +1 -1
- package/lib/tools/shared/styles.js +7 -5
- package/lib/tools/shared/styles.js.map +1 -1
- package/lib/tools/shared/types.js +2 -2
- package/lib/tools/shared/types.js.map +1 -1
- package/lib/tools/sine/component.js +2 -2
- package/lib/tools/sine/component.js.map +1 -1
- package/lib/tools/sine/index.js +5 -5
- package/lib/tools/sine/index.js.map +1 -1
- package/lib/tools/vector/component.js +8 -11
- package/lib/tools/vector/component.js.map +1 -1
- package/lib/tools/vector/index.js +2 -2
- package/lib/tools/vector/index.js.map +1 -1
- package/lib/undo-redo.js +19 -31
- package/lib/undo-redo.js.map +1 -1
- package/lib/use-debounce.js +5 -13
- package/lib/use-debounce.js.map +1 -1
- package/lib/utils.js +2 -2
- package/lib/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/graph-with-controls.jsx +70 -13
- package/src/graph.jsx +2 -0
- package/src/grid-setup.jsx +155 -88
package/src/grid-setup.jsx
CHANGED
|
@@ -11,34 +11,59 @@ import { NumberTextFieldCustom, Toggle } from '@pie-lib/config-ui';
|
|
|
11
11
|
import EditableHTML from '@pie-lib/editable-html';
|
|
12
12
|
|
|
13
13
|
const GridConfig = props => {
|
|
14
|
-
const {
|
|
14
|
+
const {
|
|
15
|
+
classes,
|
|
16
|
+
disabled,
|
|
17
|
+
displayedFields,
|
|
18
|
+
labelValue,
|
|
19
|
+
labelValues,
|
|
20
|
+
gridValue,
|
|
21
|
+
gridValues,
|
|
22
|
+
onChange
|
|
23
|
+
} = props;
|
|
24
|
+
const { labelStep = {}, step = {} } = displayedFields;
|
|
15
25
|
|
|
16
26
|
return (
|
|
17
27
|
<div className={classes.columnView}>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
{step && step.enabled && (
|
|
29
|
+
<NumberTextFieldCustom
|
|
30
|
+
className={classes.mediumTextField}
|
|
31
|
+
label={step.label || ''}
|
|
32
|
+
value={gridValue}
|
|
33
|
+
customValues={gridValues}
|
|
34
|
+
variant="outlined"
|
|
35
|
+
disabled={disabled}
|
|
36
|
+
onChange={(e, v) => onChange('step', v)}
|
|
37
|
+
/>
|
|
38
|
+
)}
|
|
39
|
+
{labelStep && labelStep.enabled && (
|
|
40
|
+
<NumberTextFieldCustom
|
|
41
|
+
className={classes.mediumTextField}
|
|
42
|
+
label={labelStep.label || ''}
|
|
43
|
+
value={labelValue}
|
|
44
|
+
customValues={labelValues}
|
|
45
|
+
variant="outlined"
|
|
46
|
+
disabled={disabled}
|
|
47
|
+
onChange={(e, v) => onChange('labelStep', v)}
|
|
48
|
+
/>
|
|
49
|
+
)}
|
|
36
50
|
</div>
|
|
37
51
|
);
|
|
38
52
|
};
|
|
39
53
|
|
|
40
54
|
const AxisConfig = props => {
|
|
41
|
-
const {
|
|
55
|
+
const {
|
|
56
|
+
classes,
|
|
57
|
+
disabled,
|
|
58
|
+
displayedFields,
|
|
59
|
+
displayHeader,
|
|
60
|
+
label,
|
|
61
|
+
maxValue,
|
|
62
|
+
minValue,
|
|
63
|
+
onChange,
|
|
64
|
+
type
|
|
65
|
+
} = props;
|
|
66
|
+
const { axisLabel = {}, min = {}, max = {} } = displayedFields;
|
|
42
67
|
const activePlugins = [
|
|
43
68
|
'bold',
|
|
44
69
|
'italic',
|
|
@@ -49,39 +74,47 @@ const AxisConfig = props => {
|
|
|
49
74
|
|
|
50
75
|
return (
|
|
51
76
|
<div className={classes.columnView}>
|
|
52
|
-
|
|
53
|
-
<
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
onChange={
|
|
80
|
-
markup={label || ''}
|
|
81
|
-
charactersLimit={5}
|
|
82
|
-
activePlugins={activePlugins}
|
|
77
|
+
{displayHeader && (
|
|
78
|
+
<Typography variant="subtitle2">
|
|
79
|
+
<i>{type === 'domain' ? 'x' : 'y'}</i>
|
|
80
|
+
-axis
|
|
81
|
+
</Typography>
|
|
82
|
+
)}
|
|
83
|
+
{min && min.enabled && (
|
|
84
|
+
<NumberTextFieldCustom
|
|
85
|
+
className={classes.mediumTextField}
|
|
86
|
+
label={min.label || ''}
|
|
87
|
+
value={minValue}
|
|
88
|
+
min={-10000}
|
|
89
|
+
max={maxValue - 0.01}
|
|
90
|
+
variant="outlined"
|
|
91
|
+
disabled={disabled}
|
|
92
|
+
onChange={(e, v) => onChange('min', v)}
|
|
93
|
+
/>
|
|
94
|
+
)}
|
|
95
|
+
{max && max.enabled && (
|
|
96
|
+
<NumberTextFieldCustom
|
|
97
|
+
className={classes.mediumTextField}
|
|
98
|
+
label={max.label || ''}
|
|
99
|
+
value={maxValue}
|
|
100
|
+
min={minValue + 0.01}
|
|
101
|
+
max={10000}
|
|
102
|
+
variant="outlined"
|
|
103
|
+
disabled={disabled}
|
|
104
|
+
onChange={(e, v) => onChange('max', v)}
|
|
83
105
|
/>
|
|
84
|
-
|
|
106
|
+
)}
|
|
107
|
+
{axisLabel && axisLabel.enabled && (
|
|
108
|
+
<InputContainer label={axisLabel.label || ''} className={classes.mediumTextField}>
|
|
109
|
+
<EditableHTML
|
|
110
|
+
className={classes.axisLabel}
|
|
111
|
+
onChange={value => onChange('axisLabel', value)}
|
|
112
|
+
markup={label || ''}
|
|
113
|
+
charactersLimit={5}
|
|
114
|
+
activePlugins={activePlugins}
|
|
115
|
+
/>
|
|
116
|
+
</InputContainer>
|
|
117
|
+
)}
|
|
85
118
|
</div>
|
|
86
119
|
);
|
|
87
120
|
};
|
|
@@ -90,7 +123,7 @@ const GridSetup = props => {
|
|
|
90
123
|
const {
|
|
91
124
|
classes,
|
|
92
125
|
domain,
|
|
93
|
-
|
|
126
|
+
displayedFields = {},
|
|
94
127
|
gridValues = {},
|
|
95
128
|
includeAxes,
|
|
96
129
|
labelValues = {},
|
|
@@ -101,6 +134,20 @@ const GridSetup = props => {
|
|
|
101
134
|
standardGrid
|
|
102
135
|
} = props;
|
|
103
136
|
const gridProps = { min: 2, max: 41 };
|
|
137
|
+
const {
|
|
138
|
+
axisLabel = {},
|
|
139
|
+
dimensionsEnabled,
|
|
140
|
+
includeAxesEnabled,
|
|
141
|
+
labelStep = {},
|
|
142
|
+
min = {},
|
|
143
|
+
max = {},
|
|
144
|
+
standardGridEnabled,
|
|
145
|
+
step = {}
|
|
146
|
+
} = displayedFields || {};
|
|
147
|
+
const displayAxisType =
|
|
148
|
+
min.enabled || max.enabled || axisLabel.enabled || step.enabled || labelStep.enabled;
|
|
149
|
+
const gridConfigFields = { step, labelStep };
|
|
150
|
+
const axisConfigFields = { min, max, axisLabel };
|
|
104
151
|
|
|
105
152
|
const onIncludeAxes = includeAxes => {
|
|
106
153
|
const noAxesConfig = type => {
|
|
@@ -171,6 +218,8 @@ const GridSetup = props => {
|
|
|
171
218
|
<div className={classes.rowView}>
|
|
172
219
|
<AxisConfig
|
|
173
220
|
classes={classes}
|
|
221
|
+
displayedFields={axisConfigFields}
|
|
222
|
+
displayHeader={displayAxisType}
|
|
174
223
|
type="domain"
|
|
175
224
|
minValue={domain.min}
|
|
176
225
|
maxValue={domain.max}
|
|
@@ -180,6 +229,8 @@ const GridSetup = props => {
|
|
|
180
229
|
/>
|
|
181
230
|
<AxisConfig
|
|
182
231
|
classes={classes}
|
|
232
|
+
displayedFields={axisConfigFields}
|
|
233
|
+
displayHeader={displayAxisType}
|
|
183
234
|
type="range"
|
|
184
235
|
minValue={range.min}
|
|
185
236
|
maxValue={range.max}
|
|
@@ -189,36 +240,44 @@ const GridSetup = props => {
|
|
|
189
240
|
onChange={onRangeChanged}
|
|
190
241
|
/>
|
|
191
242
|
</div>
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
243
|
+
{(min.enabled || max.enabled) && (
|
|
244
|
+
<Typography className={classes.text}>
|
|
245
|
+
If you want the axis to be visible, use a zero or negative Min Value, and a positive Max
|
|
246
|
+
Value
|
|
247
|
+
</Typography>
|
|
248
|
+
)}
|
|
249
|
+
{(step.enabled || labelStep.enabled) && (
|
|
250
|
+
<div className={classes.rowView}>
|
|
251
|
+
<GridConfig
|
|
252
|
+
classes={classes}
|
|
253
|
+
displayedFields={gridConfigFields}
|
|
254
|
+
gridValue={domain.step}
|
|
255
|
+
labelValue={domain.labelStep}
|
|
256
|
+
gridValues={gridValues.domain || []}
|
|
257
|
+
labelValues={labelValues.domain || []}
|
|
258
|
+
onChange={onDomainChanged}
|
|
259
|
+
/>
|
|
260
|
+
<GridConfig
|
|
261
|
+
classes={classes}
|
|
262
|
+
disabled={standardGrid}
|
|
263
|
+
displayedFields={gridConfigFields}
|
|
264
|
+
gridValue={range.step}
|
|
265
|
+
labelValue={range.labelStep}
|
|
266
|
+
gridValues={gridValues.range || []}
|
|
267
|
+
labelValues={labelValues.range || []}
|
|
268
|
+
onChange={onRangeChanged}
|
|
269
|
+
/>
|
|
270
|
+
</div>
|
|
271
|
+
)}
|
|
272
|
+
{labelStep.enabled && (
|
|
273
|
+
<Typography className={classes.text}>
|
|
274
|
+
For unnumbered gridlines, enter a label interval of 0
|
|
275
|
+
</Typography>
|
|
276
|
+
)}
|
|
218
277
|
</React.Fragment>
|
|
219
278
|
);
|
|
220
279
|
|
|
221
|
-
const gridlinesConfig = (
|
|
280
|
+
const gridlinesConfig = max.enabled ? (
|
|
222
281
|
<div className={classes.columnView}>
|
|
223
282
|
<NumberTextFieldCustom
|
|
224
283
|
className={classes.largeTextField}
|
|
@@ -240,7 +299,7 @@ const GridSetup = props => {
|
|
|
240
299
|
onChange={(e, v) => onRangeChanged('max', v)}
|
|
241
300
|
/>
|
|
242
301
|
</div>
|
|
243
|
-
);
|
|
302
|
+
) : null;
|
|
244
303
|
|
|
245
304
|
return (
|
|
246
305
|
<div className={classes.wrapper}>
|
|
@@ -250,12 +309,20 @@ const GridSetup = props => {
|
|
|
250
309
|
</ExpansionPanelSummary>
|
|
251
310
|
<ExpansionPanelDetails>
|
|
252
311
|
<div className={classes.content}>
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
312
|
+
{includeAxesEnabled && (
|
|
313
|
+
<Toggle
|
|
314
|
+
label="Include axes and labels?"
|
|
315
|
+
toggle={onIncludeAxes}
|
|
316
|
+
checked={includeAxes}
|
|
317
|
+
/>
|
|
318
|
+
)}
|
|
319
|
+
{standardGridEnabled && (
|
|
320
|
+
<Toggle
|
|
321
|
+
label="Constrain to standard coordinate grid?"
|
|
322
|
+
toggle={onStandardGridChanged}
|
|
323
|
+
checked={standardGrid}
|
|
324
|
+
/>
|
|
325
|
+
)}
|
|
259
326
|
{includeAxes ? axesConfig : gridlinesConfig}
|
|
260
327
|
{dimensionsEnabled && (
|
|
261
328
|
<div className={classes.dimensions}>
|
|
@@ -298,7 +365,7 @@ const GridSetup = props => {
|
|
|
298
365
|
GridSetup.propTypes = {
|
|
299
366
|
classes: PropTypes.object,
|
|
300
367
|
domain: PropTypes.object,
|
|
301
|
-
|
|
368
|
+
displayedFields: PropTypes.object,
|
|
302
369
|
gridValues: PropTypes.object,
|
|
303
370
|
includeAxes: PropTypes.bool,
|
|
304
371
|
labelValues: PropTypes.object,
|