@dhis2/analytics 23.8.0 → 23.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/build/cjs/api/dimensions.js +19 -19
  3. package/build/cjs/components/DataDimension/{DataTypesSelector.js → DataTypeSelector.js} +11 -11
  4. package/build/cjs/components/DataDimension/GroupSelector.js +10 -10
  5. package/build/cjs/components/DataDimension/ItemSelector.js +31 -31
  6. package/build/cjs/components/DataDimension/MetricSelector.js +4 -4
  7. package/build/cjs/components/DataDimension/styles/{DataTypesSelector.style.js → DataTypeSelector.style.js} +0 -0
  8. package/build/cjs/components/FileMenu/FileMenu.styles.js +2 -2
  9. package/build/cjs/index.js +98 -0
  10. package/build/cjs/modules/__tests__/renderValue.spec.js +289 -0
  11. package/build/cjs/modules/dataTypes.js +53 -39
  12. package/build/cjs/modules/pivotTable/PivotTableEngine.js +5 -3
  13. package/build/cjs/modules/pivotTable/pivotTableConstants.js +2 -10
  14. package/build/cjs/modules/renderValue.js +7 -7
  15. package/build/cjs/modules/valueTypes.js +7 -2
  16. package/build/es/api/dimensions.js +20 -20
  17. package/build/es/components/DataDimension/{DataTypesSelector.js → DataTypeSelector.js} +8 -8
  18. package/build/es/components/DataDimension/GroupSelector.js +4 -4
  19. package/build/es/components/DataDimension/ItemSelector.js +29 -29
  20. package/build/es/components/DataDimension/MetricSelector.js +5 -5
  21. package/build/es/components/DataDimension/styles/{DataTypesSelector.style.js → DataTypeSelector.style.js} +0 -0
  22. package/build/es/components/FileMenu/FileMenu.styles.js +2 -2
  23. package/build/es/index.js +2 -1
  24. package/build/es/modules/__tests__/renderValue.spec.js +284 -0
  25. package/build/es/modules/dataTypes.js +35 -28
  26. package/build/es/modules/pivotTable/PivotTableEngine.js +3 -2
  27. package/build/es/modules/pivotTable/pivotTableConstants.js +1 -5
  28. package/build/es/modules/renderValue.js +8 -8
  29. package/build/es/modules/valueTypes.js +3 -1
  30. package/package.json +1 -1
@@ -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
+ });
@@ -5,30 +5,44 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.defaultGroupId = defaultGroupId;
7
7
  exports.defaultGroupDetail = defaultGroupDetail;
8
- exports.DEFAULT_DATATYPE_ID = exports.dataTypes = exports.SUB_GROUP_METRIC = exports.SUB_GROUP_DETAIL = exports.DETAIL = exports.TOTALS = exports.DATA_ELEMENT_OPERAND = exports.PROGRAM_ATTRIBUTE = exports.PROGRAM_DATA_ELEMENT = exports.PROGRAM_INDICATORS = exports.EVENT_DATA_ITEMS = exports.DATA_SETS = exports.DATA_ELEMENTS = exports.INDICATORS = exports.ALL_ID = void 0;
8
+ exports.DEFAULT_DATATYPE_ID = exports.dataTypeMap = exports.SUB_GROUP_METRIC = exports.SUB_GROUP_DETAIL = exports.DETAIL = exports.TOTALS = exports.DIMENSION_TYPE_ORGANISATION_UNIT_GROUP_SET = exports.DIMENSION_TYPE_ORGANISATION_UNIT = exports.DIMENSION_TYPE_PERIOD = exports.DIMENSION_TYPE_DATA = exports.DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET = exports.DIMENSION_TYPE_CATEGORY_OPTION_GROUP_SET = exports.DIMENSION_TYPE_CATEGORY = exports.DIMENSION_TYPE_DATA_ELEMENT_OPERAND = exports.DIMENSION_TYPE_PROGRAM_ATTRIBUTE = exports.DIMENSION_TYPE_PROGRAM_DATA_ELEMENT = exports.DIMENSION_TYPE_PROGRAM_INDICATOR = exports.DIMENSION_TYPE_EVENT_DATA_ITEM = exports.DIMENSION_TYPE_DATA_SET = exports.DIMENSION_TYPE_DATA_ELEMENT = exports.DIMENSION_TYPE_INDICATOR = exports.DIMENSION_TYPE_ALL = void 0;
9
9
 
