@dhis2/analytics 22.0.0-alpha.3 → 22.0.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.
Files changed (84) hide show
  1. package/CHANGELOG.md +2990 -0
  2. package/build/cjs/__fixtures__/fixtures.js +1 -0
  3. package/build/cjs/__fixtures__/json/api/analytics/enrollments.json +206 -0
  4. package/build/cjs/api/analytics/Analytics.js +6 -0
  5. package/build/cjs/api/analytics/AnalyticsEnrollments.js +48 -0
  6. package/build/cjs/api/analytics/__tests__/AnalyticsEnrollments.spec.js +50 -0
  7. package/build/cjs/api/analytics/__tests__/__snapshots__/AnalyticsEnrollments.spec.js.snap +3 -0
  8. package/build/cjs/components/CachedDataQueryProvider.js +4 -10
  9. package/build/cjs/components/OpenFileDialog/OpenFileDialog.styles.js +2 -2
  10. package/build/cjs/locales/ar/translations.json +7 -0
  11. package/build/cjs/locales/ar_EG/translations.json +7 -0
  12. package/build/cjs/locales/ar_IQ/translations.json +7 -0
  13. package/build/cjs/locales/ckb/translations.json +7 -0
  14. package/build/cjs/locales/cs/translations.json +7 -0
  15. package/build/cjs/locales/da/translations.json +7 -0
  16. package/build/cjs/locales/es/translations.json +7 -0
  17. package/build/cjs/locales/fr/translations.json +7 -0
  18. package/build/cjs/locales/id/translations.json +7 -0
  19. package/build/cjs/locales/km/translations.json +7 -0
  20. package/build/cjs/locales/lo/translations.json +7 -0
  21. package/build/cjs/locales/my/translations.json +7 -0
  22. package/build/cjs/locales/nb/translations.json +7 -0
  23. package/build/cjs/locales/nl/translations.json +7 -0
  24. package/build/cjs/locales/prs/translations.json +7 -0
  25. package/build/cjs/locales/ps/translations.json +7 -0
  26. package/build/cjs/locales/pt/translations.json +7 -0
  27. package/build/cjs/locales/pt_BR/translations.json +7 -0
  28. package/build/cjs/locales/ru/translations.json +7 -0
  29. package/build/cjs/locales/sv/translations.json +7 -0
  30. package/build/cjs/locales/tet/translations.json +7 -0
  31. package/build/cjs/locales/tg/translations.json +7 -0
  32. package/build/cjs/locales/uk/translations.json +7 -0
  33. package/build/cjs/locales/ur/translations.json +7 -0
  34. package/build/cjs/locales/uz/translations.json +7 -0
  35. package/build/cjs/locales/uz_Latn/translations.json +7 -0
  36. package/build/cjs/locales/vi/translations.json +7 -0
  37. package/build/cjs/locales/zh/translations.json +8 -1
  38. package/build/cjs/locales/zh_CN/translations.json +7 -0
  39. package/build/cjs/modules/layoutUiRules/rules.js +5 -1
  40. package/build/cjs/modules/visTypes.js +3 -1
  41. package/build/es/__fixtures__/fixtures.js +1 -0
  42. package/build/es/__fixtures__/json/api/analytics/enrollments.json +206 -0
  43. package/build/es/api/analytics/Analytics.js +5 -0
  44. package/build/es/api/analytics/AnalyticsEnrollments.js +38 -0
  45. package/build/es/api/analytics/__tests__/AnalyticsEnrollments.spec.js +40 -0
  46. package/build/es/api/analytics/__tests__/__snapshots__/AnalyticsEnrollments.spec.js.snap +3 -0
  47. package/build/es/components/CachedDataQueryProvider.js +4 -10
  48. package/build/es/components/OpenFileDialog/OpenFileDialog.styles.js +2 -2
  49. package/build/es/locales/ar/translations.json +7 -0
  50. package/build/es/locales/ar_EG/translations.json +7 -0
  51. package/build/es/locales/ar_IQ/translations.json +7 -0
  52. package/build/es/locales/ckb/translations.json +7 -0
  53. package/build/es/locales/cs/translations.json +7 -0
  54. package/build/es/locales/da/translations.json +7 -0
  55. package/build/es/locales/es/translations.json +7 -0
  56. package/build/es/locales/fr/translations.json +7 -0
  57. package/build/es/locales/id/translations.json +7 -0
  58. package/build/es/locales/km/translations.json +7 -0
  59. package/build/es/locales/lo/translations.json +7 -0
  60. package/build/es/locales/my/translations.json +7 -0
  61. package/build/es/locales/nb/translations.json +7 -0
  62. package/build/es/locales/nl/translations.json +7 -0
  63. package/build/es/locales/prs/translations.json +7 -0
  64. package/build/es/locales/ps/translations.json +7 -0
  65. package/build/es/locales/pt/translations.json +7 -0
  66. package/build/es/locales/pt_BR/translations.json +7 -0
  67. package/build/es/locales/ru/translations.json +7 -0
  68. package/build/es/locales/sv/translations.json +7 -0
  69. package/build/es/locales/tet/translations.json +7 -0
  70. package/build/es/locales/tg/translations.json +7 -0
  71. package/build/es/locales/uk/translations.json +7 -0
  72. package/build/es/locales/ur/translations.json +7 -0
  73. package/build/es/locales/uz/translations.json +7 -0
  74. package/build/es/locales/uz_Latn/translations.json +7 -0
  75. package/build/es/locales/vi/translations.json +7 -0
  76. package/build/es/locales/zh/translations.json +8 -1
  77. package/build/es/locales/zh_CN/translations.json +7 -0
  78. package/build/es/modules/layoutUiRules/rules.js +6 -2
  79. package/build/es/modules/visTypes.js +1 -0
  80. package/package.json +2 -2
  81. package/build/cjs/components/OpenFileDialog/styles/FileList.style.js +0 -10
  82. package/build/cjs/visualizations/package-lock.json +0 -1788
  83. package/build/es/components/OpenFileDialog/styles/FileList.style.js +0 -3
  84. package/build/es/visualizations/package-lock.json +0 -1788
