@pie-lib/graphing 2.46.0-mui-update.0 → 3.0.0-next.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/CHANGELOG.md +8 -97
- package/lib/axis/axes.js +7 -13
- package/lib/axis/axes.js.map +1 -1
- package/lib/coordinates-label.js +2 -0
- package/lib/coordinates-label.js.map +1 -1
- package/lib/grid-setup.js +30 -36
- package/lib/grid-setup.js.map +1 -1
- package/lib/grid.js +1 -1
- package/lib/grid.js.map +1 -1
- package/lib/key-legend.js +6 -7
- package/lib/key-legend.js.map +1 -1
- package/lib/labels.js +4 -2
- package/lib/labels.js.map +1 -1
- package/lib/mark-label.js +16 -9
- package/lib/mark-label.js.map +1 -1
- package/lib/toggle-bar.js +12 -16
- package/lib/toggle-bar.js.map +1 -1
- package/lib/tool-menu.js +1 -3
- package/lib/tool-menu.js.map +1 -1
- package/lib/tools/circle/component.js +1 -2
- package/lib/tools/circle/component.js.map +1 -1
- package/lib/tools/point/component.js +1 -1
- package/lib/tools/point/component.js.map +1 -1
- package/lib/tools/polygon/component.js +2 -2
- package/lib/tools/polygon/component.js.map +1 -1
- package/lib/tools/polygon/line.js +2 -2
- package/lib/tools/polygon/line.js.map +1 -1
- package/lib/tools/shared/icons/CorrectSVG.js +9 -0
- package/lib/tools/shared/icons/CorrectSVG.js.map +1 -1
- package/lib/tools/shared/icons/IncorrectSVG.js +9 -0
- package/lib/tools/shared/icons/IncorrectSVG.js.map +1 -1
- package/lib/tools/shared/icons/MissingSVG.js +9 -0
- package/lib/tools/shared/icons/MissingSVG.js.map +1 -1
- package/lib/tools/shared/line/index.js +14 -6
- package/lib/tools/shared/line/index.js.map +1 -1
- package/lib/tools/shared/line/line-path.js +2 -3
- package/lib/tools/shared/line/line-path.js.map +1 -1
- package/lib/tools/shared/line/with-root-edge.js +1 -1
- package/lib/tools/shared/line/with-root-edge.js.map +1 -1
- package/lib/tools/shared/point/arrow-point.js +1 -3
- package/lib/tools/shared/point/arrow-point.js.map +1 -1
- package/lib/tools/shared/point/arrow.js +1 -2
- package/lib/tools/shared/point/arrow.js.map +1 -1
- package/package.json +25 -16
- package/src/__tests__/graph-with-controls.test.jsx +28 -11
- package/src/__tests__/graph.test.jsx +104 -168
- package/src/__tests__/grid.test.jsx +8 -6
- package/src/__tests__/labels.test.jsx +25 -8
- package/src/__tests__/mark-label.test.jsx +12 -17
- package/src/__tests__/toggle-bar.test.jsx +92 -17
- package/src/__tests__/tool-menu.test.jsx +61 -12
- package/src/__tests__/undo-redo.test.jsx +7 -8
- package/src/__tests__/utils.js +3 -0
- package/src/axis/__tests__/arrow.test.jsx +16 -17
- package/src/axis/__tests__/axes.test.jsx +118 -122
- package/src/axis/axes.jsx +7 -12
- package/src/coordinates-label.jsx +1 -0
- package/src/grid-setup.jsx +6 -6
- package/src/grid.jsx +1 -1
- package/src/key-legend.jsx +1 -1
- package/src/labels.jsx +2 -0
- package/src/mark-label.jsx +10 -1
- package/src/toggle-bar.jsx +7 -25
- package/src/tool-menu.jsx +1 -1
- package/src/tools/circle/__tests__/bg-circle.test.jsx +7 -9
- package/src/tools/circle/__tests__/component.test.jsx +17 -189
- package/src/tools/circle/component.jsx +1 -1
- package/src/tools/line/__tests__/component.test.jsx +7 -7
- package/src/tools/point/__tests__/component.test.jsx +18 -43
- package/src/tools/point/component.jsx +1 -1
- package/src/tools/polygon/__tests__/component.test.jsx +18 -162
- package/src/tools/polygon/__tests__/line.test.jsx +7 -10
- package/src/tools/polygon/__tests__/polygon.test.jsx +7 -8
- package/src/tools/polygon/component.jsx +2 -2
- package/src/tools/polygon/line.jsx +3 -2
- package/src/tools/ray/__tests__/component.test.jsx +7 -8
- package/src/tools/segment/__tests__/component.test.jsx +7 -8
- package/src/tools/shared/__tests__/arrow-head.test.jsx +14 -17
- package/src/tools/shared/icons/CorrectSVG.jsx +10 -0
- package/src/tools/shared/icons/IncorrectSVG.jsx +10 -0
- package/src/tools/shared/icons/MissingSVG.jsx +10 -0
- package/src/tools/shared/line/__tests__/index.test.jsx +19 -165
- package/src/tools/shared/line/__tests__/line-path.test.jsx +8 -8
- package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +22 -22
- package/src/tools/shared/line/index.jsx +13 -5
- package/src/tools/shared/line/line-path.jsx +2 -2
- package/src/tools/shared/line/with-root-edge.jsx +1 -1
- package/src/tools/shared/point/__tests__/arrow-point.test.jsx +15 -11
- package/src/tools/shared/point/__tests__/base-point.test.jsx +14 -11
- package/src/tools/shared/point/arrow-point.jsx +1 -1
- package/src/tools/shared/point/arrow.jsx +1 -1
- package/src/tools/vector/__tests__/component.test.jsx +7 -8
- package/src/__tests__/__snapshots__/graph-with-controls.test.jsx.snap +0 -237
- package/src/__tests__/__snapshots__/graph.test.jsx.snap +0 -211
- package/src/__tests__/__snapshots__/grid.test.jsx.snap +0 -54
- package/src/__tests__/__snapshots__/labels.test.jsx.snap +0 -30
- package/src/__tests__/__snapshots__/mark-label.test.jsx.snap +0 -45
- package/src/__tests__/__snapshots__/toggle-bar.test.jsx.snap +0 -7
- package/src/__tests__/__snapshots__/tool-menu.test.jsx.snap +0 -13
- package/src/__tests__/__snapshots__/undo-redo.test.jsx.snap +0 -14
- package/src/axis/__tests__/__snapshots__/arrow.test.jsx.snap +0 -33
- package/src/axis/__tests__/__snapshots__/axes.test.jsx.snap +0 -122
- package/src/tools/circle/__tests__/__snapshots__/bg-circle.test.jsx.snap +0 -46
- package/src/tools/circle/__tests__/__snapshots__/component.test.jsx.snap +0 -293
- package/src/tools/line/__tests__/__snapshots__/component.test.jsx.snap +0 -20
- package/src/tools/point/__tests__/__snapshots__/component.test.jsx.snap +0 -40
- package/src/tools/polygon/__tests__/__snapshots__/component.test.jsx.snap +0 -415
- package/src/tools/polygon/__tests__/__snapshots__/line.test.jsx.snap +0 -45
- package/src/tools/polygon/__tests__/__snapshots__/polygon.test.jsx.snap +0 -52
- package/src/tools/ray/__tests__/__snapshots__/component.test.jsx.snap +0 -23
- package/src/tools/segment/__tests__/__snapshots__/component.test.jsx.snap +0 -14
- package/src/tools/shared/__tests__/__snapshots__/arrow-head.test.jsx.snap +0 -27
- package/src/tools/shared/line/__tests__/__snapshots__/index.test.jsx.snap +0 -360
- package/src/tools/shared/line/__tests__/__snapshots__/line-path.test.jsx.snap +0 -58
- package/src/tools/shared/line/__tests__/__snapshots__/with-root-edge.test.jsx.snap +0 -63
- package/src/tools/shared/point/__tests__/__snapshots__/arrow-point.test.jsx.snap +0 -56
- package/src/tools/shared/point/__tests__/__snapshots__/base-point.test.jsx.snap +0 -44
- package/src/tools/vector/__tests__/__snapshots__/component.test.jsx.snap +0 -12
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { render } from '@pie-lib/test-utils';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import UndoRedo from '../undo-redo';
|
|
4
4
|
|
|
5
5
|
describe('UndoRedo', () => {
|
|
6
|
-
let w;
|
|
7
6
|
let onUndo = jest.fn();
|
|
8
7
|
let onRedo = jest.fn();
|
|
9
8
|
let onReset = jest.fn();
|
|
10
|
-
const
|
|
9
|
+
const renderComponent = (extras) => {
|
|
11
10
|
const defaults = {
|
|
12
11
|
onUndo,
|
|
13
12
|
onRedo,
|
|
14
13
|
onReset,
|
|
15
14
|
};
|
|
16
15
|
const props = { ...defaults, ...extras };
|
|
17
|
-
return
|
|
16
|
+
return render(<UndoRedo {...props} />);
|
|
18
17
|
};
|
|
19
|
-
describe('
|
|
20
|
-
it('renders', () => {
|
|
21
|
-
|
|
22
|
-
expect(
|
|
18
|
+
describe('rendering', () => {
|
|
19
|
+
it('renders without crashing', () => {
|
|
20
|
+
const { container } = renderComponent();
|
|
21
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
23
22
|
});
|
|
24
23
|
});
|
|
25
24
|
});
|
package/src/__tests__/utils.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { render } from '@pie-lib/test-utils';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { Arrow } from '../arrow';
|
|
4
4
|
|
|
5
5
|
describe('Arrow', () => {
|
|
6
|
-
let w;
|
|
7
6
|
let onChange = jest.fn();
|
|
8
|
-
const
|
|
7
|
+
const renderComponent = (extras) => {
|
|
9
8
|
const defaults = {
|
|
10
9
|
classes: {},
|
|
11
10
|
className: 'className',
|
|
@@ -16,24 +15,24 @@ describe('Arrow', () => {
|
|
|
16
15
|
},
|
|
17
16
|
};
|
|
18
17
|
const props = { ...defaults, ...extras };
|
|
19
|
-
return
|
|
18
|
+
return render(<Arrow {...props} />);
|
|
20
19
|
};
|
|
21
|
-
describe('
|
|
22
|
-
it('up', () => {
|
|
23
|
-
|
|
24
|
-
expect(
|
|
20
|
+
describe('rendering', () => {
|
|
21
|
+
it('renders with direction up', () => {
|
|
22
|
+
const { container } = renderComponent({ direction: 'up' });
|
|
23
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
25
24
|
});
|
|
26
|
-
it('down', () => {
|
|
27
|
-
|
|
28
|
-
expect(
|
|
25
|
+
it('renders with direction down', () => {
|
|
26
|
+
const { container } = renderComponent({ direction: 'down' });
|
|
27
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
29
28
|
});
|
|
30
|
-
it('left', () => {
|
|
31
|
-
|
|
32
|
-
expect(
|
|
29
|
+
it('renders with direction left', () => {
|
|
30
|
+
const { container } = renderComponent({ direction: 'left' });
|
|
31
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
33
32
|
});
|
|
34
|
-
it('right', () => {
|
|
35
|
-
|
|
36
|
-
expect(
|
|
33
|
+
it('renders with direction right', () => {
|
|
34
|
+
const { container } = renderComponent({ direction: 'right' });
|
|
35
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
37
36
|
});
|
|
38
37
|
});
|
|
39
38
|
});
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { render } from '@pie-lib/test-utils';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { graphProps } from '../../__tests__/utils';
|
|
4
4
|
|
|
5
5
|
import Axes, { RawXAxis, RawYAxis, firstNegativeValue, sharedValues } from '../axes';
|
|
6
6
|
|
|
7
7
|
describe('RawXAxis', () => {
|
|
8
|
-
let w;
|
|
9
8
|
let onChange = jest.fn();
|
|
10
|
-
const
|
|
9
|
+
const renderComponent = (extras) => {
|
|
11
10
|
const defaults = {
|
|
12
11
|
classes: {},
|
|
13
12
|
className: 'className',
|
|
@@ -19,22 +18,25 @@ describe('RawXAxis', () => {
|
|
|
19
18
|
up: true,
|
|
20
19
|
down: true,
|
|
21
20
|
},
|
|
21
|
+
columnTicksValues: [-1, 0, 1],
|
|
22
|
+
skipValues: [],
|
|
23
|
+
distanceFromOriginToFirstNegativeY: 0,
|
|
24
|
+
dy: 0,
|
|
22
25
|
};
|
|
23
26
|
const props = { ...defaults, ...extras };
|
|
24
|
-
return
|
|
27
|
+
return render(<RawXAxis {...props} />);
|
|
25
28
|
};
|
|
26
|
-
describe('
|
|
27
|
-
it('renders', () => {
|
|
28
|
-
|
|
29
|
-
expect(
|
|
29
|
+
describe('rendering', () => {
|
|
30
|
+
it('renders without crashing', () => {
|
|
31
|
+
const { container } = renderComponent();
|
|
32
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
30
33
|
});
|
|
31
34
|
});
|
|
32
35
|
});
|
|
33
36
|
|
|
34
37
|
describe('RawYAxis', () => {
|
|
35
|
-
let w;
|
|
36
38
|
let onChange = jest.fn();
|
|
37
|
-
const
|
|
39
|
+
const renderComponent = (extras) => {
|
|
38
40
|
const defaults = {
|
|
39
41
|
classes: {},
|
|
40
42
|
className: 'className',
|
|
@@ -46,14 +48,16 @@ describe('RawYAxis', () => {
|
|
|
46
48
|
up: true,
|
|
47
49
|
down: true,
|
|
48
50
|
},
|
|
51
|
+
rowTickValues: [-1, 0, 1],
|
|
52
|
+
skipValues: [],
|
|
49
53
|
};
|
|
50
54
|
const props = { ...defaults, ...extras };
|
|
51
|
-
return
|
|
55
|
+
return render(<RawYAxis {...props} />);
|
|
52
56
|
};
|
|
53
|
-
describe('
|
|
54
|
-
it('renders', () => {
|
|
55
|
-
|
|
56
|
-
expect(
|
|
57
|
+
describe('rendering', () => {
|
|
58
|
+
it('renders without crashing', () => {
|
|
59
|
+
const { container } = renderComponent();
|
|
60
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
57
61
|
});
|
|
58
62
|
});
|
|
59
63
|
});
|
|
@@ -61,11 +65,13 @@ describe('RawYAxis', () => {
|
|
|
61
65
|
const customScaleMock = (distance) => {
|
|
62
66
|
const fn = jest.fn((n) => n * distance);
|
|
63
67
|
fn.invert = jest.fn((n) => n * distance);
|
|
68
|
+
fn.domain = jest.fn(() => fn);
|
|
69
|
+
fn.range = jest.fn(() => fn);
|
|
70
|
+
fn.copy = jest.fn(() => customScaleMock(distance));
|
|
64
71
|
return fn;
|
|
65
72
|
};
|
|
66
73
|
|
|
67
|
-
describe
|
|
68
|
-
let w;
|
|
74
|
+
describe('Axes', () => {
|
|
69
75
|
let onChange = jest.fn();
|
|
70
76
|
|
|
71
77
|
const customGraphProps = {
|
|
@@ -88,7 +94,7 @@ describe.only('Axes', () => {
|
|
|
88
94
|
},
|
|
89
95
|
};
|
|
90
96
|
|
|
91
|
-
const
|
|
97
|
+
const renderComponent = (extras) => {
|
|
92
98
|
const defaults = {
|
|
93
99
|
classes: {},
|
|
94
100
|
className: 'className',
|
|
@@ -97,124 +103,114 @@ describe.only('Axes', () => {
|
|
|
97
103
|
};
|
|
98
104
|
|
|
99
105
|
const props = { ...defaults, ...extras };
|
|
100
|
-
return
|
|
106
|
+
return render(<Axes {...props} />);
|
|
101
107
|
};
|
|
102
|
-
describe('
|
|
103
|
-
it('renders', () => {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
expect(result).toEqual({
|
|
107
|
-
columnTicksValues: expect.arrayContaining([-2, -1, 0, 1, 2]),
|
|
108
|
-
distanceFromOriginToFirstNegativeX: 150,
|
|
109
|
-
firstNegativeX: -1,
|
|
110
|
-
});
|
|
108
|
+
describe('rendering', () => {
|
|
109
|
+
it('renders without crashing', () => {
|
|
110
|
+
const { container } = renderComponent();
|
|
111
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
111
112
|
});
|
|
112
113
|
});
|
|
113
|
-
describe('yValues', () => {
|
|
114
|
-
it('renders', () => {
|
|
115
|
-
w = wrapper();
|
|
116
|
-
const result = w.instance().yValues();
|
|
117
|
-
expect(result).toEqual({
|
|
118
|
-
rowTickValues: expect.arrayContaining([-2, -1, 0, 1, 2]),
|
|
119
|
-
distanceFromOriginToFirstNegativeY: 200,
|
|
120
|
-
firstNegativeY: -1,
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
describe('firstNegativeValue should return undefiend for undefined interval', () => {
|
|
127
|
-
const interval = undefined;
|
|
128
|
-
const result = firstNegativeValue(interval);
|
|
129
|
-
expect(result).toEqual(undefined);
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
describe('firstNegativeValue should return undefiend for empty interval', () => {
|
|
133
|
-
const interval = [];
|
|
134
|
-
const result = firstNegativeValue(interval);
|
|
135
|
-
expect(result).toEqual(undefined);
|
|
136
114
|
});
|
|
137
115
|
|
|
138
|
-
describe('firstNegativeValue
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
describe('firstNegativeValue should return first negative number from interval', () => {
|
|
145
|
-
const interval = [1, 5, 7, -2, 4, 5, -1];
|
|
146
|
-
const result = firstNegativeValue(interval);
|
|
147
|
-
expect(result).toEqual(-2);
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
describe('skipValue should be empty array if firstNegativeValue for one of the axes is undefined', () => {
|
|
151
|
-
// x
|
|
152
|
-
const intervalX = [1, 2, 3, 4, 5, 6];
|
|
153
|
-
const firstNegativeX = firstNegativeValue(intervalX);
|
|
154
|
-
const distanceFromOriginToFirstNegativeX = -22;
|
|
155
|
-
|
|
156
|
-
// y
|
|
157
|
-
const intervalY = [-1, -2, 1, 2, 3, 4, 5, 6];
|
|
158
|
-
const firstNegativeY = firstNegativeValue(intervalY);
|
|
159
|
-
const distanceFromOriginToFirstNegativeY = -22;
|
|
116
|
+
describe('firstNegativeValue', () => {
|
|
117
|
+
it('should return undefined for undefined interval', () => {
|
|
118
|
+
const interval = undefined;
|
|
119
|
+
const result = firstNegativeValue(interval);
|
|
120
|
+
expect(result).toEqual(undefined);
|
|
121
|
+
});
|
|
160
122
|
|
|
161
|
-
|
|
123
|
+
it('should return undefined for empty interval', () => {
|
|
124
|
+
const interval = [];
|
|
125
|
+
const result = firstNegativeValue(interval);
|
|
126
|
+
expect(result).toEqual(undefined);
|
|
127
|
+
});
|
|
162
128
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
deltaAllowance,
|
|
169
|
-
);
|
|
129
|
+
it('should return undefined if there is no negative in interval array', () => {
|
|
130
|
+
const interval = [1, 5, 7, 4, 5];
|
|
131
|
+
const result = firstNegativeValue(interval);
|
|
132
|
+
expect(result).toEqual(undefined);
|
|
133
|
+
});
|
|
170
134
|
|
|
171
|
-
|
|
135
|
+
it('should return first negative number from interval', () => {
|
|
136
|
+
const interval = [1, 5, 7, -2, 4, 5, -1];
|
|
137
|
+
const result = firstNegativeValue(interval);
|
|
138
|
+
expect(result).toEqual(-2);
|
|
139
|
+
});
|
|
172
140
|
});
|
|
173
141
|
|
|
174
|
-
describe('
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
142
|
+
describe('sharedValues', () => {
|
|
143
|
+
it('should be empty array if firstNegativeValue for one of the axes is undefined', () => {
|
|
144
|
+
// x
|
|
145
|
+
const intervalX = [1, 2, 3, 4, 5, 6];
|
|
146
|
+
const firstNegativeX = firstNegativeValue(intervalX);
|
|
147
|
+
const distanceFromOriginToFirstNegativeX = -22;
|
|
148
|
+
|
|
149
|
+
// y
|
|
150
|
+
const intervalY = [-1, -2, 1, 2, 3, 4, 5, 6];
|
|
151
|
+
const firstNegativeY = firstNegativeValue(intervalY);
|
|
152
|
+
const distanceFromOriginToFirstNegativeY = -22;
|
|
153
|
+
|
|
154
|
+
const deltaAllowance = 5;
|
|
155
|
+
|
|
156
|
+
const result = sharedValues(
|
|
157
|
+
firstNegativeX,
|
|
158
|
+
firstNegativeY,
|
|
159
|
+
distanceFromOriginToFirstNegativeX,
|
|
160
|
+
distanceFromOriginToFirstNegativeY,
|
|
161
|
+
deltaAllowance,
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
expect(result).toEqual([]);
|
|
165
|
+
});
|
|
194
166
|
|
|
195
|
-
|
|
196
|
-
|
|
167
|
+
it('should be empty array if firstNegativeX and firstNegativeY are equal but they do not overlap', () => {
|
|
168
|
+
// x
|
|
169
|
+
const intervalX = [-1, -2, 1, 2, 3, 4, 5, 6];
|
|
170
|
+
const firstNegativeX = firstNegativeValue(intervalX);
|
|
171
|
+
const distanceFromOriginToFirstNegativeX = -7;
|
|
197
172
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
const distanceFromOriginToFirstNegativeX = -20;
|
|
173
|
+
// y
|
|
174
|
+
const intervalY = [-1, -2, 1, 2, 3, 4, 5, 6];
|
|
175
|
+
const firstNegativeY = firstNegativeValue(intervalY);
|
|
176
|
+
const distanceFromOriginToFirstNegativeY = -22;
|
|
203
177
|
|
|
204
|
-
|
|
205
|
-
const intervalY = [-1, -2, 1, 2, 3, 4, 5, 6];
|
|
206
|
-
const firstNegativeY = firstNegativeValue(intervalY);
|
|
207
|
-
const distanceFromOriginToFirstNegativeY = -22;
|
|
178
|
+
const deltaAllowance = 5;
|
|
208
179
|
|
|
209
|
-
|
|
180
|
+
const result = sharedValues(
|
|
181
|
+
firstNegativeX,
|
|
182
|
+
firstNegativeY,
|
|
183
|
+
distanceFromOriginToFirstNegativeX,
|
|
184
|
+
distanceFromOriginToFirstNegativeY,
|
|
185
|
+
deltaAllowance,
|
|
186
|
+
);
|
|
210
187
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
firstNegativeY,
|
|
214
|
-
distanceFromOriginToFirstNegativeX,
|
|
215
|
-
distanceFromOriginToFirstNegativeY,
|
|
216
|
-
deltaAllowance,
|
|
217
|
-
);
|
|
188
|
+
expect(result).toEqual([]);
|
|
189
|
+
});
|
|
218
190
|
|
|
219
|
-
|
|
191
|
+
it('should be -1 if firstNegativeX and firstNegativeY are equal and they overlap', () => {
|
|
192
|
+
// x
|
|
193
|
+
const intervalX = [-1, -2, 1, 2, 3, 4, 5, 6];
|
|
194
|
+
const firstNegativeX = firstNegativeValue(intervalX);
|
|
195
|
+
const distanceFromOriginToFirstNegativeX = -20;
|
|
196
|
+
|
|
197
|
+
// y
|
|
198
|
+
const intervalY = [-1, -2, 1, 2, 3, 4, 5, 6];
|
|
199
|
+
const firstNegativeY = firstNegativeValue(intervalY);
|
|
200
|
+
const distanceFromOriginToFirstNegativeY = -22;
|
|
201
|
+
|
|
202
|
+
const deltaAllowance = 5;
|
|
203
|
+
const dy = -20; // dy needs to be within the range for the condition to pass
|
|
204
|
+
|
|
205
|
+
const result = sharedValues(
|
|
206
|
+
firstNegativeX,
|
|
207
|
+
firstNegativeY,
|
|
208
|
+
distanceFromOriginToFirstNegativeX,
|
|
209
|
+
distanceFromOriginToFirstNegativeY,
|
|
210
|
+
deltaAllowance,
|
|
211
|
+
dy,
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
expect(result).toEqual([-1]);
|
|
215
|
+
});
|
|
220
216
|
});
|
package/src/axis/axes.jsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Axis } from '@
|
|
2
|
+
import { Axis } from '@visx/axis';
|
|
3
3
|
import { types } from '@pie-lib/plot';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import Arrow from './arrow';
|
|
@@ -41,11 +41,11 @@ const StyledAxisLabelHolder = styled('div')(({ theme }) => ({
|
|
|
41
41
|
}));
|
|
42
42
|
|
|
43
43
|
const StyledAxesGroup = styled('g')(() => ({
|
|
44
|
-
'& .
|
|
44
|
+
'& .visx-axis-line': {
|
|
45
45
|
stroke: color.defaults.PRIMARY,
|
|
46
46
|
strokeWidth: 3,
|
|
47
47
|
},
|
|
48
|
-
'& .
|
|
48
|
+
'& .visx-axis-tick': {
|
|
49
49
|
fill: color.defaults.PRIMARY,
|
|
50
50
|
'& line': {
|
|
51
51
|
stroke: color.defaults.PRIMARY,
|
|
@@ -102,12 +102,6 @@ export class RawXAxis extends React.Component {
|
|
|
102
102
|
} = this.props;
|
|
103
103
|
const { scale, domain, size, range } = graphProps || {};
|
|
104
104
|
|
|
105
|
-
// Having 0 as a number in columnTicksValues does not make 0 to show up
|
|
106
|
-
// so we use this trick, by defining it as a string:
|
|
107
|
-
const tickValues =
|
|
108
|
-
(domain.labelStep || range.labelStep) && domain.min <= 0 ? ['0', ...columnTicksValues] : columnTicksValues;
|
|
109
|
-
// However, the '0' has to be displayed only if other tick labels (y-axis or x-axis) are displayed
|
|
110
|
-
|
|
111
105
|
const labelProps = (label) => {
|
|
112
106
|
const y = skipValues && skipValues[0] === label ? distanceFromOriginToFirstNegativeY + 4 : dy;
|
|
113
107
|
|
|
@@ -115,8 +109,8 @@ export class RawXAxis extends React.Component {
|
|
|
115
109
|
...tickLabelStyles,
|
|
116
110
|
textAnchor: 'middle',
|
|
117
111
|
y: y,
|
|
118
|
-
dx: label ===
|
|
119
|
-
dy: label ===
|
|
112
|
+
dx: label === 0 ? -10 : 0,
|
|
113
|
+
dy: label === 0 ? -7 : 0,
|
|
120
114
|
};
|
|
121
115
|
};
|
|
122
116
|
|
|
@@ -134,7 +128,8 @@ export class RawXAxis extends React.Component {
|
|
|
134
128
|
rangePadding={8}
|
|
135
129
|
tickFormat={(value) => value}
|
|
136
130
|
tickLabelProps={labelProps}
|
|
137
|
-
tickValues={
|
|
131
|
+
tickValues={columnTicksValues}
|
|
132
|
+
hideZero={!(domain.labelStep || range.labelStep) && domain.min <= 0}
|
|
138
133
|
/>
|
|
139
134
|
{includeArrows && includeArrows.left && (
|
|
140
135
|
<StyledArrow direction="left" x={domain.min} y={0} scale={scale} />
|
|
@@ -17,6 +17,7 @@ const StyledInputBase = styled(InputBase)(({ theme }) => ({
|
|
|
17
17
|
},
|
|
18
18
|
}));
|
|
19
19
|
|
|
20
|
+
// eslint-disable-next-line react/prop-types
|
|
20
21
|
export const getLabelPosition = (graphProps, x, y, labelLength) => {
|
|
21
22
|
const { scale, domain, range } = graphProps;
|
|
22
23
|
// treat corner cases for maximum and minimum
|
package/src/grid-setup.jsx
CHANGED
|
@@ -12,23 +12,23 @@ import { NumberTextFieldCustom, Toggle } from '@pie-lib/config-ui';
|
|
|
12
12
|
import EditableHTML from '@pie-lib/editable-html';
|
|
13
13
|
import { styled } from '@mui/material/styles';
|
|
14
14
|
|
|
15
|
-
const Wrapper = styled('div')((
|
|
15
|
+
const Wrapper = styled('div')(() => ({
|
|
16
16
|
width: '450px',
|
|
17
17
|
}));
|
|
18
18
|
|
|
19
|
-
const Content = styled('div')((
|
|
19
|
+
const Content = styled('div')(() => ({
|
|
20
20
|
display: 'flex',
|
|
21
21
|
flexDirection: 'column',
|
|
22
22
|
width: '100%',
|
|
23
23
|
}));
|
|
24
24
|
|
|
25
|
-
const ColumnView = styled('div')((
|
|
25
|
+
const ColumnView = styled('div')(() => ({
|
|
26
26
|
display: 'flex',
|
|
27
27
|
flexDirection: 'column',
|
|
28
28
|
alignItems: 'center',
|
|
29
29
|
}));
|
|
30
30
|
|
|
31
|
-
const RowView = styled('div')((
|
|
31
|
+
const RowView = styled('div')(() => ({
|
|
32
32
|
display: 'flex',
|
|
33
33
|
justifyContent: 'space-around',
|
|
34
34
|
alignItems: 'center',
|
|
@@ -60,13 +60,13 @@ const ItalicText = styled(Typography)(({ theme }) => ({
|
|
|
60
60
|
margin: `${theme.spacing(1)} 0`,
|
|
61
61
|
}));
|
|
62
62
|
|
|
63
|
-
const Dimensions = styled('div')((
|
|
63
|
+
const Dimensions = styled('div')(() => ({
|
|
64
64
|
display: 'flex',
|
|
65
65
|
justifyContent: 'space-between',
|
|
66
66
|
alignItems: 'center',
|
|
67
67
|
}));
|
|
68
68
|
|
|
69
|
-
const DisabledText = styled(Typography)((
|
|
69
|
+
const DisabledText = styled(Typography)(() => ({
|
|
70
70
|
color: color.disabled(),
|
|
71
71
|
}));
|
|
72
72
|
|
package/src/grid.jsx
CHANGED
package/src/key-legend.jsx
CHANGED
|
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import { styled } from '@mui/material/styles';
|
|
4
4
|
import { color } from '@pie-lib/render-ui';
|
|
5
5
|
|
|
6
|
-
const StyledContainer = styled('div')((
|
|
6
|
+
const StyledContainer = styled('div')(() => ({
|
|
7
7
|
backgroundColor: color.defaults.WHITE,
|
|
8
8
|
padding: '20px',
|
|
9
9
|
width: '355px',
|
package/src/labels.jsx
CHANGED
|
@@ -64,6 +64,7 @@ class RawLabel extends React.Component {
|
|
|
64
64
|
placeholder: PropTypes.string,
|
|
65
65
|
graphProps: types.GraphPropsType.isRequired,
|
|
66
66
|
onChange: PropTypes.func,
|
|
67
|
+
mathMlOptions: PropTypes.object,
|
|
67
68
|
};
|
|
68
69
|
|
|
69
70
|
static defaultProps = {
|
|
@@ -138,6 +139,7 @@ export class Labels extends React.Component {
|
|
|
138
139
|
value: PropTypes.shape(LabelType),
|
|
139
140
|
graphProps: PropTypes.object,
|
|
140
141
|
onChange: PropTypes.object,
|
|
142
|
+
mathMlOptions: PropTypes.object,
|
|
141
143
|
};
|
|
142
144
|
|
|
143
145
|
static defaultProps = {};
|
package/src/mark-label.jsx
CHANGED
|
@@ -38,7 +38,7 @@ const StyledInputMissing = styled('div')(({ theme }) => ({
|
|
|
38
38
|
fontWeight: 'bold',
|
|
39
39
|
}));
|
|
40
40
|
|
|
41
|
-
const StyledIncorrect = styled('div')((
|
|
41
|
+
const StyledIncorrect = styled('div')(() => ({
|
|
42
42
|
float: 'right',
|
|
43
43
|
padding: 0,
|
|
44
44
|
borderRadius: '4px',
|
|
@@ -116,6 +116,15 @@ const LabelInput = ({ _ref, externalInputRef, label, disabled, inputStyle, onCha
|
|
|
116
116
|
/>
|
|
117
117
|
);
|
|
118
118
|
|
|
119
|
+
LabelInput.propTypes = {
|
|
120
|
+
_ref: PropTypes.func,
|
|
121
|
+
externalInputRef: PropTypes.func,
|
|
122
|
+
label: PropTypes.string,
|
|
123
|
+
disabled: PropTypes.bool,
|
|
124
|
+
inputStyle: PropTypes.object,
|
|
125
|
+
onChange: PropTypes.func,
|
|
126
|
+
};
|
|
127
|
+
|
|
119
128
|
export const MarkLabel = (props) => {
|
|
120
129
|
const [input, setInput] = useState(null);
|
|
121
130
|
const _ref = useCallback((node) => setInput(node));
|
package/src/toggle-bar.jsx
CHANGED
|
@@ -60,9 +60,10 @@ MiniButton.propTypes = {
|
|
|
60
60
|
selected: PropTypes.bool,
|
|
61
61
|
value: PropTypes.string,
|
|
62
62
|
onClick: PropTypes.func,
|
|
63
|
+
language: PropTypes.string,
|
|
63
64
|
};
|
|
64
65
|
|
|
65
|
-
const StyledToolsContainer = styled('div')((
|
|
66
|
+
const StyledToolsContainer = styled('div')(() => ({
|
|
66
67
|
display: 'flex',
|
|
67
68
|
flexWrap: 'wrap',
|
|
68
69
|
}));
|
|
@@ -96,14 +97,12 @@ export class ToggleBar extends React.Component {
|
|
|
96
97
|
moveTool = (dragIndex, hoverIndex) => {
|
|
97
98
|
const { options, onChangeToolsOrder } = this.props;
|
|
98
99
|
const newOptions = arrayMove(options, dragIndex, hoverIndex);
|
|
99
|
-
console.log('New Options Order:', newOptions);
|
|
100
100
|
onChangeToolsOrder(newOptions);
|
|
101
101
|
};
|
|
102
102
|
|
|
103
103
|
handleDragEnd = (event) => {
|
|
104
104
|
const { active, over } = event;
|
|
105
|
-
|
|
106
|
-
console.log('Drag End Event:', event);
|
|
105
|
+
|
|
107
106
|
if (!over || !active) return;
|
|
108
107
|
|
|
109
108
|
const activeData = active.data.current;
|
|
@@ -112,7 +111,7 @@ export class ToggleBar extends React.Component {
|
|
|
112
111
|
if (activeData?.type === 'tool' && overData?.type === 'tool') {
|
|
113
112
|
const dragIndex = activeData.index;
|
|
114
113
|
const hoverIndex = overData.index;
|
|
115
|
-
|
|
114
|
+
|
|
116
115
|
if (dragIndex !== hoverIndex) {
|
|
117
116
|
this.moveTool(dragIndex, hoverIndex);
|
|
118
117
|
}
|
|
@@ -158,22 +157,8 @@ export class ToggleBar extends React.Component {
|
|
|
158
157
|
}
|
|
159
158
|
|
|
160
159
|
// DragTool functional component using @dnd-kit hooks
|
|
161
|
-
function DragTool({
|
|
162
|
-
|
|
163
|
-
index,
|
|
164
|
-
draggable,
|
|
165
|
-
moveTool,
|
|
166
|
-
toolRef,
|
|
167
|
-
value
|
|
168
|
-
}) {
|
|
169
|
-
const {
|
|
170
|
-
attributes,
|
|
171
|
-
listeners,
|
|
172
|
-
setNodeRef: setDragNodeRef,
|
|
173
|
-
transform,
|
|
174
|
-
transition,
|
|
175
|
-
isDragging,
|
|
176
|
-
} = useDraggable({
|
|
160
|
+
function DragTool({ children, index, draggable, toolRef, value }) {
|
|
161
|
+
const { attributes, listeners, setNodeRef: setDragNodeRef, transform, transition, isDragging } = useDraggable({
|
|
177
162
|
id: `tool-${value}-${index}`,
|
|
178
163
|
disabled: !draggable,
|
|
179
164
|
data: {
|
|
@@ -183,10 +168,7 @@ function DragTool({
|
|
|
183
168
|
},
|
|
184
169
|
});
|
|
185
170
|
|
|
186
|
-
const {
|
|
187
|
-
setNodeRef: setDropNodeRef,
|
|
188
|
-
isOver,
|
|
189
|
-
} = useDroppable({
|
|
171
|
+
const { setNodeRef: setDropNodeRef } = useDroppable({
|
|
190
172
|
id: `drop-tool-${value}-${index}`,
|
|
191
173
|
data: {
|
|
192
174
|
type: 'tool',
|
package/src/tool-menu.jsx
CHANGED
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
|
|
5
|
-
import ToggleBar
|
|
5
|
+
import ToggleBar from './toggle-bar';
|
|
6
6
|
|
|
7
7
|
export class ToolMenu extends React.Component {
|
|
8
8
|
static propTypes = {
|