@dhis2/analytics 22.0.0-alpha.1 → 22.0.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 (102) hide show
  1. package/CHANGELOG.md +2997 -0
  2. package/build/cjs/__demo__/FileMenu.stories.js +9 -17
  3. package/build/cjs/__fixtures__/fixtures.js +1 -0
  4. package/build/cjs/__fixtures__/json/api/analytics/enrollments.json +206 -0
  5. package/build/cjs/api/analytics/Analytics.js +6 -0
  6. package/build/cjs/api/analytics/AnalyticsEnrollments.js +48 -0
  7. package/build/cjs/api/analytics/__tests__/AnalyticsEnrollments.spec.js +50 -0
  8. package/build/cjs/api/analytics/__tests__/__snapshots__/AnalyticsEnrollments.spec.js.snap +3 -0
  9. package/build/cjs/components/CachedDataQueryProvider.js +70 -0
  10. package/build/cjs/components/FileMenu/FileMenu.js +3 -10
  11. package/build/cjs/components/FileMenu/__tests__/FileMenu.spec.js +3 -5
  12. package/build/cjs/components/FileMenu/utils.js +1 -1
  13. package/build/cjs/components/OpenFileDialog/CustomSelectOption.js +4 -18
  14. package/build/cjs/components/OpenFileDialog/FileList.js +5 -5
  15. package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +30 -31
  16. package/build/cjs/components/OpenFileDialog/OpenFileDialog.styles.js +2 -2
  17. package/build/cjs/components/OpenFileDialog/VisTypeFilter.js +16 -17
  18. package/build/cjs/components/OpenFileDialog/utils.js +20 -1
  19. package/build/cjs/index.js +18 -16
  20. package/build/cjs/locales/ar/translations.json +9 -0
  21. package/build/cjs/locales/ar_EG/translations.json +9 -0
  22. package/build/cjs/locales/ar_IQ/translations.json +9 -0
  23. package/build/cjs/locales/ckb/translations.json +9 -0
  24. package/build/cjs/locales/cs/translations.json +17 -8
  25. package/build/cjs/locales/da/translations.json +9 -0
  26. package/build/cjs/locales/en/translations.json +23 -3
  27. package/build/cjs/locales/es/translations.json +9 -0
  28. package/build/cjs/locales/fr/translations.json +9 -0
  29. package/build/cjs/locales/id/translations.json +9 -0
  30. package/build/cjs/locales/km/translations.json +9 -0
  31. package/build/cjs/locales/lo/translations.json +9 -0
  32. package/build/cjs/locales/my/translations.json +9 -0
  33. package/build/cjs/locales/nb/translations.json +9 -0
  34. package/build/cjs/locales/nl/translations.json +9 -0
  35. package/build/cjs/locales/prs/translations.json +9 -0
  36. package/build/cjs/locales/ps/translations.json +9 -0
  37. package/build/cjs/locales/pt/translations.json +9 -0
  38. package/build/cjs/locales/pt_BR/translations.json +9 -0
  39. package/build/cjs/locales/ru/translations.json +9 -0
  40. package/build/cjs/locales/sv/translations.json +9 -0
  41. package/build/cjs/locales/tet/translations.json +9 -0
  42. package/build/cjs/locales/tg/translations.json +9 -0
  43. package/build/cjs/locales/uk/translations.json +9 -0
  44. package/build/cjs/locales/ur/translations.json +9 -0
  45. package/build/cjs/locales/uz/translations.json +9 -0
  46. package/build/cjs/locales/uz_Latn/translations.json +9 -0
  47. package/build/cjs/locales/vi/translations.json +9 -0
  48. package/build/cjs/locales/zh/translations.json +10 -1
  49. package/build/cjs/locales/zh_CN/translations.json +9 -0
  50. package/build/cjs/modules/layoutUiRules/rules.js +5 -1
  51. package/build/cjs/modules/visTypes.js +21 -12
  52. package/build/es/__demo__/FileMenu.stories.js +9 -17
  53. package/build/es/__fixtures__/fixtures.js +1 -0
  54. package/build/es/__fixtures__/json/api/analytics/enrollments.json +206 -0
  55. package/build/es/api/analytics/Analytics.js +5 -0
  56. package/build/es/api/analytics/AnalyticsEnrollments.js +38 -0
  57. package/build/es/api/analytics/__tests__/AnalyticsEnrollments.spec.js +40 -0
  58. package/build/es/api/analytics/__tests__/__snapshots__/AnalyticsEnrollments.spec.js.snap +3 -0
  59. package/build/es/components/CachedDataQueryProvider.js +50 -0
  60. package/build/es/components/FileMenu/FileMenu.js +3 -10
  61. package/build/es/components/FileMenu/__tests__/FileMenu.spec.js +3 -5
  62. package/build/es/components/FileMenu/utils.js +1 -1
  63. package/build/es/components/OpenFileDialog/CustomSelectOption.js +4 -17
  64. package/build/es/components/OpenFileDialog/FileList.js +5 -5
  65. package/build/es/components/OpenFileDialog/OpenFileDialog.js +32 -32
  66. package/build/es/components/OpenFileDialog/OpenFileDialog.styles.js +2 -2
  67. package/build/es/components/OpenFileDialog/VisTypeFilter.js +14 -18
  68. package/build/es/components/OpenFileDialog/utils.js +18 -0
  69. package/build/es/index.js +3 -2
  70. package/build/es/locales/ar/translations.json +9 -0
  71. package/build/es/locales/ar_EG/translations.json +9 -0
  72. package/build/es/locales/ar_IQ/translations.json +9 -0
  73. package/build/es/locales/ckb/translations.json +9 -0
  74. package/build/es/locales/cs/translations.json +17 -8
  75. package/build/es/locales/da/translations.json +9 -0
  76. package/build/es/locales/en/translations.json +23 -3
  77. package/build/es/locales/es/translations.json +9 -0
  78. package/build/es/locales/fr/translations.json +9 -0
  79. package/build/es/locales/id/translations.json +9 -0
  80. package/build/es/locales/km/translations.json +9 -0
  81. package/build/es/locales/lo/translations.json +9 -0
  82. package/build/es/locales/my/translations.json +9 -0
  83. package/build/es/locales/nb/translations.json +9 -0
  84. package/build/es/locales/nl/translations.json +9 -0
  85. package/build/es/locales/prs/translations.json +9 -0
  86. package/build/es/locales/ps/translations.json +9 -0
  87. package/build/es/locales/pt/translations.json +9 -0
  88. package/build/es/locales/pt_BR/translations.json +9 -0
  89. package/build/es/locales/ru/translations.json +9 -0
  90. package/build/es/locales/sv/translations.json +9 -0
  91. package/build/es/locales/tet/translations.json +9 -0
  92. package/build/es/locales/tg/translations.json +9 -0
  93. package/build/es/locales/uk/translations.json +9 -0
  94. package/build/es/locales/ur/translations.json +9 -0
  95. package/build/es/locales/uz/translations.json +9 -0
  96. package/build/es/locales/uz_Latn/translations.json +9 -0
  97. package/build/es/locales/vi/translations.json +9 -0
  98. package/build/es/locales/zh/translations.json +10 -1
  99. package/build/es/locales/zh_CN/translations.json +9 -0
  100. package/build/es/modules/layoutUiRules/rules.js +6 -2
  101. package/build/es/modules/visTypes.js +19 -9
  102. package/package.json +2 -2