@@ -115,6 +115,13 @@
115
115
  "No event reports found. Click New event report to get started.": "",
116
116
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
117
117
  "New event report": "",
118
+ "Open an event visualization": "",
119
+ "Loading event visualizations": "",
120
+ "Couldn't load event visualizations": "",
121
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
122
+ "No event visualizations found. Click New event visualization to get started.": "",
123
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
124
+ "New event visualization": "",
118
125
  "Options": "Opções",
119
126
  "Hide": "Esconder",
120
127
  "Update": "Actualizar",
@@ -115,6 +115,13 @@
115
115
  "No event reports found. Click New event report to get started.": "",
116
116
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
117
117
  "New event report": "",
118
+ "Open an event visualization": "",
119
+ "Loading event visualizations": "",
120
+ "Couldn't load event visualizations": "",
121
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
122
+ "No event visualizations found. Click New event visualization to get started.": "",
123
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
124
+ "New event visualization": "",
118
125
  "Options": "Opções",
119
126
  "Hide": "",
120
127
  "Update": "Actualizar",
@@ -117,6 +117,13 @@
117
117
  "No event reports found. Click New event report to get started.": "",
118
118
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
119
119
  "New event report": "",
120
+ "Open an event visualization": "",
121
+ "Loading event visualizations": "",
122
+ "Couldn't load event visualizations": "",
123
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
124
+ "No event visualizations found. Click New event visualization to get started.": "",
125
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
126
+ "New event visualization": "",
120
127
  "Options": "Параметры",
121
128
  "Hide": "Скрыть",
122
129
  "Update": "Обновить",
@@ -115,6 +115,13 @@
115
115
  "No event reports found. Click New event report to get started.": "",
116
116
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
117
117
  "New event report": "",
118
+ "Open an event visualization": "",
119
+ "Loading event visualizations": "",
120
+ "Couldn't load event visualizations": "",
121
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
122
+ "No event visualizations found. Click New event visualization to get started.": "",
123
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
124
+ "New event visualization": "",
118
125
  "Options": "Alternativ",
119
126
  "Hide": "",
120
127
  "Update": "Uppdatera",
@@ -114,6 +114,13 @@
114
114
  "No event reports found. Click New event report to get started.": "",
115
115
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
116
116
  "New event report": "",
117
+ "Open an event visualization": "",
118
+ "Loading event visualizations": "",
119
+ "Couldn't load event visualizations": "",
120
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
121
+ "No event visualizations found. Click New event visualization to get started.": "",
122
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
123
+ "New event visualization": "",
117
124
  "Options": "Opsoens",
118
125
  "Hide": "Subar",
119
126
  "Update": "Atualiza",
@@ -115,6 +115,13 @@
115
115
  "No event reports found. Click New event report to get started.": "",
116
116
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
117
117
  "New event report": "",
