@dhis2/analytics 26.4.1 → 26.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/__fixtures__/fixtures.js +1 -0
- package/build/cjs/__fixtures__/json/api/analytics/outlierDetection.json +213 -0
- package/build/cjs/api/analytics/Analytics.js +7 -0
- package/build/cjs/api/analytics/AnalyticsAggregate.js +27 -1
- package/build/cjs/api/analytics/AnalyticsBase.js +32 -13
- package/build/cjs/api/analytics/AnalyticsRequest.js +33 -10
- package/build/cjs/api/analytics/AnalyticsRequestBase.js +12 -6
- package/build/cjs/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -0
- package/build/cjs/api/analytics/AnalyticsResponse.js +42 -39
- package/build/cjs/api/analytics/AnalyticsTrackedEntities.js +31 -0
- package/build/cjs/api/analytics/__tests__/Analytics.spec.js +5 -0
- package/build/cjs/api/analytics/__tests__/AnalyticsAggregate.spec.js +29 -0
- package/build/cjs/api/analytics/__tests__/AnalyticsBase.spec.js +36 -2
- package/build/cjs/api/analytics/utils.js +21 -2
- package/build/cjs/components/DataDimension/DataDimension.js +31 -7
- package/build/cjs/components/DataDimension/DataTypeSelector.js +29 -8
- package/build/cjs/components/DataDimension/GroupSelector.js +7 -7
- package/build/cjs/components/DataDimension/ItemSelector.js +79 -61
- package/build/cjs/components/PeriodDimension/PeriodDimension.js +5 -2
- package/build/cjs/components/PeriodDimension/PeriodTransfer.js +64 -31
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +1 -1
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +1 -12
- package/build/cjs/components/VisTypeIcon.js +6 -1
- package/build/cjs/index.js +43 -1
- package/build/cjs/locales/en/translations.json +5 -1
- package/build/cjs/modules/__tests__/getAdaptedUiLayoutByType.spec.js +15 -0
- package/build/cjs/modules/axis.js +4 -0
- package/build/cjs/modules/getAdaptedUiLayoutByType.js +9 -0
- package/build/cjs/modules/layout/axisGetDimensionIds.js +1 -1
- package/build/cjs/modules/layout/dimension.js +9 -2
- package/build/cjs/modules/layout/dimensionCreate.js +3 -0
- package/build/cjs/modules/layout/dimensionGetId.js +9 -3
- package/build/cjs/modules/layout/layoutFilterDimensions.js +1 -1
- package/build/cjs/modules/layout/layoutGetAxisIdDimensionIdsObject.js +1 -1
- package/build/cjs/modules/layout/layoutGetDimensionIdItemIdsObject.js +1 -1
- package/build/cjs/modules/layout/layoutHasDynamicDimension.js +1 -1
- package/build/cjs/modules/layoutTypes.js +4 -2
- package/build/cjs/modules/layoutUiRules/__tests__/rules.spec.js +13 -1
- package/build/cjs/modules/layoutUiRules/index.js +12 -0
- package/build/cjs/modules/layoutUiRules/rules.js +22 -2
- package/build/cjs/modules/layoutUiRules/rulesHelper.js +4 -2
- package/build/cjs/modules/layoutUiRules/rulesUtils.js +7 -2
- package/build/cjs/modules/visTypeToLayoutType.js +2 -1
- package/build/cjs/modules/visTypes.js +9 -3
- package/build/es/__fixtures__/fixtures.js +1 -0
- package/build/es/__fixtures__/json/api/analytics/outlierDetection.json +213 -0
- package/build/es/api/analytics/Analytics.js +7 -0
- package/build/es/api/analytics/AnalyticsAggregate.js +27 -1
- package/build/es/api/analytics/AnalyticsBase.js +31 -13
- package/build/es/api/analytics/AnalyticsRequest.js +33 -10
- package/build/es/api/analytics/AnalyticsRequestBase.js +12 -6
- package/build/es/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -0
- package/build/es/api/analytics/AnalyticsResponse.js +42 -39
- package/build/es/api/analytics/AnalyticsTrackedEntities.js +24 -0
- package/build/es/api/analytics/__tests__/Analytics.spec.js +5 -0
- package/build/es/api/analytics/__tests__/AnalyticsAggregate.spec.js +29 -0
- package/build/es/api/analytics/__tests__/AnalyticsBase.spec.js +34 -1
- package/build/es/api/analytics/utils.js +18 -1
- package/build/es/components/DataDimension/DataDimension.js +27 -6
- package/build/es/components/DataDimension/DataTypeSelector.js +30 -9
- package/build/es/components/DataDimension/GroupSelector.js +7 -7
- package/build/es/components/DataDimension/ItemSelector.js +80 -62
- package/build/es/components/PeriodDimension/PeriodDimension.js +5 -2
- package/build/es/components/PeriodDimension/PeriodTransfer.js +65 -32
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +1 -1
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +1 -12
- package/build/es/components/VisTypeIcon.js +8 -3
- package/build/es/index.js +4 -4
- package/build/es/locales/en/translations.json +5 -1
- package/build/es/modules/__tests__/getAdaptedUiLayoutByType.spec.js +16 -1
- package/build/es/modules/axis.js +5 -1
- package/build/es/modules/getAdaptedUiLayoutByType.js +10 -1
- package/build/es/modules/layout/axisGetDimensionIds.js +1 -1
- package/build/es/modules/layout/dimension.js +7 -1
- package/build/es/modules/layout/dimensionCreate.js +4 -1
- package/build/es/modules/layout/dimensionGetId.js +10 -4
- package/build/es/modules/layout/layoutFilterDimensions.js +1 -1
- package/build/es/modules/layout/layoutGetAxisIdDimensionIdsObject.js +1 -1
- package/build/es/modules/layout/layoutGetDimensionIdItemIdsObject.js +1 -1
- package/build/es/modules/layout/layoutHasDynamicDimension.js +1 -1
- package/build/es/modules/layoutTypes.js +2 -1
- package/build/es/modules/layoutUiRules/__tests__/rules.spec.js +14 -2
- package/build/es/modules/layoutUiRules/index.js +2 -2
- package/build/es/modules/layoutUiRules/rules.js +22 -3
- package/build/es/modules/layoutUiRules/rulesHelper.js +3 -2
- package/build/es/modules/layoutUiRules/rulesUtils.js +6 -2
- package/build/es/modules/visTypeToLayoutType.js +4 -3
- package/build/es/modules/visTypes.js +7 -3
- package/package.json +6 -3
|
@@ -30,14 +30,14 @@ const LeftHeader = _ref => {
|
|
|
30
30
|
searchTerm,
|
|
31
31
|
setSearchTerm,
|
|
32
32
|
dataType,
|
|
33
|
+
dataTypes,
|
|
33
34
|
setDataType,
|
|
34
35
|
group,
|
|
35
36
|
setGroup,
|
|
36
37
|
subGroup,
|
|
37
38
|
setSubGroup,
|
|
38
39
|
displayNameProp,
|
|
39
|
-
dataTest
|
|
40
|
-
supportsEDI
|
|
40
|
+
dataTest
|
|
41
41
|
} = _ref;
|
|
42
42
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
43
43
|
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "leftHeader"
|
|
@@ -58,8 +58,8 @@ const LeftHeader = _ref => {
|
|
|
58
58
|
currentDataType: dataType,
|
|
59
59
|
onChange: setDataType,
|
|
60
60
|
dataTest: `${dataTest}-data-types-select-field`,
|
|
61
|
-
|
|
62
|
-
}), _dataTypes.
|
|
61
|
+
dataTypes: dataTypes
|
|
62
|
+
}), ![_dataTypes.DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM, _dataTypes.DIMENSION_TYPE_ALL].includes(dataType) && /*#__PURE__*/_react.default.createElement(_GroupSelector.default, {
|
|
63
63
|
dataType: dataType,
|
|
64
64
|
displayNameProp: displayNameProp,
|
|
65
65
|
currentGroup: group,
|
|
@@ -74,6 +74,7 @@ const LeftHeader = _ref => {
|
|
|
74
74
|
LeftHeader.propTypes = {
|
|
75
75
|
dataTest: _propTypes.default.string,
|
|
76
76
|
dataType: _propTypes.default.string,
|
|
77
|
+
dataTypes: _propTypes.default.array,
|
|
77
78
|
displayNameProp: _propTypes.default.string,
|
|
78
79
|
group: _propTypes.default.string,
|
|
79
80
|
searchTerm: _propTypes.default.string,
|
|
@@ -81,8 +82,7 @@ LeftHeader.propTypes = {
|
|
|
81
82
|
setGroup: _propTypes.default.func,
|
|
82
83
|
setSearchTerm: _propTypes.default.func,
|
|
83
84
|
setSubGroup: _propTypes.default.func,
|
|
84
|
-
subGroup: _propTypes.default.string
|
|
85
|
-
supportsEDI: _propTypes.default.bool
|
|
85
|
+
subGroup: _propTypes.default.string
|
|
86
86
|
};
|
|
87
87
|
const EmptySelection = () => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {
|
|
88
88
|
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "emptyList"
|
|
@@ -91,22 +91,22 @@ const EmptySelection = () => /*#__PURE__*/_react.default.createElement(_react.de
|
|
|
91
91
|
}, _DimensionSelectorStyle.default));
|
|
92
92
|
const RightHeader = _ref3 => {
|
|
93
93
|
let {
|
|
94
|
-
|
|
94
|
+
infoBoxMessage
|
|
95
95
|
} = _ref3;
|
|
96
96
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {
|
|
97
97
|
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "rightHeader"
|
|
98
|
-
}, _index.default.t('Selected Items')),
|
|
98
|
+
}, _index.default.t('Selected Items')), infoBoxMessage && /*#__PURE__*/_react.default.createElement("div", {
|
|
99
99
|
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "info-container"
|
|
100
100
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
101
101
|
className: `jsx-${_DimensionSelectorStyle.default.__hash}`
|
|
102
102
|
}, /*#__PURE__*/_react.default.createElement(_ui.IconInfo16, null)), /*#__PURE__*/_react.default.createElement("span", {
|
|
103
103
|
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "info-text"
|
|
104
|
-
},
|
|
104
|
+
}, infoBoxMessage)), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
105
105
|
id: _DimensionSelectorStyle.default.__hash
|
|
106
106
|
}, _DimensionSelectorStyle.default));
|
|
107
107
|
};
|
|
108
108
|
RightHeader.propTypes = {
|
|
109
|
-
|
|
109
|
+
infoBoxMessage: _propTypes.default.string
|
|
110
110
|
};
|
|
111
111
|
const SourceEmptyPlaceholder = _ref4 => {
|
|
112
112
|
let {
|
|
@@ -138,6 +138,9 @@ const SourceEmptyPlaceholder = _ref4 => {
|
|
|
138
138
|
case _dataTypes.DIMENSION_TYPE_PROGRAM_INDICATOR:
|
|
139
139
|
message = _index.default.t('No program indicators found');
|
|
140
140
|
break;
|
|
141
|
+
case _dataTypes.DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM:
|
|
142
|
+
message = _index.default.t('No calculations found');
|
|
143
|
+
break;
|
|
141
144
|
default:
|
|
142
145
|
message = _index.default.t('No data');
|
|
143
146
|
break;
|
|
@@ -147,32 +150,37 @@ const SourceEmptyPlaceholder = _ref4 => {
|
|
|
147
150
|
switch (dataType) {
|
|
148
151
|
case _dataTypes.DIMENSION_TYPE_INDICATOR:
|
|
149
152
|
message = _index.default.t('No indicators found for "{{- searchTerm}}"', {
|
|
150
|
-
searchTerm
|
|
153
|
+
searchTerm
|
|
151
154
|
});
|
|
152
155
|
break;
|
|
153
156
|
case _dataTypes.DIMENSION_TYPE_DATA_ELEMENT:
|
|
154
157
|
message = _index.default.t('No data elements found for "{{- searchTerm}}"', {
|
|
155
|
-
searchTerm
|
|
158
|
+
searchTerm
|
|
156
159
|
});
|
|
157
160
|
break;
|
|
158
161
|
case _dataTypes.DIMENSION_TYPE_DATA_SET:
|
|
159
162
|
message = _index.default.t('No data sets found for "{{- searchTerm}}"', {
|
|
160
|
-
searchTerm
|
|
163
|
+
searchTerm
|
|
161
164
|
});
|
|
162
165
|
break;
|
|
163
166
|
case _dataTypes.DIMENSION_TYPE_EVENT_DATA_ITEM:
|
|
164
167
|
message = _index.default.t('No event data items found for "{{- searchTerm}}"', {
|
|
165
|
-
searchTerm
|
|
168
|
+
searchTerm
|
|
166
169
|
});
|
|
167
170
|
break;
|
|
168
171
|
case _dataTypes.DIMENSION_TYPE_PROGRAM_INDICATOR:
|
|
169
172
|
message = _index.default.t('No program indicators found for "{{- searchTerm}}"', {
|
|
170
|
-
searchTerm
|
|
173
|
+
searchTerm
|
|
174
|
+
});
|
|
175
|
+
break;
|
|
176
|
+
case _dataTypes.DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM:
|
|
177
|
+
message = _index.default.t('No calculations found for "{{- searchTerm}}"', {
|
|
178
|
+
searchTerm
|
|
171
179
|
});
|
|
172
180
|
break;
|
|
173
181
|
default:
|
|
174
182
|
message = _index.default.t('Nothing found for "{{- searchTerm}}"', {
|
|
175
|
-
searchTerm
|
|
183
|
+
searchTerm
|
|
176
184
|
});
|
|
177
185
|
break;
|
|
178
186
|
}
|
|
@@ -200,18 +208,27 @@ const ItemSelector = _ref5 => {
|
|
|
200
208
|
rightFooter,
|
|
201
209
|
displayNameProp,
|
|
202
210
|
infoBoxMessage,
|
|
211
|
+
dataTypes,
|
|
203
212
|
dataTest,
|
|
204
|
-
supportsEDI,
|
|
205
213
|
onEDISave
|
|
206
214
|
} = _ref5;
|
|
207
215
|
const [state, setState] = (0, _react.useState)({
|
|
208
216
|
searchTerm: '',
|
|
217
|
+
dataTypes,
|
|
209
218
|
filter: {
|
|
210
|
-
dataType: _dataTypes.DIMENSION_TYPE_ALL
|
|
219
|
+
dataType: dataTypes.length === 1 ? dataTypes[0].id : _dataTypes.DIMENSION_TYPE_ALL,
|
|
220
|
+
group: null,
|
|
221
|
+
subGroup: dataTypes.length === 1 && dataTypes[0].id === _dataTypes.DIMENSION_TYPE_DATA_ELEMENT ? _dataTypes.TOTALS : null
|
|
211
222
|
},
|
|
212
223
|
options: [],
|
|
213
224
|
loading: true,
|
|
214
|
-
nextPage: 1
|
|
225
|
+
nextPage: 1,
|
|
226
|
+
supportsEDI: dataTypes.map(_ref6 => {
|
|
227
|
+
let {
|
|
228
|
+
id
|
|
229
|
+
} = _ref6;
|
|
230
|
+
return id;
|
|
231
|
+
}).includes(_dataTypes.DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM)
|
|
215
232
|
});
|
|
216
233
|
const [currentCalculation, setCurrentCalculation] = (0, _react.useState)();
|
|
217
234
|
const dataEngine = (0, _appRuntime.useDataEngine)();
|
|
@@ -219,15 +236,12 @@ const ItemSelector = _ref5 => {
|
|
|
219
236
|
...state,
|
|
220
237
|
searchTerm
|
|
221
238
|
}));
|
|
222
|
-
const setFilter = filter => setState(state => ({
|
|
223
|
-
...state,
|
|
224
|
-
filter
|
|
225
|
-
}));
|
|
226
239
|
const debouncedSearchTerm = (0, _utils.useDebounce)(state.searchTerm, 500);
|
|
227
240
|
const fetchItems = async page => {
|
|
228
241
|
var _result$dimensionItem;
|
|
229
242
|
setState(state => ({
|
|
230
243
|
...state,
|
|
244
|
+
nextPage: page === 1 ? 1 : state.nextPage,
|
|
231
245
|
loading: true
|
|
232
246
|
}));
|
|
233
247
|
const result = await (0, _dimensions.apiFetchOptions)({
|
|
@@ -290,11 +304,6 @@ const ItemSelector = _ref5 => {
|
|
|
290
304
|
}
|
|
291
305
|
};
|
|
292
306
|
(0, _utils.useDidUpdateEffect)(() => {
|
|
293
|
-
setState(state => ({
|
|
294
|
-
...state,
|
|
295
|
-
loading: true,
|
|
296
|
-
nextPage: 1
|
|
297
|
-
}));
|
|
298
307
|
fetchItems(1);
|
|
299
308
|
}, [debouncedSearchTerm, state.filter]);
|
|
300
309
|
const onChange = newSelected => {
|
|
@@ -323,13 +332,13 @@ const ItemSelector = _ref5 => {
|
|
|
323
332
|
var _find;
|
|
324
333
|
return (_find = [...state.options, ...selectedItems].find(item => item.value === value)) === null || _find === void 0 ? void 0 : _find.type;
|
|
325
334
|
};
|
|
326
|
-
const onSaveCalculation = async
|
|
335
|
+
const onSaveCalculation = async _ref7 => {
|
|
327
336
|
let {
|
|
328
337
|
id,
|
|
329
338
|
name,
|
|
330
339
|
expression,
|
|
331
340
|
isNew
|
|
332
|
-
} =
|
|
341
|
+
} = _ref7;
|
|
333
342
|
onEDISave({
|
|
334
343
|
id,
|
|
335
344
|
name,
|
|
@@ -352,10 +361,10 @@ const ItemSelector = _ref5 => {
|
|
|
352
361
|
}]);
|
|
353
362
|
}
|
|
354
363
|
};
|
|
355
|
-
const onDeleteCalculation =
|
|
364
|
+
const onDeleteCalculation = _ref8 => {
|
|
356
365
|
let {
|
|
357
366
|
id
|
|
358
|
-
} =
|
|
367
|
+
} = _ref8;
|
|
359
368
|
// close the modal
|
|
360
369
|
setCurrentCalculation();
|
|
361
370
|
|
|
@@ -365,11 +374,37 @@ const ItemSelector = _ref5 => {
|
|
|
365
374
|
// unselect the deleted calculation
|
|
366
375
|
onSelect([...selectedItems.filter(item => item.value !== id)]);
|
|
367
376
|
};
|
|
377
|
+
const onSetGroup = group => setState(state => ({
|
|
378
|
+
...state,
|
|
379
|
+
nextPage: 1,
|
|
380
|
+
filter: {
|
|
381
|
+
...state.filter,
|
|
382
|
+
group
|
|
383
|
+
}
|
|
384
|
+
}));
|
|
385
|
+
const onSetSubGroup = subGroup => setState(state => ({
|
|
386
|
+
...state,
|
|
387
|
+
nextPage: 1,
|
|
388
|
+
filter: {
|
|
389
|
+
...state.filter,
|
|
390
|
+
subGroup
|
|
391
|
+
}
|
|
392
|
+
}));
|
|
393
|
+
const onSetDataType = dataType => setState(state => ({
|
|
394
|
+
...state,
|
|
395
|
+
nextPage: 1,
|
|
396
|
+
filter: {
|
|
397
|
+
...state.filter,
|
|
398
|
+
dataType,
|
|
399
|
+
group: null,
|
|
400
|
+
subGroup: dataType === _dataTypes.DIMENSION_TYPE_DATA_ELEMENT ? _dataTypes.TOTALS : null
|
|
401
|
+
}
|
|
402
|
+
}));
|
|
368
403
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.Transfer, {
|
|
369
|
-
onChange:
|
|
404
|
+
onChange: _ref9 => {
|
|
370
405
|
let {
|
|
371
406
|
selected
|
|
372
|
-
} =
|
|
407
|
+
} = _ref9;
|
|
373
408
|
return onChange(selected);
|
|
374
409
|
},
|
|
375
410
|
selected: selectedItems.map(item => item.value),
|
|
@@ -386,36 +421,19 @@ const ItemSelector = _ref5 => {
|
|
|
386
421
|
}),
|
|
387
422
|
onEndReached: onEndReached,
|
|
388
423
|
leftHeader: /*#__PURE__*/_react.default.createElement(LeftHeader, {
|
|
424
|
+
dataTypes: state.dataTypes,
|
|
389
425
|
dataType: state.filter.dataType,
|
|
390
|
-
setDataType:
|
|
391
|
-
setFilter({
|
|
392
|
-
...state.filter,
|
|
393
|
-
dataType,
|
|
394
|
-
group: null,
|
|
395
|
-
subGroup: dataType === _dataTypes.DIMENSION_TYPE_DATA_ELEMENT ? _dataTypes.TOTALS : null
|
|
396
|
-
});
|
|
397
|
-
},
|
|
426
|
+
setDataType: onSetDataType,
|
|
398
427
|
group: state.filter.group,
|
|
399
|
-
setGroup:
|
|
400
|
-
setFilter({
|
|
401
|
-
...state.filter,
|
|
402
|
-
group
|
|
403
|
-
});
|
|
404
|
-
},
|
|
428
|
+
setGroup: onSetGroup,
|
|
405
429
|
subGroup: state.filter.subGroup,
|
|
406
|
-
setSubGroup:
|
|
407
|
-
setFilter({
|
|
408
|
-
...state.filter,
|
|
409
|
-
subGroup
|
|
410
|
-
});
|
|
411
|
-
},
|
|
430
|
+
setSubGroup: onSetSubGroup,
|
|
412
431
|
searchTerm: state.searchTerm,
|
|
413
432
|
setSearchTerm: setSearchTerm,
|
|
414
433
|
displayNameProp: displayNameProp,
|
|
415
|
-
dataTest: `${dataTest}-left-header
|
|
416
|
-
supportsEDI: supportsEDI
|
|
434
|
+
dataTest: `${dataTest}-left-header`
|
|
417
435
|
}),
|
|
418
|
-
leftFooter: supportsEDI ? /*#__PURE__*/_react.default.createElement("div", {
|
|
436
|
+
leftFooter: state.supportsEDI ? /*#__PURE__*/_react.default.createElement("div", {
|
|
419
437
|
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "calculation-button"
|
|
420
438
|
}, /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
421
439
|
icon: /*#__PURE__*/_react.default.createElement(_ui.IconAdd24, null),
|
|
@@ -428,7 +446,7 @@ const ItemSelector = _ref5 => {
|
|
|
428
446
|
selectedWidth: _dimensionSelectorHelper.TRANSFER_SELECTED_WIDTH,
|
|
429
447
|
selectedEmptyComponent: /*#__PURE__*/_react.default.createElement(EmptySelection, null),
|
|
430
448
|
rightHeader: /*#__PURE__*/_react.default.createElement(RightHeader, {
|
|
431
|
-
|
|
449
|
+
infoBoxMessage: infoBoxMessage
|
|
432
450
|
}),
|
|
433
451
|
rightFooter: rightFooter,
|
|
434
452
|
renderOption: props => {
|
|
@@ -442,7 +460,7 @@ const ItemSelector = _ref5 => {
|
|
|
442
460
|
expression: props.expression
|
|
443
461
|
}),
|
|
444
462
|
dataTest: `${dataTest}-transfer-option`,
|
|
445
|
-
onEditClick: getItemType(props.value) === _dataTypes.DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM && !(((_props$access = props.access) === null || _props$access === void 0 ? void 0 : _props$access.write) === false) && supportsEDI ? () => setCurrentCalculation({
|
|
463
|
+
onEditClick: getItemType(props.value) === _dataTypes.DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM && !(((_props$access = props.access) === null || _props$access === void 0 ? void 0 : _props$access.write) === false) && state.supportsEDI ? () => setCurrentCalculation({
|
|
446
464
|
id: props.value,
|
|
447
465
|
name: props.label,
|
|
448
466
|
expression: props.expression
|
|
@@ -452,7 +470,7 @@ const ItemSelector = _ref5 => {
|
|
|
452
470
|
},
|
|
453
471
|
|
|
454
472
|
dataTest: `${dataTest}-transfer`
|
|
455
|
-
}), currentCalculation && supportsEDI && /*#__PURE__*/_react.default.createElement(_CalculationModal.default, {
|
|
473
|
+
}), currentCalculation && state.supportsEDI && /*#__PURE__*/_react.default.createElement(_CalculationModal.default, {
|
|
456
474
|
calculation: currentCalculation,
|
|
457
475
|
onSave: onSaveCalculation,
|
|
458
476
|
onClose: () => setCurrentCalculation(),
|
|
@@ -466,6 +484,7 @@ ItemSelector.propTypes = {
|
|
|
466
484
|
displayNameProp: _propTypes.default.string.isRequired,
|
|
467
485
|
onSelect: _propTypes.default.func.isRequired,
|
|
468
486
|
dataTest: _propTypes.default.string,
|
|
487
|
+
dataTypes: _propTypes.default.array,
|
|
469
488
|
infoBoxMessage: _propTypes.default.string,
|
|
470
489
|
noItemsMessage: _propTypes.default.string,
|
|
471
490
|
rightFooter: _propTypes.default.node,
|
|
@@ -476,7 +495,6 @@ ItemSelector.propTypes = {
|
|
|
476
495
|
type: _propTypes.default.string,
|
|
477
496
|
expression: _propTypes.default.string
|
|
478
497
|
})),
|
|
479
|
-
supportsEDI: _propTypes.default.bool,
|
|
480
498
|
onEDISave: _propTypes.default.func
|
|
481
499
|
};
|
|
482
500
|
ItemSelector.defaultProps = {
|
|
@@ -23,7 +23,8 @@ const PeriodDimension = _ref => {
|
|
|
23
23
|
onSelect,
|
|
24
24
|
selectedPeriods,
|
|
25
25
|
rightFooter,
|
|
26
|
-
excludedPeriodTypes
|
|
26
|
+
excludedPeriodTypes,
|
|
27
|
+
infoBoxMessage
|
|
27
28
|
} = _ref;
|
|
28
29
|
const {
|
|
29
30
|
systemInfo
|
|
@@ -51,7 +52,8 @@ const PeriodDimension = _ref => {
|
|
|
51
52
|
};
|
|
52
53
|
return /*#__PURE__*/_react.default.createElement(_PeriodTransfer.default, {
|
|
53
54
|
onSelect: selectPeriods,
|
|
54
|
-
|
|
55
|
+
selectedItems: selectedPeriods,
|
|
56
|
+
infoBoxMessage: infoBoxMessage,
|
|
55
57
|
rightFooter: rightFooter,
|
|
56
58
|
dataTest: 'period-dimension',
|
|
57
59
|
excludedPeriodTypes: excludedPeriodTypes,
|
|
@@ -61,6 +63,7 @@ const PeriodDimension = _ref => {
|
|
|
61
63
|
PeriodDimension.propTypes = {
|
|
62
64
|
onSelect: _propTypes.default.func.isRequired,
|
|
63
65
|
excludedPeriodTypes: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
66
|
+
infoBoxMessage: _propTypes.default.string,
|
|
64
67
|
rightFooter: _propTypes.default.node,
|
|
65
68
|
selectedPeriods: _propTypes.default.array
|
|
66
69
|
};
|
|
@@ -23,15 +23,35 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
23
23
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
24
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
25
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } //TODO: Reimplement the icon.js
|
|
26
|
-
const
|
|
26
|
+
const RightHeader = _ref => {
|
|
27
|
+
let {
|
|
28
|
+
infoBoxMessage
|
|
29
|
+
} = _ref;
|
|
30
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {
|
|
31
|
+
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "rightHeader"
|
|
32
|
+
}, _index.default.t('Selected Periods')), infoBoxMessage && /*#__PURE__*/_react.default.createElement("div", {
|
|
33
|
+
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "info-container"
|
|
34
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
35
|
+
className: `jsx-${_DimensionSelectorStyle.default.__hash}`
|
|
36
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.IconInfo16, null)), /*#__PURE__*/_react.default.createElement("span", {
|
|
37
|
+
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "info-text"
|
|
38
|
+
}, infoBoxMessage)), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
39
|
+
id: _DimensionSelectorStyle.default.__hash
|
|
40
|
+
}, _DimensionSelectorStyle.default));
|
|
41
|
+
};
|
|
42
|
+
RightHeader.propTypes = {
|
|
43
|
+
infoBoxMessage: _propTypes.default.string
|
|
44
|
+
};
|
|
45
|
+
const PeriodTransfer = _ref2 => {
|
|
27
46
|
let {
|
|
28
47
|
onSelect,
|
|
29
48
|
dataTest,
|
|
30
|
-
|
|
49
|
+
selectedItems,
|
|
31
50
|
rightFooter,
|
|
32
51
|
excludedPeriodTypes,
|
|
33
|
-
periodsSettings
|
|
34
|
-
|
|
52
|
+
periodsSettings,
|
|
53
|
+
infoBoxMessage
|
|
54
|
+
} = _ref2;
|
|
35
55
|
const defaultRelativePeriodType = excludedPeriodTypes.includes(_index2.MONTHLY) ? (0, _relativePeriods.getRelativePeriodsOptionsById)(_index2.QUARTERLY) : (0, _relativePeriods.getRelativePeriodsOptionsById)(_index2.MONTHLY);
|
|
36
56
|
const defaultFixedPeriodType = excludedPeriodTypes.includes(_index2.MONTHLY) ? (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.QUARTERLY, periodsSettings) : (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.MONTHLY, periodsSettings);
|
|
37
57
|
const now = (0, _multiCalendarDates.getNowInCalendar)(periodsSettings.calendar);
|
|
@@ -44,7 +64,6 @@ const PeriodTransfer = _ref => {
|
|
|
44
64
|
reversePeriods: false
|
|
45
65
|
});
|
|
46
66
|
const [allPeriods, setAllPeriods] = (0, _react.useState)(defaultRelativePeriodType.getPeriods());
|
|
47
|
-
const [selectedPeriods, setSelectedPeriods] = (0, _react.useState)(initialSelectedPeriods);
|
|
48
67
|
const [isRelative, setIsRelative] = (0, _react.useState)(true);
|
|
49
68
|
const [relativeFilter, setRelativeFilter] = (0, _react.useState)({
|
|
50
69
|
periodType: defaultRelativePeriodType.id
|
|
@@ -53,6 +72,10 @@ const PeriodTransfer = _ref => {
|
|
|
53
72
|
periodType: defaultFixedPeriodType.id,
|
|
54
73
|
year: defaultFixedPeriodYear.toString()
|
|
55
74
|
});
|
|
75
|
+
const isActive = value => {
|
|
76
|
+
const item = selectedItems.find(item => item.id === value);
|
|
77
|
+
return !item || item.isActive;
|
|
78
|
+
};
|
|
56
79
|
const onIsRelativeClick = state => {
|
|
57
80
|
if (state !== isRelative) {
|
|
58
81
|
setIsRelative(state);
|
|
@@ -99,11 +122,6 @@ const PeriodTransfer = _ref => {
|
|
|
99
122
|
})), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
100
123
|
id: _DimensionSelectorStyle.default.__hash
|
|
101
124
|
}, _DimensionSelectorStyle.default));
|
|
102
|
-
const renderRightHeader = () => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {
|
|
103
|
-
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "rightHeader"
|
|
104
|
-
}, _index.default.t('Selected Periods')), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
105
|
-
id: _DimensionSelectorStyle.default.__hash
|
|
106
|
-
}, _DimensionSelectorStyle.default));
|
|
107
125
|
const onSelectFixedPeriods = filter => {
|
|
108
126
|
setFixedFilter(filter);
|
|
109
127
|
setAllPeriods((0, _fixedPeriods.getFixedPeriodsOptionsById)(filter.periodType, periodsSettings).getPeriods(fixedPeriodConfig(Number(filter.year)), periodsSettings));
|
|
@@ -114,45 +132,58 @@ const PeriodTransfer = _ref => {
|
|
|
114
132
|
id: _DimensionSelectorStyle.default.__hash
|
|
115
133
|
}, _DimensionSelectorStyle.default));
|
|
116
134
|
return /*#__PURE__*/_react.default.createElement(_ui.Transfer, {
|
|
117
|
-
onChange:
|
|
135
|
+
onChange: _ref3 => {
|
|
118
136
|
let {
|
|
119
137
|
selected
|
|
120
|
-
} =
|
|
121
|
-
const formattedItems = selected.map(id =>
|
|
122
|
-
id
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
138
|
+
} = _ref3;
|
|
139
|
+
const formattedItems = selected.map(id => {
|
|
140
|
+
const matchingItem = [...allPeriods, ...selectedItems].find(item => item.id === id);
|
|
141
|
+
return {
|
|
142
|
+
id,
|
|
143
|
+
name: matchingItem.name,
|
|
144
|
+
isActive: matchingItem.isActive
|
|
145
|
+
};
|
|
146
|
+
});
|
|
126
147
|
onSelect(formattedItems);
|
|
127
148
|
},
|
|
128
|
-
selected:
|
|
149
|
+
selected: selectedItems.map(period => period.id),
|
|
129
150
|
leftHeader: renderLeftHeader(),
|
|
130
151
|
enableOrderChange: true,
|
|
131
152
|
height: _dimensionSelectorHelper.TRANSFER_HEIGHT,
|
|
132
153
|
optionsWidth: _dimensionSelectorHelper.TRANSFER_OPTIONS_WIDTH,
|
|
133
154
|
selectedWidth: _dimensionSelectorHelper.TRANSFER_SELECTED_WIDTH,
|
|
134
155
|
selectedEmptyComponent: renderEmptySelection(),
|
|
135
|
-
rightHeader:
|
|
156
|
+
rightHeader: /*#__PURE__*/_react.default.createElement(RightHeader, {
|
|
157
|
+
infoBoxMessage: infoBoxMessage
|
|
158
|
+
}),
|
|
136
159
|
rightFooter: rightFooter,
|
|
137
|
-
options: [...allPeriods, ...
|
|
160
|
+
options: [...allPeriods, ...selectedItems].map(_ref4 => {
|
|
138
161
|
let {
|
|
139
162
|
id,
|
|
140
163
|
name
|
|
141
|
-
} =
|
|
164
|
+
} = _ref4;
|
|
142
165
|
return {
|
|
143
166
|
label: name,
|
|
144
167
|
value: id
|
|
145
168
|
};
|
|
146
169
|
}),
|
|
147
|
-
renderOption:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
170
|
+
renderOption: _ref5 => {
|
|
171
|
+
let {
|
|
172
|
+
value,
|
|
173
|
+
...props
|
|
174
|
+
} = _ref5;
|
|
175
|
+
return /*#__PURE__*/_react.default.createElement(_TransferOption.TransferOption, _extends({}, props, {
|
|
176
|
+
value: value,
|
|
177
|
+
active: isActive(value),
|
|
178
|
+
icon: _PeriodIcon.default,
|
|
179
|
+
dataTest: `${dataTest}-transfer-option`
|
|
180
|
+
}));
|
|
181
|
+
},
|
|
151
182
|
dataTest: `${dataTest}-transfer`
|
|
152
183
|
});
|
|
153
184
|
};
|
|
154
185
|
PeriodTransfer.defaultProps = {
|
|
155
|
-
|
|
186
|
+
selectedItems: [],
|
|
156
187
|
excludedPeriodTypes: [],
|
|
157
188
|
periodsSettings: {
|
|
158
189
|
calendar: 'gregory',
|
|
@@ -163,15 +194,17 @@ PeriodTransfer.propTypes = {
|
|
|
163
194
|
onSelect: _propTypes.default.func.isRequired,
|
|
164
195
|
dataTest: _propTypes.default.string,
|
|
165
196
|
excludedPeriodTypes: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
166
|
-
|
|
167
|
-
id: _propTypes.default.string,
|
|
168
|
-
name: _propTypes.default.string
|
|
169
|
-
})),
|
|
197
|
+
infoBoxMessage: _propTypes.default.string,
|
|
170
198
|
periodsSettings: _propTypes.default.shape({
|
|
171
199
|
calendar: _propTypes.default.string,
|
|
172
200
|
locale: _propTypes.default.string
|
|
173
201
|
}),
|
|
174
|
-
rightFooter: _propTypes.default.node
|
|
202
|
+
rightFooter: _propTypes.default.node,
|
|
203
|
+
selectedItems: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
204
|
+
id: _propTypes.default.string,
|
|
205
|
+
isActive: _propTypes.default.bool,
|
|
206
|
+
name: _propTypes.default.string
|
|
207
|
+
}))
|
|
175
208
|
};
|
|
176
209
|
var _default = PeriodTransfer;
|
|
177
210
|
exports.default = _default;
|
package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap
CHANGED
|
@@ -4,7 +4,6 @@ exports[`The Period Dimension component matches the snapshot 1`] = `
|
|
|
4
4
|
<PeriodTransfer
|
|
5
5
|
dataTest="period-dimension"
|
|
6
6
|
excludedPeriodTypes={Array []}
|
|
7
|
-
initialSelectedPeriods={Array []}
|
|
8
7
|
onSelect={[Function]}
|
|
9
8
|
periodsSettings={
|
|
10
9
|
Object {
|
|
@@ -13,5 +12,6 @@ exports[`The Period Dimension component matches the snapshot 1`] = `
|
|
|
13
12
|
}
|
|
14
13
|
}
|
|
15
14
|
rightFooter={<React.Fragment />}
|
|
15
|
+
selectedItems={Array []}
|
|
16
16
|
/>
|
|
17
17
|
`;
|
package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap
CHANGED
|
@@ -77,18 +77,7 @@ exports[`The Period Selector component matches the snapshot 1`] = `
|
|
|
77
77
|
optionsWidth="420px"
|
|
78
78
|
renderOption={[Function]}
|
|
79
79
|
rightFooter={<React.Fragment />}
|
|
80
|
-
rightHeader={
|
|
81
|
-
<React.Fragment>
|
|
82
|
-
<p
|
|
83
|
-
className="rightHeader"
|
|
84
|
-
>
|
|
85
|
-
Selected Periods
|
|
86
|
-
</p>
|
|
87
|
-
<style>
|
|
88
|
-
|
|
89
|
-
</style>
|
|
90
|
-
</React.Fragment>
|
|
91
|
-
}
|
|
80
|
+
rightHeader={<RightHeader />}
|
|
92
81
|
selected={Array []}
|
|
93
82
|
selectedEmptyComponent={
|
|
94
83
|
<React.Fragment>
|
|
@@ -24,7 +24,7 @@ const VisTypeIcon = _ref => {
|
|
|
24
24
|
}
|
|
25
25
|
case _visTypes.VIS_TYPE_PIVOT_TABLE:
|
|
26
26
|
{
|
|
27
|
-
VisIcon = useSmall ? _ui.
|
|
27
|
+
VisIcon = useSmall ? _ui.IconVisualizationPivotTable16 : _ui.IconVisualizationPivotTable24;
|
|
28
28
|
break;
|
|
29
29
|
}
|
|
30
30
|
case _visTypes.VIS_TYPE_BAR:
|
|
@@ -92,6 +92,11 @@ const VisTypeIcon = _ref => {
|
|
|
92
92
|
VisIcon = useSmall ? _ui.IconVisualizationScatter16 : _ui.IconVisualizationScatter24;
|
|
93
93
|
break;
|
|
94
94
|
}
|
|
95
|
+
case _visTypes.VIS_TYPE_OUTLIER_TABLE:
|
|
96
|
+
{
|
|
97
|
+
VisIcon = useSmall ? _ui.IconVisualizationOutlierTable16 : _ui.IconVisualizationOutlierTable24;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
95
100
|
case _visTypes.VIS_TYPE_COLUMN:
|
|
96
101
|
default:
|
|
97
102
|
{
|