10
10
  var _index = _interopRequireDefault(require("../locales/index.js"));
11
11
 
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
14
- const ALL_ID = 'ALL';
15
- exports.ALL_ID = ALL_ID;
16
- const INDICATORS = 'INDICATOR';
17
- exports.INDICATORS = INDICATORS;
18
- const DATA_ELEMENTS = 'DATA_ELEMENT';
19
- exports.DATA_ELEMENTS = DATA_ELEMENTS;
20
- const DATA_SETS = 'DATA_SET';
21
- exports.DATA_SETS = DATA_SETS;
22
- const EVENT_DATA_ITEMS = 'EVENT_DATA_ITEM';
23
- exports.EVENT_DATA_ITEMS = EVENT_DATA_ITEMS;
24
- const PROGRAM_INDICATORS = 'PROGRAM_INDICATOR';
25
- exports.PROGRAM_INDICATORS = PROGRAM_INDICATORS;
26
- const PROGRAM_DATA_ELEMENT = 'PROGRAM_DATA_ELEMENT';
27
- exports.PROGRAM_DATA_ELEMENT = PROGRAM_DATA_ELEMENT;
28
- const PROGRAM_ATTRIBUTE = 'PROGRAM_ATTRIBUTE';
29
- exports.PROGRAM_ATTRIBUTE = PROGRAM_ATTRIBUTE;
30
- const DATA_ELEMENT_OPERAND = 'DATA_ELEMENT_OPERAND';
31
- exports.DATA_ELEMENT_OPERAND = DATA_ELEMENT_OPERAND;
14
+ const DIMENSION_TYPE_ALL = 'ALL';
15
+ exports.DIMENSION_TYPE_ALL = DIMENSION_TYPE_ALL;
16
+ const DIMENSION_TYPE_INDICATOR = 'INDICATOR';
17
+ exports.DIMENSION_TYPE_INDICATOR = DIMENSION_TYPE_INDICATOR;
18
+ const DIMENSION_TYPE_DATA_ELEMENT = 'DATA_ELEMENT';
19
+ exports.DIMENSION_TYPE_DATA_ELEMENT = DIMENSION_TYPE_DATA_ELEMENT;
20
+ const DIMENSION_TYPE_DATA_SET = 'DATA_SET';
21
+ exports.DIMENSION_TYPE_DATA_SET = DIMENSION_TYPE_DATA_SET;
22
+ const DIMENSION_TYPE_EVENT_DATA_ITEM = 'EVENT_DATA_ITEM';
23
+ exports.DIMENSION_TYPE_EVENT_DATA_ITEM = DIMENSION_TYPE_EVENT_DATA_ITEM;
24
+ const DIMENSION_TYPE_PROGRAM_INDICATOR = 'PROGRAM_INDICATOR';
25
+ exports.DIMENSION_TYPE_PROGRAM_INDICATOR = DIMENSION_TYPE_PROGRAM_INDICATOR;
26
+ const DIMENSION_TYPE_PROGRAM_DATA_ELEMENT = 'PROGRAM_DATA_ELEMENT';
27
+ exports.DIMENSION_TYPE_PROGRAM_DATA_ELEMENT = DIMENSION_TYPE_PROGRAM_DATA_ELEMENT;
28
+ const DIMENSION_TYPE_PROGRAM_ATTRIBUTE = 'PROGRAM_ATTRIBUTE';
29
+ exports.DIMENSION_TYPE_PROGRAM_ATTRIBUTE = DIMENSION_TYPE_PROGRAM_ATTRIBUTE;
30
+ const DIMENSION_TYPE_DATA_ELEMENT_OPERAND = 'DATA_ELEMENT_OPERAND';
31
+ exports.DIMENSION_TYPE_DATA_ELEMENT_OPERAND = DIMENSION_TYPE_DATA_ELEMENT_OPERAND;
32
+ const DIMENSION_TYPE_CATEGORY = 'CATEGORY';
33
+ exports.DIMENSION_TYPE_CATEGORY = DIMENSION_TYPE_CATEGORY;
34
+ const DIMENSION_TYPE_CATEGORY_OPTION_GROUP_SET = 'CATEGORY_OPTION_GROUP_SET';
35
+ exports.DIMENSION_TYPE_CATEGORY_OPTION_GROUP_SET = DIMENSION_TYPE_CATEGORY_OPTION_GROUP_SET;
36
+ const DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET = 'DATA_ELEMENT_GROUP_SET';
37
+ exports.DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET = DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET;
38
+ const DIMENSION_TYPE_DATA = 'DATA_X';
39
+ exports.DIMENSION_TYPE_DATA = DIMENSION_TYPE_DATA;
40
+ const DIMENSION_TYPE_PERIOD = 'PERIOD';
41
+ exports.DIMENSION_TYPE_PERIOD = DIMENSION_TYPE_PERIOD;
42
+ const DIMENSION_TYPE_ORGANISATION_UNIT = 'ORGANISATION_UNIT';
43
+ exports.DIMENSION_TYPE_ORGANISATION_UNIT = DIMENSION_TYPE_ORGANISATION_UNIT;
44
+ const DIMENSION_TYPE_ORGANISATION_UNIT_GROUP_SET = 'ORGANISATION_UNIT_GROUP_SET';
45
+ exports.DIMENSION_TYPE_ORGANISATION_UNIT_GROUP_SET = DIMENSION_TYPE_ORGANISATION_UNIT_GROUP_SET;
32
46
  const TOTALS = 'totals';
