@dhis2/analytics 23.7.10 → 23.8.2
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/api/analytics/AnalyticsResponse.js +6 -4
- package/build/cjs/api/analytics/__tests__/AnalyticsResponseHeader.spec.js +3 -1
- package/build/cjs/api/dimensions.js +19 -19
- package/build/cjs/components/DataDimension/{DataTypesSelector.js → DataTypeSelector.js} +11 -11
- package/build/cjs/components/DataDimension/GroupSelector.js +10 -10
- package/build/cjs/components/DataDimension/ItemSelector.js +31 -31
- package/build/cjs/components/DataDimension/MetricSelector.js +4 -4
- package/build/cjs/components/DataDimension/styles/{DataTypesSelector.style.js → DataTypeSelector.style.js} +0 -0
- package/build/cjs/components/FileMenu/FileMenu.styles.js +2 -2
- package/build/cjs/components/PivotTable/PivotTableValueCell.js +3 -1
- package/build/cjs/index.js +221 -1
- package/build/cjs/modules/dataTypes.js +53 -41
- package/build/cjs/modules/pivotTable/PivotTableEngine.js +14 -10
- package/build/cjs/modules/pivotTable/pivotTableConstants.js +2 -14
- package/build/cjs/modules/{pivotTable/renderValue.js → renderValue.js} +4 -2
- package/build/cjs/modules/valueTypes.js +50 -0
- package/build/cjs/visualizations/config/adapters/dhis_dhis/value/index.js +3 -3
- package/build/es/api/analytics/AnalyticsResponse.js +5 -4
- package/build/es/api/analytics/__tests__/AnalyticsResponseHeader.spec.js +2 -1
- package/build/es/api/dimensions.js +20 -21
- package/build/es/components/DataDimension/{DataTypesSelector.js → DataTypeSelector.js} +8 -8
- package/build/es/components/DataDimension/GroupSelector.js +4 -4
- package/build/es/components/DataDimension/ItemSelector.js +29 -29
- package/build/es/components/DataDimension/MetricSelector.js +5 -5
- package/build/es/components/DataDimension/styles/{DataTypesSelector.style.js → DataTypeSelector.style.js} +0 -0
- package/build/es/components/FileMenu/FileMenu.styles.js +2 -2
- package/build/es/components/PivotTable/PivotTableValueCell.js +2 -1
- package/build/es/index.js +7 -4
- package/build/es/modules/dataTypes.js +35 -29
- package/build/es/modules/pivotTable/PivotTableEngine.js +5 -3
- package/build/es/modules/pivotTable/pivotTableConstants.js +1 -7
- package/build/es/modules/{pivotTable/renderValue.js → renderValue.js} +2 -1
- package/build/es/modules/valueTypes.js +23 -0
- package/build/es/visualizations/config/adapters/dhis_dhis/value/index.js +2 -2
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { VALUE_TYPE_TEXT } from '../../../modules/valueTypes.js';
|
|
1
2
|
import AnalyticsResponseHeader from '../AnalyticsResponseHeader.js';
|
|
2
3
|
let responseHeader;
|
|
3
4
|
let expectedResponseHeader;
|
|
@@ -24,7 +25,7 @@ describe('AnalyticsResponseHeader', () => {
|
|
|
24
25
|
const header = {
|
|
25
26
|
name: 'cejWyOfXge6',
|
|
26
27
|
column: 'Gender',
|
|
27
|
-
valueType:
|
|
28
|
+
valueType: VALUE_TYPE_TEXT,
|
|
28
29
|
type: 'java.lang.String',
|
|
29
30
|
hidden: false,
|
|
30
31
|
meta: true,
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import objectClean from 'd2-utilizr/lib/objectClean';
|
|
2
|
-
import {
|
|
3
|
-
, INDICATORS, DATA_ELEMENTS, DATA_SETS, PROGRAM_INDICATORS, EVENT_DATA_ITEMS, PROGRAM_DATA_ELEMENT, PROGRAM_ATTRIBUTE, TOTALS } from '../modules/dataTypes.js';
|
|
2
|
+
import { DIMENSION_TYPE_ALL, DIMENSION_TYPE_INDICATOR, DIMENSION_TYPE_DATA_ELEMENT, DIMENSION_TYPE_DATA_SET, DIMENSION_TYPE_PROGRAM_INDICATOR, DIMENSION_TYPE_EVENT_DATA_ITEM, DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, DIMENSION_TYPE_PROGRAM_ATTRIBUTE, TOTALS } from '../modules/dataTypes.js';
|
|
4
3
|
import { onError } from './index.js'; // Query definitions
|
|
5
4
|
|
|
6
5
|
export const dimensionsQuery = {
|
|
@@ -45,13 +44,13 @@ export const dataItemsQuery = {
|
|
|
45
44
|
}) => {
|
|
46
45
|
const filters = []; // TODO: Extract all of this logic out of the query?
|
|
47
46
|
|
|
48
|
-
if ((filter === null || filter === void 0 ? void 0 : filter.dataType) ===
|
|
49
|
-
filters.push("dimensionItemType:in:[".concat(
|
|
50
|
-
} else if (filter !== null && filter !== void 0 && filter.dataType && filter.dataType !==
|
|
47
|
+
if ((filter === null || filter === void 0 ? void 0 : filter.dataType) === DIMENSION_TYPE_EVENT_DATA_ITEM) {
|
|
48
|
+
filters.push("dimensionItemType:in:[".concat(DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, ",").concat(DIMENSION_TYPE_PROGRAM_ATTRIBUTE, "]"));
|
|
49
|
+
} else if (filter !== null && filter !== void 0 && filter.dataType && filter.dataType !== DIMENSION_TYPE_ALL) {
|
|
51
50
|
filters.push("dimensionItemType:eq:".concat(filter.dataType));
|
|
52
51
|
}
|
|
53
52
|
|
|
54
|
-
if (filter !== null && filter !== void 0 && filter.group && filter.group !==
|
|
53
|
+
if (filter !== null && filter !== void 0 && filter.group && filter.group !== DIMENSION_TYPE_ALL && [DIMENSION_TYPE_EVENT_DATA_ITEM, DIMENSION_TYPE_PROGRAM_INDICATOR].includes(filter.dataType)) {
|
|
55
54
|
filters.push("programId:eq:".concat(filter.group));
|
|
56
55
|
}
|
|
57
56
|
|
|
@@ -78,7 +77,7 @@ export const indicatorsQuery = {
|
|
|
78
77
|
}) => {
|
|
79
78
|
const filters = [];
|
|
80
79
|
|
|
81
|
-
if (filter !== null && filter !== void 0 && filter.group && filter.group !==
|
|
80
|
+
if (filter !== null && filter !== void 0 && filter.group && filter.group !== DIMENSION_TYPE_ALL) {
|
|
82
81
|
filters.push("indicatorGroups.id:eq:".concat(filter.group));
|
|
83
82
|
}
|
|
84
83
|
|
|
@@ -113,10 +112,10 @@ export const dataElementsQuery = {
|
|
|
113
112
|
searchTerm,
|
|
114
113
|
page
|
|
115
114
|
}) => {
|
|
116
|
-
const idField = (filter === null || filter === void 0 ? void 0 : filter.group) ===
|
|
115
|
+
const idField = (filter === null || filter === void 0 ? void 0 : filter.group) === DIMENSION_TYPE_ALL ? 'id' : 'dimensionItem~rename(id)';
|
|
117
116
|
const filters = ['domainType:eq:AGGREGATE'];
|
|
118
117
|
|
|
119
|
-
if (filter !== null && filter !== void 0 && filter.group && filter.group !==
|
|
118
|
+
if (filter !== null && filter !== void 0 && filter.group && filter.group !== DIMENSION_TYPE_ALL) {
|
|
120
119
|
filters.push("dataElementGroups.id:eq:".concat(filter.group));
|
|
121
120
|
}
|
|
122
121
|
|
|
@@ -176,10 +175,10 @@ export const dataElementOperandsQuery = {
|
|
|
176
175
|
searchTerm,
|
|
177
176
|
page
|
|
178
177
|
}) => {
|
|
179
|
-
const idField = (filter === null || filter === void 0 ? void 0 : filter.group) ===
|
|
178
|
+
const idField = (filter === null || filter === void 0 ? void 0 : filter.group) === DIMENSION_TYPE_ALL ? 'id' : 'dimensionItem~rename(id)';
|
|
180
179
|
const filters = [];
|
|
181
180
|
|
|
182
|
-
if (filter !== null && filter !== void 0 && filter.group && filter.group !==
|
|
181
|
+
if (filter !== null && filter !== void 0 && filter.group && filter.group !== DIMENSION_TYPE_ALL) {
|
|
183
182
|
filters.push("dataElement.dataElementGroups.id:eq:".concat(filter.group));
|
|
184
183
|
}
|
|
185
184
|
|
|
@@ -210,7 +209,7 @@ export const dataSetsQuery = {
|
|
|
210
209
|
filters.push("".concat(nameProp, ":ilike:").concat(searchTerm));
|
|
211
210
|
}
|
|
212
211
|
|
|
213
|
-
if (filter !== null && filter !== void 0 && filter.group && filter.group !==
|
|
212
|
+
if (filter !== null && filter !== void 0 && filter.group && filter.group !== DIMENSION_TYPE_ALL) {
|
|
214
213
|
filters.push("id:eq:".concat(filter.group));
|
|
215
214
|
}
|
|
216
215
|
|
|
@@ -271,7 +270,7 @@ export const apiFetchOptions = ({
|
|
|
271
270
|
page
|
|
272
271
|
}) => {
|
|
273
272
|
switch (filter === null || filter === void 0 ? void 0 : filter.dataType) {
|
|
274
|
-
case
|
|
273
|
+
case DIMENSION_TYPE_INDICATOR:
|
|
275
274
|
{
|
|
276
275
|
return fetchIndicators({
|
|
277
276
|
dataEngine,
|
|
@@ -282,7 +281,7 @@ export const apiFetchOptions = ({
|
|
|
282
281
|
});
|
|
283
282
|
}
|
|
284
283
|
|
|
285
|
-
case
|
|
284
|
+
case DIMENSION_TYPE_DATA_ELEMENT:
|
|
286
285
|
{
|
|
287
286
|
if (filter.subGroup === TOTALS) {
|
|
288
287
|
return fetchDataElements({
|
|
@@ -303,7 +302,7 @@ export const apiFetchOptions = ({
|
|
|
303
302
|
}
|
|
304
303
|
}
|
|
305
304
|
|
|
306
|
-
case
|
|
305
|
+
case DIMENSION_TYPE_DATA_SET:
|
|
307
306
|
{
|
|
308
307
|
return fetchDataSets({
|
|
309
308
|
dataEngine,
|
|
@@ -326,10 +325,10 @@ export const apiFetchOptions = ({
|
|
|
326
325
|
};
|
|
327
326
|
export const apiFetchGroups = async (dataEngine, dataType, nameProp) => {
|
|
328
327
|
// indicatorGroups does not support shortName
|
|
329
|
-
const name = dataType ===
|
|
328
|
+
const name = dataType === DIMENSION_TYPE_INDICATOR ? 'displayName' : nameProp;
|
|
330
329
|
|
|
331
330
|
switch (dataType) {
|
|
332
|
-
case
|
|
331
|
+
case DIMENSION_TYPE_INDICATOR:
|
|
333
332
|
{
|
|
334
333
|
const indicatorGroupsData = await dataEngine.query({
|
|
335
334
|
indicatorGroups: indicatorGroupsQuery
|
|
@@ -342,7 +341,7 @@ export const apiFetchGroups = async (dataEngine, dataType, nameProp) => {
|
|
|
342
341
|
return indicatorGroupsData.indicatorGroups.indicatorGroups;
|
|
343
342
|
}
|
|
344
343
|
|
|
345
|
-
case
|
|
344
|
+
case DIMENSION_TYPE_DATA_ELEMENT:
|
|
346
345
|
{
|
|
347
346
|
const dataElementGroupsData = await dataEngine.query({
|
|
348
347
|
dataElementGroups: dataElementGroupsQuery
|
|
@@ -355,7 +354,7 @@ export const apiFetchGroups = async (dataEngine, dataType, nameProp) => {
|
|
|
355
354
|
return dataElementGroupsData.dataElementGroups.dataElementGroups;
|
|
356
355
|
}
|
|
357
356
|
|
|
358
|
-
case
|
|
357
|
+
case DIMENSION_TYPE_DATA_SET:
|
|
359
358
|
{
|
|
360
359
|
const response = await dataEngine.query({
|
|
361
360
|
data: dataSetsQuery
|
|
@@ -368,8 +367,8 @@ export const apiFetchGroups = async (dataEngine, dataType, nameProp) => {
|
|
|
368
367
|
return response.data.dataSets;
|
|
369
368
|
}
|
|
370
369
|
|
|
371
|
-
case
|
|
372
|
-
case
|
|
370
|
+
case DIMENSION_TYPE_EVENT_DATA_ITEM:
|
|
371
|
+
case DIMENSION_TYPE_PROGRAM_INDICATOR:
|
|
373
372
|
{
|
|
374
373
|
const programsData = await dataEngine.query({
|
|
375
374
|
programs: programsQuery
|
|
@@ -3,10 +3,10 @@ import { SingleSelectField, SingleSelectOption } from '@dhis2/ui';
|
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import i18n from '../../locales/index.js';
|
|
6
|
-
import {
|
|
7
|
-
import styles from './styles/
|
|
6
|
+
import { DIMENSION_TYPE_ALL, dataTypeMap as dataTypes } from '../../modules/dataTypes.js';
|
|
7
|
+
import styles from './styles/DataTypeSelector.style.js';
|
|
8
8
|
|
|
9
|
-
const
|
|
9
|
+
const DataTypeSelector = ({
|
|
10
10
|
currentDataType,
|
|
11
11
|
onChange,
|
|
12
12
|
dataTest
|
|
@@ -18,12 +18,12 @@ const DataTypes = ({
|
|
|
18
18
|
}, /*#__PURE__*/React.createElement(SingleSelectField, {
|
|
19
19
|
label: i18n.t('Data Type'),
|
|
20
20
|
dataTest: dataTest,
|
|
21
|
-
selected: ((_dataTypes$currentDat = dataTypes[currentDataType]) === null || _dataTypes$currentDat === void 0 ? void 0 : _dataTypes$currentDat.id) ||
|
|
21
|
+
selected: ((_dataTypes$currentDat = dataTypes[currentDataType]) === null || _dataTypes$currentDat === void 0 ? void 0 : _dataTypes$currentDat.id) || DIMENSION_TYPE_ALL,
|
|
22
22
|
onChange: ref => onChange(ref.selected),
|
|
23
23
|
dense: true
|
|
24
24
|
}, /*#__PURE__*/React.createElement(SingleSelectOption, {
|
|
25
|
-
value:
|
|
26
|
-
key:
|
|
25
|
+
value: DIMENSION_TYPE_ALL,
|
|
26
|
+
key: DIMENSION_TYPE_ALL,
|
|
27
27
|
label: i18n.t('All types'),
|
|
28
28
|
dataTest: "".concat(dataTest, "-option-all")
|
|
29
29
|
}), Object.values(dataTypes).map(type => /*#__PURE__*/React.createElement(SingleSelectOption, {
|
|
@@ -36,9 +36,9 @@ const DataTypes = ({
|
|
|
36
36
|
}, styles));
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
DataTypeSelector.propTypes = {
|
|
40
40
|
currentDataType: PropTypes.string.isRequired,
|
|
41
41
|
onChange: PropTypes.func.isRequired,
|
|
42
42
|
dataTest: PropTypes.string
|
|
43
43
|
};
|
|
44
|
-
export default
|
|
44
|
+
export default DataTypeSelector;
|
|
@@ -5,12 +5,12 @@ import PropTypes from 'prop-types';
|
|
|
5
5
|
import React, { useEffect, useState } from 'react';
|
|
6
6
|
import { apiFetchGroups } from '../../api/dimensions.js';
|
|
7
7
|
import i18n from '../../locales/index.js';
|
|
8
|
-
import { dataTypes, SUB_GROUP_DETAIL, SUB_GROUP_METRIC } from '../../modules/dataTypes.js';
|
|
8
|
+
import { dataTypeMap as dataTypes, SUB_GROUP_DETAIL, SUB_GROUP_METRIC } from '../../modules/dataTypes.js';
|
|
9
9
|
import { DetailSelector } from './DetailSelector.js';
|
|
10
10
|
import { MetricSelector } from './MetricSelector.js';
|
|
11
11
|
import styles from './styles/GroupSelector.style.js';
|
|
12
12
|
|
|
13
|
-
const
|
|
13
|
+
const GroupSelector = ({
|
|
14
14
|
dataType,
|
|
15
15
|
currentGroup,
|
|
16
16
|
onGroupChange,
|
|
@@ -74,7 +74,7 @@ const GroupsSelector = ({
|
|
|
74
74
|
}));
|
|
75
75
|
};
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
GroupSelector.propTypes = {
|
|
78
78
|
dataType: PropTypes.string.isRequired,
|
|
79
79
|
displayNameProp: PropTypes.string.isRequired,
|
|
80
80
|
onGroupChange: PropTypes.func.isRequired,
|
|
@@ -83,4 +83,4 @@ GroupsSelector.propTypes = {
|
|
|
83
83
|
currentSubGroup: PropTypes.string,
|
|
84
84
|
dataTest: PropTypes.string
|
|
85
85
|
};
|
|
86
|
-
export default
|
|
86
|
+
export default GroupSelector;
|
|
@@ -11,12 +11,12 @@ import DataElementIcon from '../../assets/DimensionItemIcons/DataElementIcon.js'
|
|
|
11
11
|
import GenericIcon from '../../assets/DimensionItemIcons/GenericIcon.js';
|
|
12
12
|
import i18n from '../../locales/index.js';
|
|
13
13
|
import { DATA_SETS_CONSTANTS, REPORTING_RATE } from '../../modules/dataSets.js';
|
|
14
|
-
import {
|
|
14
|
+
import { dataTypeMap as dataTypes, DIMENSION_TYPE_ALL, DIMENSION_TYPE_DATA_ELEMENT, DIMENSION_TYPE_DATA_ELEMENT_OPERAND, DIMENSION_TYPE_DATA_SET, DIMENSION_TYPE_EVENT_DATA_ITEM, DIMENSION_TYPE_PROGRAM_INDICATOR, DIMENSION_TYPE_INDICATOR, TOTALS, DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, DIMENSION_TYPE_PROGRAM_ATTRIBUTE } from '../../modules/dataTypes.js';
|
|
15
15
|
import { TRANSFER_HEIGHT, TRANSFER_OPTIONS_WIDTH, TRANSFER_SELECTED_WIDTH } from '../../modules/dimensionSelectorHelper.js';
|
|
16
16
|
import { useDebounce, useDidUpdateEffect } from '../../modules/utils.js';
|
|
17
17
|
import styles from '../styles/DimensionSelector.style.js';
|
|
18
18
|
import { TransferOption } from '../TransferOption.js';
|
|
19
|
-
import DataTypeSelector from './
|
|
19
|
+
import DataTypeSelector from './DataTypeSelector.js';
|
|
20
20
|
import GroupSelector from './GroupSelector.js';
|
|
21
21
|
|
|
22
22
|
const LeftHeader = ({
|
|
@@ -110,23 +110,23 @@ const SourceEmptyPlaceholder = ({
|
|
|
110
110
|
message = noItemsMessage;
|
|
111
111
|
} else {
|
|
112
112
|
switch (dataType) {
|
|
113
|
-
case
|
|
113
|
+
case DIMENSION_TYPE_INDICATOR:
|
|
114
114
|
message = i18n.t('No indicators found');
|
|
115
115
|
break;
|
|
116
116
|
|
|
117
|
-
case
|
|
117
|
+
case DIMENSION_TYPE_DATA_ELEMENT:
|
|
118
118
|
message = i18n.t('No data elements found');
|
|
119
119
|
break;
|
|
120
120
|
|
|
121
|
-
case
|
|
121
|
+
case DIMENSION_TYPE_DATA_SET:
|
|
122
122
|
message = i18n.t('No data sets found');
|
|
123
123
|
break;
|
|
124
124
|
|
|
125
|
-
case
|
|
125
|
+
case DIMENSION_TYPE_EVENT_DATA_ITEM:
|
|
126
126
|
message = i18n.t('No event data items found');
|
|
127
127
|
break;
|
|
128
128
|
|
|
129
|
-
case
|
|
129
|
+
case DIMENSION_TYPE_PROGRAM_INDICATOR:
|
|
130
130
|
message = i18n.t('No program indicators found');
|
|
131
131
|
break;
|
|
132
132
|
|
|
@@ -137,31 +137,31 @@ const SourceEmptyPlaceholder = ({
|
|
|
137
137
|
}
|
|
138
138
|
} else if (!loading && !options.length && searchTerm) {
|
|
139
139
|
switch (dataType) {
|
|
140
|
-
case
|
|
140
|
+
case DIMENSION_TYPE_INDICATOR:
|
|
141
141
|
message = i18n.t('No indicators found for "{{- searchTerm}}"', {
|
|
142
142
|
searchTerm: searchTerm
|
|
143
143
|
});
|
|
144
144
|
break;
|
|
145
145
|
|
|
146
|
-
case
|
|
146
|
+
case DIMENSION_TYPE_DATA_ELEMENT:
|
|
147
147
|
message = i18n.t('No data elements found for "{{- searchTerm}}"', {
|
|
148
148
|
searchTerm: searchTerm
|
|
149
149
|
});
|
|
150
150
|
break;
|
|
151
151
|
|
|
152
|
-
case
|
|
152
|
+
case DIMENSION_TYPE_DATA_SET:
|
|
153
153
|
message = i18n.t('No data sets found for "{{- searchTerm}}"', {
|
|
154
154
|
searchTerm: searchTerm
|
|
155
155
|
});
|
|
156
156
|
break;
|
|
157
157
|
|
|
158
|
-
case
|
|
158
|
+
case DIMENSION_TYPE_EVENT_DATA_ITEM:
|
|
159
159
|
message = i18n.t('No event data items found for "{{- searchTerm}}"', {
|
|
160
160
|
searchTerm: searchTerm
|
|
161
161
|
});
|
|
162
162
|
break;
|
|
163
163
|
|
|
164
|
-
case
|
|
164
|
+
case DIMENSION_TYPE_PROGRAM_INDICATOR:
|
|
165
165
|
message = i18n.t('No program indicators found for "{{- searchTerm}}"', {
|
|
166
166
|
searchTerm: searchTerm
|
|
167
167
|
});
|
|
@@ -204,7 +204,7 @@ const ItemSelector = ({
|
|
|
204
204
|
const [state, setState] = useState({
|
|
205
205
|
searchTerm: '',
|
|
206
206
|
filter: {
|
|
207
|
-
dataType:
|
|
207
|
+
dataType: DIMENSION_TYPE_ALL
|
|
208
208
|
},
|
|
209
209
|
options: [],
|
|
210
210
|
loading: true,
|
|
@@ -238,7 +238,7 @@ const ItemSelector = ({
|
|
|
238
238
|
const newOptions = [];
|
|
239
239
|
(_result$dimensionItem = result.dimensionItems) === null || _result$dimensionItem === void 0 ? void 0 : _result$dimensionItem.forEach(item => {
|
|
240
240
|
if (item.dimensionItemType === REPORTING_RATE) {
|
|
241
|
-
if (state.filter.subGroup && state.filter.subGroup !==
|
|
241
|
+
if (state.filter.subGroup && state.filter.subGroup !== DIMENSION_TYPE_ALL) {
|
|
242
242
|
const metric = DATA_SETS_CONSTANTS.find(item => item.id === state.filter.subGroup);
|
|
243
243
|
newOptions.push({
|
|
244
244
|
label: "".concat(item.name, " - ").concat(metric.getName()),
|
|
@@ -325,15 +325,15 @@ const ItemSelector = ({
|
|
|
325
325
|
var _dataTypes$itemType;
|
|
326
326
|
|
|
327
327
|
switch (itemType) {
|
|
328
|
-
case
|
|
329
|
-
return dataTypes[
|
|
328
|
+
case DIMENSION_TYPE_DATA_ELEMENT_OPERAND:
|
|
329
|
+
return dataTypes[DIMENSION_TYPE_DATA_ELEMENT].getItemName();
|
|
330
330
|
|
|
331
331
|
case REPORTING_RATE:
|
|
332
|
-
return dataTypes[
|
|
332
|
+
return dataTypes[DIMENSION_TYPE_DATA_SET].getItemName();
|
|
333
333
|
|
|
334
|
-
case
|
|
335
|
-
case
|
|
336
|
-
return dataTypes[
|
|
334
|
+
case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT:
|
|
335
|
+
case DIMENSION_TYPE_PROGRAM_ATTRIBUTE:
|
|
336
|
+
return dataTypes[DIMENSION_TYPE_EVENT_DATA_ITEM].getItemName();
|
|
337
337
|
|
|
338
338
|
default:
|
|
339
339
|
return (_dataTypes$itemType = dataTypes[itemType]) === null || _dataTypes$itemType === void 0 ? void 0 : _dataTypes$itemType.getItemName();
|
|
@@ -342,22 +342,22 @@ const ItemSelector = ({
|
|
|
342
342
|
|
|
343
343
|
const getIcon = itemType => {
|
|
344
344
|
switch (itemType) {
|
|
345
|
-
case
|
|
345
|
+
case DIMENSION_TYPE_INDICATOR:
|
|
346
346
|
return /*#__PURE__*/React.createElement(IconDimensionIndicator16, null);
|
|
347
347
|
|
|
348
|
-
case
|
|
349
|
-
case
|
|
348
|
+
case DIMENSION_TYPE_DATA_ELEMENT_OPERAND:
|
|
349
|
+
case DIMENSION_TYPE_DATA_ELEMENT:
|
|
350
350
|
return DataElementIcon;
|
|
351
351
|
|
|
352
352
|
case REPORTING_RATE:
|
|
353
353
|
return /*#__PURE__*/React.createElement(IconDimensionDataSet16, null);
|
|
354
354
|
|
|
355
|
-
case
|
|
356
|
-
case
|
|
357
|
-
case
|
|
355
|
+
case DIMENSION_TYPE_EVENT_DATA_ITEM:
|
|
356
|
+
case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT:
|
|
357
|
+
case DIMENSION_TYPE_PROGRAM_ATTRIBUTE:
|
|
358
358
|
return /*#__PURE__*/React.createElement(IconDimensionEventDataItem16, null);
|
|
359
359
|
|
|
360
|
-
case
|
|
360
|
+
case DIMENSION_TYPE_PROGRAM_INDICATOR:
|
|
361
361
|
return /*#__PURE__*/React.createElement(IconDimensionProgramIndicator16, null);
|
|
362
362
|
|
|
363
363
|
default:
|
|
@@ -388,7 +388,7 @@ const ItemSelector = ({
|
|
|
388
388
|
setFilter({ ...state.filter,
|
|
389
389
|
dataType,
|
|
390
390
|
group: null,
|
|
391
|
-
subGroup: dataType ===
|
|
391
|
+
subGroup: dataType === DIMENSION_TYPE_DATA_ELEMENT ? TOTALS : null
|
|
392
392
|
});
|
|
393
393
|
},
|
|
394
394
|
group: state.filter.group,
|
|
@@ -424,7 +424,7 @@ const ItemSelector = ({
|
|
|
424
424
|
icon: getIcon(getItemType(props.value
|
|
425
425
|
/* eslint-disable-line react/prop-types */
|
|
426
426
|
)),
|
|
427
|
-
tooltipText: state.filter.dataType ===
|
|
427
|
+
tooltipText: state.filter.dataType === DIMENSION_TYPE_ALL ? getTooltipText(getItemType(props.value
|
|
428
428
|
/* eslint-disable-line react/prop-types */
|
|
429
429
|
)) : undefined,
|
|
430
430
|
dataTest: "".concat(dataTest, "-transfer-option")
|
|
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
|
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import i18n from '../../locales/index.js';
|
|
6
6
|
import { DATA_SETS_CONSTANTS } from '../../modules/dataSets.js';
|
|
7
|
-
import {
|
|
7
|
+
import { DIMENSION_TYPE_ALL } from '../../modules/dataTypes.js';
|
|
8
8
|
import styles from './styles/MetricSelector.style.js';
|
|
9
9
|
export const MetricSelector = ({
|
|
10
10
|
currentValue,
|
|
@@ -15,15 +15,15 @@ export const MetricSelector = ({
|
|
|
15
15
|
className: "jsx-".concat(styles.__hash) + " " + "metric-container"
|
|
16
16
|
}, /*#__PURE__*/React.createElement(SingleSelectField, {
|
|
17
17
|
label: i18n.t('Metric type'),
|
|
18
|
-
selected: currentValue ||
|
|
18
|
+
selected: currentValue || DIMENSION_TYPE_ALL,
|
|
19
19
|
onChange: ref => onChange(ref.selected),
|
|
20
20
|
dense: true,
|
|
21
21
|
dataTest: dataTest
|
|
22
22
|
}, /*#__PURE__*/React.createElement(SingleSelectOption, {
|
|
23
|
-
value:
|
|
24
|
-
key:
|
|
23
|
+
value: DIMENSION_TYPE_ALL,
|
|
24
|
+
key: DIMENSION_TYPE_ALL,
|
|
25
25
|
label: i18n.t('All metrics'),
|
|
26
|
-
dataTest: "".concat(dataTest, "-option-").concat(
|
|
26
|
+
dataTest: "".concat(dataTest, "-option-").concat(DIMENSION_TYPE_ALL)
|
|
27
27
|
}), DATA_SETS_CONSTANTS.map(option => /*#__PURE__*/React.createElement(SingleSelectOption, {
|
|
28
28
|
value: option.id,
|
|
29
29
|
key: option.id,
|
|
File without changes
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { colors } from '@dhis2/ui';
|
|
2
|
-
export const fileMenuStyles = [".menu-toggle.jsx-
|
|
3
|
-
fileMenuStyles.__hash = "
|
|
2
|
+
export const fileMenuStyles = [".menu-toggle.jsx-1542458312{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 8px;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-1542458312:hover.jsx-1542458312:enabled{background-color:".concat(colors.grey200, ";}"), ".menu-toggle.jsx-1542458312:disabled{color:".concat(colors.grey400, ";cursor:not-allowed;}"), ".menu-toggle.jsx-1542458312:active{background-color:".concat(colors.grey300, ";}"), ".menuButton.jsx-1542458312:focus{outline:2px solid ".concat(colors.blue600, ";}"), ".menuButton.jsx-1542458312:focus.jsx-1542458312:not(:focus-visible){outline:none;}"];
|
|
3
|
+
fileMenuStyles.__hash = "1542458312";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import PropTypes from 'prop-types';
|
|
2
2
|
import React, { useRef } from 'react';
|
|
3
3
|
import { applyLegendSet } from '../../modules/pivotTable/applyLegendSet.js';
|
|
4
|
-
import {
|
|
4
|
+
import { CELL_TYPE_VALUE } from '../../modules/pivotTable/pivotTableConstants.js';
|
|
5
|
+
import { VALUE_TYPE_NUMBER } from '../../modules/valueTypes.js';
|
|
5
6
|
import { PivotTableCell } from './PivotTableCell.js';
|
|
6
7
|
import { PivotTableEmptyCell } from './PivotTableEmptyCell.js';
|
|
7
8
|
import { usePivotTableEngine } from './PivotTableEngineContext.js';
|
package/build/es/index.js
CHANGED
|
@@ -45,7 +45,9 @@ export { layoutGetDimensionIdItemIdsObject } from './modules/layout/layoutGetDim
|
|
|
45
45
|
export { layoutHasDataDimension } from './modules/layout/layoutHasDataDimension.js';
|
|
46
46
|
export { layoutHasDimension } from './modules/layout/layoutHasDimension.js';
|
|
47
47
|
export { layoutHasDynamicDimension } from './modules/layout/layoutHasDynamicDimension.js';
|
|
48
|
-
export { layoutHasPeriodDimension } from './modules/layout/layoutHasPeriodDimension.js';
|
|
48
|
+
export { layoutHasPeriodDimension } from './modules/layout/layoutHasPeriodDimension.js'; // Modules: valueTypes
|
|
49
|
+
|
|
50
|
+
export { 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, VALUE_TYPE_TEXT, VALUE_TYPE_LONG_TEXT, VALUE_TYPE_LETTER, VALUE_TYPE_PHONE_NUMBER, VALUE_TYPE_EMAIL, VALUE_TYPE_USERNAME, VALUE_TYPE_URL, VALUE_TYPE_BOOLEAN, VALUE_TYPE_TRUE_ONLY, VALUE_TYPE_DATE, VALUE_TYPE_TIME, VALUE_TYPE_DATETIME, VALUE_TYPE_ORGANISATION_UNIT } from './modules/valueTypes.js';
|
|
49
51
|
export { AXIS, AXIS_ID_COLUMNS, AXIS_ID_ROWS, AXIS_ID_FILTERS, DEFAULT_AXIS_IDS } from './modules/layout/axis.js';
|
|
50
52
|
export { axisGetAllItems } from './modules/layout/axisGetAllItems.js';
|
|
51
53
|
export { axisGetDimension } from './modules/layout/axisGetDimension.js';
|
|
@@ -79,13 +81,14 @@ export { createVisualization } from './visualizations/index.js'; // Modules: fon
|
|
|
79
81
|
|
|
80
82
|
export { FONT_STYLE_VISUALIZATION_TITLE, FONT_STYLE_VISUALIZATION_SUBTITLE, FONT_STYLE_HORIZONTAL_AXIS_TITLE, FONT_STYLE_VERTICAL_AXIS_TITLE, FONT_STYLE_LEGEND, FONT_STYLE_AXIS_LABELS, FONT_STYLE_REGRESSION_LINE_LABEL, FONT_STYLE_OPTION_FONT, FONT_STYLE_OPTION_FONT_SIZE, FONT_STYLE_OPTION_BOLD, FONT_STYLE_OPTION_ITALIC, FONT_STYLE_OPTION_UNDERLINE, FONT_STYLE_OPTION_TEXT_COLOR, FONT_STYLE_OPTION_TEXT_ALIGN, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, defaultFontStyle, getFontSizeOptions, getTextAlignOptions, deleteFontStyleOption } from './modules/fontStyle.js'; // Modules: legend
|
|
81
83
|
|
|
82
|
-
export { LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM, LEGEND_DISPLAY_STRATEGY_FIXED, LEGEND_DISPLAY_STYLE_FILL, LEGEND_DISPLAY_STYLE_TEXT } from './modules/legends.js'; // Modules:
|
|
84
|
+
export { LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM, LEGEND_DISPLAY_STRATEGY_FIXED, LEGEND_DISPLAY_STYLE_FILL, LEGEND_DISPLAY_STYLE_TEXT } from './modules/legends.js'; // Modules: general
|
|
83
85
|
|
|
84
|
-
export { renderValue as formatValue } from './modules/
|
|
86
|
+
export { renderValue as formatValue } from './modules/renderValue.js'; // Utils: colorSets
|
|
85
87
|
|
|
86
88
|
export { COLOR_SET_DEFAULT, COLOR_SET_BRIGHT, COLOR_SET_DARK, COLOR_SET_GRAY, COLOR_SET_COLOR_BLIND, COLOR_SET_PATTERNS, colorSets } from './visualizations/util/colors/colorSets.js'; // Utils: periods
|
|
87
89
|
|
|
88
90
|
export { DAILY, WEEKLY, WEEKLYWED, WEEKLYTHU, WEEKLYSAT, WEEKLYSUN, BIWEEKLY, MONTHLY, BIMONTHLY, QUARTERLY, SIXMONTHLY, SIXMONTHLYAPR, YEARLY, FINANCIAL, FYNOV, FYOCT, FYJUL, FYAPR } from './components/PeriodDimension/utils/index.js';
|
|
89
91
|
export { getRelativePeriodsOptionsById } from './components/PeriodDimension/utils/relativePeriods.js';
|
|
90
92
|
export { getFixedPeriodsOptionsById } from './components/PeriodDimension/utils/fixedPeriods.js';
|
|
91
|
-
export { default as VisualizationOptions } from './components/Options/VisualizationOptions.js';
|
|
93
|
+
export { default as VisualizationOptions } from './components/Options/VisualizationOptions.js';
|
|
94
|
+
export { DIMENSION_TYPE_INDICATOR, DIMENSION_TYPE_DATA_ELEMENT, DIMENSION_TYPE_DATA_SET, DIMENSION_TYPE_EVENT_DATA_ITEM, DIMENSION_TYPE_PROGRAM_INDICATOR, DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, DIMENSION_TYPE_PROGRAM_ATTRIBUTE, DIMENSION_TYPE_DATA_ELEMENT_OPERAND, DIMENSION_TYPE_CATEGORY, DIMENSION_TYPE_CATEGORY_OPTION_GROUP_SET, DIMENSION_TYPE_ALL, DIMENSION_TYPE_DATA, DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET, DIMENSION_TYPE_ORGANISATION_UNIT, DIMENSION_TYPE_PERIOD, DIMENSION_TYPE_ORGANISATION_UNIT_GROUP_SET } from './modules/dataTypes.js';
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import i18n from '../locales/index.js';
|
|
2
|
-
export const
|
|
3
|
-
export const
|
|
4
|
-
export const
|
|
5
|
-
export const
|
|
6
|
-
export const
|
|
7
|
-
export const
|
|
8
|
-
export const
|
|
9
|
-
export const
|
|
10
|
-
export const
|
|
11
|
-
export const
|
|
2
|
+
export const DIMENSION_TYPE_ALL = 'ALL';
|
|
3
|
+
export const DIMENSION_TYPE_INDICATOR = 'INDICATOR';
|
|
4
|
+
export const DIMENSION_TYPE_DATA_ELEMENT = 'DATA_ELEMENT';
|
|
5
|
+
export const DIMENSION_TYPE_DATA_SET = 'DATA_SET';
|
|
6
|
+
export const DIMENSION_TYPE_EVENT_DATA_ITEM = 'EVENT_DATA_ITEM';
|
|
7
|
+
export const DIMENSION_TYPE_PROGRAM_INDICATOR = 'PROGRAM_INDICATOR';
|
|
8
|
+
export const DIMENSION_TYPE_PROGRAM_DATA_ELEMENT = 'PROGRAM_DATA_ELEMENT';
|
|
9
|
+
export const DIMENSION_TYPE_PROGRAM_ATTRIBUTE = 'PROGRAM_ATTRIBUTE';
|
|
10
|
+
export const DIMENSION_TYPE_DATA_ELEMENT_OPERAND = 'DATA_ELEMENT_OPERAND';
|
|
11
|
+
export const DIMENSION_TYPE_CATEGORY = 'CATEGORY';
|
|
12
|
+
export const DIMENSION_TYPE_CATEGORY_OPTION_GROUP_SET = 'CATEGORY_OPTION_GROUP_SET';
|
|
13
|
+
export const DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET = 'DATA_ELEMENT_GROUP_SET';
|
|
14
|
+
export const DIMENSION_TYPE_DATA = 'DATA_X';
|
|
15
|
+
export const DIMENSION_TYPE_PERIOD = 'PERIOD';
|
|
16
|
+
export const DIMENSION_TYPE_ORGANISATION_UNIT = 'ORGANISATION_UNIT';
|
|
17
|
+
export const DIMENSION_TYPE_ORGANISATION_UNIT_GROUP_SET = 'ORGANISATION_UNIT_GROUP_SET';
|
|
12
18
|
export const TOTALS = 'totals';
|
|
13
19
|
export const DETAIL = 'detail';
|
|
14
20
|
export const SUB_GROUP_DETAIL = 'DETAIL';
|
|
@@ -18,25 +24,25 @@ const getProgramText = () => i18n.t('Program');
|
|
|
18
24
|
|
|
19
25
|
const getSelectProgramText = () => i18n.t('Select a program');
|
|
20
26
|
|
|
21
|
-
export const
|
|
22
|
-
[
|
|
23
|
-
id:
|
|
27
|
+
export const dataTypeMap = {
|
|
28
|
+
[DIMENSION_TYPE_INDICATOR]: {
|
|
29
|
+
id: DIMENSION_TYPE_INDICATOR,
|
|
24
30
|
getName: () => i18n.t('Indicators'),
|
|
25
31
|
getGroupLabel: () => i18n.t('Indicator group'),
|
|
26
32
|
defaultGroup: {
|
|
27
|
-
id:
|
|
33
|
+
id: DIMENSION_TYPE_ALL,
|
|
28
34
|
getName: () => i18n.t('All groups')
|
|
29
35
|
},
|
|
30
36
|
getItemName: () => i18n.t('Indicator'),
|
|
31
37
|
getGroupEmptyLabel: () => i18n.t('No indicator groups found'),
|
|
32
38
|
getGroupLoadingLabel: () => i18n.t('Loading indicator groups')
|
|
33
39
|
},
|
|
34
|
-
[
|
|
35
|
-
id:
|
|
40
|
+
[DIMENSION_TYPE_DATA_ELEMENT]: {
|
|
41
|
+
id: DIMENSION_TYPE_DATA_ELEMENT,
|
|
36
42
|
getName: () => i18n.t('Data elements'),
|
|
37
43
|
getGroupLabel: () => i18n.t('Data element group'),
|
|
38
44
|
defaultGroup: {
|
|
39
|
-
id:
|
|
45
|
+
id: DIMENSION_TYPE_ALL,
|
|
40
46
|
getName: () => i18n.t('All groups')
|
|
41
47
|
},
|
|
42
48
|
subGroup: SUB_GROUP_DETAIL,
|
|
@@ -44,12 +50,12 @@ export const dataTypes = {
|
|
|
44
50
|
getGroupEmptyLabel: () => i18n.t('No data element groups found'),
|
|
45
51
|
getGroupLoadingLabel: () => i18n.t('Loading data element groups')
|
|
46
52
|
},
|
|
47
|
-
[
|
|
48
|
-
id:
|
|
53
|
+
[DIMENSION_TYPE_DATA_SET]: {
|
|
54
|
+
id: DIMENSION_TYPE_DATA_SET,
|
|
49
55
|
getName: () => i18n.t('Data sets'),
|
|
50
56
|
getGroupLabel: () => i18n.t('Data set'),
|
|
51
57
|
defaultGroup: {
|
|
52
|
-
id:
|
|
58
|
+
id: DIMENSION_TYPE_ALL,
|
|
53
59
|
getName: () => i18n.t('All data sets')
|
|
54
60
|
},
|
|
55
61
|
subGroup: SUB_GROUP_METRIC,
|
|
@@ -57,26 +63,26 @@ export const dataTypes = {
|
|
|
57
63
|
getGroupEmptyLabel: () => i18n.t('No data sets found'),
|
|
58
64
|
getGroupLoadingLabel: () => i18n.t('Loading data sets')
|
|
59
65
|
},
|
|
60
|
-
[
|
|
61
|
-
id:
|
|
66
|
+
[DIMENSION_TYPE_EVENT_DATA_ITEM]: {
|
|
67
|
+
id: DIMENSION_TYPE_EVENT_DATA_ITEM,
|
|
62
68
|
getName: () => i18n.t('Event data items'),
|
|
63
69
|
getGroupLabel: getProgramText,
|
|
64
70
|
getPlaceholder: getSelectProgramText,
|
|
65
71
|
defaultGroup: {
|
|
66
|
-
id:
|
|
72
|
+
id: DIMENSION_TYPE_ALL,
|
|
67
73
|
getName: () => i18n.t('All programs')
|
|
68
74
|
},
|
|
69
75
|
getItemName: () => i18n.t('Event data item'),
|
|
70
76
|
getGroupEmptyLabel: () => i18n.t('No programs found'),
|
|
71
77
|
getGroupLoadingLabel: () => i18n.t('Loading programs')
|
|
72
78
|
},
|
|
73
|
-
[
|
|
74
|
-
id:
|
|
79
|
+
[DIMENSION_TYPE_PROGRAM_INDICATOR]: {
|
|
80
|
+
id: DIMENSION_TYPE_PROGRAM_INDICATOR,
|
|
75
81
|
getName: () => i18n.t('Program indicators'),
|
|
76
82
|
getGroupLabel: getProgramText,
|
|
77
83
|
getPlaceholder: getSelectProgramText,
|
|
78
84
|
defaultGroup: {
|
|
79
|
-
id:
|
|
85
|
+
id: DIMENSION_TYPE_ALL,
|
|
80
86
|
getName: () => i18n.t('All programs')
|
|
81
87
|
},
|
|
82
88
|
getItemName: () => i18n.t('Program indicator'),
|
|
@@ -85,9 +91,9 @@ export const dataTypes = {
|
|
|
85
91
|
}
|
|
86
92
|
};
|
|
87
93
|
export function defaultGroupId(dataType) {
|
|
88
|
-
return
|
|
94
|
+
return dataTypeMap[dataType].defaultGroup ? dataTypeMap[dataType].defaultGroup.id : '';
|
|
89
95
|
}
|
|
90
96
|
export function defaultGroupDetail(dataType) {
|
|
91
|
-
return
|
|
97
|
+
return dataTypeMap[dataType].groupDetail ? dataTypeMap[dataType].groupDetail.default : '';
|
|
92
98
|
}
|
|
93
|
-
export const DEFAULT_DATATYPE_ID =
|
|
99
|
+
export const DEFAULT_DATATYPE_ID = DIMENSION_TYPE_INDICATOR;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
2
|
|
|
3
3
|
import times from 'lodash/times';
|
|
4
|
+
import { DIMENSION_TYPE_DATA, DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET, DIMENSION_TYPE_ORGANISATION_UNIT, DIMENSION_TYPE_PERIOD } from '../dataTypes.js';
|
|
4
5
|
import { DIMENSION_ID_ORGUNIT } from '../predefinedDimensions.js';
|
|
6
|
+
import { renderValue } from '../renderValue.js';
|
|
7
|
+
import { VALUE_TYPE_NUMBER, VALUE_TYPE_TEXT } from '../valueTypes.js';
|
|
5
8
|
import { AdaptiveClippingController } from './AdaptiveClippingController.js';
|
|
6
9
|
import { parseValue } from './parseValue.js';
|
|
7
|
-
import { AGGREGATE_TYPE_NA, AGGREGATE_TYPE_AVERAGE, AGGREGATE_TYPE_SUM, CELL_TYPE_VALUE, CELL_TYPE_TOTAL, CELL_TYPE_SUBTOTAL, SORT_ORDER_ASCENDING, SORT_ORDER_DESCENDING, DISPLAY_DENSITY_PADDING_COMPACT, DISPLAY_DENSITY_PADDING_COMFORTABLE, DISPLAY_DENSITY_OPTION_COMFORTABLE, DISPLAY_DENSITY_OPTION_COMPACT, DISPLAY_DENSITY_OPTION_NORMAL, DISPLAY_DENSITY_PADDING_NORMAL, FONT_SIZE_OPTION_SMALL, FONT_SIZE_SMALL, FONT_SIZE_OPTION_LARGE, FONT_SIZE_LARGE, FONT_SIZE_OPTION_NORMAL, FONT_SIZE_NORMAL,
|
|
8
|
-
import { renderValue } from './renderValue.js';
|
|
10
|
+
import { AGGREGATE_TYPE_NA, AGGREGATE_TYPE_AVERAGE, AGGREGATE_TYPE_SUM, CELL_TYPE_VALUE, CELL_TYPE_TOTAL, CELL_TYPE_SUBTOTAL, SORT_ORDER_ASCENDING, SORT_ORDER_DESCENDING, DISPLAY_DENSITY_PADDING_COMPACT, DISPLAY_DENSITY_PADDING_COMFORTABLE, DISPLAY_DENSITY_OPTION_COMFORTABLE, DISPLAY_DENSITY_OPTION_COMPACT, DISPLAY_DENSITY_OPTION_NORMAL, DISPLAY_DENSITY_PADDING_NORMAL, FONT_SIZE_OPTION_SMALL, FONT_SIZE_SMALL, FONT_SIZE_OPTION_LARGE, FONT_SIZE_LARGE, FONT_SIZE_OPTION_NORMAL, FONT_SIZE_NORMAL, NUMBER_TYPE_COLUMN_PERCENTAGE, NUMBER_TYPE_ROW_PERCENTAGE, NUMBER_TYPE_VALUE } from './pivotTableConstants.js';
|
|
9
11
|
const dataFields = ['value', 'numerator', 'denominator', 'factor', 'multiplier', 'divisor'];
|
|
10
12
|
const defaultOptions = {
|
|
11
13
|
hideEmptyColumns: false,
|
|
@@ -250,7 +252,7 @@ export class PivotTableEngine {
|
|
|
250
252
|
});
|
|
251
253
|
const headers = [...this.getRawRowHeader(row), ...this.getRawColumnHeader(column)];
|
|
252
254
|
const peId = (_headers$find = headers.find(header => (header === null || header === void 0 ? void 0 : header.dimensionItemType) === DIMENSION_TYPE_PERIOD)) === null || _headers$find === void 0 ? void 0 : _headers$find.uid;
|
|
253
|
-
const ouId = (_headers$find2 = headers.find(header => (header === null || header === void 0 ? void 0 : header.dimensionItemType) ===
|
|
255
|
+
const ouId = (_headers$find2 = headers.find(header => (header === null || header === void 0 ? void 0 : header.dimensionItemType) === DIMENSION_TYPE_ORGANISATION_UNIT)) === null || _headers$find2 === void 0 ? void 0 : _headers$find2.uid;
|
|
254
256
|
|
|
255
257
|
if (!this.data[row] || !this.data[row][column]) {
|
|
256
258
|
return {
|