@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 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
- request = passFilterAsDimension && fixedIds.includes(f.dimension) ? request.addDimension(f.dimension, f.items.map(item => item.id)) : request.addFilter(f.dimension, f.items.map(item => item.id));
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: updatedItems
128
+ ...(items && {
129
+ items: updatedItems
130
+ })
129
131
  });
130
132
  } else {
131
133
  this.dimensions.push({
132
134
  dimension,
133
- items: updatedItems
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 DIMENSION_PROPS = [DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS];
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
- [_dimension.DIMENSION_PROP_ID.name]: dimensionId,
12
- [_dimension.DIMENSION_PROP_ITEMS.name]: itemIds.map(id => ({
13
- id
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
- request = passFilterAsDimension && fixedIds.includes(f.dimension) ? request.addDimension(f.dimension, f.items.map(item => item.id)) : request.addFilter(f.dimension, f.items.map(item => item.id));
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: updatedItems
119
+ ...(items && {
120
+ items: updatedItems
121
+ })
120
122
  });
121
123
  } else {
122
124
  this.dimensions.push({
123
125
  dimension,
124
- items: updatedItems
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 DIMENSION_PROPS = [DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS];
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
- [DIMENSION_PROP_ID.name]: dimensionId,
4
- [DIMENSION_PROP_ITEMS.name]: itemIds.map(id => ({
5
- id
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
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dhis2/analytics",
3
- "version": "21.0.6",
3
+ "version": "21.0.7",
4
4
  "main": "./build/cjs/index.js",
5
5
  "module": "./build/es/index.js",
6
6
  "exports": {