@dhis2/analytics 999.9.9-outlier-table.alpha.4 → 999.9.9-value-align-alpha.1

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 (121) hide show
  1. package/build/cjs/__demo__/DimensionsPanel.stories.js +1 -0
  2. package/build/cjs/api/analytics/Analytics.js +7 -0
  3. package/build/cjs/api/analytics/AnalyticsBase.js +24 -6
  4. package/build/cjs/api/analytics/AnalyticsRequest.js +33 -10
  5. package/build/cjs/api/analytics/AnalyticsRequestBase.js +3 -1
  6. package/build/cjs/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -0
  7. package/build/cjs/api/analytics/AnalyticsTrackedEntities.js +31 -0
  8. package/build/cjs/api/analytics/utils.js +21 -2
  9. package/build/cjs/assets/DynamicDimensionIcon.js +12 -38
  10. package/build/cjs/components/AboutAOUnit/AboutAOUnit.js +1 -0
  11. package/build/cjs/components/AboutAOUnit/styles/AboutAOUnit.style.js +2 -2
  12. package/build/cjs/components/DataDimension/DataDimension.js +1 -1
  13. package/build/cjs/components/DataDimension/DataTypeSelector.js +18 -6
  14. package/build/cjs/components/DataDimension/ItemSelector.js +5 -5
  15. package/build/cjs/components/DimensionsPanel/List/DimensionItem.js +49 -33
  16. package/build/cjs/components/DimensionsPanel/List/OptionsButton.js +7 -6
  17. package/build/cjs/components/DimensionsPanel/List/RecommendedIcon.js +1 -2
  18. package/build/cjs/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +239 -361
  19. package/build/cjs/components/DimensionsPanel/List/styles/DimensionItem.style.js +5 -67
  20. package/build/cjs/components/DimensionsPanel/List/styles/DimensionList.style.js +2 -2
  21. package/build/cjs/components/DimensionsPanel/List/styles/RecommendedIcon.style.js +4 -4
  22. package/build/cjs/components/DimensionsPanel/styles/DimensionsPanel.style.js +1 -1
  23. package/build/cjs/components/Interpretations/InterpretationModal/InterpretationModal.js +7 -3
  24. package/build/cjs/components/OrgUnitDimension/OrgUnitDimension.js +5 -3
  25. package/build/cjs/components/PeriodDimension/PeriodTransfer.js +17 -13
  26. package/build/cjs/components/PivotTable/styles/PivotTable.style.js +2 -2
  27. package/build/cjs/locales/cs/translations.json +7 -2
  28. package/build/cjs/locales/es/translations.json +7 -2
  29. package/build/cjs/locales/index.js +46 -42
  30. package/build/cjs/locales/lo/translations.json +258 -253
  31. package/build/cjs/locales/nb/translations.json +8 -3
  32. package/build/cjs/locales/ne/translations.json +390 -0
  33. package/build/cjs/locales/sv/translations.json +10 -5
  34. package/build/cjs/locales/th/translations.json +384 -0
  35. package/build/cjs/locales/vi/translations.json +9 -4
  36. package/build/cjs/locales/zh/translations.json +7 -2
  37. package/build/cjs/modules/layout/axisGetDimensionIds.js +1 -1
  38. package/build/cjs/modules/layout/dimension.js +9 -2
  39. package/build/cjs/modules/layout/dimensionCreate.js +3 -0
  40. package/build/cjs/modules/layout/dimensionGetId.js +9 -3
  41. package/build/cjs/modules/layout/layoutFilterDimensions.js +1 -1
  42. package/build/cjs/modules/layout/layoutGetAxisIdDimensionIdsObject.js +1 -1
  43. package/build/cjs/modules/layout/layoutGetDimensionIdItemIdsObject.js +1 -1
  44. package/build/cjs/modules/layout/layoutHasDynamicDimension.js +1 -1
  45. package/build/cjs/modules/layoutUiRules/__tests__/rules.spec.js +4 -3
  46. package/build/cjs/modules/layoutUiRules/index.js +1 -1
  47. package/build/cjs/modules/layoutUiRules/rules.js +6 -6
  48. package/build/cjs/modules/layoutUiRules/rulesHelper.js +3 -3
  49. package/build/cjs/modules/layoutUiRules/rulesUtils.js +3 -3
  50. package/build/cjs/modules/pivotTable/PivotTableEngine.js +9 -6
  51. package/build/es/__demo__/DimensionsPanel.stories.js +1 -0
  52. package/build/es/api/analytics/Analytics.js +7 -0
  53. package/build/es/api/analytics/AnalyticsBase.js +24 -6
  54. package/build/es/api/analytics/AnalyticsRequest.js +33 -10
  55. package/build/es/api/analytics/AnalyticsRequestBase.js +3 -1
  56. package/build/es/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -0
  57. package/build/es/api/analytics/AnalyticsTrackedEntities.js +24 -0
  58. package/build/es/api/analytics/utils.js +18 -1
  59. package/build/es/assets/DynamicDimensionIcon.js +12 -38
  60. package/build/es/components/AboutAOUnit/AboutAOUnit.js +1 -0
  61. package/build/es/components/AboutAOUnit/styles/AboutAOUnit.style.js +2 -2
  62. package/build/es/components/DataDimension/DataDimension.js +1 -1
  63. package/build/es/components/DataDimension/DataTypeSelector.js +18 -6
  64. package/build/es/components/DataDimension/ItemSelector.js +5 -5
  65. package/build/es/components/DimensionsPanel/List/DimensionItem.js +50 -34
  66. package/build/es/components/DimensionsPanel/List/OptionsButton.js +7 -6
  67. package/build/es/components/DimensionsPanel/List/RecommendedIcon.js +1 -2
  68. package/build/es/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +239 -361
  69. package/build/es/components/DimensionsPanel/List/styles/DimensionItem.style.js +4 -66
  70. package/build/es/components/DimensionsPanel/List/styles/DimensionList.style.js +2 -2
  71. package/build/es/components/DimensionsPanel/List/styles/RecommendedIcon.style.js +4 -4
  72. package/build/es/components/DimensionsPanel/styles/DimensionsPanel.style.js +1 -1
  73. package/build/es/components/Interpretations/InterpretationModal/InterpretationModal.js +8 -4
  74. package/build/es/components/OrgUnitDimension/OrgUnitDimension.js +5 -3
  75. package/build/es/components/PeriodDimension/PeriodTransfer.js +17 -13
  76. package/build/es/components/PivotTable/styles/PivotTable.style.js +2 -2
  77. package/build/es/locales/cs/translations.json +7 -2
  78. package/build/es/locales/es/translations.json +7 -2
  79. package/build/es/locales/index.js +4 -0
  80. package/build/es/locales/lo/translations.json +258 -253
  81. package/build/es/locales/nb/translations.json +8 -3
  82. package/build/es/locales/ne/translations.json +390 -0
  83. package/build/es/locales/sv/translations.json +10 -5
  84. package/build/es/locales/th/translations.json +384 -0
  85. package/build/es/locales/vi/translations.json +9 -4
  86. package/build/es/locales/zh/translations.json +7 -2
  87. package/build/es/modules/layout/axisGetDimensionIds.js +1 -1
  88. package/build/es/modules/layout/dimension.js +7 -1
  89. package/build/es/modules/layout/dimensionCreate.js +4 -1
  90. package/build/es/modules/layout/dimensionGetId.js +10 -4
  91. package/build/es/modules/layout/layoutFilterDimensions.js +1 -1
  92. package/build/es/modules/layout/layoutGetAxisIdDimensionIdsObject.js +1 -1
  93. package/build/es/modules/layout/layoutGetDimensionIdItemIdsObject.js +1 -1
  94. package/build/es/modules/layout/layoutHasDynamicDimension.js +1 -1
  95. package/build/es/modules/layoutUiRules/__tests__/rules.spec.js +4 -3
  96. package/build/es/modules/layoutUiRules/index.js +1 -1
  97. package/build/es/modules/layoutUiRules/rules.js +4 -4
  98. package/build/es/modules/layoutUiRules/rulesHelper.js +2 -2
  99. package/build/es/modules/layoutUiRules/rulesUtils.js +4 -4
  100. package/build/es/modules/pivotTable/PivotTableEngine.js +9 -6
  101. package/package.json +2 -2
  102. package/build/cjs/api/analytics/__tests__/AnalyticsTrackedEntities.spec.js +0 -44
  103. package/build/cjs/api/analytics/__tests__/__snapshots__/AnalyticsTrackedEntities.spec.js.snap +0 -3
  104. package/build/cjs/components/RichText/Editor.bk/Editor.js +0 -40
  105. package/build/cjs/components/RichText/Editor.bk/__tests__/Editor.spec.js +0 -29
  106. package/build/cjs/components/RichText/Editor.bk/__tests__/convertCtrlKey.spec.js +0 -205
  107. package/build/cjs/components/RichText/Editor.bk/convertCtrlKey.js +0 -87
  108. package/build/cjs/components/RichText/Parser.bk/MdParser.js +0 -107
  109. package/build/cjs/components/RichText/Parser.bk/Parser.js +0 -34
  110. package/build/cjs/components/RichText/Parser.bk/__tests__/MdParser.spec.js +0 -34
  111. package/build/cjs/components/RichText/Parser.bk/__tests__/Parser.spec.js +0 -41
  112. package/build/es/api/analytics/__tests__/AnalyticsTrackedEntities.spec.js +0 -41
  113. package/build/es/api/analytics/__tests__/__snapshots__/AnalyticsTrackedEntities.spec.js.snap +0 -3
  114. package/build/es/components/RichText/Editor.bk/Editor.js +0 -30
  115. package/build/es/components/RichText/Editor.bk/__tests__/Editor.spec.js +0 -26
  116. package/build/es/components/RichText/Editor.bk/__tests__/convertCtrlKey.spec.js +0 -202
  117. package/build/es/components/RichText/Editor.bk/convertCtrlKey.js +0 -80
  118. package/build/es/components/RichText/Parser.bk/MdParser.js +0 -99
  119. package/build/es/components/RichText/Parser.bk/Parser.js +0 -24
  120. package/build/es/components/RichText/Parser.bk/__tests__/MdParser.spec.js +0 -31
  121. package/build/es/components/RichText/Parser.bk/__tests__/Parser.spec.js +0 -38
