@dhis2/analytics 21.0.6 → 21.0.7
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 +7 -0
- package/build/cjs/api/analytics/AnalyticsRequest.js +6 -2
- package/build/cjs/api/analytics/AnalyticsRequestDimensionsMixin.js +6 -2
- package/build/cjs/api/analytics/__tests__/AnalyticsRequest.spec.js +1 -2
- package/build/cjs/modules/layout/dimension.js +9 -2
- package/build/cjs/modules/layout/dimensionCreate.js +14 -6
- package/build/es/api/analytics/AnalyticsRequest.js +6 -2
- package/build/es/api/analytics/AnalyticsRequestDimensionsMixin.js +6 -2
- package/build/es/api/analytics/__tests__/AnalyticsRequest.spec.js +1 -2
- package/build/es/modules/layout/dimension.js +7 -1
- package/build/es/modules/layout/dimensionCreate.js +15 -7
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [21.0.7](https://github.com/dhis2/analytics/compare/v21.0.6...v21.0.7) (2021-12-01)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* dimension without items + filter (TECH-788) ([#1097](https://github.com/dhis2/analytics/issues/1097)) ([37369ce](https://github.com/dhis2/analytics/commit/37369ce74eb189724d0943d35492d377f0ff44f8))
|
|
7
|
+
|
|
1
8
|
## [21.0.6](https://github.com/dhis2/analytics/compare/v21.0.5...v21.0.6) (2021-11-28)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -56,20 +56,24 @@ class AnalyticsRequest extends (0, _AnalyticsRequestDimensionsMixin.default)((0,
|
|
|
56
56
|
const columns = visualization.columns || [];
|
|
57
57
|
const rows = visualization.rows || [];
|
|
58
58
|
columns.concat(rows).forEach(d => {
|
|
59
|
+
var _d$items;
|
|
60
|
+
|
|
59
61
|
let dimension = d.dimension;
|
|
60
62
|
|
|
61
63
|
if (d.filter) {
|
|
62
64
|
dimension += ":".concat(d.filter);
|
|
63
65
|
}
|
|
64
66
|
|
|
65
|
-
request = request.addDimension(dimension, d.items.map(item => item.id));
|
|
67
|
+
request = request.addDimension(dimension, (_d$items = d.items) === null || _d$items === void 0 ? void 0 : _d$items.map(item => item.id));
|
|
66
68
|
}); // extract filters from visualization
|
|
67
69
|
|
|
68
70
|
const filters = visualization.filters || []; // only pass dx/pe/ou as dimension
|
|
69
71
|
|
|
70
72
|
const fixedIds = Object.keys((0, _predefinedDimensions.getFixedDimensions)());
|
|
71
73
|
filters.forEach(f => {
|
|
72
|
-
|
|
74
|
+
var _f$items, _f$items2;
|
|
75
|
+
|
|
76
|
+
request = passFilterAsDimension && fixedIds.includes(f.dimension) ? request.addDimension(f.dimension, (_f$items = f.items) === null || _f$items === void 0 ? void 0 : _f$items.map(item => item.id)) : request.addFilter(f.dimension, (_f$items2 = f.items) === null || _f$items2 === void 0 ? void 0 : _f$items2.map(item => item.id));
|
|
73
77
|
});
|
|
74
78
|
return request;
|
|
75
79
|
}
|
|
@@ -125,12 +125,16 @@ class extends base {
|
|
|
125
125
|
if (existingDimension) {
|
|
126
126
|
this.dimensions.splice(dimensionIndex, 1, {
|
|
127
127
|
dimension,
|
|
128
|
-
items
|
|
128
|
+
...(items && {
|
|
129
|
+
items: updatedItems
|
|
130
|
+
})
|
|
129
131
|
});
|
|
130
132
|
} else {
|
|
131
133
|
this.dimensions.push({
|
|
132
134
|
dimension,
|
|
133
|
-
items
|
|
135
|
+
...(items && {
|
|
136
|
+
items: updatedItems
|
|
137
|
+
})
|
|
134
138
|
});
|
|
135
139
|
}
|
|
136
140
|
|
|
@@ -122,8 +122,7 @@ describe('AnalyticsRequest', () => {
|
|
|
122
122
|
it('should add the given dimension without any associated value', () => {
|
|
123
123
|
request.addDimension('Jtf34kNZhzP');
|
|
124
124
|
expect(request.dimensions).toEqual([{
|
|
125
|
-
dimension: 'Jtf34kNZhzP'
|
|
126
|
-
items: []
|
|
125
|
+
dimension: 'Jtf34kNZhzP'
|
|
127
126
|
}]);
|
|
128
127
|
});
|
|
129
128
|
it('should add the given dimension with the associated value (passed as string)', () => {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.DIMENSION_PROPS = exports.DIMENSION_PROP_ITEMS = exports.DIMENSION_PROP_ID = exports.DIMENSION = void 0;
|
|
6
|
+
exports.DIMENSION_PROPS = exports.DIMENSION_PROP_FILTER = exports.DIMENSION_PROP_ITEMS = exports.DIMENSION_PROP_ID = exports.DIMENSION = void 0;
|
|
7
7
|
|
|
8
8
|
var _isObject = _interopRequireDefault(require("lodash/isObject"));
|
|
9
9
|
|
|
@@ -31,5 +31,12 @@ const DIMENSION_PROP_ITEMS = {
|
|
|
31
31
|
isValid: prop => Array.isArray(prop)
|
|
32
32
|
};
|
|
33
33
|
exports.DIMENSION_PROP_ITEMS = DIMENSION_PROP_ITEMS;
|
|
34
|
-
const
|
|
34
|
+
const DIMENSION_PROP_FILTER = {
|
|
35
|
+
name: 'filter',
|
|
36
|
+
defaultValue: [],
|
|
37
|
+
required: false,
|
|
38
|
+
isValid: prop => (0, _isString.default)(prop)
|
|
39
|
+
};
|
|
40
|
+
exports.DIMENSION_PROP_FILTER = DIMENSION_PROP_FILTER;
|
|
41
|
+
const DIMENSION_PROPS = [DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS, DIMENSION_PROP_FILTER];
|
|
35
42
|
exports.DIMENSION_PROPS = DIMENSION_PROPS;
|
|
@@ -7,11 +7,19 @@ exports.dimensionCreate = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _dimension = require("./dimension");
|
|
9
9
|
|
|
10
|
-
const dimensionCreate = (dimensionId, itemIds = []) =>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
const dimensionCreate = (dimensionId, itemIds = [], args = {}) => {
|
|
11
|
+
const dimension = {
|
|
12
|
+
[_dimension.DIMENSION_PROP_ID.name]: dimensionId,
|
|
13
|
+
...(itemIds.length && {
|
|
14
|
+
[_dimension.DIMENSION_PROP_ITEMS.name]: itemIds.map(id => ({
|
|
15
|
+
id
|
|
16
|
+
}))
|
|
17
|
+
}),
|
|
18
|
+
...(args.filter && {
|
|
19
|
+
[_dimension.DIMENSION_PROP_FILTER.name]: args.filter
|
|
20
|
+
})
|
|
21
|
+
};
|
|
22
|
+
return dimension;
|
|
23
|
+
};
|
|
16
24
|
|
|
17
25
|
exports.dimensionCreate = dimensionCreate;
|
|
@@ -43,20 +43,24 @@ class AnalyticsRequest extends AnalyticsRequestDimensionsMixin(AnalyticsRequestF
|
|
|
43
43
|
const columns = visualization.columns || [];
|
|
44
44
|
const rows = visualization.rows || [];
|
|
45
45
|
columns.concat(rows).forEach(d => {
|
|
46
|
+
var _d$items;
|
|
47
|
+
|
|
46
48
|
let dimension = d.dimension;
|
|
47
49
|
|
|
48
50
|
if (d.filter) {
|
|
49
51
|
dimension += ":".concat(d.filter);
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
request = request.addDimension(dimension, d.items.map(item => item.id));
|
|
54
|
+
request = request.addDimension(dimension, (_d$items = d.items) === null || _d$items === void 0 ? void 0 : _d$items.map(item => item.id));
|
|
53
55
|
}); // extract filters from visualization
|
|
54
56
|
|
|
55
57
|
const filters = visualization.filters || []; // only pass dx/pe/ou as dimension
|
|
56
58
|
|
|
57
59
|
const fixedIds = Object.keys(getFixedDimensions());
|
|
58
60
|
filters.forEach(f => {
|
|
59
|
-
|
|
61
|
+
var _f$items, _f$items2;
|
|
62
|
+
|
|
63
|
+
request = passFilterAsDimension && fixedIds.includes(f.dimension) ? request.addDimension(f.dimension, (_f$items = f.items) === null || _f$items === void 0 ? void 0 : _f$items.map(item => item.id)) : request.addFilter(f.dimension, (_f$items2 = f.items) === null || _f$items2 === void 0 ? void 0 : _f$items2.map(item => item.id));
|
|
60
64
|
});
|
|
61
65
|
return request;
|
|
62
66
|
}
|
|
@@ -116,12 +116,16 @@ class extends base {
|
|
|
116
116
|
if (existingDimension) {
|
|
117
117
|
this.dimensions.splice(dimensionIndex, 1, {
|
|
118
118
|
dimension,
|
|
119
|
-
items
|
|
119
|
+
...(items && {
|
|
120
|
+
items: updatedItems
|
|
121
|
+
})
|
|
120
122
|
});
|
|
121
123
|
} else {
|
|
122
124
|
this.dimensions.push({
|
|
123
125
|
dimension,
|
|
124
|
-
items
|
|
126
|
+
...(items && {
|
|
127
|
+
items: updatedItems
|
|
128
|
+
})
|
|
125
129
|
});
|
|
126
130
|
}
|
|
127
131
|
|
|
@@ -115,8 +115,7 @@ describe('AnalyticsRequest', () => {
|
|
|
115
115
|
it('should add the given dimension without any associated value', () => {
|
|
116
116
|
request.addDimension('Jtf34kNZhzP');
|
|
117
117
|
expect(request.dimensions).toEqual([{
|
|
118
|
-
dimension: 'Jtf34kNZhzP'
|
|
119
|
-
items: []
|
|
118
|
+
dimension: 'Jtf34kNZhzP'
|
|
120
119
|
}]);
|
|
121
120
|
});
|
|
122
121
|
it('should add the given dimension with the associated value (passed as string)', () => {
|
|
@@ -17,4 +17,10 @@ export const DIMENSION_PROP_ITEMS = {
|
|
|
17
17
|
required: false,
|
|
18
18
|
isValid: prop => Array.isArray(prop)
|
|
19
19
|
};
|
|
20
|
-
export const
|
|
20
|
+
export const DIMENSION_PROP_FILTER = {
|
|
21
|
+
name: 'filter',
|
|
22
|
+
defaultValue: [],
|
|
23
|
+
required: false,
|
|
24
|
+
isValid: prop => isString(prop)
|
|
25
|
+
};
|
|
26
|
+
export const DIMENSION_PROPS = [DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS, DIMENSION_PROP_FILTER];
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
import { DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS } from './dimension';
|
|
2
|
-
export const dimensionCreate = (dimensionId, itemIds = []) =>
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS, DIMENSION_PROP_FILTER } from './dimension';
|
|
2
|
+
export const dimensionCreate = (dimensionId, itemIds = [], args = {}) => {
|
|
3
|
+
const dimension = {
|
|
4
|
+
[DIMENSION_PROP_ID.name]: dimensionId,
|
|
5
|
+
...(itemIds.length && {
|
|
6
|
+
[DIMENSION_PROP_ITEMS.name]: itemIds.map(id => ({
|
|
7
|
+
id
|
|
8
|
+
}))
|
|
9
|
+
}),
|
|
10
|
+
...(args.filter && {
|
|
11
|
+
[DIMENSION_PROP_FILTER.name]: args.filter
|
|
12
|
+
})
|
|
13
|
+
};
|
|
14
|
+
return dimension;
|
|
15
|
+
};
|