@pie-lib/graphing 2.4.2 → 2.4.3-next.162
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 +18 -113
- package/lib/axis/arrow.js +5 -5
- package/lib/axis/arrow.js.map +1 -1
- package/lib/axis/axes.js +18 -28
- package/lib/axis/axes.js.map +1 -1
- package/lib/graph.js +4 -4
- package/lib/graph.js.map +1 -1
- package/lib/tools/line/component.js +8 -1
- package/lib/tools/line/component.js.map +1 -1
- package/lib/tools/ray/component.js +8 -1
- package/lib/tools/ray/component.js.map +1 -1
- package/lib/tools/shared/point/arrow.js +3 -1
- package/lib/tools/shared/point/arrow.js.map +1 -1
- package/lib/tools/shared/point/base-point.js +4 -1
- package/lib/tools/shared/point/base-point.js.map +1 -1
- package/lib/utils.js +50 -5
- package/lib/utils.js.map +1 -1
- package/package.json +2 -2
- package/src/axis/arrow.jsx +5 -5
- package/src/axis/axes.jsx +25 -36
- package/src/graph.jsx +4 -4
- package/src/tools/line/component.jsx +6 -1
- package/src/tools/ray/component.jsx +5 -1
- package/src/tools/shared/point/arrow.jsx +2 -1
- package/src/tools/shared/point/base-point.jsx +3 -1
- package/src/utils.js +47 -4
package/CHANGELOG.md
CHANGED
|
@@ -21,214 +21,119 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
21
21
|
|
|
22
22
|
# [2.4.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.3.2...@pie-lib/graphing@2.4.0) (2021-07-23)
|
|
23
23
|
|
|
24
|
-
|
|
25
24
|
### Features
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
- **graphing:** control over whether arrows are displayed PD-483 ([dc9c8f8](https://github.com/pie-framework/pie-lib/commit/dc9c8f8))
|
|
27
|
+
- **graphing:** Display point coordinates on hover PD-188 ([ed38fef](https://github.com/pie-framework/pie-lib/commit/ed38fef))
|
|
33
28
|
|
|
34
29
|
## [2.3.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.3.0...@pie-lib/graphing@2.3.2) (2021-06-25)
|
|
35
30
|
|
|
36
31
|
**Note:** Version bump only for package @pie-lib/graphing
|
|
37
32
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
33
|
# [2.3.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.21...@pie-lib/graphing@2.3.0) (2021-06-25)
|
|
43
34
|
|
|
44
|
-
|
|
45
35
|
### Bug Fixes
|
|
46
36
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
- **graphing:** correctly calculate tick values for when step has 3 decimals. Add sanity check for graph label PD-991 ([5b1d85b](https://github.com/pie-framework/pie-lib/commit/5b1d85b))
|
|
38
|
+
- **graphing:** Removed non-functional buttons PD-545 ([1884b9d](https://github.com/pie-framework/pie-lib/commit/1884b9d))
|
|
50
39
|
|
|
51
40
|
### Features
|
|
52
41
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
42
|
+
- **graphing:** Added the ability to label shapes other than point - PD-486 ([ad1ea5a](https://github.com/pie-framework/pie-lib/commit/ad1ea5a))
|
|
43
|
+
- **graphing:** Disallowed invalid point movements and placements PD-484 ([88ad2c4](https://github.com/pie-framework/pie-lib/commit/88ad2c4))
|
|
59
44
|
|
|
60
45
|
## [2.2.21](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.20...@pie-lib/graphing@2.2.21) (2021-04-06)
|
|
61
46
|
|
|
62
47
|
**Note:** Version bump only for package @pie-lib/graphing
|
|
63
48
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
49
|
## [2.2.20](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.19...@pie-lib/graphing@2.2.20) (2021-04-02)
|
|
69
50
|
|
|
70
|
-
|
|
71
51
|
### Bug Fixes
|
|
72
52
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
53
|
+
- **graphing:** denote labels as non-readable ([a59a9ba](https://github.com/pie-framework/pie-lib/commit/a59a9ba))
|
|
54
|
+
- **graphing:** Modified labels size and bug fixes ([e6dd79a](https://github.com/pie-framework/pie-lib/commit/e6dd79a))
|
|
79
55
|
|
|
80
56
|
## [2.2.19](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.18...@pie-lib/graphing@2.2.19) (2021-03-22)
|
|
81
57
|
|
|
82
|
-
|
|
83
58
|
### Bug Fixes
|
|
84
59
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
60
|
+
- **graphing:** fix arrow positioning for any angle PD-495 ([33cc936](https://github.com/pie-framework/pie-lib/commit/33cc936))
|
|
90
61
|
|
|
91
62
|
## [2.2.18](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.17...@pie-lib/graphing@2.2.18) (2021-03-17)
|
|
92
63
|
|
|
93
|
-
|
|
94
64
|
### Bug Fixes
|
|
95
65
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
66
|
+
- **graphing:** ROLLBACK - fix arrow positioning PD-495 ([8af59e7](https://github.com/pie-framework/pie-lib/commit/8af59e7))
|
|
101
67
|
|
|
102
68
|
## [2.2.17](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.16...@pie-lib/graphing@2.2.17) (2021-03-16)
|
|
103
69
|
|
|
104
|
-
|
|
105
70
|
### Bug Fixes
|
|
106
71
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
72
|
+
- **graphing:** fix arrow positioning PD-495 ([36a87cf](https://github.com/pie-framework/pie-lib/commit/36a87cf))
|
|
112
73
|
|
|
113
74
|
## [2.2.16](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.15...@pie-lib/graphing@2.2.16) (2021-03-15)
|
|
114
75
|
|
|
115
|
-
|
|
116
76
|
### Bug Fixes
|
|
117
77
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
78
|
+
- **graphing:** increase width and height for labels, depending on labels length PD-988 ([5f64c47](https://github.com/pie-framework/pie-lib/commit/5f64c47))
|
|
79
|
+
- **graphing:** increase width for range axisLabel PD-988 ([e4e5b8f](https://github.com/pie-framework/pie-lib/commit/e4e5b8f))
|
|
80
|
+
- **graphing:** set height depending on number of words of axisLabel PD-988 ([210b3af](https://github.com/pie-framework/pie-lib/commit/210b3af))
|
|
125
81
|
|
|
126
82
|
## [2.2.15](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.14...@pie-lib/graphing@2.2.15) (2021-03-01)
|
|
127
83
|
|
|
128
|
-
|
|
129
84
|
### Bug Fixes
|
|
130
85
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
86
|
+
- **graphing:** positioning of the numeric labels on the x- and y- axes for 0 and -1 PD-529 ([c33c82b](https://github.com/pie-framework/pie-lib/commit/c33c82b))
|
|
87
|
+
- **graphing:** where '-n' [x] and '-n' [y] would overlap if positioned normally, only one '-n' label should be displayed and centered PD-529 ([946657f](https://github.com/pie-framework/pie-lib/commit/946657f))
|
|
137
88
|
|
|
138
89
|
## [2.2.14](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.13...@pie-lib/graphing@2.2.14) (2021-03-01)
|
|
139
90
|
|
|
140
|
-
|
|
141
91
|
### Bug Fixes
|
|
142
92
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
93
|
+
- **graphing:** in OT buttons and tool labels are too small, override fontSize of 0.8125rem and fontSize of 0.8125rem PD-24 ([4f58952](https://github.com/pie-framework/pie-lib/commit/4f58952))
|
|
148
94
|
|
|
149
95
|
## [2.2.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.12...@pie-lib/graphing@2.2.13) (2021-02-15)
|
|
150
96
|
|
|
151
|
-
|
|
152
97
|
### Bug Fixes
|
|
153
98
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
99
|
+
- **graphing:** reset markups on pushing reset ([3a10924](https://github.com/pie-framework/pie-lib/commit/3a10924))
|
|
159
100
|
|
|
160
101
|
## [2.2.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.10...@pie-lib/graphing@2.2.12) (2021-02-15)
|
|
161
102
|
|
|
162
103
|
**Note:** Version bump only for package @pie-lib/graphing
|
|
163
104
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
105
|
## [2.2.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.9...@pie-lib/graphing@2.2.10) (2021-02-15)
|
|
169
106
|
|
|
170
107
|
**Note:** Version bump only for package @pie-lib/graphing
|
|
171
108
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
109
|
## [2.2.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.8...@pie-lib/graphing@2.2.9) (2021-02-01)
|
|
177
110
|
|
|
178
111
|
**Note:** Version bump only for package @pie-lib/graphing
|
|
179
112
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
113
|
## [2.2.8](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.7...@pie-lib/graphing@2.2.8) (2021-01-28)
|
|
185
114
|
|
|
186
115
|
**Note:** Version bump only for package @pie-lib/graphing
|
|
187
116
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
117
|
## [2.2.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.6...@pie-lib/graphing@2.2.7) (2021-01-28)
|
|
193
118
|
|
|
194
119
|
**Note:** Version bump only for package @pie-lib/graphing
|
|
195
120
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
121
|
## [2.2.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.5...@pie-lib/graphing@2.2.6) (2021-01-25)
|
|
201
122
|
|
|
202
123
|
**Note:** Version bump only for package @pie-lib/graphing
|
|
203
124
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
125
|
## [2.2.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.4...@pie-lib/graphing@2.2.5) (2021-01-11)
|
|
209
126
|
|
|
210
127
|
**Note:** Version bump only for package @pie-lib/graphing
|
|
211
128
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
129
|
## [2.2.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.3...@pie-lib/graphing@2.2.4) (2020-10-29)
|
|
217
130
|
|
|
218
131
|
**Note:** Version bump only for package @pie-lib/graphing
|
|
219
132
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
133
|
## [2.2.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.2...@pie-lib/graphing@2.2.3) (2020-10-26)
|
|
225
134
|
|
|
226
135
|
**Note:** Version bump only for package @pie-lib/graphing
|
|
227
136
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
137
|
## [2.2.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.2.1...@pie-lib/graphing@2.2.2) (2020-10-26)
|
|
233
138
|
|
|
234
139
|
**Note:** Version bump only for package @pie-lib/graphing
|
package/lib/axis/arrow.js
CHANGED
|
@@ -61,6 +61,7 @@ function (_React$Component) {
|
|
|
61
61
|
classes = _this$props.classes,
|
|
62
62
|
className = _this$props.className,
|
|
63
63
|
scale = _this$props.scale;
|
|
64
|
+
var names = (0, _classnames["default"])(classes.root, className);
|
|
64
65
|
var direction = this.props.direction || 'left';
|
|
65
66
|
var xv = scale.x(x);
|
|
66
67
|
var yv = scale.y(y);
|
|
@@ -71,22 +72,21 @@ function (_React$Component) {
|
|
|
71
72
|
};
|
|
72
73
|
|
|
73
74
|
if (direction === 'left') {
|
|
74
|
-
transform = getTransform(xv -
|
|
75
|
+
transform = getTransform(xv - 15, yv, 0);
|
|
75
76
|
}
|
|
76
77
|
|
|
77
78
|
if (direction === 'right') {
|
|
78
|
-
transform = getTransform(xv +
|
|
79
|
+
transform = getTransform(xv + 15, yv, 180);
|
|
79
80
|
}
|
|
80
81
|
|
|
81
82
|
if (direction === 'up') {
|
|
82
|
-
transform = getTransform(xv, yv -
|
|
83
|
+
transform = getTransform(xv, yv - 15, 90);
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
if (direction === 'down') {
|
|
86
|
-
transform = getTransform(xv, yv +
|
|
87
|
+
transform = getTransform(xv, yv + 15, 270);
|
|
87
88
|
}
|
|
88
89
|
|
|
89
|
-
var names = (0, _classnames["default"])(classes.root, className);
|
|
90
90
|
return _react["default"].createElement("path", {
|
|
91
91
|
d: "m 0,0 8,-5 0,10 -8,-5",
|
|
92
92
|
transform: transform,
|
package/lib/axis/arrow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/axis/arrow.jsx"],"names":["style","root","fill","Arrow","props","x","y","classes","className","scale","direction","xv","yv","transform","getTransform","rotate","
|
|
1
|
+
{"version":3,"sources":["../../src/axis/arrow.jsx"],"names":["style","root","fill","Arrow","props","x","y","classes","className","scale","names","direction","xv","yv","transform","getTransform","rotate","React","Component","propTypes","PropTypes","number","oneOf","object","isRequired","string","types","ScaleType","defaultProps"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,KAAK,GAAG;AACZC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AADF;AADM,CAAd;;IAMaC,K;;;;;;;;;;;;;6BACF;AAAA,wBACqC,KAAKC,KAD1C;AAAA,UACCC,CADD,eACCA,CADD;AAAA,UACIC,CADJ,eACIA,CADJ;AAAA,UACOC,OADP,eACOA,OADP;AAAA,UACgBC,SADhB,eACgBA,SADhB;AAAA,UAC2BC,KAD3B,eAC2BA,KAD3B;AAEP,UAAMC,KAAK,GAAG,4BAAWH,OAAO,CAACN,IAAnB,EAAyBO,SAAzB,CAAd;AACA,UAAIG,SAAS,GAAG,KAAKP,KAAL,CAAWO,SAAX,IAAwB,MAAxC;AAEA,UAAMC,EAAE,GAAGH,KAAK,CAACJ,CAAN,CAAQA,CAAR,CAAX;AACA,UAAMQ,EAAE,GAAGJ,KAAK,CAACH,CAAN,CAAQA,CAAR,CAAX;AAEA,UAAIQ,SAAS,GAAG,EAAhB;;AAEA,UAAMC,YAAY,GAAG,SAAfA,YAAe,CAACV,CAAD,EAAIC,CAAJ,EAAOU,MAAP;AAAA,mCAA+BX,CAA/B,eAAqCC,CAArC,sBAAkDU,MAAlD;AAAA,OAArB;;AAEA,UAAIL,SAAS,KAAK,MAAlB,EAA0B;AACxBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAE,GAAG,EAAN,EAAUC,EAAV,EAAc,CAAd,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,OAAlB,EAA2B;AACzBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAE,GAAG,EAAN,EAAUC,EAAV,EAAc,GAAd,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,IAAlB,EAAwB;AACtBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAD,EAAKC,EAAE,GAAG,EAAV,EAAc,EAAd,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,MAAlB,EAA0B;AACxBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAD,EAAKC,EAAE,GAAG,EAAV,EAAc,GAAd,CAAxB;AACD;;AAED,aAAO;AAAM,QAAA,CAAC,EAAC,uBAAR;AAAgC,QAAA,SAAS,EAAEC,SAA3C;AAAsD,QAAA,SAAS,EAAEJ;AAAjE,QAAP;AACD;;;;EA9BwBO,kBAAMC,S;;;AAiCjCf,KAAK,CAACgB,SAAN,GAAkB;AAChBb,EAAAA,CAAC,EAAEc,sBAAUC,MADG;AAEhBhB,EAAAA,CAAC,EAAEe,sBAAUC,MAFG;AAGhBV,EAAAA,SAAS,EAAES,sBAAUE,KAAV,CAAgB,CAAC,MAAD,EAAS,OAAT,EAAkB,IAAlB,EAAwB,MAAxB,CAAhB,CAHK;AAIhBf,EAAAA,OAAO,EAAEa,sBAAUG,MAAV,CAAiBC,UAJV;AAKhBhB,EAAAA,SAAS,EAAEY,sBAAUK,MALL;AAMhBhB,EAAAA,KAAK,EAAEiB,YAAMC,SAAN,CAAgBH;AANP,CAAlB;AASArB,KAAK,CAACyB,YAAN,GAAqB;AACnBtB,EAAAA,CAAC,EAAE,CADgB;AAEnBD,EAAAA,CAAC,EAAE,CAFgB;AAGnBM,EAAAA,SAAS,EAAE;AAHQ,CAArB;;eAMe,wBAAWX,KAAX,EAAkBG,KAAlB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { types } from '@pie-lib/plot';\n\nconst style = {\n root: {\n fill: 'var(--arrow-color, black)'\n }\n};\n\nexport class Arrow extends React.Component {\n render() {\n const { x, y, classes, className, scale } = this.props;\n const names = classNames(classes.root, className);\n let direction = this.props.direction || 'left';\n\n const xv = scale.x(x);\n const yv = scale.y(y);\n\n let transform = '';\n\n const getTransform = (x, y, rotate) => `translate(${x}, ${y}) rotate(${rotate})`;\n\n if (direction === 'left') {\n transform = getTransform(xv - 15, yv, 0);\n }\n\n if (direction === 'right') {\n transform = getTransform(xv + 15, yv, 180);\n }\n\n if (direction === 'up') {\n transform = getTransform(xv, yv - 15, 90);\n }\n\n if (direction === 'down') {\n transform = getTransform(xv, yv + 15, 270);\n }\n\n return <path d=\"m 0,0 8,-5 0,10 -8,-5\" transform={transform} className={names} />;\n }\n}\n\nArrow.propTypes = {\n y: PropTypes.number,\n x: PropTypes.number,\n direction: PropTypes.oneOf(['left', 'right', 'up', 'down']),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n scale: types.ScaleType.isRequired\n};\n\nArrow.defaultProps = {\n y: 0,\n x: 0,\n direction: 'left'\n};\n\nexport default withStyles(style)(Arrow);\n"],"file":"arrow.js"}
|
package/lib/axis/axes.js
CHANGED
|
@@ -108,10 +108,10 @@ var tickLabelStyles = {
|
|
|
108
108
|
cursor: 'inherit'
|
|
109
109
|
};
|
|
110
110
|
|
|
111
|
-
var sharedValues = function sharedValues(firstNegativeX, firstNegativeY,
|
|
111
|
+
var sharedValues = function sharedValues(firstNegativeX, firstNegativeY, distanceFromOriginToFirstNegativeX, distanceFromOriginToFirstNegativeY, deltaAllowance, dy) {
|
|
112
112
|
var result = [];
|
|
113
113
|
|
|
114
|
-
if (firstNegativeX === firstNegativeY &&
|
|
114
|
+
if (firstNegativeX === firstNegativeY && distanceFromOriginToFirstNegativeX - deltaAllowance < distanceFromOriginToFirstNegativeY && distanceFromOriginToFirstNegativeY < distanceFromOriginToFirstNegativeX + deltaAllowance && distanceFromOriginToFirstNegativeX - deltaAllowance < dy && dy < distanceFromOriginToFirstNegativeX + deltaAllowance) {
|
|
115
115
|
result.push(firstNegativeX);
|
|
116
116
|
}
|
|
117
117
|
|
|
@@ -148,7 +148,7 @@ function (_React$Component) {
|
|
|
148
148
|
graphProps = _this$props.graphProps,
|
|
149
149
|
columnTicksValues = _this$props.columnTicksValues,
|
|
150
150
|
skipValues = _this$props.skipValues,
|
|
151
|
-
|
|
151
|
+
distanceFromOriginToFirstNegativeY = _this$props.distanceFromOriginToFirstNegativeY,
|
|
152
152
|
dy = _this$props.dy;
|
|
153
153
|
|
|
154
154
|
var _ref = graphProps || {},
|
|
@@ -162,12 +162,7 @@ function (_React$Component) {
|
|
|
162
162
|
var tickValues = (domain.labelStep || range.labelStep) && domain.min <= 0 ? ['0'].concat(_toConsumableArray(columnTicksValues)) : columnTicksValues; // However, the '0' has to be displayed only if other tick labels (y-axis or x-axis) are displayed
|
|
163
163
|
|
|
164
164
|
var labelProps = function labelProps(label) {
|
|
165
|
-
var y = dy;
|
|
166
|
-
|
|
167
|
-
if (skipValues && skipValues[0] === label) {
|
|
168
|
-
y = distantceFromOriginToFirstNegativeY + 4;
|
|
169
|
-
}
|
|
170
|
-
|
|
165
|
+
var y = skipValues && skipValues[0] === label ? distanceFromOriginToFirstNegativeY + 4 : dy;
|
|
171
166
|
return _objectSpread({}, tickLabelStyles, {
|
|
172
167
|
textAnchor: 'middle',
|
|
173
168
|
y: y,
|
|
@@ -185,6 +180,7 @@ function (_React$Component) {
|
|
|
185
180
|
top: scale.y(0),
|
|
186
181
|
left: 0,
|
|
187
182
|
label: domain.label,
|
|
183
|
+
rangePadding: 8,
|
|
188
184
|
tickClassName: classes.tick,
|
|
189
185
|
tickFormat: function tickFormat(value) {
|
|
190
186
|
return value;
|
|
@@ -204,7 +200,7 @@ function (_React$Component) {
|
|
|
204
200
|
className: classes.arrow,
|
|
205
201
|
scale: scale
|
|
206
202
|
}), domain.axisLabel && _react["default"].createElement("foreignObject", {
|
|
207
|
-
x: size.width +
|
|
203
|
+
x: size.width + 15,
|
|
208
204
|
y: scale.y(0) - 10,
|
|
209
205
|
width: necessaryWidth,
|
|
210
206
|
height: 20 * necessaryRows
|
|
@@ -260,11 +256,7 @@ function (_React$Component2) {
|
|
|
260
256
|
var necessaryWidth = range.axisLabel ? (0, _utils.amountToIncreaseWidth)(range.axisLabel.length) : 0;
|
|
261
257
|
|
|
262
258
|
var customTickFormat = function customTickFormat(value) {
|
|
263
|
-
|
|
264
|
-
return '';
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
return value;
|
|
259
|
+
return skipValues && skipValues.indexOf(value) >= 0 ? '' : value;
|
|
268
260
|
};
|
|
269
261
|
|
|
270
262
|
return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_axis.Axis, {
|
|
@@ -278,6 +270,7 @@ function (_React$Component2) {
|
|
|
278
270
|
labelProps: {
|
|
279
271
|
'data-pie-readable': false
|
|
280
272
|
},
|
|
273
|
+
rangePadding: 8,
|
|
281
274
|
tickLength: 10,
|
|
282
275
|
tickClassName: classes.tick,
|
|
283
276
|
tickFormat: customTickFormat,
|
|
@@ -285,7 +278,7 @@ function (_React$Component2) {
|
|
|
285
278
|
var digits = value.toLocaleString().length || 1;
|
|
286
279
|
return _objectSpread({}, tickLabelStyles, {
|
|
287
280
|
dy: 4,
|
|
288
|
-
dx: -
|
|
281
|
+
dx: -4 - digits * 8,
|
|
289
282
|
'data-pie-readable': false
|
|
290
283
|
});
|
|
291
284
|
},
|
|
@@ -306,7 +299,7 @@ function (_React$Component2) {
|
|
|
306
299
|
scale: scale
|
|
307
300
|
}), range.axisLabel && _react["default"].createElement("foreignObject", {
|
|
308
301
|
x: scale.x(0) - necessaryWidth / 2,
|
|
309
|
-
y: -
|
|
302
|
+
y: -30,
|
|
310
303
|
width: necessaryWidth,
|
|
311
304
|
height: "20"
|
|
312
305
|
}, _react["default"].createElement(_renderUi.Readable, {
|
|
@@ -369,7 +362,7 @@ function (_React$Component3) {
|
|
|
369
362
|
return {
|
|
370
363
|
columnTicksValues: ticks,
|
|
371
364
|
firstNegativeX: negative,
|
|
372
|
-
|
|
365
|
+
distanceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))
|
|
373
366
|
};
|
|
374
367
|
});
|
|
375
368
|
|
|
@@ -391,7 +384,7 @@ function (_React$Component3) {
|
|
|
391
384
|
return {
|
|
392
385
|
rowTickValues: ticks,
|
|
393
386
|
firstNegativeY: negative,
|
|
394
|
-
|
|
387
|
+
distanceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))
|
|
395
388
|
};
|
|
396
389
|
});
|
|
397
390
|
|
|
@@ -405,34 +398,31 @@ function (_React$Component3) {
|
|
|
405
398
|
|
|
406
399
|
var _ref5 = graphProps || {},
|
|
407
400
|
domain = _ref5.domain,
|
|
408
|
-
range = _ref5.range;
|
|
409
|
-
|
|
401
|
+
range = _ref5.range;
|
|
410
402
|
|
|
411
403
|
var _this$xValues = this.xValues(),
|
|
412
404
|
columnTicksValues = _this$xValues.columnTicksValues,
|
|
413
405
|
firstNegativeX = _this$xValues.firstNegativeX,
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
var result = this.xValues(); // y
|
|
406
|
+
distanceFromOriginToFirstNegativeX = _this$xValues.distanceFromOriginToFirstNegativeX;
|
|
417
407
|
|
|
418
408
|
var _this$yValues = this.yValues(),
|
|
419
409
|
rowTickValues = _this$yValues.rowTickValues,
|
|
420
410
|
firstNegativeY = _this$yValues.firstNegativeY,
|
|
421
|
-
|
|
411
|
+
distanceFromOriginToFirstNegativeY = _this$yValues.distanceFromOriginToFirstNegativeY;
|
|
422
412
|
|
|
423
413
|
var deltaAllowance = 6;
|
|
424
414
|
var dy = 25;
|
|
425
|
-
var skipValues = sharedValues(firstNegativeX, firstNegativeY,
|
|
415
|
+
var skipValues = sharedValues(firstNegativeX, firstNegativeY, distanceFromOriginToFirstNegativeX, distanceFromOriginToFirstNegativeY, deltaAllowance, dy); // each axis has to be displayed only if the domain & range include it
|
|
426
416
|
|
|
427
417
|
return _react["default"].createElement(_react["default"].Fragment, null, range.min <= 0 ? _react["default"].createElement(XAxis, _extends({}, this.props, {
|
|
428
418
|
skipValues: skipValues,
|
|
429
419
|
columnTicksValues: columnTicksValues,
|
|
430
|
-
|
|
420
|
+
distanceFromOriginToFirstNegativeY: distanceFromOriginToFirstNegativeY,
|
|
431
421
|
dy: dy
|
|
432
422
|
})) : null, domain.min <= 0 ? _react["default"].createElement(YAxis, _extends({}, this.props, {
|
|
433
423
|
skipValues: skipValues,
|
|
434
424
|
rowTickValues: rowTickValues,
|
|
435
|
-
|
|
425
|
+
distanceFromOriginToFirstNegativeX: distanceFromOriginToFirstNegativeX
|
|
436
426
|
})) : null);
|
|
437
427
|
}
|
|
438
428
|
}]);
|
package/lib/axis/axes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/axis/axes.jsx"],"names":["AxisPropTypes","includeArrows","PropTypes","object","graphProps","AxisDefaultProps","left","right","up","down","axisStyles","theme","line","stroke","color","primary","strokeWidth","arrow","fill","tick","labelFontSize","fontSize","typography","axisLabelHolder","padding","margin","textAlign","tickLabelStyles","fontFamily","cursor","sharedValues","firstNegativeX","firstNegativeY","distantceFromOriginToFirstNegativeX","distantceFromOriginToFirstNegativeY","deltaAllowance","dy","result","push","firstNegativeValue","interval","find","element","RawXAxis","props","classes","columnTicksValues","skipValues","scale","domain","size","range","tickValues","labelStep","min","labelProps","label","y","textAnchor","dx","necessaryRows","axisLabel","longestWord","necessaryWidth","x","value","max","width","__html","React","Component","types","GraphPropsType","isRequired","XAxis","RawYAxis","rowTickValues","length","customTickFormat","indexOf","height","digits","toLocaleString","YAxis","Axes","ticks","step","negative","Math","abs","xValues","yValues"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Axis } from '@vx/axis';\nimport { types } from '@pie-lib/plot';\nimport PropTypes from 'prop-types';\nimport Arrow from './arrow';\nimport { withStyles } from '@material-ui/core';\nimport { countWords, findLongestWord, amountToIncreaseWidth, getTickValues } from '../utils';\nimport { color, Readable } from '@pie-lib/render-ui';\n\nexport const AxisPropTypes = {\n includeArrows: PropTypes.object,\n graphProps: PropTypes.object\n};\n\nconst AxisDefaultProps = {\n includeArrows: {\n left: true,\n right: true,\n up: true,\n down: true\n }\n};\n\nconst axisStyles = theme => ({\n line: {\n stroke: color.primary(),\n strokeWidth: 5\n },\n arrow: {\n fill: color.primary()\n },\n tick: {\n fill: color.primary(),\n '& > line': {\n stroke: color.primary()\n }\n },\n labelFontSize: {\n fontSize: theme.typography.fontSize\n },\n axisLabelHolder: {\n padding: 0,\n margin: 0,\n textAlign: 'center',\n '* > *': {\n margin: 0,\n padding: 0\n },\n fontSize: theme.typography.fontSize\n }\n});\n\nconst tickLabelStyles = {\n fontFamily: 'Roboto',\n fontSize: '14px',\n cursor: 'inherit'\n};\n\nexport const sharedValues = (\n firstNegativeX,\n firstNegativeY,\n distantceFromOriginToFirstNegativeX,\n distantceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n) => {\n let result = [];\n\n if (\n firstNegativeX === firstNegativeY &&\n distantceFromOriginToFirstNegativeX - deltaAllowance < distantceFromOriginToFirstNegativeY &&\n distantceFromOriginToFirstNegativeY < distantceFromOriginToFirstNegativeX + deltaAllowance &&\n distantceFromOriginToFirstNegativeX - deltaAllowance < dy &&\n dy < distantceFromOriginToFirstNegativeX + deltaAllowance\n ) {\n result.push(firstNegativeX);\n }\n\n return result;\n};\n\nexport const firstNegativeValue = interval => (interval || []).find(element => element < 0);\n\nexport class RawXAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const {\n includeArrows,\n classes,\n graphProps,\n columnTicksValues,\n skipValues,\n distantceFromOriginToFirstNegativeY,\n dy\n } = this.props;\n const { scale, domain, size, range } = graphProps || {};\n\n // Having 0 as a number in columnTicksValues does not make 0 to show up\n // so we use this trick, by defining it as a string:\n const tickValues =\n (domain.labelStep || range.labelStep) && domain.min <= 0\n ? ['0', ...columnTicksValues]\n : columnTicksValues;\n // However, the '0' has to be displayed only if other tick labels (y-axis or x-axis) are displayed\n\n const labelProps = label => {\n let y = dy;\n\n if (skipValues && skipValues[0] === label) {\n y = distantceFromOriginToFirstNegativeY + 4;\n }\n\n return {\n ...tickLabelStyles,\n textAnchor: 'middle',\n y: y,\n dx: label === '0' ? -10 : 0,\n dy: label === '0' ? -7 : 0\n };\n };\n\n const necessaryRows = countWords(domain.axisLabel);\n const longestWord = findLongestWord(domain.axisLabel);\n const necessaryWidth = amountToIncreaseWidth(longestWord);\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n scale={scale.x}\n top={scale.y(0)}\n left={0}\n label={domain.label}\n tickClassName={classes.tick}\n tickFormat={value => value}\n tickLabelProps={labelProps}\n tickValues={tickValues}\n />\n {includeArrows && includeArrows.left && (\n <Arrow direction=\"left\" x={domain.min} y={0} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.right && (\n <Arrow direction=\"right\" x={domain.max} y={0} className={classes.arrow} scale={scale} />\n )}\n {domain.axisLabel && (\n <foreignObject\n x={size.width + 10}\n y={scale.y(0) - 10}\n width={necessaryWidth}\n height={20 * necessaryRows}\n >\n <div\n dangerouslySetInnerHTML={{ __html: domain.axisLabel }}\n className={classes.labelFontSize}\n />\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\n\nconst XAxis = withStyles(axisStyles)(RawXAxis);\n\nexport class RawYAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const { classes, includeArrows, graphProps, skipValues, rowTickValues } = this.props;\n const { scale, range, size } = graphProps || {};\n\n const necessaryWidth = range.axisLabel ? amountToIncreaseWidth(range.axisLabel.length) : 0;\n\n const customTickFormat = value => {\n if (skipValues && skipValues.indexOf(value) >= 0) {\n return '';\n }\n\n return value;\n };\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n orientation={'left'}\n scale={scale.y}\n top={0}\n height={size.height}\n left={scale.x(0)}\n label={range.label}\n labelProps={{ 'data-pie-readable': false }}\n tickLength={10}\n tickClassName={classes.tick}\n tickFormat={customTickFormat}\n tickLabelProps={value => {\n const digits = value.toLocaleString().length || 1;\n return {\n ...tickLabelStyles,\n dy: 4,\n dx: -8 - digits * 5,\n 'data-pie-readable': false\n };\n }}\n hideZero={true}\n tickTextAnchor={'bottom'}\n tickValues={rowTickValues}\n />\n\n {includeArrows && includeArrows.down && (\n <Arrow direction=\"down\" x={0} y={range.min} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.up && (\n <Arrow direction=\"up\" x={0} y={range.max} className={classes.arrow} scale={scale} />\n )}\n {range.axisLabel && (\n <foreignObject\n x={scale.x(0) - necessaryWidth / 2}\n y={-25}\n width={necessaryWidth}\n height=\"20\"\n >\n <Readable false>\n <div\n dangerouslySetInnerHTML={{ __html: range.axisLabel }}\n className={classes.axisLabelHolder}\n />\n </Readable>\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\nconst YAxis = withStyles(axisStyles)(RawYAxis);\n\nexport default class Axes extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n xValues = () => {\n const { graphProps } = this.props;\n const { scale, domain } = graphProps || {};\n if (!domain || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...domain, step: domain.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n columnTicksValues: ticks,\n firstNegativeX: negative,\n distantceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))\n };\n };\n\n yValues = () => {\n const { graphProps } = this.props;\n const { scale, range } = graphProps || {};\n if (!range || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...range, step: range.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n rowTickValues: ticks,\n firstNegativeY: negative,\n distantceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))\n };\n };\n\n render() {\n const { graphProps } = this.props;\n const { domain, range } = graphProps || {};\n\n // x\n const {\n columnTicksValues,\n firstNegativeX,\n distantceFromOriginToFirstNegativeX\n } = this.xValues();\n const result = this.xValues();\n\n // y\n const { rowTickValues, firstNegativeY, distantceFromOriginToFirstNegativeY } = this.yValues();\n\n const deltaAllowance = 6;\n const dy = 25;\n\n const skipValues = sharedValues(\n firstNegativeX,\n firstNegativeY,\n distantceFromOriginToFirstNegativeX,\n distantceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n );\n\n // each axis has to be displayed only if the domain & range include it\n return (\n <React.Fragment>\n {range.min <= 0 ? (\n <XAxis\n {...this.props}\n skipValues={skipValues}\n columnTicksValues={columnTicksValues}\n distantceFromOriginToFirstNegativeY={distantceFromOriginToFirstNegativeY}\n dy={dy}\n />\n ) : null}\n {domain.min <= 0 ? (\n <YAxis\n {...this.props}\n skipValues={skipValues}\n rowTickValues={rowTickValues}\n distantceFromOriginToFirstNegativeX={distantceFromOriginToFirstNegativeX}\n />\n ) : null}\n </React.Fragment>\n );\n }\n}\n"],"file":"axes.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/axis/axes.jsx"],"names":["AxisPropTypes","includeArrows","PropTypes","object","graphProps","AxisDefaultProps","left","right","up","down","axisStyles","theme","line","stroke","color","primary","strokeWidth","arrow","fill","tick","labelFontSize","fontSize","typography","axisLabelHolder","padding","margin","textAlign","tickLabelStyles","fontFamily","cursor","sharedValues","firstNegativeX","firstNegativeY","distanceFromOriginToFirstNegativeX","distanceFromOriginToFirstNegativeY","deltaAllowance","dy","result","push","firstNegativeValue","interval","find","element","RawXAxis","props","classes","columnTicksValues","skipValues","scale","domain","size","range","tickValues","labelStep","min","labelProps","label","y","textAnchor","dx","necessaryRows","axisLabel","longestWord","necessaryWidth","x","value","max","width","__html","React","Component","types","GraphPropsType","isRequired","XAxis","RawYAxis","rowTickValues","length","customTickFormat","indexOf","height","digits","toLocaleString","YAxis","Axes","ticks","step","negative","Math","abs","xValues","yValues"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Axis } from '@vx/axis';\nimport { types } from '@pie-lib/plot';\nimport PropTypes from 'prop-types';\nimport Arrow from './arrow';\nimport { withStyles } from '@material-ui/core';\nimport { countWords, findLongestWord, amountToIncreaseWidth, getTickValues } from '../utils';\nimport { color, Readable } from '@pie-lib/render-ui';\n\nexport const AxisPropTypes = {\n includeArrows: PropTypes.object,\n graphProps: PropTypes.object\n};\n\nconst AxisDefaultProps = {\n includeArrows: {\n left: true,\n right: true,\n up: true,\n down: true\n }\n};\n\nconst axisStyles = theme => ({\n line: {\n stroke: color.primary(),\n strokeWidth: 5\n },\n arrow: {\n fill: color.primary()\n },\n tick: {\n fill: color.primary(),\n '& > line': {\n stroke: color.primary()\n }\n },\n labelFontSize: {\n fontSize: theme.typography.fontSize\n },\n axisLabelHolder: {\n padding: 0,\n margin: 0,\n textAlign: 'center',\n '* > *': {\n margin: 0,\n padding: 0\n },\n fontSize: theme.typography.fontSize\n }\n});\n\nconst tickLabelStyles = {\n fontFamily: 'Roboto',\n fontSize: '14px',\n cursor: 'inherit'\n};\n\nexport const sharedValues = (\n firstNegativeX,\n firstNegativeY,\n distanceFromOriginToFirstNegativeX,\n distanceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n) => {\n let result = [];\n\n if (\n firstNegativeX === firstNegativeY &&\n distanceFromOriginToFirstNegativeX - deltaAllowance < distanceFromOriginToFirstNegativeY &&\n distanceFromOriginToFirstNegativeY < distanceFromOriginToFirstNegativeX + deltaAllowance &&\n distanceFromOriginToFirstNegativeX - deltaAllowance < dy &&\n dy < distanceFromOriginToFirstNegativeX + deltaAllowance\n ) {\n result.push(firstNegativeX);\n }\n\n return result;\n};\n\nexport const firstNegativeValue = interval => (interval || []).find(element => element < 0);\n\nexport class RawXAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const {\n includeArrows,\n classes,\n graphProps,\n columnTicksValues,\n skipValues,\n distanceFromOriginToFirstNegativeY,\n dy\n } = this.props;\n const { scale, domain, size, range } = graphProps || {};\n\n // Having 0 as a number in columnTicksValues does not make 0 to show up\n // so we use this trick, by defining it as a string:\n const tickValues =\n (domain.labelStep || range.labelStep) && domain.min <= 0\n ? ['0', ...columnTicksValues]\n : columnTicksValues;\n // However, the '0' has to be displayed only if other tick labels (y-axis or x-axis) are displayed\n\n const labelProps = label => {\n const y = skipValues && skipValues[0] === label ? distanceFromOriginToFirstNegativeY + 4 : dy;\n\n return {\n ...tickLabelStyles,\n textAnchor: 'middle',\n y: y,\n dx: label === '0' ? -10 : 0,\n dy: label === '0' ? -7 : 0\n };\n };\n\n const necessaryRows = countWords(domain.axisLabel);\n const longestWord = findLongestWord(domain.axisLabel);\n const necessaryWidth = amountToIncreaseWidth(longestWord);\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n scale={scale.x}\n top={scale.y(0)}\n left={0}\n label={domain.label}\n rangePadding={8}\n tickClassName={classes.tick}\n tickFormat={value => value}\n tickLabelProps={labelProps}\n tickValues={tickValues}\n />\n {includeArrows && includeArrows.left && (\n <Arrow direction=\"left\" x={domain.min} y={0} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.right && (\n <Arrow direction=\"right\" x={domain.max} y={0} className={classes.arrow} scale={scale} />\n )}\n {domain.axisLabel && (\n <foreignObject\n x={size.width + 15}\n y={scale.y(0) - 10}\n width={necessaryWidth}\n height={20 * necessaryRows}\n >\n <div\n dangerouslySetInnerHTML={{ __html: domain.axisLabel }}\n className={classes.labelFontSize}\n />\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\n\nconst XAxis = withStyles(axisStyles)(RawXAxis);\n\nexport class RawYAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const { classes, includeArrows, graphProps, skipValues, rowTickValues } = this.props;\n const { scale, range, size } = graphProps || {};\n\n const necessaryWidth = range.axisLabel ? amountToIncreaseWidth(range.axisLabel.length) : 0;\n\n const customTickFormat = value => (skipValues && skipValues.indexOf(value) >= 0 ? '' : value);\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n orientation={'left'}\n scale={scale.y}\n top={0}\n height={size.height}\n left={scale.x(0)}\n label={range.label}\n labelProps={{ 'data-pie-readable': false }}\n rangePadding={8}\n tickLength={10}\n tickClassName={classes.tick}\n tickFormat={customTickFormat}\n tickLabelProps={value => {\n const digits = value.toLocaleString().length || 1;\n return {\n ...tickLabelStyles,\n dy: 4,\n dx: -4 - digits * 8,\n 'data-pie-readable': false\n };\n }}\n hideZero={true}\n tickTextAnchor={'bottom'}\n tickValues={rowTickValues}\n />\n\n {includeArrows && includeArrows.down && (\n <Arrow direction=\"down\" x={0} y={range.min} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.up && (\n <Arrow direction=\"up\" x={0} y={range.max} className={classes.arrow} scale={scale} />\n )}\n {range.axisLabel && (\n <foreignObject\n x={scale.x(0) - necessaryWidth / 2}\n y={-30}\n width={necessaryWidth}\n height=\"20\"\n >\n <Readable false>\n <div\n dangerouslySetInnerHTML={{ __html: range.axisLabel }}\n className={classes.axisLabelHolder}\n />\n </Readable>\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\n\nconst YAxis = withStyles(axisStyles)(RawYAxis);\n\nexport default class Axes extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n xValues = () => {\n const { graphProps } = this.props;\n const { scale, domain } = graphProps || {};\n\n if (!domain || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...domain, step: domain.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n columnTicksValues: ticks,\n firstNegativeX: negative,\n distanceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))\n };\n };\n\n yValues = () => {\n const { graphProps } = this.props;\n const { scale, range } = graphProps || {};\n\n if (!range || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...range, step: range.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n rowTickValues: ticks,\n firstNegativeY: negative,\n distanceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))\n };\n };\n\n render() {\n const { graphProps } = this.props;\n const { domain, range } = graphProps || {};\n const {\n columnTicksValues,\n firstNegativeX,\n distanceFromOriginToFirstNegativeX\n } = this.xValues();\n const { rowTickValues, firstNegativeY, distanceFromOriginToFirstNegativeY } = this.yValues();\n const deltaAllowance = 6;\n const dy = 25;\n\n const skipValues = sharedValues(\n firstNegativeX,\n firstNegativeY,\n distanceFromOriginToFirstNegativeX,\n distanceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n );\n\n // each axis has to be displayed only if the domain & range include it\n return (\n <React.Fragment>\n {range.min <= 0 ? (\n <XAxis\n {...this.props}\n skipValues={skipValues}\n columnTicksValues={columnTicksValues}\n distanceFromOriginToFirstNegativeY={distanceFromOriginToFirstNegativeY}\n dy={dy}\n />\n ) : null}\n {domain.min <= 0 ? (\n <YAxis\n {...this.props}\n skipValues={skipValues}\n rowTickValues={rowTickValues}\n distanceFromOriginToFirstNegativeX={distanceFromOriginToFirstNegativeX}\n />\n ) : null}\n </React.Fragment>\n );\n }\n}\n"],"file":"axes.js"}
|
package/lib/graph.js
CHANGED
|
@@ -86,10 +86,10 @@ exports.graphPropTypes = graphPropTypes;
|
|
|
86
86
|
|
|
87
87
|
var getMaskSize = function getMaskSize(size) {
|
|
88
88
|
return {
|
|
89
|
-
x: -
|
|
90
|
-
y: -
|
|
91
|
-
width: size.width +
|
|
92
|
-
height: size.height +
|
|
89
|
+
x: -23,
|
|
90
|
+
y: -23,
|
|
91
|
+
width: size.width + 46,
|
|
92
|
+
height: size.height + 46
|
|
93
93
|
};
|
|
94
94
|
};
|
|
95
95
|
|
package/lib/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graph.jsx"],"names":["log","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","domain","types","DomainType","labels","LabelType","labelModeEnabled","bool","coordinatesOnHover","marks","onChangeMarks","func","range","size","width","number","isRequired","height","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","type","index","findIndex","splice","Graph","setState","labelNode","oldMark","newMark","props","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","addPoint","undefined","graphProps","rootNode","maskSize","common","r","onBgClick","map","getComponent","markType","disabled","changeMark","completeMark","point","startDrag","stopDrag","state","pointerEvents","React","object"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Root, types, createGraphProps } from '@pie-lib/plot';\nimport debug from 'debug';\n\nimport Labels from './labels';\nimport { Axes, AxisPropTypes } from './axis';\nimport Grid from './grid';\nimport { LabelType } from './labels';\nimport Bg from './bg';\n\nconst log = debug('pie-lib:graphing:graph');\n\nexport const graphPropTypes = {\n axesSettings: PropTypes.shape(AxisPropTypes),\n backgroundMarks: PropTypes.array,\n className: PropTypes.string,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeMarks: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n }),\n title: PropTypes.string,\n tools: PropTypes.array\n};\n\nconst getMaskSize = size => ({\n x: -10,\n y: -10,\n width: size.width + 20,\n height: size.height + 20\n});\n\nexport const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) => {\n const buildingMark = marks.filter(m => m.building)[0];\n let newMarks = cloneDeep(marks);\n\n if (buildingMark && currentTool && buildingMark.type !== currentTool.type) {\n const index = newMarks.findIndex(m => isEqual(m, buildingMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1);\n }\n }\n\n return newMarks;\n};\n\nexport class Graph extends React.Component {\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object\n };\n\n static defaultProps = {\n onChangeMarks: () => {}\n };\n\n state = {};\n\n componentDidMount = () => this.setState({ labelNode: this.labelNode });\n\n changeMark = (oldMark, newMark) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1, newMark);\n\n onChangeMarks(newMarks);\n }\n };\n\n completeMark = markData => {\n const { currentTool, marks } = this.props;\n const buildingMark = marks.filter(m => m.building)[0];\n\n if (!buildingMark || !currentTool) return;\n\n const updatedMark = currentTool.complete(buildingMark, markData);\n\n this.updateMarks(buildingMark, updatedMark);\n };\n\n updateMarks = (existing, update, addIfMissing = false) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, existing));\n\n if (index >= 0) {\n newMarks.splice(index, 1, update);\n\n onChangeMarks(newMarks);\n } else if (addIfMissing) {\n onChangeMarks([...newMarks, update]);\n }\n };\n\n getComponent = mark => {\n if (!mark) return null;\n\n const tool = (this.props.tools || []).find(t => t.type === mark.type);\n\n return (tool && tool.Component) || null;\n };\n\n onBgClick = ({ x, y }, mark) => {\n log('[onBgClick] x,y: ', x, y);\n\n const { labelModeEnabled, currentTool, marks } = this.props;\n\n if (labelModeEnabled || !currentTool || mark) {\n return;\n }\n\n const buildingMark = marks.filter(m => m.building)[0];\n let updatedMark;\n\n // if the building mark has a different type, we just replace it\n if (buildingMark && currentTool && buildingMark.type === currentTool.type) {\n updatedMark = currentTool.addPoint({ x, y }, { ...buildingMark });\n } else {\n updatedMark = currentTool.addPoint({ x, y }, undefined);\n }\n\n this.updateMarks(buildingMark, updatedMark, true);\n };\n\n render() {\n const {\n axesSettings,\n currentTool,\n coordinatesOnHover,\n size,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root\n // left side requires an extra padding of 10, in order to fit next to tick labels like 1.5, 1.55...\n paddingLeft={60}\n rootRef={r => (this.rootNode = r)}\n title={title}\n {...common}\n >\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <Labels value={labels} {...common} />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask=\"url('#myMask')\">\n {(backgroundMarks || []).map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}-bg`}\n mark={{ ...m, disabled: true }}\n {...common}\n />\n );\n })}\n\n {marks.map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}`}\n mark={m}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.changeMark}\n onComplete={this.completeMark}\n onClick={point => this.onBgClick(point, m)}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={this.state.labelNode}\n isToolActive={currentTool && markType === currentTool.type}\n {...common}\n />\n );\n })}\n\n <foreignObject\n ref={labelNode => (this.labelNode = labelNode)}\n x=\"0\"\n y=\"0\"\n {...size}\n style={{ pointerEvents: 'none' }}\n />\n </g>\n </Root>\n );\n }\n}\n\nexport default Graph;\n"],"file":"graph.js"}
|
|
1
|
+
{"version":3,"sources":["../src/graph.jsx"],"names":["log","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","domain","types","DomainType","labels","LabelType","labelModeEnabled","bool","coordinatesOnHover","marks","onChangeMarks","func","range","size","width","number","isRequired","height","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","type","index","findIndex","splice","Graph","setState","labelNode","oldMark","newMark","props","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","addPoint","undefined","graphProps","rootNode","maskSize","common","r","onBgClick","map","getComponent","markType","disabled","changeMark","completeMark","point","startDrag","stopDrag","state","pointerEvents","React","object"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Root, types, createGraphProps } from '@pie-lib/plot';\nimport debug from 'debug';\n\nimport Labels from './labels';\nimport { Axes, AxisPropTypes } from './axis';\nimport Grid from './grid';\nimport { LabelType } from './labels';\nimport Bg from './bg';\n\nconst log = debug('pie-lib:graphing:graph');\n\nexport const graphPropTypes = {\n axesSettings: PropTypes.shape(AxisPropTypes),\n backgroundMarks: PropTypes.array,\n className: PropTypes.string,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeMarks: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n }),\n title: PropTypes.string,\n tools: PropTypes.array\n};\n\nconst getMaskSize = size => ({\n x: -23,\n y: -23,\n width: size.width + 46,\n height: size.height + 46\n});\n\nexport const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) => {\n const buildingMark = marks.filter(m => m.building)[0];\n let newMarks = cloneDeep(marks);\n\n if (buildingMark && currentTool && buildingMark.type !== currentTool.type) {\n const index = newMarks.findIndex(m => isEqual(m, buildingMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1);\n }\n }\n\n return newMarks;\n};\n\nexport class Graph extends React.Component {\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object\n };\n\n static defaultProps = {\n onChangeMarks: () => {}\n };\n\n state = {};\n\n componentDidMount = () => this.setState({ labelNode: this.labelNode });\n\n changeMark = (oldMark, newMark) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1, newMark);\n\n onChangeMarks(newMarks);\n }\n };\n\n completeMark = markData => {\n const { currentTool, marks } = this.props;\n const buildingMark = marks.filter(m => m.building)[0];\n\n if (!buildingMark || !currentTool) return;\n\n const updatedMark = currentTool.complete(buildingMark, markData);\n\n this.updateMarks(buildingMark, updatedMark);\n };\n\n updateMarks = (existing, update, addIfMissing = false) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, existing));\n\n if (index >= 0) {\n newMarks.splice(index, 1, update);\n\n onChangeMarks(newMarks);\n } else if (addIfMissing) {\n onChangeMarks([...newMarks, update]);\n }\n };\n\n getComponent = mark => {\n if (!mark) return null;\n\n const tool = (this.props.tools || []).find(t => t.type === mark.type);\n\n return (tool && tool.Component) || null;\n };\n\n onBgClick = ({ x, y }, mark) => {\n log('[onBgClick] x,y: ', x, y);\n\n const { labelModeEnabled, currentTool, marks } = this.props;\n\n if (labelModeEnabled || !currentTool || mark) {\n return;\n }\n\n const buildingMark = marks.filter(m => m.building)[0];\n let updatedMark;\n\n // if the building mark has a different type, we just replace it\n if (buildingMark && currentTool && buildingMark.type === currentTool.type) {\n updatedMark = currentTool.addPoint({ x, y }, { ...buildingMark });\n } else {\n updatedMark = currentTool.addPoint({ x, y }, undefined);\n }\n\n this.updateMarks(buildingMark, updatedMark, true);\n };\n\n render() {\n const {\n axesSettings,\n currentTool,\n coordinatesOnHover,\n size,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root\n // left side requires an extra padding of 10, in order to fit next to tick labels like 1.5, 1.55...\n paddingLeft={60}\n rootRef={r => (this.rootNode = r)}\n title={title}\n {...common}\n >\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <Labels value={labels} {...common} />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask=\"url('#myMask')\">\n {(backgroundMarks || []).map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}-bg`}\n mark={{ ...m, disabled: true }}\n {...common}\n />\n );\n })}\n\n {marks.map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}`}\n mark={m}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.changeMark}\n onComplete={this.completeMark}\n onClick={point => this.onBgClick(point, m)}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={this.state.labelNode}\n isToolActive={currentTool && markType === currentTool.type}\n {...common}\n />\n );\n })}\n\n <foreignObject\n ref={labelNode => (this.labelNode = labelNode)}\n x=\"0\"\n y=\"0\"\n {...size}\n style={{ pointerEvents: 'none' }}\n />\n </g>\n </Root>\n );\n }\n}\n\nexport default Graph;\n"],"file":"graph.js"}
|