@@ -65,6 +65,7 @@ const onDimensionClick = () => alert('click');
65
65
  return /*#__PURE__*/_react2.default.createElement(_DimensionsPanel.default, {
66
66
  dimensions: [...fixedDimensions, ...dynamicDimensions],
67
67
  onDimensionClick: onDimensionClick,
68
+ selectedIds: [_predefinedDimensions.DIMENSION_ID_DATA],
68
69
  lockedDimension: dimension => dimension === _predefinedDimensions.DIMENSION_ID_DATA
69
70
  });
70
71
  });
@@ -9,6 +9,7 @@ var _AnalyticsEnrollments = _interopRequireDefault(require("./AnalyticsEnrollmen
9
9
  var _AnalyticsEvents = _interopRequireDefault(require("./AnalyticsEvents.js"));
10
10
  var _AnalyticsRequest = _interopRequireDefault(require("./AnalyticsRequest.js"));
11
11
  var _AnalyticsResponse = _interopRequireDefault(require("./AnalyticsResponse.js"));
12
+ var _AnalyticsTrackedEntities = _interopRequireDefault(require("./AnalyticsTrackedEntities.js"));
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14
  /**
14
15
  * @module analytics
@@ -19,6 +20,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
20
  * Analytics class used to request analytics data from Web API.
20
21
  *
21
22
  * @requires analytics.AnalyticsAggregate
23
+ * @requires analytics.AnalyticsTrackedEntities
24
+ * @requires analytics.AnalyticsEnrollments
22
25
  * @requires analytics.AnalyticsEvents
23
26
  * @requires analytics.AnalyticsRequest
24
27
  * @requires analytics.AnalyticsResponse
@@ -38,6 +41,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
38
41
  class Analytics {
39
42
  /**
40
43
  * @param {!module:analytics.AnalyticsAggregate} analyticsAggregate The AnalyticsAggregate instance
44
+ * @param {!module:analytics.AnalyticsTrackedEntities} analyticsTrackedEntities The AnalyticsTrackedEntities instance
41
45
  * @param {!module:analytics.AnalyticsEnrollments} analyticsEnrollments The AnalyticsEnrollments instance
42
46
  * @param {!module:analytics.AnalyticsEvents} analyticsEvents The AnalyticsEvents instance
43
47
  * @param {!module:analytics.AnalyticsRequest} analyticsRequest The AnalyticsRequest class
@@ -46,12 +50,14 @@ class Analytics {
46
50
  constructor(_ref) {
47
51
  let {
48
52
  aggregate,
53
+ trackedEntities,
49
54
  enrollments,
50
55
  events,
51
56
  request,
52
57
  response
53
58
  } = _ref;
54
59
  this.aggregate = aggregate;
60
+ this.trackedEntities = trackedEntities;
55
61
  this.enrollments = enrollments;
56
62
  this.events = events;
57
63
  this.request = request;
@@ -74,6 +80,7 @@ class Analytics {
74
80
  if (!Analytics.getAnalytics.analytics) {
75
81
  Analytics.getAnalytics.analytics = new Analytics({
76
82
  aggregate: new _AnalyticsAggregate.default(dataEngine),
83
+ trackedEntities: new _AnalyticsTrackedEntities.default(dataEngine),
77
84
  enrollments: new _AnalyticsEnrollments.default(dataEngine),
78
85
  events: new _AnalyticsEvents.default(dataEngine),
79
86
  request: _AnalyticsRequest.default,
@@ -6,15 +6,21 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.generateDimensionStrings = exports.default = void 0;
7
7
  var _sortBy = _interopRequireDefault(require("lodash/sortBy"));
8
8
  var _AnalyticsRequest = _interopRequireDefault(require("./AnalyticsRequest.js"));
9
+ var _utils = require("./utils.js");
9
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
11
  const analyticsQuery = {
11
12
  resource: 'analytics',
12
13
  id: _ref => {
13
14
  let {
14
15
  path,
15
- program
16
+ program,
17
+ trackedEntityType
16
18
  } = _ref;
17
- return [path, program].filter(Boolean).join('/');
19
+ return (0, _utils.formatRequestPath)({
20
+ path,
21
+ program,
22
+ trackedEntityType
23
+ });
18
24
  },
19
25
  params: _ref2 => {
20
26
  let {
@@ -34,9 +40,14 @@ const analyticsDataQuery = {
34
40
  id: _ref3 => {
35
41
  let {
36
42
  path,
37
- program
43
+ program,
44
+ trackedEntityType
38
45
  } = _ref3;
39
- return [path, program].filter(Boolean).join('/');
46
+ return (0, _utils.formatRequestPath)({
47
+ path,
48
+ program,
49
+ trackedEntityType
50
+ });
40
51
  },
41
52
  params: _ref4 => {
42
53
  let {
@@ -58,9 +69,14 @@ const analyticsMetaDataQuery = {
58
69
  id: _ref5 => {
59
70
  let {
60
71
  path,
61
- program
72
+ program,
73
+ trackedEntityType
62
74
  } = _ref5;
63
- return [path, program].filter(Boolean).join('/');
75
+ return (0, _utils.formatRequestPath)({
76
+ path,
77
+ program,
78
+ trackedEntityType
79
+ });
64
80
  },
65
81
  params: _ref6 => {
66
82
  let {
@@ -153,6 +169,7 @@ class AnalyticsBase {
153
169
  variables: {
154
170
  path: req.path,
155
171
  program: req.program,
172
+ trackedEntityType: req.trackedEntityType,
156
173
  dimensions: generateDimensionStrings(req.dimensions),
157
174
  filters: generateDimensionStrings(req.filters),
158
175
  parameters: req.parameters,
@@ -195,6 +212,7 @@ class AnalyticsBase {
195
212
  variables: {
196
213
  path: req.path,
197
214
  program: req.program,
215
+ trackedEntityType: req.trackedEntityType,
198
216
  dimensions: generateDimensionStrings(req.dimensions, options),
199
217
  filters: generateDimensionStrings(req.filters, options),
200
218
  parameters: req.parameters
@@ -10,6 +10,7 @@ var _AnalyticsRequestBase = _interopRequireDefault(require("./AnalyticsRequestBa
10
10
  var _AnalyticsRequestDimensionsMixin = _interopRequireDefault(require("./AnalyticsRequestDimensionsMixin.js"));
11
11
  var _AnalyticsRequestFiltersMixin = _interopRequireDefault(require("./AnalyticsRequestFiltersMixin.js"));
12
12
  var _AnalyticsRequestPropertiesMixin = _interopRequireDefault(require("./AnalyticsRequestPropertiesMixin.js"));
13
+ var _utils = require("./utils.js");
13
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
15
  /**
15
16
  * @description
@@ -47,6 +48,7 @@ class AnalyticsRequest extends (0, _AnalyticsRequestDimensionsMixin.default)((0,
47
48
  fromVisualization(visualization) {
48
49
  let passFilterAsDimension = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
49
50
  let request = this;
51
+ const outputType = visualization.outputType;
50
52
 
51
53
  // extract dimensions from visualization
52
54
  const columns = visualization.columns || [];
@@ -57,19 +59,28 @@ class AnalyticsRequest extends (0, _AnalyticsRequestDimensionsMixin.default)((0,
57
59
  if ((_d$legendSet = d.legendSet) !== null && _d$legendSet !== void 0 && _d$legendSet.id) {
58
60
  dimension += `-${d.legendSet.id}`;
59
61
  }
60
- if ((_d$programStage = d.programStage) !== null && _d$programStage !== void 0 && _d$programStage.id) {
61
- dimension = `${d.programStage.id}.${dimension}`;
62
- }
63
62
  if (d.filter) {
64
63
  dimension += `:${d.filter}`;
65
64
  }
65
+ const programStageId = (_d$programStage = d.programStage) === null || _d$programStage === void 0 ? void 0 : _d$programStage.id;
66
66
  if ((_d$repetition = d.repetition) !== null && _d$repetition !== void 0 && (_d$repetition$indexes = _d$repetition.indexes) !== null && _d$repetition$indexes !== void 0 && _d$repetition$indexes.length) {
67
67
  d.repetition.indexes.forEach(index => {
68
- request = request.addDimension(dimension.replace(/\./, `[${index}].`));
68
+ var _d$program;
69
+ request = request.addDimension((0, _utils.formatDimension)({
70
+ programId: (_d$program = d.program) === null || _d$program === void 0 ? void 0 : _d$program.id,
71
+ programStageId: `${programStageId}[${index}]`,
72
+ dimension,
73
+ outputType
74
+ }));
69
75
  });
70
76
  } else {
71
- var _d$items;
72
- request = request.addDimension(dimension, (_d$items = d.items) === null || _d$items === void 0 ? void 0 : _d$items.map(item => item.id));
77
+ var _d$program2, _d$items;
78
+ request = request.addDimension((0, _utils.formatDimension)({
79
+ programId: (_d$program2 = d.program) === null || _d$program2 === void 0 ? void 0 : _d$program2.id,
80
+ programStageId,
81
+ dimension,
82
+ outputType
83
+ }), (_d$items = d.items) === null || _d$items === void 0 ? void 0 : _d$items.map(item => item.id));
73
84
  }
74
85
  });
75
86
 
@@ -84,17 +95,29 @@ class AnalyticsRequest extends (0, _AnalyticsRequestDimensionsMixin.default)((0,
84
95
  request = request.addDimension(f.dimension, (_f$items = f.items) === null || _f$items === void 0 ? void 0 : _f$items.map(item => item.id));
85
96
  } else {
86
97
  var _f$programStage, _f$repetition, _f$repetition$indexes;
87
- let filterString = (_f$programStage = f.programStage) !== null && _f$programStage !== void 0 && _f$programStage.id ? `${f.programStage.id}.${f.dimension}` : f.dimension;
98
+ let filterString = f.dimension;
88
99
  if (f.filter) {
89
100
  filterString += `:${f.filter}`;
90
101
  }
102
+ const programStageId = (_f$programStage = f.programStage) === null || _f$programStage === void 0 ? void 0 : _f$programStage.id;
91
103
  if ((_f$repetition = f.repetition) !== null && _f$repetition !== void 0 && (_f$repetition$indexes = _f$repetition.indexes) !== null && _f$repetition$indexes !== void 0 && _f$repetition$indexes.length) {
92
104
  f.repetition.indexes.forEach(index => {
93
- request = request.addFilter(filterString.replace(/\./, `[${index}].`));
105
+ var _f$program;
106
+ request = request.addFilter((0, _utils.formatDimension)({
107
+ programId: (_f$program = f.program) === null || _f$program === void 0 ? void 0 : _f$program.id,
108
+ programStageId: `${programStageId}[${index}]`,
109
+ dimension: filterString,
110
+ outputType
111
+ }));
94
112
  });
95
113
  } else {
96
- var _f$items2;
97
- request = request.addFilter(filterString, (_f$items2 = f.items) === null || _f$items2 === void 0 ? void 0 : _f$items2.map(item => item.id));
114
+ var _f$program2, _f$items2;
115
+ request = request.addFilter((0, _utils.formatDimension)({
116
+ programId: (_f$program2 = f.program) === null || _f$program2 === void 0 ? void 0 : _f$program2.id,
117
+ programStageId,
118
+ dimension: filterString,
119
+ outputType
120
+ }), (_f$items2 = f.items) === null || _f$items2 === void 0 ? void 0 : _f$items2.map(item => item.id));
98
121
  }
99
122
  }
100
123
  });
@@ -24,6 +24,7 @@ class AnalyticsRequestBase {
24
24
  format = 'json',
25
25
  path,
26
26
  program,
27
+ trackedEntityType,
27
28
  dimensions = [],
28
29
  filters = [],
29
30
  parameters = {}
@@ -32,6 +33,7 @@ class AnalyticsRequestBase {
32
33
  this.format = format.toLowerCase();
33
34
  this.path = path;
34
35
  this.program = program;
36
+ this.trackedEntityType = trackedEntityType;
35
37
  this.dimensions = dimensions;
36
38
  this.filters = filters;
37
39
  this.parameters = {
@@ -70,7 +72,7 @@ class AnalyticsRequestBase {
70
72
  }
71
73
  return dimension;
72
74
  });
73
- const endPoint = [this.endPoint, this.path, this.program].filter(e => !!e).join('/');
75
+ const endPoint = [this.endPoint, this.path, this.program, this.trackedEntityType].filter(Boolean).join('/');
74
76
  let url = `${endPoint}.${this.format}`;
75
77
  if (encodedDimensions.length) {
76
78
  url += `?dimension=${encodedDimensions.join('&dimension=')}`;
@@ -497,6 +497,25 @@ class extends base {
497
497
  return new _AnalyticsRequest.default(this);
498
498
  }
499
499
 
500
+ /**
501
+ * Sets the tracked entity type for the request.
502
+ * It appends the tracked entity type id to the request's path.
503
+ *
504
+ * @param {!String} trackedEntityType The tracked entity type id
505
+ *
506
+ * @returns {AnalyticsRequest} A new instance of the class for chaining purposes
507
+ *
508
+ * @example
509
+ * const req = new analytics.request()
510
+ * .withTrackedEntityType('nEenWmSyUEp');
511
+ */
512
+ withTrackedEntityType(trackedEntityType) {
513
+ if (trackedEntityType) {
514
+ this.trackedEntityType = trackedEntityType;
515
+ }
516
+ return new _AnalyticsRequest.default(this);
517
+ }
518
+
500
519
  /**
501
520
  * Sets the program for the request.
502
521
  * It appends the program id to the request's path.
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _AnalyticsBase = _interopRequireDefault(require("./AnalyticsBase.js"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ /**
10
+ * @extends module:analytics.AnalyticsBase
11
+ *
12
+ * @description
13
+ * Analytics tracked entities class used to request analytics tracked entities data from Web API.
14
+ *
15
+ * @memberof module:analytics
16
+ */
17
+ class AnalyticsTrackedEntities extends _AnalyticsBase.default {
18
+ /**
19
+ * @param {!AnalyticsRequest} req Request object
20
+ *
21
+ * @returns {Promise} Promise that resolves with the analytics query data from the api.
22
+ *
23
+ * @example
24
+ // TODO: provide working example
25
+ */
26
+ getQuery(req) {
27
+ return this.fetch(req.withPath('trackedEntities/query'));
28
+ }
29
+ }
30
+ var _default = AnalyticsTrackedEntities;
31
+ exports.default = _default;
@@ -3,10 +3,29 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.customEncodeURIComponent = void 0;
6
+ exports.formatRequestPath = exports.formatDimension = exports.customEncodeURIComponent = void 0;
7
7
  // Define our very own special list of characters that we don't want to encode in the URI
8
8
  const whitelistURI = ',&$=/;:';
9
9
  const whitelistURICodes = whitelistURI.split('').map(c => encodeURIComponent(c));
10
10
  const whitelistRegExp = new RegExp(`(?:${whitelistURICodes.join('|')})`, 'g');
11
11
  const customEncodeURIComponent = uri => encodeURIComponent(uri).replace(whitelistRegExp, decodeURIComponent);
12
- exports.customEncodeURIComponent = customEncodeURIComponent;
12
+ exports.customEncodeURIComponent = customEncodeURIComponent;
13
+ const formatRequestPath = _ref => {
14
+ let {
15
+ path,
16
+ program,
17
+ trackedEntityType
18
+ } = _ref;
19
+ return [path, program, trackedEntityType].filter(Boolean).join('/');
20
+ };
21
+ exports.formatRequestPath = formatRequestPath;
22
+ const formatDimension = _ref2 => {
23
+ let {
24
+ outputType,
25
+ programId,
26
+ programStageId,
27
+ dimension
28
+ } = _ref2;
29
+ return [outputType === 'TRACKED_ENTITY_INSTANCE' ? programId : undefined, programStageId, dimension].filter(Boolean).join('.');
30
+ };
31
+ exports.formatDimension = formatDimension;
@@ -8,48 +8,22 @@ var _react = _interopRequireDefault(require("react"));
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
9
  const DynamicDimensionIcon = () => {
10
10
  return /*#__PURE__*/_react.default.createElement("svg", {
11
- width: "16px",
12
- height: "16px",
13
- viewBox: "0 0 16 16",
14
- version: "1.1",
15
- xmlns: "http://www.w3.org/2000/svg"
16
- }, /*#__PURE__*/_react.default.createElement("g", {
17
- id: "Exp",
18
- stroke: "none",
19
- strokeWidth: "1",
20
- fill: "none",
21
- fillRule: "evenodd"
22
- }, /*#__PURE__*/_react.default.createElement("g", {
23
- id: "Artboard",
24
- transform: "translate(-80.000000, -9.000000)"
25
- }, /*#__PURE__*/_react.default.createElement("g", {
26
- id: "icon_dimension_new",
27
- transform: "translate(80.000000, 9.000000)"
28
- }, /*#__PURE__*/_react.default.createElement("rect", {
29
- id: "frame",
30
- x: "0",
31
- y: "0",
32
11
  width: "16",
33
- height: "16"
34
- }), /*#__PURE__*/_react.default.createElement("g", {
35
- id: "module",
36
- transform: "translate(4.000000, 4.000000)",
37
- stroke: "#000000",
12
+ height: "16",
13
+ fill: "none",
14
+ xmlns: "http://www.w3.org/2000/svg"
15
+ }, /*#__PURE__*/_react.default.createElement("path", {
16
+ clipRule: "evenodd",
17
+ d: "m4.832 5.674 2.831-1.11a.913.913 0 0 1 .673 0l2.83 1.11a.548.548 0 0 1 .334.517V9.81a.548.548 0 0 1-.332.517l-2.831 1.11a.92.92 0 0 1-.673 0l-2.83-1.11a.548.548 0 0 1-.334-.517V6.19a.548.548 0 0 1 .332-.517Z",
18
+ stroke: "#212934",
38
19
  strokeLinecap: "round",
39
20
  strokeLinejoin: "round"
40
- }, /*#__PURE__*/_react.default.createElement("path", {
41
- d: "M0.33209728,1.1742111 L3.16308174,0.0641666694 C3.37911767,-0.0213888898 3.61963794,-0.0213888898 3.83567387,0.0641666694 L6.66665833,1.1742111 C6.87300668,1.26220739 7.00497003,1.467 6.99984343,1.69127776 L6.99984343,5.30887771 C7.00517859,5.53285411 6.87376309,5.73756106 6.66790272,5.82594437 L3.83691826,6.93629991 C3.62076407,7.02123336 3.38048032,7.02123336 3.16432613,6.93629991 L0.333341668,5.82594437 C0.126993317,5.73794808 -0.00497002591,5.53315547 0.000156574133,5.30887771 L0.000156574133,1.69127776 C-0.00517858533,1.46730136 0.126236906,1.26259441 0.33209728,1.1742111 Z",
42
- id: "Shape"
43
- }), /*#__PURE__*/_react.default.createElement("path", {
44
- d: "M3.5,2.72795833 L0.322,1.48195833",
45
- id: "Shape"
46
- }), /*#__PURE__*/_react.default.createElement("path", {
47
- d: "M3.5,2.72795833 L6.678,1.48195833",
48
- id: "Shape"
49
21
  }), /*#__PURE__*/_react.default.createElement("path", {
50
- d: "M3.5,6.78125 L3.5,2.72795833",
51
- id: "Shape"
52
- }))))));
22
+ d: "M8 7.228 4.822 5.982M8 7.228l3.178-1.246M8 11.281V7.228",
23
+ stroke: "#212934",
24
+ strokeLinecap: "round",
25
+ strokeLinejoin: "round"
26
+ }));
53
27
  };
