@dhis2/analytics 23.8.2 → 23.8.5
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 +21 -0
- package/build/cjs/components/AboutAOUnit/AboutAOUnit.js +3 -1
- package/build/cjs/components/AboutAOUnit/styles/AboutAOUnit.style.js +2 -2
- package/build/cjs/components/FileMenu/FileMenu.styles.js +2 -2
- package/build/cjs/modules/__tests__/renderValue.spec.js +289 -0
- package/build/cjs/modules/renderValue.js +7 -7
- package/build/cjs/modules/valueTypes.js +7 -2
- package/build/es/components/AboutAOUnit/AboutAOUnit.js +3 -1
- package/build/es/components/AboutAOUnit/styles/AboutAOUnit.style.js +2 -2
- package/build/es/components/FileMenu/FileMenu.styles.js +3 -3
- package/build/es/modules/__tests__/renderValue.spec.js +284 -0
- package/build/es/modules/renderValue.js +8 -8
- package/build/es/modules/valueTypes.js +3 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
## [23.8.5](https://github.com/dhis2/analytics/compare/v23.8.4...v23.8.5) (2022-05-09)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* fix cursor in AboutUnit component's header TECH-1172 ([#1218](https://github.com/dhis2/analytics/issues/1218)) ([e8bd409](https://github.com/dhis2/analytics/commit/e8bd40970b3ae64a9518ab6f6b6d6e932f02eb24))
|
|
7
|
+
|
|
8
|
+
## [23.8.4](https://github.com/dhis2/analytics/compare/v23.8.3...v23.8.4) (2022-05-09)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **FileMenu:** use larger lateral padding for File button TECH-1145 ([#1220](https://github.com/dhis2/analytics/issues/1220)) ([e853d62](https://github.com/dhis2/analytics/commit/e853d627244766153d8955a1e9711379afde6015))
|
|
14
|
+
|
|
15
|
+
## [23.8.3](https://github.com/dhis2/analytics/compare/v23.8.2...v23.8.3) (2022-05-09)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* add digit group separator to all numeric types in table cells ([#1219](https://github.com/dhis2/analytics/issues/1219)) ([6b8ec2a](https://github.com/dhis2/analytics/commit/6b8ec2a1ae72fdca18c7df5615e206de1fdf9666))
|
|
21
|
+
|
|
1
22
|
## [23.8.2](https://github.com/dhis2/analytics/compare/v23.8.1...v23.8.2) (2022-05-05)
|
|
2
23
|
|
|
3
24
|
|
|
@@ -150,7 +150,9 @@ const AboutAOUnit = ({
|
|
|
150
150
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
151
151
|
onClick: () => setIsExpanded(!isExpanded),
|
|
152
152
|
className: "jsx-".concat(_AboutAOUnitStyle.default.__hash) + " " + "header"
|
|
153
|
-
},
|
|
153
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
154
|
+
className: "jsx-".concat(_AboutAOUnitStyle.default.__hash) + " " + "title"
|
|
155
|
+
}, _d2I18n.default.t('About this visualization')), isExpanded ? /*#__PURE__*/_react.default.createElement(_ui.IconChevronUp24, {
|
|
154
156
|
color: _ui.colors.grey700
|
|
155
157
|
}) : /*#__PURE__*/_react.default.createElement(_ui.IconChevronDown24, {
|
|
156
158
|
color: _ui.colors.grey700
|
|
@@ -7,7 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _ui = require("@dhis2/ui");
|
|
9
9
|
|
|
10
|
-
const _defaultExport = [".container.jsx-
|
|
11
|
-
_defaultExport.__hash = "
|
|
10
|
+
const _defaultExport = [".container.jsx-1596217846{position:relative;padding:".concat(_ui.spacers.dp16, ";border-bottom:1px solid ").concat(_ui.colors.grey400, ";background-color:").concat(_ui.colors.white, ";}"), ".expanded.jsx-1596217846{padding-bottom:".concat(_ui.spacers.dp32, ";}"), ".loader.jsx-1596217846{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}", ".header.jsx-1596217846{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;}", ".title.jsx-1596217846{font-size:16px;font-weight:500;line-height:21px;color:".concat(_ui.colors.grey900, ";}"), ".content.jsx-1596217846{font-size:14px;line-height:18px;color:".concat(_ui.colors.grey900, ";}"), ".detailLine.jsx-1596217846{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0;padding:".concat(_ui.spacers.dp12, " 0 0 0;gap:").concat(_ui.spacers.dp8, ";}"), ".detailLine.jsx-1596217846 svg.jsx-1596217846{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}", ".noDescription.jsx-1596217846{color:".concat(_ui.colors.grey600, ";}"), ".subsection.jsx-1596217846{margin-top:".concat(_ui.spacers.dp24, ";}"), ".subsectionTitle.jsx-1596217846{color:".concat(_ui.colors.grey700, ";font-weight:500;}"), ".subscriptionLabel.jsx-1596217846{margin:".concat(_ui.spacers.dp12, " 0 ").concat(_ui.spacers.dp8, " 0;}"), ".subsection.jsx-1596217846 button.jsx-1596217846{margin-top:".concat(_ui.spacers.dp8, ";}")];
|
|
11
|
+
_defaultExport.__hash = "1596217846";
|
|
12
12
|
var _default = _defaultExport;
|
|
13
13
|
exports.default = _default;
|
|
@@ -7,6 +7,6 @@ exports.fileMenuStyles = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _ui = require("@dhis2/ui");
|
|
9
9
|
|
|
10
|
-
const fileMenuStyles = [".menu-toggle.jsx-
|
|
10
|
+
const fileMenuStyles = [".menu-toggle.jsx-2670121391{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;font-size:14px;font-weight:400;text-transform:none;padding:6px ".concat(_ui.spacers.dp12, ";border-radius:3px;color:").concat(_ui.colors.grey900, ";box-sizing:border-box;line-height:1.75;background:none;border:none;-webkit-transition:background-color 250ms cubic-bezier(0.4,0,0.2,1) 0ms;transition:background-color 250ms cubic-bezier(0.4,0,0.2,1) 0ms;cursor:pointer;}"), ".menu-toggle.jsx-2670121391:hover.jsx-2670121391:enabled{background-color:".concat(_ui.colors.grey200, ";}"), ".menu-toggle.jsx-2670121391:disabled{color:".concat(_ui.colors.grey400, ";cursor:not-allowed;}"), ".menu-toggle.jsx-2670121391:active{background-color:".concat(_ui.colors.grey300, ";}"), ".menuButton.jsx-2670121391:focus{outline:2px solid ".concat(_ui.colors.blue600, ";}"), ".menuButton.jsx-2670121391:focus.jsx-2670121391:not(:focus-visible){outline:none;}"];
|
|
11
11
|
exports.fileMenuStyles = fileMenuStyles;
|
|
12
|
-
fileMenuStyles.__hash = "
|
|
12
|
+
fileMenuStyles.__hash = "2670121391";
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _pivotTableConstants = require("../pivotTable/pivotTableConstants.js");
|
|
4
|
+
|
|
5
|
+
var _renderValue = require("../renderValue.js");
|
|
6
|
+
|
|
7
|
+
var _valueTypes = require("../valueTypes.js");
|
|
8
|
+
|
|
9
|
+
const DGS_COMMA = 'COMMA';
|
|
10
|
+
const DGS_SPACE = 'SPACE';
|
|
11
|
+
const DGS_NONE = 'NONE';
|
|
12
|
+
const tests = [// Numbers
|
|
13
|
+
{
|
|
14
|
+
value: 1000.5,
|
|
15
|
+
expected: '1 000.5',
|
|
16
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
17
|
+
round: true,
|
|
18
|
+
dgs: DGS_SPACE
|
|
19
|
+
}, {
|
|
20
|
+
value: 33777889.55,
|
|
21
|
+
expected: '33,777,889.5',
|
|
22
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
23
|
+
round: true,
|
|
24
|
+
dgs: DGS_COMMA
|
|
25
|
+
}, {
|
|
26
|
+
value: 33777889.556,
|
|
27
|
+
expected: '33 777 889.6',
|
|
28
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
29
|
+
round: true,
|
|
30
|
+
dgs: DGS_SPACE
|
|
31
|
+
}, {
|
|
32
|
+
value: 33777889.556,
|
|
33
|
+
expected: '33 777 889.5560000017',
|
|
34
|
+
// float issue?
|
|
35
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
36
|
+
round: false,
|
|
37
|
+
dgs: DGS_SPACE
|
|
38
|
+
}, {
|
|
39
|
+
value: 33777889.56,
|
|
40
|
+
expected: '33777889.6',
|
|
41
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
42
|
+
round: true,
|
|
43
|
+
dgs: DGS_NONE
|
|
44
|
+
}, {
|
|
45
|
+
value: 0.0005,
|
|
46
|
+
expected: '0',
|
|
47
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
48
|
+
round: true,
|
|
49
|
+
dgs: DGS_SPACE
|
|
50
|
+
}, {
|
|
51
|
+
value: 0.109,
|
|
52
|
+
expected: '0.11',
|
|
53
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
54
|
+
round: true,
|
|
55
|
+
dgs: DGS_SPACE
|
|
56
|
+
}, {
|
|
57
|
+
value: 1.101,
|
|
58
|
+
expected: '1.1',
|
|
59
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
60
|
+
round: true,
|
|
61
|
+
dgs: DGS_SPACE
|
|
62
|
+
}, {
|
|
63
|
+
value: 1.101,
|
|
64
|
+
expected: '1.1010000000',
|
|
65
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
66
|
+
round: false,
|
|
67
|
+
dgs: DGS_SPACE
|
|
68
|
+
}, {
|
|
69
|
+
value: 0.0005,
|
|
70
|
+
expected: '0.0005000000',
|
|
71
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
72
|
+
round: false,
|
|
73
|
+
dgs: DGS_SPACE
|
|
74
|
+
}, // Numbers showing as column/row percentage
|
|
75
|
+
{
|
|
76
|
+
value: 0.234,
|
|
77
|
+
expected: '23.4%',
|
|
78
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
79
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_ROW_PERCENTAGE,
|
|
80
|
+
round: true,
|
|
81
|
+
dgs: DGS_SPACE
|
|
82
|
+
}, {
|
|
83
|
+
value: 0.234,
|
|
84
|
+
expected: '23.4%',
|
|
85
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
86
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_ROW_PERCENTAGE,
|
|
87
|
+
round: false,
|
|
88
|
+
dgs: DGS_SPACE
|
|
89
|
+
}, {
|
|
90
|
+
value: 0.000234,
|
|
91
|
+
expected: '0.02%',
|
|
92
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
93
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_ROW_PERCENTAGE,
|
|
94
|
+
round: true,
|
|
95
|
+
dgs: DGS_SPACE
|
|
96
|
+
}, {
|
|
97
|
+
value: 0.0000432,
|
|
98
|
+
expected: '0%',
|
|
99
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
100
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_ROW_PERCENTAGE,
|
|
101
|
+
round: true,
|
|
102
|
+
dgs: DGS_SPACE
|
|
103
|
+
}, {
|
|
104
|
+
value: 0.000234,
|
|
105
|
+
expected: '0.0234%',
|
|
106
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
107
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_ROW_PERCENTAGE,
|
|
108
|
+
round: false,
|
|
109
|
+
dgs: DGS_SPACE
|
|
110
|
+
}, {
|
|
111
|
+
value: -0.0234,
|
|
112
|
+
expected: '-2.3%',
|
|
113
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
114
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_ROW_PERCENTAGE,
|
|
115
|
+
round: true,
|
|
116
|
+
dgs: DGS_SPACE
|
|
117
|
+
}, {
|
|
118
|
+
value: -0.0234,
|
|
119
|
+
expected: '-2.34%',
|
|
120
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
121
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_ROW_PERCENTAGE,
|
|
122
|
+
round: false,
|
|
123
|
+
dgs: DGS_SPACE
|
|
124
|
+
}, {
|
|
125
|
+
value: 0.450048675309,
|
|
126
|
+
expected: '45.0048675309%',
|
|
127
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
128
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_ROW_PERCENTAGE,
|
|
129
|
+
round: false,
|
|
130
|
+
dgs: DGS_SPACE
|
|
131
|
+
}, {
|
|
132
|
+
value: 77.893,
|
|
133
|
+
expected: '7 789.3%',
|
|
134
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
135
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
136
|
+
round: true,
|
|
137
|
+
dgs: DGS_SPACE
|
|
138
|
+
}, {
|
|
139
|
+
value: 77.893,
|
|
140
|
+
expected: '7,789.3%',
|
|
141
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER,
|
|
142
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
143
|
+
round: true,
|
|
144
|
+
dgs: DGS_COMMA
|
|
145
|
+
}, // Integers
|
|
146
|
+
{
|
|
147
|
+
value: 99777888,
|
|
148
|
+
expected: '99 777 888',
|
|
149
|
+
valueType: _valueTypes.VALUE_TYPE_INTEGER,
|
|
150
|
+
round: true,
|
|
151
|
+
dgs: DGS_SPACE
|
|
152
|
+
}, {
|
|
153
|
+
value: -99777888,
|
|
154
|
+
expected: '-99 777 888',
|
|
155
|
+
valueType: _valueTypes.VALUE_TYPE_INTEGER,
|
|
156
|
+
round: true,
|
|
157
|
+
dgs: DGS_SPACE
|
|
158
|
+
}, {
|
|
159
|
+
value: -9977888,
|
|
160
|
+
expected: '-9977888',
|
|
161
|
+
valueType: _valueTypes.VALUE_TYPE_INTEGER,
|
|
162
|
+
round: true,
|
|
163
|
+
dgs: DGS_NONE
|
|
164
|
+
}, {
|
|
165
|
+
value: 345,
|
|
166
|
+
expected: '345',
|
|
167
|
+
valueType: _valueTypes.VALUE_TYPE_INTEGER_POSITIVE,
|
|
168
|
+
round: true,
|
|
169
|
+
dgs: DGS_COMMA
|
|
170
|
+
}, {
|
|
171
|
+
value: 334445577,
|
|
172
|
+
expected: '334,445,577',
|
|
173
|
+
valueType: _valueTypes.VALUE_TYPE_INTEGER_POSITIVE,
|
|
174
|
+
round: false,
|
|
175
|
+
dgs: DGS_COMMA
|
|
176
|
+
}, {
|
|
177
|
+
value: -44555777,
|
|
178
|
+
expected: '-44 555 777',
|
|
179
|
+
valueType: _valueTypes.VALUE_TYPE_INTEGER_NEGATIVE,
|
|
180
|
+
round: true,
|
|
181
|
+
dgs: DGS_SPACE
|
|
182
|
+
}, {
|
|
183
|
+
value: -4445577,
|
|
184
|
+
expected: '-4,445,577',
|
|
185
|
+
valueType: _valueTypes.VALUE_TYPE_INTEGER_NEGATIVE,
|
|
186
|
+
round: false,
|
|
187
|
+
dgs: DGS_COMMA
|
|
188
|
+
}, {
|
|
189
|
+
value: -445577,
|
|
190
|
+
expected: '-445577',
|
|
191
|
+
valueType: _valueTypes.VALUE_TYPE_INTEGER_NEGATIVE,
|
|
192
|
+
round: true,
|
|
193
|
+
dgs: DGS_NONE
|
|
194
|
+
}, {
|
|
195
|
+
value: -4445577,
|
|
196
|
+
expected: '-4,445,577',
|
|
197
|
+
valueType: _valueTypes.VALUE_TYPE_INTEGER_ZERO_OR_POSITIVE,
|
|
198
|
+
round: false,
|
|
199
|
+
dgs: DGS_COMMA
|
|
200
|
+
}, {
|
|
201
|
+
value: 57,
|
|
202
|
+
expected: '5 700%',
|
|
203
|
+
valueType: _valueTypes.VALUE_TYPE_INTEGER_ZERO_OR_POSITIVE,
|
|
204
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
205
|
+
round: true,
|
|
206
|
+
dgs: DGS_SPACE
|
|
207
|
+
}, {
|
|
208
|
+
value: 557,
|
|
209
|
+
expected: '55700%',
|
|
210
|
+
valueType: _valueTypes.VALUE_TYPE_INTEGER_ZERO_OR_POSITIVE,
|
|
211
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
212
|
+
round: true,
|
|
213
|
+
dgs: DGS_NONE
|
|
214
|
+
}, // Percentage
|
|
215
|
+
{
|
|
216
|
+
value: 5,
|
|
217
|
+
expected: '5',
|
|
218
|
+
valueType: _valueTypes.VALUE_TYPE_PERCENTAGE,
|
|
219
|
+
round: true,
|
|
220
|
+
dgs: DGS_SPACE
|
|
221
|
+
}, {
|
|
222
|
+
value: 53,
|
|
223
|
+
expected: '53',
|
|
224
|
+
valueType: _valueTypes.VALUE_TYPE_PERCENTAGE,
|
|
225
|
+
round: false,
|
|
226
|
+
dgs: DGS_SPACE
|
|
227
|
+
}, {
|
|
228
|
+
value: 53,
|
|
229
|
+
expected: '5 300%',
|
|
230
|
+
valueType: _valueTypes.VALUE_TYPE_PERCENTAGE,
|
|
231
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
232
|
+
round: true,
|
|
233
|
+
dgs: DGS_SPACE
|
|
234
|
+
}, // Unit interval
|
|
235
|
+
{
|
|
236
|
+
value: 4,
|
|
237
|
+
expected: '4',
|
|
238
|
+
valueType: _valueTypes.VALUE_TYPE_UNIT_INTERVAL,
|
|
239
|
+
round: true,
|
|
240
|
+
dgs: DGS_COMMA
|
|
241
|
+
}, {
|
|
242
|
+
value: 4600,
|
|
243
|
+
expected: '4 600',
|
|
244
|
+
valueType: _valueTypes.VALUE_TYPE_UNIT_INTERVAL,
|
|
245
|
+
round: false,
|
|
246
|
+
dgs: DGS_SPACE
|
|
247
|
+
}, {
|
|
248
|
+
value: 46,
|
|
249
|
+
expected: '4,600%',
|
|
250
|
+
valueType: _valueTypes.VALUE_TYPE_UNIT_INTERVAL,
|
|
251
|
+
numberType: _pivotTableConstants.NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
252
|
+
round: true,
|
|
253
|
+
dgs: DGS_COMMA
|
|
254
|
+
}, // Texts
|
|
255
|
+
{
|
|
256
|
+
value: 'This string has multiple whitespace characters',
|
|
257
|
+
expected: 'This string has multiple whitespace characters',
|
|
258
|
+
valueType: _valueTypes.VALUE_TYPE_TEXT
|
|
259
|
+
}, {
|
|
260
|
+
value: 'Characters \n',
|
|
261
|
+
expected: 'Characters \n',
|
|
262
|
+
valueType: _valueTypes.VALUE_TYPE_TEXT
|
|
263
|
+
}, {
|
|
264
|
+
value: 'Characters \nmorecharacters here',
|
|
265
|
+
expected: 'Characters \nmorecharacters here',
|
|
266
|
+
valueType: _valueTypes.VALUE_TYPE_TEXT
|
|
267
|
+
}, // Undefined values
|
|
268
|
+
{
|
|
269
|
+
value: undefined,
|
|
270
|
+
expected: 'undefined',
|
|
271
|
+
valueType: _valueTypes.VALUE_TYPE_NUMBER
|
|
272
|
+
}, {
|
|
273
|
+
value: undefined,
|
|
274
|
+
expected: 'undefined',
|
|
275
|
+
valueType: _valueTypes.VALUE_TYPE_TEXT
|
|
276
|
+
}];
|
|
277
|
+
describe('renderValue', () => {
|
|
278
|
+
tests.forEach(t => {
|
|
279
|
+
const testname = "valueType: ".concat(t.valueType, ", value: ").concat(t.value, ", dgs: ").concat(t.dgs, ", round: ").concat(t.round, ", isPercent: ").concat([_pivotTableConstants.NUMBER_TYPE_ROW_PERCENTAGE, _pivotTableConstants.NUMBER_TYPE_COLUMN_PERCENTAGE].includes(t.numberType));
|
|
280
|
+
it(testname, () => {
|
|
281
|
+
const actual = (0, _renderValue.renderValue)(t.value, t.valueType, {
|
|
282
|
+
skipRounding: !t.round,
|
|
283
|
+
digitGroupSeparator: t.dgs,
|
|
284
|
+
numberType: t.numberType
|
|
285
|
+
});
|
|
286
|
+
expect(actual).toEqual(t.expected);
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
});
|
|
@@ -11,7 +11,7 @@ var _valueTypes = require("./valueTypes.js");
|
|
|
11
11
|
|
|
12
12
|
const trimTrailingZeros = stringValue => stringValue.replace(/\.?0+$/, '');
|
|
13
13
|
|
|
14
|
-
const
|
|
14
|
+
const decimalSeparator = '.';
|
|
15
15
|
|
|
16
16
|
const separateDigitGroups = (stringValue, decimalSeparator) => {
|
|
17
17
|
const isNegative = stringValue[0] === '-';
|
|
@@ -65,17 +65,17 @@ const toFixedPrecisionString = (value, skipRounding) => {
|
|
|
65
65
|
};
|
|
66
66
|
|
|
67
67
|
const renderValue = (value, valueType, visualization) => {
|
|
68
|
-
if (
|
|
68
|
+
if (!(0, _valueTypes.isNumericValueType)(valueType) || value === undefined) {
|
|
69
69
|
return String(value).replace(/[^\S\n]+/, ' ');
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
if (visualization.numberType === _pivotTableConstants.NUMBER_TYPE_ROW_PERCENTAGE || visualization.numberType === _pivotTableConstants.NUMBER_TYPE_COLUMN_PERCENTAGE) {
|
|
73
|
-
|
|
73
|
+
const stringValue = trimTrailingZeros(toFixedPrecisionString(value * 100, visualization.skipRounding));
|
|
74
|
+
return separateDigitGroups(stringValue, decimalSeparator).join(getSeparator(visualization)) + '%';
|
|
75
|
+
} else {
|
|
76
|
+
const stringValue = toFixedPrecisionString(value, visualization.skipRounding);
|
|
77
|
+
return separateDigitGroups(stringValue, decimalSeparator).join(getSeparator(visualization));
|
|
74
78
|
}
|
|
75
|
-
|
|
76
|
-
const stringValue = toFixedPrecisionString(value, visualization.skipRounding);
|
|
77
|
-
const digitGroups = separateDigitGroups(stringValue, defaultDecimalSeparator);
|
|
78
|
-
return digitGroups.join(getSeparator(visualization));
|
|
79
79
|
};
|
|
80
80
|
|
|
81
81
|
exports.renderValue = renderValue;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.VALUE_TYPE_ORGANISATION_UNIT = exports.VALUE_TYPE_DATETIME = exports.VALUE_TYPE_TIME = exports.VALUE_TYPE_DATE = exports.VALUE_TYPE_TRUE_ONLY = exports.VALUE_TYPE_BOOLEAN = exports.VALUE_TYPE_URL = exports.VALUE_TYPE_USERNAME = exports.VALUE_TYPE_EMAIL = exports.VALUE_TYPE_PHONE_NUMBER = exports.VALUE_TYPE_LETTER = exports.VALUE_TYPE_LONG_TEXT = exports.VALUE_TYPE_TEXT = exports.VALUE_TYPE_INTEGER_ZERO_OR_POSITIVE = exports.VALUE_TYPE_INTEGER_NEGATIVE = exports.VALUE_TYPE_INTEGER_POSITIVE = exports.VALUE_TYPE_INTEGER = exports.VALUE_TYPE_PERCENTAGE = exports.VALUE_TYPE_UNIT_INTERVAL = exports.VALUE_TYPE_NUMBER = void 0;
|
|
6
|
+
exports.isNumericValueType = exports.VALUE_TYPE_ORGANISATION_UNIT = exports.VALUE_TYPE_DATETIME = exports.VALUE_TYPE_TIME = exports.VALUE_TYPE_DATE = exports.VALUE_TYPE_TRUE_ONLY = exports.VALUE_TYPE_BOOLEAN = exports.VALUE_TYPE_URL = exports.VALUE_TYPE_USERNAME = exports.VALUE_TYPE_EMAIL = exports.VALUE_TYPE_PHONE_NUMBER = exports.VALUE_TYPE_LETTER = exports.VALUE_TYPE_LONG_TEXT = exports.VALUE_TYPE_TEXT = exports.VALUE_TYPE_INTEGER_ZERO_OR_POSITIVE = exports.VALUE_TYPE_INTEGER_NEGATIVE = exports.VALUE_TYPE_INTEGER_POSITIVE = exports.VALUE_TYPE_INTEGER = exports.VALUE_TYPE_PERCENTAGE = exports.VALUE_TYPE_UNIT_INTERVAL = exports.VALUE_TYPE_NUMBER = void 0;
|
|
7
7
|
|
|
8
8
|
/* These types match the types in the backend
|
|
9
9
|
https://github.com/dhis2/dhis2-core/blob/master/dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/ValueType.java
|
|
@@ -47,4 +47,9 @@ exports.VALUE_TYPE_TIME = VALUE_TYPE_TIME;
|
|
|
47
47
|
const VALUE_TYPE_DATETIME = 'DATETIME';
|
|
48
48
|
exports.VALUE_TYPE_DATETIME = VALUE_TYPE_DATETIME;
|
|
49
49
|
const VALUE_TYPE_ORGANISATION_UNIT = 'ORGANISATION_UNIT';
|
|
50
|
-
exports.VALUE_TYPE_ORGANISATION_UNIT = VALUE_TYPE_ORGANISATION_UNIT;
|
|
50
|
+
exports.VALUE_TYPE_ORGANISATION_UNIT = VALUE_TYPE_ORGANISATION_UNIT;
|
|
51
|
+
const NUMERIC_VALUE_TYPES = [VALUE_TYPE_NUMBER, VALUE_TYPE_UNIT_INTERVAL, VALUE_TYPE_PERCENTAGE, VALUE_TYPE_INTEGER, VALUE_TYPE_INTEGER_POSITIVE, VALUE_TYPE_INTEGER_NEGATIVE, VALUE_TYPE_INTEGER_ZERO_OR_POSITIVE];
|
|
52
|
+
|
|
53
|
+
const isNumericValueType = type => NUMERIC_VALUE_TYPES.includes(type);
|
|
54
|
+
|
|
55
|
+
exports.isNumericValueType = isNumericValueType;
|
|
@@ -127,7 +127,9 @@ const AboutAOUnit = ({
|
|
|
127
127
|
}, /*#__PURE__*/React.createElement("div", {
|
|
128
128
|
onClick: () => setIsExpanded(!isExpanded),
|
|
129
129
|
className: "jsx-".concat(styles.__hash) + " " + "header"
|
|
130
|
-
},
|
|
130
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
131
|
+
className: "jsx-".concat(styles.__hash) + " " + "title"
|
|
132
|
+
}, i18n.t('About this visualization')), isExpanded ? /*#__PURE__*/React.createElement(IconChevronUp24, {
|
|
131
133
|
color: colors.grey700
|
|
132
134
|
}) : /*#__PURE__*/React.createElement(IconChevronDown24, {
|
|
133
135
|
color: colors.grey700
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { colors, spacers } from '@dhis2/ui';
|
|
2
|
-
const _defaultExport = [".container.jsx-
|
|
3
|
-
_defaultExport.__hash = "
|
|
2
|
+
const _defaultExport = [".container.jsx-1596217846{position:relative;padding:".concat(spacers.dp16, ";border-bottom:1px solid ").concat(colors.grey400, ";background-color:").concat(colors.white, ";}"), ".expanded.jsx-1596217846{padding-bottom:".concat(spacers.dp32, ";}"), ".loader.jsx-1596217846{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}", ".header.jsx-1596217846{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;}", ".title.jsx-1596217846{font-size:16px;font-weight:500;line-height:21px;color:".concat(colors.grey900, ";}"), ".content.jsx-1596217846{font-size:14px;line-height:18px;color:".concat(colors.grey900, ";}"), ".detailLine.jsx-1596217846{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0;padding:".concat(spacers.dp12, " 0 0 0;gap:").concat(spacers.dp8, ";}"), ".detailLine.jsx-1596217846 svg.jsx-1596217846{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}", ".noDescription.jsx-1596217846{color:".concat(colors.grey600, ";}"), ".subsection.jsx-1596217846{margin-top:".concat(spacers.dp24, ";}"), ".subsectionTitle.jsx-1596217846{color:".concat(colors.grey700, ";font-weight:500;}"), ".subscriptionLabel.jsx-1596217846{margin:".concat(spacers.dp12, " 0 ").concat(spacers.dp8, " 0;}"), ".subsection.jsx-1596217846 button.jsx-1596217846{margin-top:".concat(spacers.dp8, ";}")];
|
|
3
|
+
_defaultExport.__hash = "1596217846";
|
|
4
4
|
export default _defaultExport;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { colors } from '@dhis2/ui';
|
|
2
|
-
export const fileMenuStyles = [".menu-toggle.jsx-
|
|
3
|
-
fileMenuStyles.__hash = "
|
|
1
|
+
import { colors, spacers } from '@dhis2/ui';
|
|
2
|
+
export const fileMenuStyles = [".menu-toggle.jsx-2670121391{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;font-size:14px;font-weight:400;text-transform:none;padding:6px ".concat(spacers.dp12, ";border-radius:3px;color:").concat(colors.grey900, ";box-sizing:border-box;line-height:1.75;background:none;border:none;-webkit-transition:background-color 250ms cubic-bezier(0.4,0,0.2,1) 0ms;transition:background-color 250ms cubic-bezier(0.4,0,0.2,1) 0ms;cursor:pointer;}"), ".menu-toggle.jsx-2670121391:hover.jsx-2670121391:enabled{background-color:".concat(colors.grey200, ";}"), ".menu-toggle.jsx-2670121391:disabled{color:".concat(colors.grey400, ";cursor:not-allowed;}"), ".menu-toggle.jsx-2670121391:active{background-color:".concat(colors.grey300, ";}"), ".menuButton.jsx-2670121391:focus{outline:2px solid ".concat(colors.blue600, ";}"), ".menuButton.jsx-2670121391:focus.jsx-2670121391:not(:focus-visible){outline:none;}"];
|
|
3
|
+
fileMenuStyles.__hash = "2670121391";
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { NUMBER_TYPE_ROW_PERCENTAGE, NUMBER_TYPE_COLUMN_PERCENTAGE } from '../pivotTable/pivotTableConstants.js';
|
|
2
|
+
import { renderValue } from '../renderValue.js';
|
|
3
|
+
import { VALUE_TYPE_NUMBER, VALUE_TYPE_INTEGER, VALUE_TYPE_INTEGER_POSITIVE, VALUE_TYPE_INTEGER_NEGATIVE, VALUE_TYPE_INTEGER_ZERO_OR_POSITIVE, VALUE_TYPE_PERCENTAGE, VALUE_TYPE_UNIT_INTERVAL, VALUE_TYPE_TEXT } from '../valueTypes.js';
|
|
4
|
+
const DGS_COMMA = 'COMMA';
|
|
5
|
+
const DGS_SPACE = 'SPACE';
|
|
6
|
+
const DGS_NONE = 'NONE';
|
|
7
|
+
const tests = [// Numbers
|
|
8
|
+
{
|
|
9
|
+
value: 1000.5,
|
|
10
|
+
expected: '1 000.5',
|
|
11
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
12
|
+
round: true,
|
|
13
|
+
dgs: DGS_SPACE
|
|
14
|
+
}, {
|
|
15
|
+
value: 33777889.55,
|
|
16
|
+
expected: '33,777,889.5',
|
|
17
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
18
|
+
round: true,
|
|
19
|
+
dgs: DGS_COMMA
|
|
20
|
+
}, {
|
|
21
|
+
value: 33777889.556,
|
|
22
|
+
expected: '33 777 889.6',
|
|
23
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
24
|
+
round: true,
|
|
25
|
+
dgs: DGS_SPACE
|
|
26
|
+
}, {
|
|
27
|
+
value: 33777889.556,
|
|
28
|
+
expected: '33 777 889.5560000017',
|
|
29
|
+
// float issue?
|
|
30
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
31
|
+
round: false,
|
|
32
|
+
dgs: DGS_SPACE
|
|
33
|
+
}, {
|
|
34
|
+
value: 33777889.56,
|
|
35
|
+
expected: '33777889.6',
|
|
36
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
37
|
+
round: true,
|
|
38
|
+
dgs: DGS_NONE
|
|
39
|
+
}, {
|
|
40
|
+
value: 0.0005,
|
|
41
|
+
expected: '0',
|
|
42
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
43
|
+
round: true,
|
|
44
|
+
dgs: DGS_SPACE
|
|
45
|
+
}, {
|
|
46
|
+
value: 0.109,
|
|
47
|
+
expected: '0.11',
|
|
48
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
49
|
+
round: true,
|
|
50
|
+
dgs: DGS_SPACE
|
|
51
|
+
}, {
|
|
52
|
+
value: 1.101,
|
|
53
|
+
expected: '1.1',
|
|
54
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
55
|
+
round: true,
|
|
56
|
+
dgs: DGS_SPACE
|
|
57
|
+
}, {
|
|
58
|
+
value: 1.101,
|
|
59
|
+
expected: '1.1010000000',
|
|
60
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
61
|
+
round: false,
|
|
62
|
+
dgs: DGS_SPACE
|
|
63
|
+
}, {
|
|
64
|
+
value: 0.0005,
|
|
65
|
+
expected: '0.0005000000',
|
|
66
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
67
|
+
round: false,
|
|
68
|
+
dgs: DGS_SPACE
|
|
69
|
+
}, // Numbers showing as column/row percentage
|
|
70
|
+
{
|
|
71
|
+
value: 0.234,
|
|
72
|
+
expected: '23.4%',
|
|
73
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
74
|
+
numberType: NUMBER_TYPE_ROW_PERCENTAGE,
|
|
75
|
+
round: true,
|
|
76
|
+
dgs: DGS_SPACE
|
|
77
|
+
}, {
|
|
78
|
+
value: 0.234,
|
|
79
|
+
expected: '23.4%',
|
|
80
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
81
|
+
numberType: NUMBER_TYPE_ROW_PERCENTAGE,
|
|
82
|
+
round: false,
|
|
83
|
+
dgs: DGS_SPACE
|
|
84
|
+
}, {
|
|
85
|
+
value: 0.000234,
|
|
86
|
+
expected: '0.02%',
|
|
87
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
88
|
+
numberType: NUMBER_TYPE_ROW_PERCENTAGE,
|
|
89
|
+
round: true,
|
|
90
|
+
dgs: DGS_SPACE
|
|
91
|
+
}, {
|
|
92
|
+
value: 0.0000432,
|
|
93
|
+
expected: '0%',
|
|
94
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
95
|
+
numberType: NUMBER_TYPE_ROW_PERCENTAGE,
|
|
96
|
+
round: true,
|
|
97
|
+
dgs: DGS_SPACE
|
|
98
|
+
}, {
|
|
99
|
+
value: 0.000234,
|
|
100
|
+
expected: '0.0234%',
|
|
101
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
102
|
+
numberType: NUMBER_TYPE_ROW_PERCENTAGE,
|
|
103
|
+
round: false,
|
|
104
|
+
dgs: DGS_SPACE
|
|
105
|
+
}, {
|
|
106
|
+
value: -0.0234,
|
|
107
|
+
expected: '-2.3%',
|
|
108
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
109
|
+
numberType: NUMBER_TYPE_ROW_PERCENTAGE,
|
|
110
|
+
round: true,
|
|
111
|
+
dgs: DGS_SPACE
|
|
112
|
+
}, {
|
|
113
|
+
value: -0.0234,
|
|
114
|
+
expected: '-2.34%',
|
|
115
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
116
|
+
numberType: NUMBER_TYPE_ROW_PERCENTAGE,
|
|
117
|
+
round: false,
|
|
118
|
+
dgs: DGS_SPACE
|
|
119
|
+
}, {
|
|
120
|
+
value: 0.450048675309,
|
|
121
|
+
expected: '45.0048675309%',
|
|
122
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
123
|
+
numberType: NUMBER_TYPE_ROW_PERCENTAGE,
|
|
124
|
+
round: false,
|
|
125
|
+
dgs: DGS_SPACE
|
|
126
|
+
}, {
|
|
127
|
+
value: 77.893,
|
|
128
|
+
expected: '7 789.3%',
|
|
129
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
130
|
+
numberType: NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
131
|
+
round: true,
|
|
132
|
+
dgs: DGS_SPACE
|
|
133
|
+
}, {
|
|
134
|
+
value: 77.893,
|
|
135
|
+
expected: '7,789.3%',
|
|
136
|
+
valueType: VALUE_TYPE_NUMBER,
|
|
137
|
+
numberType: NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
138
|
+
round: true,
|
|
139
|
+
dgs: DGS_COMMA
|
|
140
|
+
}, // Integers
|
|
141
|
+
{
|
|
142
|
+
value: 99777888,
|
|
143
|
+
expected: '99 777 888',
|
|
144
|
+
valueType: VALUE_TYPE_INTEGER,
|
|
145
|
+
round: true,
|
|
146
|
+
dgs: DGS_SPACE
|
|
147
|
+
}, {
|
|
148
|
+
value: -99777888,
|
|
149
|
+
expected: '-99 777 888',
|
|
150
|
+
valueType: VALUE_TYPE_INTEGER,
|
|
151
|
+
round: true,
|
|
152
|
+
dgs: DGS_SPACE
|
|
153
|
+
}, {
|
|
154
|
+
value: -9977888,
|
|
155
|
+
expected: '-9977888',
|
|
156
|
+
valueType: VALUE_TYPE_INTEGER,
|
|
157
|
+
round: true,
|
|
158
|
+
dgs: DGS_NONE
|
|
159
|
+
}, {
|
|
160
|
+
value: 345,
|
|
161
|
+
expected: '345',
|
|
162
|
+
valueType: VALUE_TYPE_INTEGER_POSITIVE,
|
|
163
|
+
round: true,
|
|
164
|
+
dgs: DGS_COMMA
|
|
165
|
+
}, {
|
|
166
|
+
value: 334445577,
|
|
167
|
+
expected: '334,445,577',
|
|
168
|
+
valueType: VALUE_TYPE_INTEGER_POSITIVE,
|
|
169
|
+
round: false,
|
|
170
|
+
dgs: DGS_COMMA
|
|
171
|
+
}, {
|
|
172
|
+
value: -44555777,
|
|
173
|
+
expected: '-44 555 777',
|
|
174
|
+
valueType: VALUE_TYPE_INTEGER_NEGATIVE,
|
|
175
|
+
round: true,
|
|
176
|
+
dgs: DGS_SPACE
|
|
177
|
+
}, {
|
|
178
|
+
value: -4445577,
|
|
179
|
+
expected: '-4,445,577',
|
|
180
|
+
valueType: VALUE_TYPE_INTEGER_NEGATIVE,
|
|
181
|
+
round: false,
|
|
182
|
+
dgs: DGS_COMMA
|
|
183
|
+
}, {
|
|
184
|
+
value: -445577,
|
|
185
|
+
expected: '-445577',
|
|
186
|
+
valueType: VALUE_TYPE_INTEGER_NEGATIVE,
|
|
187
|
+
round: true,
|
|
188
|
+
dgs: DGS_NONE
|
|
189
|
+
}, {
|
|
190
|
+
value: -4445577,
|
|
191
|
+
expected: '-4,445,577',
|
|
192
|
+
valueType: VALUE_TYPE_INTEGER_ZERO_OR_POSITIVE,
|
|
193
|
+
round: false,
|
|
194
|
+
dgs: DGS_COMMA
|
|
195
|
+
}, {
|
|
196
|
+
value: 57,
|
|
197
|
+
expected: '5 700%',
|
|
198
|
+
valueType: VALUE_TYPE_INTEGER_ZERO_OR_POSITIVE,
|
|
199
|
+
numberType: NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
200
|
+
round: true,
|
|
201
|
+
dgs: DGS_SPACE
|
|
202
|
+
}, {
|
|
203
|
+
value: 557,
|
|
204
|
+
expected: '55700%',
|
|
205
|
+
valueType: VALUE_TYPE_INTEGER_ZERO_OR_POSITIVE,
|
|
206
|
+
numberType: NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
207
|
+
round: true,
|
|
208
|
+
dgs: DGS_NONE
|
|
209
|
+
}, // Percentage
|
|
210
|
+
{
|
|
211
|
+
value: 5,
|
|
212
|
+
expected: '5',
|
|
213
|
+
valueType: VALUE_TYPE_PERCENTAGE,
|
|
214
|
+
round: true,
|
|
215
|
+
dgs: DGS_SPACE
|
|
216
|
+
}, {
|
|
217
|
+
value: 53,
|
|
218
|
+
expected: '53',
|
|
219
|
+
valueType: VALUE_TYPE_PERCENTAGE,
|
|
220
|
+
round: false,
|
|
221
|
+
dgs: DGS_SPACE
|
|
222
|
+
}, {
|
|
223
|
+
value: 53,
|
|
224
|
+
expected: '5 300%',
|
|
225
|
+
valueType: VALUE_TYPE_PERCENTAGE,
|
|
226
|
+
numberType: NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
227
|
+
round: true,
|
|
228
|
+
dgs: DGS_SPACE
|
|
229
|
+
}, // Unit interval
|
|
230
|
+
{
|
|
231
|
+
value: 4,
|
|
232
|
+
expected: '4',
|
|
233
|
+
valueType: VALUE_TYPE_UNIT_INTERVAL,
|
|
234
|
+
round: true,
|
|
235
|
+
dgs: DGS_COMMA
|
|
236
|
+
}, {
|
|
237
|
+
value: 4600,
|
|
238
|
+
expected: '4 600',
|
|
239
|
+
valueType: VALUE_TYPE_UNIT_INTERVAL,
|
|
240
|
+
round: false,
|
|
241
|
+
dgs: DGS_SPACE
|
|
242
|
+
}, {
|
|
243
|
+
value: 46,
|
|
244
|
+
expected: '4,600%',
|
|
245
|
+
valueType: VALUE_TYPE_UNIT_INTERVAL,
|
|
246
|
+
numberType: NUMBER_TYPE_COLUMN_PERCENTAGE,
|
|
247
|
+
round: true,
|
|
248
|
+
dgs: DGS_COMMA
|
|
249
|
+
}, // Texts
|
|
250
|
+
{
|
|
251
|
+
value: 'This string has multiple whitespace characters',
|
|
252
|
+
expected: 'This string has multiple whitespace characters',
|
|
253
|
+
valueType: VALUE_TYPE_TEXT
|
|
254
|
+
}, {
|
|
255
|
+
value: 'Characters \n',
|
|
256
|
+
expected: 'Characters \n',
|
|
257
|
+
valueType: VALUE_TYPE_TEXT
|
|
258
|
+
}, {
|
|
259
|
+
value: 'Characters \nmorecharacters here',
|
|
260
|
+
expected: 'Characters \nmorecharacters here',
|
|
261
|
+
valueType: VALUE_TYPE_TEXT
|
|
262
|
+
}, // Undefined values
|
|
263
|
+
{
|
|
264
|
+
value: undefined,
|
|
265
|
+
expected: 'undefined',
|
|
266
|
+
valueType: VALUE_TYPE_NUMBER
|
|
267
|
+
}, {
|
|
268
|
+
value: undefined,
|
|
269
|
+
expected: 'undefined',
|
|
270
|
+
valueType: VALUE_TYPE_TEXT
|
|
271
|
+
}];
|
|
272
|
+
describe('renderValue', () => {
|
|
273
|
+
tests.forEach(t => {
|
|
274
|
+
const testname = "valueType: ".concat(t.valueType, ", value: ").concat(t.value, ", dgs: ").concat(t.dgs, ", round: ").concat(t.round, ", isPercent: ").concat([NUMBER_TYPE_ROW_PERCENTAGE, NUMBER_TYPE_COLUMN_PERCENTAGE].includes(t.numberType));
|
|
275
|
+
it(testname, () => {
|
|
276
|
+
const actual = renderValue(t.value, t.valueType, {
|
|
277
|
+
skipRounding: !t.round,
|
|
278
|
+
digitGroupSeparator: t.dgs,
|
|
279
|
+
numberType: t.numberType
|
|
280
|
+
});
|
|
281
|
+
expect(actual).toEqual(t.expected);
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { NUMBER_TYPE_ROW_PERCENTAGE, NUMBER_TYPE_COLUMN_PERCENTAGE } from './pivotTable/pivotTableConstants.js';
|
|
2
|
-
import {
|
|
2
|
+
import { isNumericValueType } from './valueTypes.js';
|
|
3
3
|
|
|
4
4
|
const trimTrailingZeros = stringValue => stringValue.replace(/\.?0+$/, '');
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const decimalSeparator = '.';
|
|
7
7
|
|
|
8
8
|
const separateDigitGroups = (stringValue, decimalSeparator) => {
|
|
9
9
|
const isNegative = stringValue[0] === '-';
|
|
@@ -57,15 +57,15 @@ const toFixedPrecisionString = (value, skipRounding) => {
|
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
export const renderValue = (value, valueType, visualization) => {
|
|
60
|
-
if (valueType
|
|
60
|
+
if (!isNumericValueType(valueType) || value === undefined) {
|
|
61
61
|
return String(value).replace(/[^\S\n]+/, ' ');
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
if (visualization.numberType === NUMBER_TYPE_ROW_PERCENTAGE || visualization.numberType === NUMBER_TYPE_COLUMN_PERCENTAGE) {
|
|
65
|
-
|
|
65
|
+
const stringValue = trimTrailingZeros(toFixedPrecisionString(value * 100, visualization.skipRounding));
|
|
66
|
+
return separateDigitGroups(stringValue, decimalSeparator).join(getSeparator(visualization)) + '%';
|
|
67
|
+
} else {
|
|
68
|
+
const stringValue = toFixedPrecisionString(value, visualization.skipRounding);
|
|
69
|
+
return separateDigitGroups(stringValue, decimalSeparator).join(getSeparator(visualization));
|
|
66
70
|
}
|
|
67
|
-
|
|
68
|
-
const stringValue = toFixedPrecisionString(value, visualization.skipRounding);
|
|
69
|
-
const digitGroups = separateDigitGroups(stringValue, defaultDecimalSeparator);
|
|
70
|
-
return digitGroups.join(getSeparator(visualization));
|
|
71
71
|
};
|
|
@@ -20,4 +20,6 @@ export const VALUE_TYPE_TRUE_ONLY = 'TRUE_ONLY';
|
|
|
20
20
|
export const VALUE_TYPE_DATE = 'DATE';
|
|
21
21
|
export const VALUE_TYPE_TIME = 'TIME';
|
|
22
22
|
export const VALUE_TYPE_DATETIME = 'DATETIME';
|
|
23
|
-
export const VALUE_TYPE_ORGANISATION_UNIT = 'ORGANISATION_UNIT';
|
|
23
|
+
export const VALUE_TYPE_ORGANISATION_UNIT = 'ORGANISATION_UNIT';
|
|
24
|
+
const NUMERIC_VALUE_TYPES = [VALUE_TYPE_NUMBER, VALUE_TYPE_UNIT_INTERVAL, VALUE_TYPE_PERCENTAGE, VALUE_TYPE_INTEGER, VALUE_TYPE_INTEGER_POSITIVE, VALUE_TYPE_INTEGER_NEGATIVE, VALUE_TYPE_INTEGER_ZERO_OR_POSITIVE];
|
|
25
|
+
export const isNumericValueType = type => NUMERIC_VALUE_TYPES.includes(type);
|