@@ -14,10 +14,10 @@ const configMock = {
14
14
  baseUrl: 'http://localhost:8080',
15
15
  apiVersion: 33
16
16
  };
17
- const d2Mock = {
18
- i18n: {
19
- getTranslation: string => string
20
- }
17
+ const user = {
18
+ displayName: 'John Traore',
19
+ id: 'xE7jOejl9FI',
20
+ username: 'admin'
21
21
  };
22
22
  const visObject = {
23
23
  lastUpdated: '2020-10-12T09:44:46.194',
@@ -38,16 +38,8 @@ const visObject = {
38
38
  write: true,
39
39
  manage: true
40
40
  },
41
- lastUpdatedBy: {
42
- displayName: 'John Traore',
43
- id: 'xE7jOejl9FI',
44
- username: 'admin'
45
- },
46
- user: {
47
- displayName: 'John Traore',
48
- id: 'xE7jOejl9FI',
49
- username: 'admin'
50
- },
41
+ lastUpdatedBy: user,
42
+ user,
51
43
  translations: [],
52
44
  userAccesses: [{
53
45
  access: 'rw------',
@@ -67,18 +59,18 @@ const visReadonlyObject = { ...visObject,
67
59
  }
68
60
  };
69
61
  (0, _react.storiesOf)('FileMenu', module).add('Simple', () => /*#__PURE__*/_react2.default.createElement(_FileMenu.FileMenu, {
70
- d2: d2Mock,
62
+ currentUser: user,
71
63
  fileType: "visualization"
72
64
  })).add('With AO', () => /*#__PURE__*/_react2.default.createElement(_appRuntime.Provider, {
73
65
  config: configMock
74
66
  }, /*#__PURE__*/_react2.default.createElement(_FileMenu.FileMenu, {
75
- d2: d2Mock,
67
+ currentUser: user,
76
68
  fileType: "visualization",
77
69
  fileObject: visObject
78
70
  }))).add('With readonly AO', () => /*#__PURE__*/_react2.default.createElement(_appRuntime.Provider, {
79
71
  config: configMock
80
72
  }, /*#__PURE__*/_react2.default.createElement(_FileMenu.FileMenu, {
81
- d2: d2Mock,
73
+ currentUser: user,
82
74
  fileType: "visualization",
83
75
  fileObject: visReadonlyObject
84
76
  })));
@@ -98,6 +98,7 @@ var _default = function x() {
98
98
  addFixture('/api/analytics/query', require('./json/api/analytics/query.json'));
99
99
  addFixture('/api/analytics/cluster', require('./json/api/analytics/cluster.json'));
100
100
  addFixture('/api/analytics/response', require('./json/api/analytics/response.json'));
101
+ addFixture('/api/analytics/enrollments', require('./json/api/analytics/enrollments.json'));
101
102
  return {
102
103
  get: getFixture,
103
104
  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
+ }
@@ -7,6 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _AnalyticsAggregate = _interopRequireDefault(require("./AnalyticsAggregate.js"));
9
9
 
10
+ var _AnalyticsEnrollments = _interopRequireDefault(require("./AnalyticsEnrollments.js"));
11
+
10
12
  var _AnalyticsEvents = _interopRequireDefault(require("./AnalyticsEvents.js"));
11
13
 
12
14
  var _AnalyticsRequest = _interopRequireDefault(require("./AnalyticsRequest.js"));
@@ -43,17 +45,20 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
43
45
  class Analytics {
44
46
  /**
45
47
  * @param {!module:analytics.AnalyticsAggregate} analyticsAggregate The AnalyticsAggregate instance
48
+ * @param {!module:analytics.AnalyticsEnrollments} analyticsEnrollments The AnalyticsEnrollments instance
46
49
  * @param {!module:analytics.AnalyticsEvents} analyticsEvents The AnalyticsEvents instance
47
50
  * @param {!module:analytics.AnalyticsRequest} analyticsRequest The AnalyticsRequest class
48
51
  * @param {!module:analytics.AnalyticsResponse} analyticsResponse The AnalyticsResponse class
49
52
  */
50
53
  constructor({
51
54
  aggregate,
55
+ enrollments,
52
56
  events,
53
57
  request,
54
58
  response
55
59
  }) {
56
60
  this.aggregate = aggregate;
61
+ this.enrollments = enrollments;
57
62
  this.events = events;
58
63
  this.request = request;
59
64
  this.response = response;
@@ -76,6 +81,7 @@ class Analytics {
76
81
  if (!Analytics.getAnalytics.analytics) {
77
82
  Analytics.getAnalytics.analytics = new Analytics({
78
83
  aggregate: new _AnalyticsAggregate.default(dataEngine),
84
+ enrollments: new _AnalyticsEnrollments.default(dataEngine),
79
85
  events: new _AnalyticsEvents.default(dataEngine),
80
86
  request: _AnalyticsRequest.default,
81
87
  response: _AnalyticsResponse.default
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _AnalyticsBase = _interopRequireDefault(require("./AnalyticsBase.js"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ /**
13
+ * @extends module:analytics.AnalyticsBase
14
+ *
15
+ * @description
16
+ * Analytics enrollments class used to request analytics enrollments data from Web API.
17
+ *
18
+ * @memberof module:analytics
19
+ *
20
+ * @see https://docs.dhis2.org/en/develop/using-the-api/dhis-core-version-236/analytics.html#webapi_enrollment_analytics
21
+ */
22
+ class AnalyticsEnrollments extends _AnalyticsBase.default {
23
+ /**
24
+ * @param {!AnalyticsRequest} req Request object
25
+ *
26
+ * @returns {Promise} Promise that resolves with the analytics query data from the api.
27
+ *
28
+ * @example
29
+ * const req = new analytics.request()
30
+ * .withProgram('eBAyeGv0exc')
31
+ * .addDataDimension(['Uvn6LCg7dVU','OdiHJayrsKo'])
32
+ * .addPeriodDimension('LAST_4_QUARTERS')
33
+ * .addOrgUnitDimension(['lc3eMKXaEfw','PMa2VCrupOd'])
34
+ * .addOrgUnitFilter('O6uvpzGd5pu')
35
+ * .withStartDate('2017-10-01')
36
+ * .withEndDate('2017-10-31');
37
+ *
38
+ * analytics.enrollments.getQuery(req)
39
+ * .then(console.log);
40
+ */
41
+ getQuery(req) {
42
+ return this.fetch(req.withPath('enrollments/query'));
43
+ }
44
+
45
+ }
46
+
47
+ var _default = AnalyticsEnrollments;
48
+ exports.default = _default;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _fixtures = _interopRequireDefault(require("../../../__fixtures__/fixtures.js"));
4
+
5
+ var _DataEngine = _interopRequireDefault(require("../__mocks__/DataEngine.js"));
6
+
7
+ var _AnalyticsEnrollments = _interopRequireDefault(require("../AnalyticsEnrollments.js"));
8
+
9
+ var _AnalyticsRequest = _interopRequireDefault(require("../AnalyticsRequest.js"));
10
+
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+
13
+ describe('analytics.enrollments', () => {
14
+ let enrollments;
15
+ let request;
16
+ let dataEngineMock;
17
+ let fixture;
18
+ beforeEach(() => {
19
+ dataEngineMock = new _DataEngine.default();
20
+
21
+ _DataEngine.default.mockClear();
22
+
23
+ enrollments = new _AnalyticsEnrollments.default();
24
+ });
25
+ it('should not be allowed to be called without new', () => {
26
+ expect(() => (0, _AnalyticsEnrollments.default)()).toThrowErrorMatchingSnapshot();
27
+ });
28
+ it('should use the dataEngine object when it is passed', () => {
29
+ const dataEngineMockObject = {};
30
+ enrollments = new _AnalyticsEnrollments.default(dataEngineMockObject);
31
+ expect(enrollments.dataEngine).toBe(dataEngineMockObject);
32
+ });
33
+ describe('.getQuery()', () => {
34
+ beforeEach(() => {
35
+ enrollments = new _AnalyticsEnrollments.default(new _DataEngine.default());
36
+ request = new _AnalyticsRequest.default().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);
37
+ fixture = _fixtures.default.get('/api/analytics/enrollments');
38
+ dataEngineMock.query.mockReturnValue(Promise.resolve({
39
+ data: fixture
40
+ }));
41
+ });
42
+ it('should be a function', () => {
43
+ expect(enrollments.getQuery).toBeInstanceOf(Function);
44
+ });
45
+ it('should resolve a promise with data', () => enrollments.getQuery(request).then(data => {
46
+ expect(data.width).toEqual(fixture.width);
47
+ expect(data.height).toEqual(fixture.height);
48
+ }));
49
+ });
50
+ });
@@ -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'"`;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useCachedDataQuery = exports.CachedDataQueryProvider = void 0;
7
+
8
+ var _appRuntime = require("@dhis2/app-runtime");
9
+
10
+ var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
11
+
12
+ var _ui = require("@dhis2/ui");
13
+
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
19
+
20
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ const CachedDataQueryCtx = /*#__PURE__*/(0, _react.createContext)({});
25
+
26
+ const CachedDataQueryProvider = ({
27
+ query,
28
+ dataTransformation,
29
+ children
30
+ }) => {
31
+ const {
32
+ data: rawData,
33
+ ...rest
34
+ } = (0, _appRuntime.useDataQuery)(query);
35
+ const {
36
+ error,
37
+ loading
38
+ } = rest;
39
+ const data = rawData && dataTransformation ? dataTransformation(rawData) : rawData;
40
+
41
+ if (loading) {
42
+ return /*#__PURE__*/_react.default.createElement(_ui.Layer, {
43
+ translucent: true
44
+ }, /*#__PURE__*/_react.default.createElement(_ui.CenteredContent, null, /*#__PURE__*/_react.default.createElement(_ui.CircularLoader, null)));
45
+ }
46
+
47
+ if (error) {
48
+ const fallbackMsg = _d2I18n.default.t('This app could not retrieve required data.');
49
+
50
+ return /*#__PURE__*/_react.default.createElement(_ui.NoticeBox, {
51
+ error: true,
52
+ title: _d2I18n.default.t('Network error')
53
+ }, error.message || fallbackMsg);
54
+ }
55
+
56
+ return /*#__PURE__*/_react.default.createElement(CachedDataQueryCtx.Provider, {
57
+ value: data
58
+ }, children);
59
+ };
60
+
61
+ exports.CachedDataQueryProvider = CachedDataQueryProvider;
62
+ CachedDataQueryProvider.propTypes = {
63
+ children: _propTypes.default.node.isRequired,
64
+ query: _propTypes.default.object.isRequired,
65
+ dataTransformation: _propTypes.default.func
66
+ };
67
+
68
+ const useCachedDataQuery = () => (0, _react.useContext)(CachedDataQueryCtx);
69
+
70
+ exports.useCachedDataQuery = useCachedDataQuery;
@@ -38,12 +38,9 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
38
38
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
39
 
40
40
  const FileMenu = ({
41
- d2,
42
- // to be removed as soon as TranslateDialog and FavoritesDialog are rewritten
43
- defaultFilterVisType,
41
+ currentUser,
44
42
  fileType,
45
43
  fileObject,
46
- filterVisTypes,
47
44
  onNew,
48
45
  onOpen,
49
46
  onSave,
@@ -158,15 +155,13 @@ const FileMenu = ({
158
155
  }, _index.default.t('File'))), /*#__PURE__*/_react.default.createElement(_OpenFileDialog.OpenFileDialog, {
159
156
  open: currentDialog === 'open',
160
157
  type: fileType,
161
- filterVisTypes: filterVisTypes,
162
- defaultFilterVisType: defaultFilterVisType,
163
158
  onClose: onDialogClose,
164
159
  onFileSelect: id => {
165
160
  onOpen(id);
166
161
  onDialogClose();
167
162
  },
168
163
  onNew: onNew,
169
- currentUser: d2.currentUser
164
+ currentUser: currentUser
170
165
  }), menuIsOpen && /*#__PURE__*/_react.default.createElement(_ui.Layer, {
171
166
  onClick: toggleMenu,
172
167
  position: "fixed",
@@ -269,11 +264,9 @@ FileMenu.defaultProps = {
269
264
  onTranslate: Function.prototype
270
265
  };
271
266
  FileMenu.propTypes = {
272
- d2: _propTypes.default.object,
273
- defaultFilterVisType: _propTypes.default.string,
267
+ currentUser: _propTypes.default.object,
274
268
  fileObject: _propTypes.default.object,
275
269
  fileType: _propTypes.default.oneOf(_utils.supportedFileTypes),
276
- filterVisTypes: _propTypes.default.array,
277
270
  onDelete: _propTypes.default.func,
278
271
  onError: _propTypes.default.func,
279
272
  onNew: _propTypes.default.func,
@@ -46,11 +46,9 @@ describe('The FileMenu component ', () => {
46
46
  beforeEach(() => {
47
47
  shallowFileMenu = undefined;
48
48
  props = {
49
- d2: {
50
- currentUser: {
51
- id: 'u1',
52
- displayName: 'Test user'
53
- }
49
+ currentUser: {
50
+ id: 'u1',
51
+ displayName: 'Test user'
54
52
  },
55
53
  fileType: 'visualization',
56
54
  fileObject: undefined,
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.appPathFor = exports.endpointFromFileType = exports.supportedFileTypes = void 0;
7
- const supportedFileTypes = ['eventReport', 'visualization', 'map'];
7
+ const supportedFileTypes = ['eventReport', 'visualization', 'map', 'eventVisualization'];
8
8
  exports.supportedFileTypes = supportedFileTypes;
9
9
 
10
10
  const endpointFromFileType = fileType => {
@@ -7,10 +7,6 @@ exports.default = exports.CustomSelectOption = void 0;
7
7
 
8
8
  var _style = _interopRequireDefault(require("styled-jsx/style"));
9
9
 
10
- var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
11
-
12
- var _ui = require("@dhis2/ui");
13
-
14
10
  var _classnames = _interopRequireDefault(require("classnames"));
15
11
 
16
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -21,15 +17,14 @@ var _CustomSelectOptionStyle = _interopRequireDefault(require("./styles/CustomSe
21
17
 
22
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
19
 
24
- const CustomSelectOptionItem = ({
20
+ const CustomSelectOption = ({
25
21
  value,
26
22
  label,
27
23
  icon,
28
- insertDivider,
29
24
  onClick,
30
25
  active,
31
26
  disabled
32
- }) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
27
+ }) => /*#__PURE__*/_react.default.createElement("div", {
33
28
  onClick: e => onClick({}, e),
34
29
  "data-value": value,
35
30
  "data-label": label,
@@ -38,18 +33,10 @@ const CustomSelectOptionItem = ({
38
33
  disabled
39
34
  }) || "")
40
35
  }, icon, /*#__PURE__*/_react.default.createElement("span", {
41
- className: "jsx-".concat(_CustomSelectOptionStyle.default.__hash) + " " + ((0, _classnames.default)({
42
- label: icon
43
- }) || "")
36
+ className: "jsx-".concat(_CustomSelectOptionStyle.default.__hash) + " " + "label"
44
37
  }, label), /*#__PURE__*/_react.default.createElement(_style.default, {
45
38
  id: _CustomSelectOptionStyle.default.__hash
46
- }, _CustomSelectOptionStyle.default)), insertDivider ? /*#__PURE__*/_react.default.createElement(_ui.MenuDivider, {
47
- dense: true
48
- }) : null);
49
-
50
- const CustomSelectOption = props => props.disabled ? /*#__PURE__*/_react.default.createElement(_ui.Tooltip, {
51
- content: _d2I18n.default.t('Not supported by this app yet')
52
- }, /*#__PURE__*/_react.default.createElement(CustomSelectOptionItem, props)) : /*#__PURE__*/_react.default.createElement(CustomSelectOptionItem, props);
39
+ }, _CustomSelectOptionStyle.default));
53
40
 
54
41
  exports.CustomSelectOption = CustomSelectOption;
55
42
  CustomSelectOption.propTypes = {
@@ -60,6 +47,5 @@ CustomSelectOption.propTypes = {
60
47
  disabled: _propTypes.default.bool,
61
48
  onClick: _propTypes.default.func
62
49
  };
63
- CustomSelectOptionItem.propTypes = CustomSelectOption.propTypes;
64
50
  var _default = CustomSelectOption;
65
51
  exports.default = _default;
@@ -18,14 +18,14 @@ var _DateField = require("./DateField.js");
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
 
20
20
  const FileList = ({
21
+ type,
21
22
  data,
22
- onSelect,
23
- showVisTypeColumn
23
+ onSelect
24
24
  }) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, data.map(visualization => /*#__PURE__*/_react.default.createElement(_ui.DataTableRow, {
25
25
  key: visualization.id
26
26
  }, /*#__PURE__*/_react.default.createElement(_ui.DataTableCell, {
27
27
  onClick: () => onSelect(visualization.id)
28
- }, visualization.displayName), showVisTypeColumn && /*#__PURE__*/_react.default.createElement(_ui.DataTableCell, {
28
+ }, visualization.displayName), type === 'visualization' && /*#__PURE__*/_react.default.createElement(_ui.DataTableCell, {
29
29
  align: "center"
30
30
  }, /*#__PURE__*/_react.default.createElement(_VisTypeIcon.VisTypeIcon, {
31
31
  type: visualization.type,
@@ -46,8 +46,8 @@ FileList.propTypes = {
46
46
  lastUpdated: _propTypes.default.string.isRequired,
47
47
  type: _propTypes.default.string
48
48
  })).isRequired,
49
- onSelect: _propTypes.default.func.isRequired,
50
- showVisTypeColumn: _propTypes.default.bool
49
+ type: _propTypes.default.string.isRequired,
50
+ onSelect: _propTypes.default.func.isRequired
51
51
  };
52
52
  var _default = FileList;
53
53
  exports.default = _default;