54
28
  var _default = DynamicDimensionIcon;
55
29
  exports.default = _default;
@@ -156,6 +156,7 @@ const AboutAOUnit = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
156
156
  className: `jsx-${_AboutAOUnitStyle.default.__hash}` + " " + "content"
157
157
  }, /*#__PURE__*/_react.default.createElement("p", {
158
158
  className: `jsx-${_AboutAOUnitStyle.default.__hash}` + " " + ((0, _classnames.default)('detailLine', {
159
+ description: true,
159
160
  noDescription: !data.ao.displayDescription
160
161
  }) || "")
161
162
  }, data.ao.displayDescription ? /*#__PURE__*/_react.default.createElement(_d2UiRichText.Parser, null, data.ao.displayDescription) : _d2I18n.default.t('No description')), /*#__PURE__*/_react.default.createElement("div", {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _ui = require("@dhis2/ui");
8
- const _defaultExport = [`.container.jsx-1596217846{position:relative;padding:${_ui.spacers.dp16};border-bottom:1px solid ${_ui.colors.grey400};background-color:${_ui.colors.white};}`, `.expanded.jsx-1596217846{padding-bottom:${_ui.spacers.dp32};}`, ".loader.jsx-1596217846{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}", ".header.jsx-1596217846{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;}", `.title.jsx-1596217846{font-size:16px;font-weight:500;line-height:21px;color:${_ui.colors.grey900};}`, `.content.jsx-1596217846{font-size:14px;line-height:18px;color:${_ui.colors.grey900};}`, `.detailLine.jsx-1596217846{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0;padding:${_ui.spacers.dp12} 0 0 0;gap:${_ui.spacers.dp8};}`, ".detailLine.jsx-1596217846 svg.jsx-1596217846{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}", `.noDescription.jsx-1596217846{color:${_ui.colors.grey600};}`, `.subsection.jsx-1596217846{margin-top:${_ui.spacers.dp24};}`, `.subsectionTitle.jsx-1596217846{color:${_ui.colors.grey700};font-weight:500;}`, `.subscriptionLabel.jsx-1596217846{margin:${_ui.spacers.dp12} 0 ${_ui.spacers.dp8} 0;}`, `.subsection.jsx-1596217846 button.jsx-1596217846{margin-top:${_ui.spacers.dp8};}`];
9
- _defaultExport.__hash = "1596217846";
8
+ const _defaultExport = [`.container.jsx-3095370592{position:relative;padding:${_ui.spacers.dp16};border-bottom:1px solid ${_ui.colors.grey400};background-color:${_ui.colors.white};}`, `.expanded.jsx-3095370592{padding-bottom:${_ui.spacers.dp32};}`, ".loader.jsx-3095370592{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}", ".header.jsx-3095370592{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;}", `.title.jsx-3095370592{font-size:16px;font-weight:500;line-height:21px;color:${_ui.colors.grey900};}`, `.content.jsx-3095370592{font-size:14px;line-height:18px;color:${_ui.colors.grey900};}`, `.detailLine.jsx-3095370592{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0;padding:${_ui.spacers.dp12} 0 0 0;gap:${_ui.spacers.dp8};}`, ".detailLine.jsx-3095370592 svg.jsx-3095370592{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}", ".description.jsx-3095370592{white-space:pre-line;}", `.noDescription.jsx-3095370592{color:${_ui.colors.grey600};}`, `.subsection.jsx-3095370592{margin-top:${_ui.spacers.dp24};}`, `.subsectionTitle.jsx-3095370592{color:${_ui.colors.grey700};font-weight:500;}`, `.subscriptionLabel.jsx-3095370592{margin:${_ui.spacers.dp12} 0 ${_ui.spacers.dp8} 0;}`, `.subsection.jsx-3095370592 button.jsx-3095370592{margin-top:${_ui.spacers.dp8};}`];
9
+ _defaultExport.__hash = "3095370592";
10
10
  var _default = _defaultExport;
11
11
  exports.default = _default;
@@ -33,7 +33,7 @@ const DataDimension = _ref => {
33
33
  } = _ref2;
34
34
  return (
35
35
  // Calculations only available from 2.40
36
- id === _dataTypes.DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM ? serverVersion.minor >= 40 : true
36
+ id !== _dataTypes.DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM || serverVersion.minor >= 40
37
37
  );
38
38
  }), [serverVersion.minor]);