118
+ "Open an event visualization": "",
119
+ "Loading event visualizations": "",
120
+ "Couldn't load event visualizations": "",
121
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
122
+ "No event visualizations found. Click New event visualization to get started.": "",
123
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
124
+ "New event visualization": "",
118
125
  "Options": "Имконот",
119
126
  "Hide": "Пинҳон кардан",
120
127
  "Update": "Навсозӣ",
@@ -117,6 +117,13 @@
117
117
  "No event reports found. Click New event report to get started.": "",
118
118
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
119
119
  "New event report": "",
120
+ "Open an event visualization": "",
121
+ "Loading event visualizations": "",
122
+ "Couldn't load event visualizations": "",
123
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
124
+ "No event visualizations found. Click New event visualization to get started.": "",
125
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
126
+ "New event visualization": "",
120
127
  "Options": "Опції",
121
128
  "Hide": "Сховати",
122
129
  "Update": "Оновити",
@@ -115,6 +115,13 @@
115
115
  "No event reports found. Click New event report to get started.": "",
116
116
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
117
117
  "New event report": "",
118
+ "Open an event visualization": "",
119
+ "Loading event visualizations": "",
120
+ "Couldn't load event visualizations": "",
121
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
122
+ "No event visualizations found. Click New event visualization to get started.": "",
123
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
124
+ "New event visualization": "",
118
125
  "Options": "اختیارات",
119
126
  "Hide": "چھپائیں",
120
127
  "Update": "اپڈیٹ",
@@ -114,6 +114,13 @@
114
114
  "No event reports found. Click New event report to get started.": "",
115
115
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
116
116
  "New event report": "",
117
+ "Open an event visualization": "",
118
+ "Loading event visualizations": "",
119
+ "Couldn't load event visualizations": "",
120
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
121
+ "No event visualizations found. Click New event visualization to get started.": "",
122
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
123
+ "New event visualization": "",
117
124
  "Options": "Вариант",
118
125
  "Hide": "Беркитиш",
119
126
  "Update": "Янгилаш",
@@ -114,6 +114,13 @@
114
114
  "No event reports found. Click New event report to get started.": "",
115
115
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
116
116
  "New event report": "",
117
+ "Open an event visualization": "",
118
+ "Loading event visualizations": "",
119
+ "Couldn't load event visualizations": "",
120
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
121
+ "No event visualizations found. Click New event visualization to get started.": "",
122
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
123
+ "New event visualization": "",
117
124
  "Options": "Вариант",
118
125
  "Hide": "Berkitish",
119
126
  "Update": "Янгилаш",
@@ -114,6 +114,13 @@
114
114
  "No event reports found. Click New event report to get started.": "",
115
115
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
116
116
  "New event report": "",
117
+ "Open an event visualization": "",
118
+ "Loading event visualizations": "",
119
+ "Couldn't load event visualizations": "",
120
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
121
+ "No event visualizations found. Click New event visualization to get started.": "",
122
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
123
+ "New event visualization": "",
117
124
  "Options": "Tùy chọn",
118
125
  "Hide": "Ẩn",
119
126
  "Update": "Cập nhật",
@@ -114,6 +114,13 @@
114
114
  "No event reports found. Click New event report to get started.": "未找到事件报告。单击新建事件报告开始。",
115
115
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "未找到事件报告。尝试调整您的搜索或过滤选项以找到您要查找的内容。",
116
116
  "New event report": "新建事件报告",
117
+ "Open an event visualization": "打开事件可视化",
118
+ "Loading event visualizations": "加载事件可视化",
119
+ "Couldn't load event visualizations": "无法加载事件可视化应用",
120
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "加载事件可视化时出现问题。重试或联系您的系统管理员。",
121
+ "No event visualizations found. Click New event visualization to get started.": "未找到事件可视化。单击新建事件可视化开始。",
122
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "未找到事件可视化。尝试调整您的搜索或过滤选项以找到您要查找的内容。",
123
+ "New event visualization": "新的事件可视化",
117
124
  "Options": "选项",
118
125
  "Hide": "隐藏",
119
126
  "Update": "更新",
@@ -224,7 +231,7 @@
224
231
  "Choose a locale to translate from the menu above": "从上面的菜单中选择要翻译的语言环境",
225
232
  "Translate: {{objectName}}": "翻译:{{objectName}}",
226
233
  "Save translations": "保存翻译",
227
- "Could not load translations": "",
234
+ "Could not load translations": "无法加载翻译",
228
235
  "Retry": "重试",
229
236
  "Series": "系列",