33
47
  exports.TOTALS = TOTALS;
34
48
  const DETAIL = 'detail';
@@ -42,25 +56,25 @@ const getProgramText = () => _index.default.t('Program');
42
56
 
43
57
  const getSelectProgramText = () => _index.default.t('Select a program');
44
58
 
45
- const dataTypes = {
46
- [INDICATORS]: {
47
- id: INDICATORS,
59
+ const dataTypeMap = {
60
+ [DIMENSION_TYPE_INDICATOR]: {
61
+ id: DIMENSION_TYPE_INDICATOR,
48
62
  getName: () => _index.default.t('Indicators'),
49
63
  getGroupLabel: () => _index.default.t('Indicator group'),
50
64
  defaultGroup: {
51
- id: ALL_ID,
65
+ id: DIMENSION_TYPE_ALL,
52
66
  getName: () => _index.default.t('All groups')
53
67
  },
54
68
  getItemName: () => _index.default.t('Indicator'),
55
69
  getGroupEmptyLabel: () => _index.default.t('No indicator groups found'),
56
70
  getGroupLoadingLabel: () => _index.default.t('Loading indicator groups')
57
71
  },
58
- [DATA_ELEMENTS]: {
59
- id: DATA_ELEMENTS,
72
+ [DIMENSION_TYPE_DATA_ELEMENT]: {
73
+ id: DIMENSION_TYPE_DATA_ELEMENT,
60
74
  getName: () => _index.default.t('Data elements'),
61
75
  getGroupLabel: () => _index.default.t('Data element group'),
62
76
  defaultGroup: {
63
- id: ALL_ID,
77
+ id: DIMENSION_TYPE_ALL,
64
78
  getName: () => _index.default.t('All groups')
65
79
  },
66
80
  subGroup: SUB_GROUP_DETAIL,
@@ -68,12 +82,12 @@ const dataTypes = {
68
82
  getGroupEmptyLabel: () => _index.default.t('No data element groups found'),
69
83
  getGroupLoadingLabel: () => _index.default.t('Loading data element groups')
70
84
  },
71
- [DATA_SETS]: {
72
- id: DATA_SETS,
85
+ [DIMENSION_TYPE_DATA_SET]: {
86
+ id: DIMENSION_TYPE_DATA_SET,
73
87
  getName: () => _index.default.t('Data sets'),
74
88
  getGroupLabel: () => _index.default.t('Data set'),
75
89
  defaultGroup: {
76
- id: ALL_ID,
90
+ id: DIMENSION_TYPE_ALL,
77
91
  getName: () => _index.default.t('All data sets')
78
92
  },
79
93
  subGroup: SUB_GROUP_METRIC,
@@ -81,26 +95,26 @@ const dataTypes = {
81
95
  getGroupEmptyLabel: () => _index.default.t('No data sets found'),
82
96
  getGroupLoadingLabel: () => _index.default.t('Loading data sets')
83
97
  },
84
- [EVENT_DATA_ITEMS]: {
85
- id: EVENT_DATA_ITEMS,
98
+ [DIMENSION_TYPE_EVENT_DATA_ITEM]: {
99
+ id: DIMENSION_TYPE_EVENT_DATA_ITEM,
86
100
  getName: () => _index.default.t('Event data items'),
87
101
  getGroupLabel: getProgramText,
88
102
  getPlaceholder: getSelectProgramText,
89
103
  defaultGroup: {
90
- id: ALL_ID,
104
+ id: DIMENSION_TYPE_ALL,
91
105
  getName: () => _index.default.t('All programs')
92
106
  },
93
107
  getItemName: () => _index.default.t('Event data item'),
94
108
  getGroupEmptyLabel: () => _index.default.t('No programs found'),
95
109
  getGroupLoadingLabel: () => _index.default.t('Loading programs')
96
110
  },
97
- [PROGRAM_INDICATORS]: {
98
- id: PROGRAM_INDICATORS,
111
+ [DIMENSION_TYPE_PROGRAM_INDICATOR]: {
112
+ id: DIMENSION_TYPE_PROGRAM_INDICATOR,
99
113
  getName: () => _index.default.t('Program indicators'),
100
114
  getGroupLabel: getProgramText,
101
115
  getPlaceholder: getSelectProgramText,
102
116
  defaultGroup: {
103
- id: ALL_ID,
117
+ id: DIMENSION_TYPE_ALL,
104
118
  getName: () => _index.default.t('All programs')
105
119
  },
106
120
  getItemName: () => _index.default.t('Program indicator'),
@@ -108,15 +122,15 @@ const dataTypes = {
108
122
  getGroupLoadingLabel: () => _index.default.t('Loading programs')
109
123
  }
110
124
  };
111
- exports.dataTypes = dataTypes;
125
+ exports.dataTypeMap = dataTypeMap;
112
126
 
113
127
  function defaultGroupId(dataType) {
114
- return dataTypes[dataType].defaultGroup ? dataTypes[dataType].defaultGroup.id : '';
128
+ return dataTypeMap[dataType].defaultGroup ? dataTypeMap[dataType].defaultGroup.id : '';
115
129
  }
116
130
 
117
131
  function defaultGroupDetail(dataType) {
118
- return dataTypes[dataType].groupDetail ? dataTypes[dataType].groupDetail.default : '';
132
+ return dataTypeMap[dataType].groupDetail ? dataTypeMap[dataType].groupDetail.default : '';
119
133
  }
120
134
 
121
- const DEFAULT_DATATYPE_ID = INDICATORS;
135
+ const DEFAULT_DATATYPE_ID = DIMENSION_TYPE_INDICATOR;
122
136
  exports.DEFAULT_DATATYPE_ID = DEFAULT_DATATYPE_ID;
@@ -7,6 +7,8 @@ exports.PivotTableEngine = void 0;
7
7
 
8
8
  var _times = _interopRequireDefault(require("lodash/times"));
9
9
 
10
+ var _dataTypes = require("../dataTypes.js");
11
+
10
12
  var _predefinedDimensions = require("../predefinedDimensions.js");
11
13
 
12
14
  var _renderValue = require("../renderValue.js");
@@ -39,7 +41,7 @@ const defaultVisualizationProps = {
39
41
  displayDensity: _pivotTableConstants.DISPLAY_DENSITY_OPTION_NORMAL
40
42
  };
41
43
 
42
- const isDxDimension = dimensionItem => [_pivotTableConstants.DIMENSION_TYPE_DATA, _pivotTableConstants.DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET].includes(dimensionItem.dimensionType);
44
+ const isDxDimension = dimensionItem => [_dataTypes.DIMENSION_TYPE_DATA, _dataTypes.DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET].includes(dimensionItem.dimensionType);
43
45
 
44
46
  const countFromDisaggregates = list => {
45
47
  let count = 1;
@@ -266,8 +268,8 @@ class PivotTableEngine {
266
268
  column
267
269
  });
268
270
  const headers = [...this.getRawRowHeader(row), ...this.getRawColumnHeader(column)];
269
- const peId = (_headers$find = headers.find(header => (header === null || header === void 0 ? void 0 : header.dimensionItemType) === _pivotTableConstants.DIMENSION_TYPE_PERIOD)) === null || _headers$find === void 0 ? void 0 : _headers$find.uid;
270
- const ouId = (_headers$find2 = headers.find(header => (header === null || header === void 0 ? void 0 : header.dimensionItemType) === _pivotTableConstants.DIMENSION_TYPE_ORGUNIT)) === null || _headers$find2 === void 0 ? void 0 : _headers$find2.uid;
271
+ const peId = (_headers$find = headers.find(header => (header === null || header === void 0 ? void 0 : header.dimensionItemType) === _dataTypes.DIMENSION_TYPE_PERIOD)) === null || _headers$find === void 0 ? void 0 : _headers$find.uid;
272
+ const ouId = (_headers$find2 = headers.find(header => (header === null || header === void 0 ? void 0 : header.dimensionItemType) === _dataTypes.DIMENSION_TYPE_ORGANISATION_UNIT)) === null || _headers$find2 === void 0 ? void 0 : _headers$find2.uid;
271
273
 
272
274
  if (!this.data[row] || !this.data[row][column]) {
273
275
  return {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.DIMENSION_TYPE_ORGUNIT = exports.DIMENSION_TYPE_PERIOD = exports.DIMENSION_TYPE_DATA = exports.DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET = exports.CLIPPED_AXIS_PARTITION_SIZE_PX = exports.WRAPPED_TEXT_LINE_HEIGHT = exports.WRAPPED_TEXT_JUSTIFY_BUFFER = exports.CLIPPED_CELL_MIN_SIZE = exports.CLIPPED_CELL_MAX_SIZE = exports.DISPLAY_DENSITY_PADDING_COMFORTABLE = exports.DISPLAY_DENSITY_OPTION_COMFORTABLE = exports.DISPLAY_DENSITY_PADDING_NORMAL = exports.DISPLAY_DENSITY_OPTION_NORMAL = exports.DISPLAY_DENSITY_PADDING_COMPACT = exports.DISPLAY_DENSITY_OPTION_COMPACT = exports.FONT_SIZE_LARGE = exports.FONT_SIZE_OPTION_LARGE = exports.FONT_SIZE_NORMAL = exports.FONT_SIZE_OPTION_NORMAL = exports.FONT_SIZE_SMALL = exports.FONT_SIZE_OPTION_SMALL = exports.BORDER_COLOR = exports.NUMBER_TYPE_COLUMN_PERCENTAGE = exports.NUMBER_TYPE_ROW_PERCENTAGE = exports.NUMBER_TYPE_VALUE = exports.AGGREGATE_TYPE_NA = exports.AGGREGATE_TYPE_AVERAGE = exports.AGGREGATE_TYPE_SUM = exports.CELL_TYPE_TOTAL = exports.CELL_TYPE_SUBTOTAL = exports.CELL_TYPE_VALUE = exports.SORT_ORDER_DESCENDING = exports.SORT_ORDER_ASCENDING = void 0;
6
+ exports.CLIPPED_AXIS_PARTITION_SIZE_PX = exports.WRAPPED_TEXT_LINE_HEIGHT = exports.WRAPPED_TEXT_JUSTIFY_BUFFER = exports.CLIPPED_CELL_MIN_SIZE = exports.CLIPPED_CELL_MAX_SIZE = exports.DISPLAY_DENSITY_PADDING_COMFORTABLE = exports.DISPLAY_DENSITY_OPTION_COMFORTABLE = exports.DISPLAY_DENSITY_PADDING_NORMAL = exports.DISPLAY_DENSITY_OPTION_NORMAL = exports.DISPLAY_DENSITY_PADDING_COMPACT = exports.DISPLAY_DENSITY_OPTION_COMPACT = exports.FONT_SIZE_LARGE = exports.FONT_SIZE_OPTION_LARGE = exports.FONT_SIZE_NORMAL = exports.FONT_SIZE_OPTION_NORMAL = exports.FONT_SIZE_SMALL = exports.FONT_SIZE_OPTION_SMALL = exports.BORDER_COLOR = exports.NUMBER_TYPE_COLUMN_PERCENTAGE = exports.NUMBER_TYPE_ROW_PERCENTAGE = exports.NUMBER_TYPE_VALUE = exports.AGGREGATE_TYPE_NA = exports.AGGREGATE_TYPE_AVERAGE = exports.AGGREGATE_TYPE_SUM = exports.CELL_TYPE_TOTAL = exports.CELL_TYPE_SUBTOTAL = exports.CELL_TYPE_VALUE = exports.SORT_ORDER_DESCENDING = exports.SORT_ORDER_ASCENDING = void 0;
7
7
  const SORT_ORDER_ASCENDING = 1;
8
8
  exports.SORT_ORDER_ASCENDING = SORT_ORDER_ASCENDING;
9
9
  const SORT_ORDER_DESCENDING = -1;
@@ -61,12 +61,4 @@ exports.WRAPPED_TEXT_JUSTIFY_BUFFER = WRAPPED_TEXT_JUSTIFY_BUFFER;
61
61
  const WRAPPED_TEXT_LINE_HEIGHT = 1.0;
62
62
  exports.WRAPPED_TEXT_LINE_HEIGHT = WRAPPED_TEXT_LINE_HEIGHT;
63
63
  const CLIPPED_AXIS_PARTITION_SIZE_PX = 1000;
64
- exports.CLIPPED_AXIS_PARTITION_SIZE_PX = CLIPPED_AXIS_PARTITION_SIZE_PX;
65
- const DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET = 'DATA_ELEMENT_GROUP_SET';
66
- exports.DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET = DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET;
67
- const DIMENSION_TYPE_DATA = 'DATA_X';
68
- exports.DIMENSION_TYPE_DATA = DIMENSION_TYPE_DATA;
69
- const DIMENSION_TYPE_PERIOD = 'PERIOD';
70
- exports.DIMENSION_TYPE_PERIOD = DIMENSION_TYPE_PERIOD;
71
- const DIMENSION_TYPE_ORGUNIT = 'ORGANISATION_UNIT';
72
- exports.DIMENSION_TYPE_ORGUNIT = DIMENSION_TYPE_ORGUNIT;
64
+ exports.CLIPPED_AXIS_PARTITION_SIZE_PX = CLIPPED_AXIS_PARTITION_SIZE_PX;
@@ -11,7 +11,7 @@ var _valueTypes = require("./valueTypes.js");
11
11
 
12
12
  const trimTrailingZeros = stringValue => stringValue.replace(/\.?0+$/, '');
13
13
 
14
- const defaultDecimalSeparator = '.';
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 (valueType !== _valueTypes.VALUE_TYPE_NUMBER || value === undefined) {
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
- return trimTrailingZeros(toFixedPrecisionString(value * 100, visualization.skipRounding)) + '%';
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;