39
39
  const [dataTypes, setDataTypes] = (0, _react.useState)(filterDataTypesByVersion(enabledDataTypes || Object.values(_dataTypes.dataTypeMap)));
@@ -24,20 +24,32 @@ const DataTypeSelector = _ref => {
24
24
  const {
25
25
  visType
26
26
  } = (0, _DataDimension.useDataDimensionContext)();
27
+ const label = _index.default.t('Data Type');
27
28
  return /*#__PURE__*/_react.default.createElement("div", {
28
29
  className: `jsx-${_DataTypeSelectorStyle.default.__hash}` + " " + "container"
29
- }, /*#__PURE__*/_react.default.createElement(_ui.SingleSelectField, {
30
- label: _index.default.t('Data Type'),
30
+ }, dataTypes.length === 1 ? /*#__PURE__*/_react.default.createElement(_ui.SingleSelectField, {
31
+ label: label,
31
32
  dataTest: dataTest,
32
- selected: currentDataType || (dataTypes.length === 1 ? dataTypes[0].id : _dataTypes.DIMENSION_TYPE_ALL),
33
+ selected: dataTypes[0].id,
33
34
  onChange: ref => onChange(ref.selected),
34
35
  dense: true,
35
- disabled: dataTypes.length === 1,
36
- helpText: dataTypes.length === 1 && visType ? _index.default.t('Only {{dataType}} can be used in {{visType}}', {
36
+ disabled: true,
37
+ helpText: visType ? _index.default.t('Only {{dataType}} can be used in {{visType}}', {
37
38
  dataType: _dataTypes.dataTypeMap[dataTypes[0].id].getName(),
38
39
  visType: (0, _visTypes.getDisplayNameByVisType)(visType)
39
40
  }) : ''
40
- }, dataTypes.length > 1 && /*#__PURE__*/_react.default.createElement(_ui.SingleSelectOption, {
41
+ }, dataTypes.map(type => /*#__PURE__*/_react.default.createElement(_ui.SingleSelectOption, {
42
+ value: type.id,
43
+ key: type.id,
44
+ label: type.getName(),
45
+ dataTest: `${dataTest}-option-${type.id}`
46
+ }))) : /*#__PURE__*/_react.default.createElement(_ui.SingleSelectField, {
47
+ label: label,
48
+ dataTest: dataTest,
49
+ selected: currentDataType || _dataTypes.DIMENSION_TYPE_ALL,
50
+ onChange: ref => onChange(ref.selected),
51
+ dense: true
52
+ }, /*#__PURE__*/_react.default.createElement(_ui.SingleSelectOption, {
41
53
  value: _dataTypes.DIMENSION_TYPE_ALL,
42
54
  key: _dataTypes.DIMENSION_TYPE_ALL,
43
55
  label: _index.default.t('All types'),
@@ -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
- infoText
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')), infoText && /*#__PURE__*/_react.default.createElement("div", {
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
- }, infoText)), /*#__PURE__*/_react.default.createElement(_style.default, {
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
- infoText: _propTypes.default.string
109
+ infoBoxMessage: _propTypes.default.string
110
110
  };
111
111
  const SourceEmptyPlaceholder = _ref4 => {
112
112
  let {
@@ -446,7 +446,7 @@ const ItemSelector = _ref5 => {
446
446
  selectedWidth: _dimensionSelectorHelper.TRANSFER_SELECTED_WIDTH,
447
447
  selectedEmptyComponent: /*#__PURE__*/_react.default.createElement(EmptySelection, null),
448
448
  rightHeader: /*#__PURE__*/_react.default.createElement(RightHeader, {
449
- infoText: infoBoxMessage
449
+ infoBoxMessage: infoBoxMessage
450
450
  }),
451
451
  rightFooter: rightFooter,
452
452
  renderOption: props => {