230
237
  "Category": "分类",
@@ -114,6 +114,13 @@
114
114
  "No event reports found. Click New event report to get started.": "",
115
115
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
116
116
  "New event report": "",
117
+ "Open an event visualization": "",
118
+ "Loading event visualizations": "",
119
+ "Couldn't load event visualizations": "",
120
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
121
+ "No event visualizations found. Click New event visualization to get started.": "",
122
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
123
+ "New event visualization": "",
117
124
  "Options": "选项",
118
125
  "Hide": "隐藏",
119
126
  "Update": "更新",
@@ -89,6 +89,9 @@ const scatterRules = {
89
89
  [_predefinedDimensions.DIMENSION_ID_ORGUNIT]: _axis.AXIS_ID_ROWS
90
90
  }
91
91
  };
92
+ const lineListRules = {
93
+ [RULE_PROP_AVAILABLE_AXES]: [_axis.AXIS_ID_COLUMNS, _axis.AXIS_ID_FILTERS]
94
+ };
92
95
  const visTypeToRules = {
93
96
  [_visTypes.VIS_TYPE_COLUMN]: defaultRules,
94
97
  [_visTypes.VIS_TYPE_STACKED_COLUMN]: defaultRules,
@@ -104,7 +107,8 @@ const visTypeToRules = {
104
107
  [_visTypes.VIS_TYPE_YEAR_OVER_YEAR_LINE]: yearOverYearRules,
105
108
  [_visTypes.VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: yearOverYearRules,
106
109
  [_visTypes.VIS_TYPE_PIVOT_TABLE]: pivotTableRules,
107
- [_visTypes.VIS_TYPE_SCATTER]: scatterRules
110
+ [_visTypes.VIS_TYPE_SCATTER]: scatterRules,
111
+ [_visTypes.VIS_TYPE_LINE_LIST]: lineListRules
108
112
  };
109
113
 
110
114
  const getRulesByVisType = visType => {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isColumnBasedType = exports.isLegendSetType = exports.isVerticalType = exports.isTwoCategoryChartType = exports.isSingleValue = exports.isMultiType = exports.isDualAxisType = exports.isYearOverYear = exports.isStacked = exports.defaultVisType = exports.getDisplayNameByVisType = exports.visTypeIcons = exports.visTypeDescriptions = exports.visTypeDisplayNames = exports.VIS_TYPE_SCATTER = exports.VIS_TYPE_PIVOT_TABLE = exports.VIS_TYPE_SINGLE_VALUE = exports.VIS_TYPE_YEAR_OVER_YEAR_COLUMN = exports.VIS_TYPE_YEAR_OVER_YEAR_LINE = exports.VIS_TYPE_BUBBLE = exports.VIS_TYPE_GAUGE = exports.VIS_TYPE_RADAR = exports.VIS_TYPE_PIE = exports.VIS_TYPE_STACKED_AREA = exports.VIS_TYPE_AREA = exports.VIS_TYPE_LINE = exports.VIS_TYPE_STACKED_BAR = exports.VIS_TYPE_BAR = exports.VIS_TYPE_STACKED_COLUMN = exports.VIS_TYPE_COLUMN = void 0;
6
+ exports.isColumnBasedType = exports.isLegendSetType = exports.isVerticalType = exports.isTwoCategoryChartType = exports.isSingleValue = exports.isMultiType = exports.isDualAxisType = exports.isYearOverYear = exports.isStacked = exports.defaultVisType = exports.getDisplayNameByVisType = exports.visTypeIcons = exports.visTypeDescriptions = exports.visTypeDisplayNames = exports.VIS_TYPE_LINE_LIST = exports.VIS_TYPE_SCATTER = exports.VIS_TYPE_PIVOT_TABLE = exports.VIS_TYPE_SINGLE_VALUE = exports.VIS_TYPE_YEAR_OVER_YEAR_COLUMN = exports.VIS_TYPE_YEAR_OVER_YEAR_LINE = exports.VIS_TYPE_BUBBLE = exports.VIS_TYPE_GAUGE = exports.VIS_TYPE_RADAR = exports.VIS_TYPE_PIE = exports.VIS_TYPE_STACKED_AREA = exports.VIS_TYPE_AREA = exports.VIS_TYPE_LINE = exports.VIS_TYPE_STACKED_BAR = exports.VIS_TYPE_BAR = exports.VIS_TYPE_STACKED_COLUMN = exports.VIS_TYPE_COLUMN = void 0;
7
7
 
8
8
  var _ui = require("@dhis2/ui");
9
9
 
@@ -43,6 +43,8 @@ const VIS_TYPE_PIVOT_TABLE = 'PIVOT_TABLE';
43
43
  exports.VIS_TYPE_PIVOT_TABLE = VIS_TYPE_PIVOT_TABLE;
44
44
  const VIS_TYPE_SCATTER = 'SCATTER';
45
45
  exports.VIS_TYPE_SCATTER = VIS_TYPE_SCATTER;
46
+ const VIS_TYPE_LINE_LIST = 'LINE_LIST';
47
+ exports.VIS_TYPE_LINE_LIST = VIS_TYPE_LINE_LIST;
46
48
  const visTypeDisplayNames = {
47
49
  [VIS_TYPE_PIVOT_TABLE]: _index.default.t('Pivot table'),
48
50
  [VIS_TYPE_COLUMN]: _index.default.t('Column'),
@@ -91,6 +91,7 @@ export default (function x() {
91
91
  addFixture('/api/analytics/query', require('./json/api/analytics/query.json'));
92
92
  addFixture('/api/analytics/cluster', require('./json/api/analytics/cluster.json'));
93
93
  addFixture('/api/analytics/response', require('./json/api/analytics/response.json'));
94
+ addFixture('/api/analytics/enrollments', require('./json/api/analytics/enrollments.json'));
94
95
  return {
95
96
  get: getFixture,
96
97
  add: addFixture
@@ -0,0 +1,206 @@
1
+ {
2
+ "headers": [
3
+ {
4
+ "name": "pi",
5
+ "column": "Enrollment",
6
+ "valueType": "TEXT",
7
+ "type": "java.lang.String",
8
+ "hidden": false,
9
+ "meta": true
10
+ },
11
+ {
12
+ "name": "tei",
13
+ "column": "Tracked entity instance",
14
+ "valueType": "TEXT",
15
+ "type": "java.lang.String",
16
+ "hidden": false,
17
+ "meta": true
18
+ },
19
+ {
20
+ "name": "enrollmentdate",
21
+ "column": "Enrollment date",
22
+ "valueType": "DATE",
23
+ "type": "java.util.Date",
24
+ "hidden": false,
25
+ "meta": true
26
+ },
27
+ {
28
+ "name": "incidentdate",
29
+ "column": "Incident date",
30
+ "valueType": "DATE",
31
+ "type": "java.util.Date",
32
+ "hidden": false,
33
+ "meta": true
34
+ },
35
+ {
36
+ "name": "geometry",
37
+ "column": "Geometry",
38
+ "valueType": "TEXT",
39
+ "type": "java.lang.String",
40
+ "hidden": false,
41
+ "meta": true
42
+ },
43
+ {
44
+ "name": "longitude",
45
+ "column": "Longitude",
46
+ "valueType": "NUMBER",
47
+ "type": "java.lang.Double",
48
+ "hidden": false,
49
+ "meta": true
50
+ },
51
+ {
52
+ "name": "latitude",
53
+ "column": "Latitude",
54
+ "valueType": "NUMBER",
55
+ "type": "java.lang.Double",
56
+ "hidden": false,
57
+ "meta": true
58
+ },
59
+ {
60
+ "name": "ouname",
61
+ "column": "Organisation unit name",
62
+ "valueType": "TEXT",
63
+ "type": "java.lang.String",
64
+ "hidden": false,
65
+ "meta": true
66
+ },
67
+ {
68
+ "name": "oucode",
69
+ "column": "Organisation unit code",
70
+ "valueType": "TEXT",
71
+ "type": "java.lang.String",
72
+ "hidden": false,
73
+ "meta": true
74
+ },
75
+ {
76
+ "name": "ou",
77
+ "column": "Organisation unit",
78
+ "valueType": "TEXT",
79
+ "type": "java.lang.String",
80
+ "hidden": false,
81
+ "meta": true
82
+ },
83
+ {
84
+ "name": "de0FEHSIoxh",
85
+ "column": "WHOMCH Chronic conditions",
86
+ "valueType": "BOOLEAN",
87
+ "type": "java.lang.Boolean",
88
+ "hidden": false,
89
+ "meta": true
90
+ },
91
+ {
92
+ "name": "sWoqcoByYmD",
93
+ "column": "WHOMCH Smoking",
94
+ "valueType": "BOOLEAN",
95
+ "type": "java.lang.Boolean",
96
+ "hidden": false,
97
+ "meta": true
98
+ }
99
+ ],
100
+ "metaData": {
101
+ "pager": {
102
+ "page": 2,
103
+ "total": 163,
104
+ "pageSize": 4,
105
+ "pageCount": 41
106
+ },
107
+ "items": {
108
+ "ImspTQPwCqd": {
109
+ "name": "Sierra Leone"
110
+ },
111
+ "PFDfvmGpsR3": {
112
+ "name": "Care at birth"
113
+ },
114
+ "bbKtnxRZKEP": {
115
+ "name": "Postpartum care visit"
116
+ },
117
+ "ou": {
118
+ "name": "Organisation unit"
119
+ },
120
+ "PUZaKR0Jh2k": {
121
+ "name": "Previous deliveries"
122
+ },
123
+ "edqlbukwRfQ": {
124
+ "name": "Antenatal care visit"
125
+ },
126
+ "WZbXY0S00lP": {
127
+ "name": "First antenatal care visit"
128
+ },
129
+ "sWoqcoByYmD": {
130
+ "name": "WHOMCH Smoking"
131
+ },
132
+ "WSGAb5XwJ3Y": {
133
+ "name": "WHO RMNCH Tracker"
134
+ },
135
+ "de0FEHSIoxh": {
136
+ "name": "WHOMCH Chronic conditions"
137
+ }
138
+ },
139
+ "dimensions": {
140
+ "pe": [],
141
+ "ou": ["ImspTQPwCqd"],
142
+ "sWoqcoByYmD": [],
143
+ "de0FEHSIoxh": []
144
+ }
145
+ },
146
+ "width": 12,
147
+ "rows": [
148
+ [
149
+ "A0cP533hIQv",
150
+ "to8G9jAprnx",
151
+ "2019-02-02 12:05:00.0",
152
+ "2019-02-02 12:05:00.0",
153
+ "",
154
+ "0.0",
155
+ "0.0",
156
+ "Tonkomba MCHP",
157
+ "OU_193264",
158
+ "xIMxph4NMP1",
159
+ "0",
160
+ "1"
161
+ ],
162
+ [
163
+ "ZqiUn2uXmBi",
164
+ "SJtv0WzoYki",
165
+ "2019-02-02 12:05:00.0",
166
+ "2019-02-02 12:05:00.0",
167
+ "",
168
+ "0.0",
169
+ "0.0",
170
+ "Mawoma MCHP",
171
+ "OU_254973",
172
+ "Srnpwq8jKbp",
173
+ "0",
174
+ "0"
175
+ ],
176
+ [
177
+ "lE747mUAtbz",
178
+ "PGzTv2A1xzn",
179
+ "2019-02-02 12:05:00.0",
180
+ "2019-02-02 12:05:00.0",
181
+ "",
182
+ "0.0",
183
+ "0.0",
184
+ "Kunsho CHP",
185
+ "OU_193254",
186
+ "tdhB1JXYBx2",
187
+ "",
188
+ "0"
189
+ ],
190
+ [
191
+ "nmcqu9QF8ow",
192
+ "pav3tGLjYuq",
193
+ "2019-02-03 12:05:00.0",
194
+ "2019-02-03 12:05:00.0",
195
+ "",
196
+ "0.0",
197
+ "0.0",
198
+ "Korbu MCHP",
199
+ "OU_678893",
200
+ "m73lWmo5BDG",
201
+ "",
202
+ "1"
203
+ ]
204
+ ],
205
+ "height": 4
206
+ }
@@ -2,6 +2,7 @@
2
2
  * @module analytics
3
3
  */
4
4
  import AnalyticsAggregate from './AnalyticsAggregate.js';
5
+ import AnalyticsEnrollments from './AnalyticsEnrollments.js';
5
6
  import AnalyticsEvents from './AnalyticsEvents.js';
6
7
  import AnalyticsRequest from './AnalyticsRequest.js';
7
8
  import AnalyticsResponse from './AnalyticsResponse.js';
@@ -30,17 +31,20 @@ import AnalyticsResponse from './AnalyticsResponse.js';
30
31
  class Analytics {
31
32
  /**
32
33
  * @param {!module:analytics.AnalyticsAggregate} analyticsAggregate The AnalyticsAggregate instance
34
+ * @param {!module:analytics.AnalyticsEnrollments} analyticsEnrollments The AnalyticsEnrollments instance
33
35
  * @param {!module:analytics.AnalyticsEvents} analyticsEvents The AnalyticsEvents instance
34
36
  * @param {!module:analytics.AnalyticsRequest} analyticsRequest The AnalyticsRequest class
35
37
  * @param {!module:analytics.AnalyticsResponse} analyticsResponse The AnalyticsResponse class
36
38
  */
37
39
  constructor({
38
40
  aggregate,
41
+ enrollments,
39
42
  events,
40
43
  request,
41
44
  response
42
45
  }) {
43
46
  this.aggregate = aggregate;
47
+ this.enrollments = enrollments;
44
48
  this.events = events;
45
49
  this.request = request;
46
50
  this.response = response;
@@ -63,6 +67,7 @@ class Analytics {
63
67
  if (!Analytics.getAnalytics.analytics) {
64
68
  Analytics.getAnalytics.analytics = new Analytics({
65
69
  aggregate: new AnalyticsAggregate(dataEngine),
70
+ enrollments: new AnalyticsEnrollments(dataEngine),
66
71
  events: new AnalyticsEvents(dataEngine),
67
72
  request: AnalyticsRequest,
68
73
  response: AnalyticsResponse
@@ -0,0 +1,38 @@
1
+ import AnalyticsBase from './AnalyticsBase.js';
2
+ /**
3
+ * @extends module:analytics.AnalyticsBase
4
+ *
5
+ * @description
6
+ * Analytics enrollments class used to request analytics enrollments data from Web API.
7
+ *
8
+ * @memberof module:analytics
9
+ *
10
+ * @see https://docs.dhis2.org/en/develop/using-the-api/dhis-core-version-236/analytics.html#webapi_enrollment_analytics
11
+ */
12
+
13
+ class AnalyticsEnrollments extends AnalyticsBase {
14
+ /**
15
+ * @param {!AnalyticsRequest} req Request object
16
+ *
17
+ * @returns {Promise} Promise that resolves with the analytics query data from the api.
18
+ *
19
+ * @example
20
+ * const req = new analytics.request()
21
+ * .withProgram('eBAyeGv0exc')
22
+ * .addDataDimension(['Uvn6LCg7dVU','OdiHJayrsKo'])
23
+ * .addPeriodDimension('LAST_4_QUARTERS')
24
+ * .addOrgUnitDimension(['lc3eMKXaEfw','PMa2VCrupOd'])
25
+ * .addOrgUnitFilter('O6uvpzGd5pu')
26
+ * .withStartDate('2017-10-01')
27
+ * .withEndDate('2017-10-31');
28
+ *
29
+ * analytics.enrollments.getQuery(req)
30
+ * .then(console.log);
31
+ */
32
+ getQuery(req) {
33
+ return this.fetch(req.withPath('enrollments/query'));
34
+ }
35
+
36
+ }
37
+
38
+ export default AnalyticsEnrollments;
@@ -0,0 +1,40 @@
1
+ import fixtures from '../../../__fixtures__/fixtures.js';
2
+ import DataEngineMock from '../__mocks__/DataEngine.js';
3
+ import AnalyticsEnrollments from '../AnalyticsEnrollments.js';
4
+ import AnalyticsRequest from '../AnalyticsRequest.js';
5
+ describe('analytics.enrollments', () => {
6
+ let enrollments;
7
+ let request;
8
+ let dataEngineMock;
9
+ let fixture;
10
+ beforeEach(() => {
11
+ dataEngineMock = new DataEngineMock();
12
+ DataEngineMock.mockClear();
13
+ enrollments = new AnalyticsEnrollments();
14
+ });
15
+ it('should not be allowed to be called without new', () => {
16
+ expect(() => AnalyticsEnrollments()).toThrowErrorMatchingSnapshot();
17
+ });
18
+ it('should use the dataEngine object when it is passed', () => {
19
+ const dataEngineMockObject = {};
20
+ enrollments = new AnalyticsEnrollments(dataEngineMockObject);
21
+ expect(enrollments.dataEngine).toBe(dataEngineMockObject);
22
+ });
23
+ describe('.getQuery()', () => {
24
+ beforeEach(() => {
25
+ enrollments = new AnalyticsEnrollments(new DataEngineMock());
26
+ request = new AnalyticsRequest().addOrgUnitDimension('ImspTQPwCqd').addDimension('WZbXY0S00lP.de0FEHSIoxh').addDimension('WZbXY0S00lP.sWoqcoByYmD').addPeriodFilter('LAST_MONTH').withProgram('WSGAb5XwJ3Y').withStage('WZbXY0S00lP').withAsc('ENROLLMENTDATE').withOuMode('DESCENDANTS').withColumns('w75KJ2mc4zz').withPage(1).withPageSize(10);
27
+ fixture = fixtures.get('/api/analytics/enrollments');
28
+ dataEngineMock.query.mockReturnValue(Promise.resolve({
29
+ data: fixture
30
+ }));
31
+ });
32
+ it('should be a function', () => {
33
+ expect(enrollments.getQuery).toBeInstanceOf(Function);
34
+ });
35
+ it('should resolve a promise with data', () => enrollments.getQuery(request).then(data => {
36
+ expect(data.width).toEqual(fixture.width);
37
+ expect(data.height).toEqual(fixture.height);
38
+ }));
39
+ });
40
+ });
@@ -0,0 +1,3 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`analytics.enrollments should not be allowed to be called without new 1`] = `"Class constructor AnalyticsEnrollments cannot be invoked without 'new'"`;
@@ -16,20 +16,14 @@ const CachedDataQueryProvider = ({
16
16
  } = useDataQuery(query);
17
17
  const {
18
18
  error,
19
- loading,
20
- fetching
19
+ loading
21
20
  } = rest;
22
21
  const data = rawData && dataTransformation ? dataTransformation(rawData) : rawData;
23
- /*
24
- * Render loader only when data is unavailable
25
- */
26
22
 
27
- if (loading || fetching) {
28
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Layer, {
23
+ if (loading) {
24
+ return /*#__PURE__*/React.createElement(Layer, {
29
25
  translucent: true
30
- }, /*#__PURE__*/React.createElement(CenteredContent, null, /*#__PURE__*/React.createElement(CircularLoader, null))), !loading && /*#__PURE__*/React.createElement(CachedDataQueryCtx.Provider, {
31
- value: data
32
- }, children));
26
+ }, /*#__PURE__*/React.createElement(CenteredContent, null, /*#__PURE__*/React.createElement(CircularLoader, null)));
33
27
  }
34
28
 
35
29
  if (error) {
@@ -1,3 +1,3 @@
1
1
  import { colors, spacers } from '@dhis2/ui';
2
- export const styles = [".data-table-body.jsx-2890213967{min-height:465px;}", ".pagination-controls.jsx-2890213967{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}", ".search-and-filter-bar.jsx-2890213967{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:".concat(spacers.dp8, ";}"), ".search-field-container.jsx-2890213967{min-width:220px;}", ".type-field-container.jsx-2890213967,.created-by-field-container.jsx-2890213967{min-width:180px;}", ".info-cell.jsx-2890213967{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-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;margin:".concat(spacers.dp32, " 0;}"), ".info-container.jsx-2890213967{max-width:400px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-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;}", ".info-text.jsx-2890213967{text-align:center;font-size:14px;line-height:19px;color:".concat(colors.grey700, ";}"), ".info-button.jsx-2890213967{margin-top:".concat(spacers.dp12, ";}")];
3
- styles.__hash = "2890213967";
2
+ export const styles = [".data-table-body.jsx-1047699013{min-height:465px;}", ".pagination-controls.jsx-1047699013{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}", ".search-and-filter-bar.jsx-1047699013{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:".concat(spacers.dp4, ";-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:").concat(spacers.dp8, ";}"), ".search-field-container.jsx-1047699013{min-width:220px;}", ".type-field-container.jsx-1047699013,.created-by-field-container.jsx-1047699013{min-width:180px;}", ".info-cell.jsx-1047699013{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-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;margin:".concat(spacers.dp32, " 0;}"), ".info-container.jsx-1047699013{max-width:400px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-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;}", ".info-text.jsx-1047699013{text-align:center;font-size:14px;line-height:19px;color:".concat(colors.grey700, ";}"), ".info-button.jsx-1047699013{margin-top:".concat(spacers.dp12, ";}")];
3
+ styles.__hash = "1047699013";
@@ -119,6 +119,13 @@
119
119
  "No event reports found. Click New event report to get started.": "",
120
120
  "No event reports found. Try adjusting your search or filter options to find what you're looking for.": "",
121
121
  "New event report": "",
122
+ "Open an event visualization": "",
123
+ "Loading event visualizations": "",
124
+ "Couldn't load event visualizations": "",
125
+ "There was a problem loading event visualizations. Try again or contact your system administrator.": "",
126
+ "No event visualizations found. Click New event visualization to get started.": "",
127
+ "No event visualizations found. Try adjusting your search or filter options to find what you're looking for.": "",
128
+ "New event visualization": "",
122
129
  "Options": "الخيارات",
123
130
  "Hide": "إخفاء",
124
131
  "Update": "تحديث",