@dhis2/analytics 999.9.9-TE-alpha.3 → 999.9.9-outlier-table.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.
- package/build/cjs/__fixtures__/fixtures.js +1 -0
- package/build/cjs/__fixtures__/json/api/analytics/outlierDetection.json +213 -0
- package/build/cjs/api/analytics/Analytics.js +0 -7
- package/build/cjs/api/analytics/AnalyticsAggregate.js +27 -1
- package/build/cjs/api/analytics/AnalyticsBase.js +14 -31
- package/build/cjs/api/analytics/AnalyticsRequest.js +10 -33
- package/build/cjs/api/analytics/AnalyticsRequestBase.js +10 -8
- package/build/cjs/api/analytics/AnalyticsRequestPropertiesMixin.js +0 -19
- package/build/cjs/api/analytics/AnalyticsResponse.js +42 -39
- package/build/cjs/api/analytics/__tests__/Analytics.spec.js +5 -0
- package/build/cjs/api/analytics/__tests__/AnalyticsAggregate.spec.js +29 -0
- package/build/cjs/api/analytics/__tests__/AnalyticsBase.spec.js +36 -2
- package/build/cjs/api/analytics/__tests__/AnalyticsTrackedEntities.spec.js +44 -0
- package/build/cjs/api/analytics/__tests__/__snapshots__/AnalyticsTrackedEntities.spec.js.snap +3 -0
- package/build/cjs/api/analytics/utils.js +2 -23
- package/build/cjs/components/DataDimension/DataDimension.js +31 -7
- package/build/cjs/components/DataDimension/DataTypeSelector.js +17 -8
- package/build/cjs/components/DataDimension/GroupSelector.js +7 -7
- package/build/cjs/components/DataDimension/ItemSelector.js +74 -56
- package/build/cjs/components/PeriodDimension/PeriodDimension.js +5 -2
- package/build/cjs/components/PeriodDimension/PeriodTransfer.js +57 -28
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +1 -1
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +1 -12
- package/build/cjs/components/RichText/Editor.bk/Editor.js +40 -0
- package/build/cjs/components/RichText/Editor.bk/__tests__/Editor.spec.js +29 -0
- package/build/cjs/components/RichText/Editor.bk/__tests__/convertCtrlKey.spec.js +205 -0
- package/build/cjs/components/RichText/Editor.bk/convertCtrlKey.js +87 -0
- package/build/cjs/components/RichText/Parser.bk/MdParser.js +107 -0
- package/build/cjs/components/RichText/Parser.bk/Parser.js +34 -0
- package/build/cjs/components/RichText/Parser.bk/__tests__/MdParser.spec.js +34 -0
- package/build/cjs/components/RichText/Parser.bk/__tests__/Parser.spec.js +41 -0
- package/build/cjs/components/VisTypeIcon.js +6 -1
- package/build/cjs/index.js +43 -1
- package/build/cjs/locales/en/translations.json +5 -1
- package/build/cjs/modules/__tests__/getAdaptedUiLayoutByType.spec.js +14 -0
- package/build/cjs/modules/axis.js +4 -0
- package/build/cjs/modules/getAdaptedUiLayoutByType.js +9 -0
- package/build/cjs/modules/layout/axisGetDimensionIds.js +1 -1
- package/build/cjs/modules/layout/dimension.js +2 -9
- package/build/cjs/modules/layout/dimensionCreate.js +0 -3
- package/build/cjs/modules/layout/dimensionGetId.js +3 -9
- package/build/cjs/modules/layout/layoutFilterDimensions.js +1 -1
- package/build/cjs/modules/layout/layoutGetAxisIdDimensionIdsObject.js +1 -1
- package/build/cjs/modules/layout/layoutGetDimensionIdItemIdsObject.js +1 -1
- package/build/cjs/modules/layout/layoutHasDynamicDimension.js +1 -1
- package/build/cjs/modules/layoutTypes.js +4 -2
- package/build/cjs/modules/layoutUiRules/__tests__/rules.spec.js +11 -0
- package/build/cjs/modules/layoutUiRules/index.js +12 -0
- package/build/cjs/modules/layoutUiRules/rules.js +22 -2
- package/build/cjs/modules/layoutUiRules/rulesHelper.js +4 -2
- package/build/cjs/modules/layoutUiRules/rulesUtils.js +6 -1
- package/build/cjs/modules/visTypeToLayoutType.js +2 -1
- package/build/cjs/modules/visTypes.js +9 -3
- package/build/es/__fixtures__/fixtures.js +1 -0
- package/build/es/__fixtures__/json/api/analytics/outlierDetection.json +213 -0
- package/build/es/api/analytics/Analytics.js +0 -7
- package/build/es/api/analytics/AnalyticsAggregate.js +27 -1
- package/build/es/api/analytics/AnalyticsBase.js +13 -31
- package/build/es/api/analytics/AnalyticsRequest.js +10 -33
- package/build/es/api/analytics/AnalyticsRequestBase.js +10 -8
- package/build/es/api/analytics/AnalyticsRequestPropertiesMixin.js +0 -19
- package/build/es/api/analytics/AnalyticsResponse.js +42 -39
- package/build/es/api/analytics/__tests__/Analytics.spec.js +5 -0
- package/build/es/api/analytics/__tests__/AnalyticsAggregate.spec.js +29 -0
- package/build/es/api/analytics/__tests__/AnalyticsBase.spec.js +34 -1
- package/build/es/api/analytics/__tests__/AnalyticsTrackedEntities.spec.js +41 -0
- package/build/es/api/analytics/__tests__/__snapshots__/AnalyticsTrackedEntities.spec.js.snap +3 -0
- package/build/es/api/analytics/utils.js +1 -20
- package/build/es/components/DataDimension/DataDimension.js +27 -6
- package/build/es/components/DataDimension/DataTypeSelector.js +18 -9
- package/build/es/components/DataDimension/GroupSelector.js +7 -7
- package/build/es/components/DataDimension/ItemSelector.js +75 -57
- package/build/es/components/PeriodDimension/PeriodDimension.js +5 -2
- package/build/es/components/PeriodDimension/PeriodTransfer.js +58 -29
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +1 -1
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +1 -12
- package/build/es/components/RichText/Editor.bk/Editor.js +30 -0
- package/build/es/components/RichText/Editor.bk/__tests__/Editor.spec.js +26 -0
- package/build/es/components/RichText/Editor.bk/__tests__/convertCtrlKey.spec.js +202 -0
- package/build/es/components/RichText/Editor.bk/convertCtrlKey.js +80 -0
- package/build/es/components/RichText/Parser.bk/MdParser.js +99 -0
- package/build/es/components/RichText/Parser.bk/Parser.js +24 -0
- package/build/es/components/RichText/Parser.bk/__tests__/MdParser.spec.js +31 -0
- package/build/es/components/RichText/Parser.bk/__tests__/Parser.spec.js +38 -0
- package/build/es/components/VisTypeIcon.js +8 -3
- package/build/es/index.js +4 -4
- package/build/es/locales/en/translations.json +5 -1
- package/build/es/modules/__tests__/getAdaptedUiLayoutByType.spec.js +15 -1
- package/build/es/modules/axis.js +5 -1
- package/build/es/modules/getAdaptedUiLayoutByType.js +10 -1
- package/build/es/modules/layout/axisGetDimensionIds.js +1 -1
- package/build/es/modules/layout/dimension.js +1 -7
- package/build/es/modules/layout/dimensionCreate.js +1 -4
- package/build/es/modules/layout/dimensionGetId.js +4 -10
- package/build/es/modules/layout/layoutFilterDimensions.js +1 -1
- package/build/es/modules/layout/layoutGetAxisIdDimensionIdsObject.js +1 -1
- package/build/es/modules/layout/layoutGetDimensionIdItemIdsObject.js +1 -1
- package/build/es/modules/layout/layoutHasDynamicDimension.js +1 -1
- package/build/es/modules/layoutTypes.js +2 -1
- package/build/es/modules/layoutUiRules/__tests__/rules.spec.js +11 -0
- package/build/es/modules/layoutUiRules/index.js +2 -2
- package/build/es/modules/layoutUiRules/rules.js +22 -3
- package/build/es/modules/layoutUiRules/rulesHelper.js +3 -2
- package/build/es/modules/layoutUiRules/rulesUtils.js +5 -1
- package/build/es/modules/visTypeToLayoutType.js +4 -3
- package/build/es/modules/visTypes.js +7 -3
- package/package.json +6 -3
- package/build/cjs/api/analytics/AnalyticsTrackedEntities.js +0 -31
- package/build/es/api/analytics/AnalyticsTrackedEntities.js +0 -24
|
@@ -93,6 +93,7 @@ var _default = function x() {
|
|
|
93
93
|
addFixture('/api/analytics/cluster', require('./json/api/analytics/cluster.json'));
|
|
94
94
|
addFixture('/api/analytics/response', require('./json/api/analytics/response.json'));
|
|
95
95
|
addFixture('/api/analytics/enrollments', require('./json/api/analytics/enrollments.json'));
|
|
96
|
+
addFixture('/api/analytics/outlierDetection', require('./json/api/analytics/outlierDetection.json'));
|
|
96
97
|
return {
|
|
97
98
|
get: getFixture,
|
|
98
99
|
add: addFixture
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
{
|
|
2
|
+
"headers": [
|
|
3
|
+
{
|
|
4
|
+
"name": "dxname",
|
|
5
|
+
"column": "Data name",
|
|
6
|
+
"valueType": "TEXT",
|
|
7
|
+
"type": "java.lang.String",
|
|
8
|
+
"hidden": false,
|
|
9
|
+
"meta": false
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "ouname",
|
|
13
|
+
"column": "Organisation unit name",
|
|
14
|
+
"valueType": "TEXT",
|
|
15
|
+
"type": "java.lang.String",
|
|
16
|
+
"hidden": false,
|
|
17
|
+
"meta": false
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "value",
|
|
21
|
+
"column": "Value",
|
|
22
|
+
"valueType": "NUMBER",
|
|
23
|
+
"type": "java.lang.Double",
|
|
24
|
+
"hidden": false,
|
|
25
|
+
"meta": false
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "absdev",
|
|
29
|
+
"column": "Absolute deviation",
|
|
30
|
+
"valueType": "NUMBER",
|
|
31
|
+
"type": "java.lang.Double",
|
|
32
|
+
"hidden": false,
|
|
33
|
+
"meta": false
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "modifiedzscore",
|
|
37
|
+
"column": "Modified zScore",
|
|
38
|
+
"valueType": "NUMBER",
|
|
39
|
+
"type": "java.lang.Double",
|
|
40
|
+
"hidden": false,
|
|
41
|
+
"meta": false
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "median",
|
|
45
|
+
"column": "Median",
|
|
46
|
+
"valueType": "NUMBER",
|
|
47
|
+
"type": "java.lang.Double",
|
|
48
|
+
"hidden": false,
|
|
49
|
+
"meta": false
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "lowerbound",
|
|
53
|
+
"column": "Lower boundary",
|
|
54
|
+
"valueType": "NUMBER",
|
|
55
|
+
"type": "java.lang.Double",
|
|
56
|
+
"hidden": false,
|
|
57
|
+
"meta": false
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "upperbound",
|
|
61
|
+
"column": "Upper boundary",
|
|
62
|
+
"valueType": "NUMBER",
|
|
63
|
+
"type": "java.lang.Double",
|
|
64
|
+
"hidden": false,
|
|
65
|
+
"meta": false
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"metaData": {
|
|
69
|
+
"maxResults": 100,
|
|
70
|
+
"count": 13,
|
|
71
|
+
"orderBy": "mean_abs_dev",
|
|
72
|
+
"threshold": 3.0,
|
|
73
|
+
"algorithm": "MOD_Z_SCORE"
|
|
74
|
+
},
|
|
75
|
+
"rowContext": {
|
|
76
|
+
|
|
77
|
+
},
|
|
78
|
+
"rows": [
|
|
79
|
+
[
|
|
80
|
+
"ANC 2nd visit",
|
|
81
|
+
"UMC (Urban Centre) Hospital",
|
|
82
|
+
"1669.0",
|
|
83
|
+
"920.0",
|
|
84
|
+
"3.902767295597484",
|
|
85
|
+
"749.0",
|
|
86
|
+
"-290.93013894085743",
|
|
87
|
+
"1788.9301389408574"
|
|
88
|
+
],
|
|
89
|
+
[
|
|
90
|
+
"ANC 1st visit",
|
|
91
|
+
"Charlotte CHP",
|
|
92
|
+
"49.0",
|
|
93
|
+
"39.0",
|
|
94
|
+
"7.515857142857143",
|
|
95
|
+
"10.0",
|
|
96
|
+
"-23.948490393535913",
|
|
97
|
+
"43.94849039353591"
|
|
98
|
+
],
|
|
99
|
+
[
|
|
100
|
+
"ANC 2nd visit",
|
|
101
|
+
"Charlotte CHP",
|
|
102
|
+
"40.0",
|
|
103
|
+
"33.0",
|
|
104
|
+
"22.258499999999998",
|
|
105
|
+
"7.0",
|
|
106
|
+
"-30.86489139031037",
|
|
107
|
+
"44.86489139031037"
|
|
108
|
+
],
|
|
109
|
+
[
|
|
110
|
+
"ANC 2nd visit",
|
|
111
|
+
"Wilberforce CHC",
|
|
112
|
+
"56.0",
|
|
113
|
+
"24.5",
|
|
114
|
+
"3.004590909090909",
|
|
115
|
+
"31.5",
|
|
116
|
+
"-1.3890179239210454",
|
|
117
|
+
"64.38901792392105"
|
|
118
|
+
],
|
|
119
|
+
[
|
|
120
|
+
"ANC 1st visit",
|
|
121
|
+
"Deep Eye water MCHP",
|
|
122
|
+
"40.0",
|
|
123
|
+
"16.0",
|
|
124
|
+
"3.5973333333333333",
|
|
125
|
+
"24.0",
|
|
126
|
+
"4.850913859925324",
|
|
127
|
+
"43.14908614007467"
|
|
128
|
+
],
|
|
129
|
+
[
|
|
130
|
+
"ANC 2nd visit",
|
|
131
|
+
"Lion for Lion Clinic",
|
|
132
|
+
"30.0",
|
|
133
|
+
"16.0",
|
|
134
|
+
"3.5973333333333333",
|
|
135
|
+
"14.0",
|
|
136
|
+
"-5.620896815302167",
|
|
137
|
+
"33.62089681530217"
|
|
138
|
+
],
|
|
139
|
+
[
|
|
140
|
+
"ANC 2nd visit",
|
|
141
|
+
"Deep Eye water MCHP",
|
|
142
|
+
"33.0",
|
|
143
|
+
"14.5",
|
|
144
|
+
"3.9121",
|
|
145
|
+
"18.5",
|
|
146
|
+
"-3.4245866551686603",
|
|
147
|
+
"40.42458665516866"
|
|
148
|
+
],
|
|
149
|
+
[
|
|
150
|
+
"ANC 2nd visit",
|
|
151
|
+
"Blessed Mokaka East Clinic",
|
|
152
|
+
"2.0",
|
|
153
|
+
"13.0",
|
|
154
|
+
"4.38425",
|
|
155
|
+
"15.0",
|
|
156
|
+
"-3.417043736713012",
|
|
157
|
+
"33.41704373671301"
|
|
158
|
+
],
|
|
159
|
+
[
|
|
160
|
+
"ANC 2nd visit",
|
|
161
|
+
"Malambay CHP",
|
|
162
|
+
"15.0",
|
|
163
|
+
"12.0",
|
|
164
|
+
"5.396",
|
|
165
|
+
"3.0",
|
|
166
|
+
"-13.770509831248425",
|
|
167
|
+
"19.770509831248425"
|
|
168
|
+
],
|
|
169
|
+
[
|
|
170
|
+
"ANC 2nd visit",
|
|
171
|
+
"Wellbody MCHP",
|
|
172
|
+
"20.0",
|
|
173
|
+
"10.0",
|
|
174
|
+
"3.3725",
|
|
175
|
+
"10.0",
|
|
176
|
+
"-10.999999999999996",
|
|
177
|
+
"30.999999999999996"
|
|
178
|
+
],
|
|
179
|
+
[
|
|
180
|
+
"ANC 1st visit",
|
|
181
|
+
"Blessed Mokaka East Clinic",
|
|
182
|
+
"26.0",
|
|
183
|
+
"10.0",
|
|
184
|
+
"4.496666666666667",
|
|
185
|
+
"16.0",
|
|
186
|
+
"1.6734512181055958",
|
|
187
|
+
"30.326548781894402"
|
|
188
|
+
],
|
|
189
|
+
[
|
|
190
|
+
"ANC 1st visit",
|
|
191
|
+
"Murray Town CHC",
|
|
192
|
+
"18.0",
|
|
193
|
+
"9.0",
|
|
194
|
+
"6.0705",
|
|
195
|
+
"9.0",
|
|
196
|
+
"-2.43571205496543",
|
|
197
|
+
"20.43571205496543"
|
|
198
|
+
],
|
|
199
|
+
[
|
|
200
|
+
"ANC 2nd visit",
|
|
201
|
+
"Thompson Bay MCHP",
|
|
202
|
+
"11.0",
|
|
203
|
+
"6.0",
|
|
204
|
+
"4.047",
|
|
205
|
+
"5.0",
|
|
206
|
+
"-2.038266127580332",
|
|
207
|
+
"12.038266127580332"
|
|
208
|
+
]
|
|
209
|
+
],
|
|
210
|
+
"headerWidth": 8,
|
|
211
|
+
"width": 8,
|
|
212
|
+
"height": 13
|
|
213
|
+
}
|
|
@@ -9,7 +9,6 @@ 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"));
|
|
13
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
13
|
/**
|
|
15
14
|
* @module analytics
|
|
@@ -20,8 +19,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
20
19
|
* Analytics class used to request analytics data from Web API.
|
|
21
20
|
*
|
|
22
21
|
* @requires analytics.AnalyticsAggregate
|
|
23
|
-
* @requires analytics.AnalyticsTrackedEntities
|
|
24
|
-
* @requires analytics.AnalyticsEnrollments
|
|
25
22
|
* @requires analytics.AnalyticsEvents
|
|
26
23
|
* @requires analytics.AnalyticsRequest
|
|
27
24
|
* @requires analytics.AnalyticsResponse
|
|
@@ -41,7 +38,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
41
38
|
class Analytics {
|
|
42
39
|
/**
|
|
43
40
|
* @param {!module:analytics.AnalyticsAggregate} analyticsAggregate The AnalyticsAggregate instance
|
|
44
|
-
* @param {!module:analytics.AnalyticsTrackedEntities} analyticsTrackedEntities The AnalyticsTrackedEntities instance
|
|
45
41
|
* @param {!module:analytics.AnalyticsEnrollments} analyticsEnrollments The AnalyticsEnrollments instance
|
|
46
42
|
* @param {!module:analytics.AnalyticsEvents} analyticsEvents The AnalyticsEvents instance
|
|
47
43
|
* @param {!module:analytics.AnalyticsRequest} analyticsRequest The AnalyticsRequest class
|
|
@@ -50,14 +46,12 @@ class Analytics {
|
|
|
50
46
|
constructor(_ref) {
|
|
51
47
|
let {
|
|
52
48
|
aggregate,
|
|
53
|
-
trackedEntities,
|
|
54
49
|
enrollments,
|
|
55
50
|
events,
|
|
56
51
|
request,
|
|
57
52
|
response
|
|
58
53
|
} = _ref;
|
|
59
54
|
this.aggregate = aggregate;
|
|
60
|
-
this.trackedEntities = trackedEntities;
|
|
61
55
|
this.enrollments = enrollments;
|
|
62
56
|
this.events = events;
|
|
63
57
|
this.request = request;
|
|
@@ -80,7 +74,6 @@ class Analytics {
|
|
|
80
74
|
if (!Analytics.getAnalytics.analytics) {
|
|
81
75
|
Analytics.getAnalytics.analytics = new Analytics({
|
|
82
76
|
aggregate: new _AnalyticsAggregate.default(dataEngine),
|
|
83
|
-
trackedEntities: new _AnalyticsTrackedEntities.default(dataEngine),
|
|
84
77
|
enrollments: new _AnalyticsEnrollments.default(dataEngine),
|
|
85
78
|
events: new _AnalyticsEvents.default(dataEngine),
|
|
86
79
|
request: _AnalyticsRequest.default,
|
|
@@ -74,12 +74,38 @@ class AnalyticsAggregate extends _AnalyticsBase.default {
|
|
|
74
74
|
* .withStartDate('2017-10-01')
|
|
75
75
|
* .withEndDate('2017-10-31');
|
|
76
76
|
*
|
|
77
|
-
* analytics.aggregate.getDebugSql(req)
|
|
77
|
+
* analytics.aggregate.getDebugSql(req)
|
|
78
78
|
* .then(console.log);
|
|
79
79
|
*/
|
|
80
80
|
getDebugSql(req) {
|
|
81
81
|
return this.fetch(req.withPath('debug/sql'));
|
|
82
82
|
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @param {!AnalyticsRequest} req Request object
|
|
86
|
+
*
|
|
87
|
+
* @returns {Promise} Promise that resolves with the SQL statement used to query the database.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* const req = new analytics.request()
|
|
91
|
+
* .withParameters({
|
|
92
|
+
* dx: 'fbfJHSPpUQD,cYeuwXTCPkU',
|
|
93
|
+
* pe: 'THIS_YEAR',
|
|
94
|
+
* ou: 'USER_ORGUNIT,USER_ORGUNIT_CHILDREN',
|
|
95
|
+
* headers: 'dxname,pename,ouname,value,absdev,modifiedzscore,median,lowerbound,upperbound',
|
|
96
|
+
* algorithm: 'MODIFIED_Z_SCORE',
|
|
97
|
+
* maxResults: 100,
|
|
98
|
+
* threshold: 3,
|
|
99
|
+
orderBy: 'value',
|
|
100
|
+
sortOrder: 'desc',
|
|
101
|
+
* });
|
|
102
|
+
*
|
|
103
|
+
* analytics.aggregate.getOutliersData(req)
|
|
104
|
+
* .then(console.log);
|
|
105
|
+
*/
|
|
106
|
+
getOutliersData(req) {
|
|
107
|
+
return this.fetch(req.withPath('outlierDetection'));
|
|
108
|
+
}
|
|
83
109
|
}
|
|
84
110
|
var _default = AnalyticsAggregate;
|
|
85
111
|
exports.default = _default;
|
|
@@ -3,24 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = void 0;
|
|
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");
|
|
10
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
10
|
const analyticsQuery = {
|
|
12
11
|
resource: 'analytics',
|
|
13
12
|
id: _ref => {
|
|
14
13
|
let {
|
|
15
14
|
path,
|
|
16
|
-
program
|
|
17
|
-
trackedEntityType
|
|
15
|
+
program
|
|
18
16
|
} = _ref;
|
|
19
|
-
return
|
|
20
|
-
path,
|
|
21
|
-
program,
|
|
22
|
-
trackedEntityType
|
|
23
|
-
});
|
|
17
|
+
return [path, program].filter(Boolean).join('/');
|
|
24
18
|
},
|
|
25
19
|
params: _ref2 => {
|
|
26
20
|
let {
|
|
@@ -29,8 +23,8 @@ const analyticsQuery = {
|
|
|
29
23
|
parameters
|
|
30
24
|
} = _ref2;
|
|
31
25
|
return {
|
|
32
|
-
dimension: dimensions,
|
|
33
|
-
filter: filters,
|
|
26
|
+
dimension: dimensions.length ? dimensions : undefined,
|
|
27
|
+
filter: filters.length ? filters : undefined,
|
|
34
28
|
...parameters
|
|
35
29
|
};
|
|
36
30
|
}
|
|
@@ -40,14 +34,9 @@ const analyticsDataQuery = {
|
|
|
40
34
|
id: _ref3 => {
|
|
41
35
|
let {
|
|
42
36
|
path,
|
|
43
|
-
program
|
|
44
|
-
trackedEntityType
|
|
37
|
+
program
|
|
45
38
|
} = _ref3;
|
|
46
|
-
return
|
|
47
|
-
path,
|
|
48
|
-
program,
|
|
49
|
-
trackedEntityType
|
|
50
|
-
});
|
|
39
|
+
return [path, program].filter(Boolean).join('/');
|
|
51
40
|
},
|
|
52
41
|
params: _ref4 => {
|
|
53
42
|
let {
|
|
@@ -56,8 +45,8 @@ const analyticsDataQuery = {
|
|
|
56
45
|
parameters
|
|
57
46
|
} = _ref4;
|
|
58
47
|
return {
|
|
59
|
-
dimension: dimensions,
|
|
60
|
-
filter: filters,
|
|
48
|
+
dimension: dimensions.length ? dimensions : undefined,
|
|
49
|
+
filter: filters.length ? filters : undefined,
|
|
61
50
|
...parameters,
|
|
62
51
|
skipMeta: true,
|
|
63
52
|
skipData: false
|
|
@@ -69,14 +58,9 @@ const analyticsMetaDataQuery = {
|
|
|
69
58
|
id: _ref5 => {
|
|
70
59
|
let {
|
|
71
60
|
path,
|
|
72
|
-
program
|
|
73
|
-
trackedEntityType
|
|
61
|
+
program
|
|
74
62
|
} = _ref5;
|
|
75
|
-
return
|
|
76
|
-
path,
|
|
77
|
-
program,
|
|
78
|
-
trackedEntityType
|
|
79
|
-
});
|
|
63
|
+
return [path, program].filter(Boolean).join('/');
|
|
80
64
|
},
|
|
81
65
|
params: _ref6 => {
|
|
82
66
|
let {
|
|
@@ -85,8 +69,8 @@ const analyticsMetaDataQuery = {
|
|
|
85
69
|
parameters
|
|
86
70
|
} = _ref6;
|
|
87
71
|
return {
|
|
88
|
-
dimension: dimensions,
|
|
89
|
-
filter: filters,
|
|
72
|
+
dimension: dimensions.length ? dimensions : undefined,
|
|
73
|
+
filter: filters.length ? filters : undefined,
|
|
90
74
|
...parameters,
|
|
91
75
|
skipMeta: false,
|
|
92
76
|
skipData: true,
|
|
@@ -126,6 +110,7 @@ const generateDimensionStrings = function () {
|
|
|
126
110
|
* @memberof module:analytics
|
|
127
111
|
* @abstract
|
|
128
112
|
*/
|
|
113
|
+
exports.generateDimensionStrings = generateDimensionStrings;
|
|
129
114
|
class AnalyticsBase {
|
|
130
115
|
constructor(dataEngine) {
|
|
131
116
|
this.dataEngine = dataEngine;
|
|
@@ -168,7 +153,6 @@ class AnalyticsBase {
|
|
|
168
153
|
variables: {
|
|
169
154
|
path: req.path,
|
|
170
155
|
program: req.program,
|
|
171
|
-
trackedEntityType: req.trackedEntityType,
|
|
172
156
|
dimensions: generateDimensionStrings(req.dimensions),
|
|
173
157
|
filters: generateDimensionStrings(req.filters),
|
|
174
158
|
parameters: req.parameters,
|
|
@@ -211,7 +195,6 @@ class AnalyticsBase {
|
|
|
211
195
|
variables: {
|
|
212
196
|
path: req.path,
|
|
213
197
|
program: req.program,
|
|
214
|
-
trackedEntityType: req.trackedEntityType,
|
|
215
198
|
dimensions: generateDimensionStrings(req.dimensions, options),
|
|
216
199
|
filters: generateDimensionStrings(req.filters, options),
|
|
217
200
|
parameters: req.parameters
|
|
@@ -10,7 +10,6 @@ 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");
|
|
14
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
14
|
/**
|
|
16
15
|
* @description
|
|
@@ -48,7 +47,6 @@ class AnalyticsRequest extends (0, _AnalyticsRequestDimensionsMixin.default)((0,
|
|
|
48
47
|
fromVisualization(visualization) {
|
|
49
48
|
let passFilterAsDimension = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
50
49
|
let request = this;
|
|
51
|
-
const outputType = visualization.outputType;
|
|
52
50
|
|
|
53
51
|
// extract dimensions from visualization
|
|
54
52
|
const columns = visualization.columns || [];
|
|
@@ -59,28 +57,19 @@ class AnalyticsRequest extends (0, _AnalyticsRequestDimensionsMixin.default)((0,
|
|
|
59
57
|
if ((_d$legendSet = d.legendSet) !== null && _d$legendSet !== void 0 && _d$legendSet.id) {
|
|
60
58
|
dimension += `-${d.legendSet.id}`;
|
|
61
59
|
}
|
|
60
|
+
if ((_d$programStage = d.programStage) !== null && _d$programStage !== void 0 && _d$programStage.id) {
|
|
61
|
+
dimension = `${d.programStage.id}.${dimension}`;
|
|
62
|
+
}
|
|
62
63
|
if (d.filter) {
|
|
63
64
|
dimension += `:${d.filter}`;
|
|
64
65
|
}
|
|
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
|
-
|
|
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
|
-
}));
|
|
68
|
+
request = request.addDimension(dimension.replace(/\./, `[${index}].`));
|
|
75
69
|
});
|
|
76
70
|
} else {
|
|
77
|
-
var _d$
|
|
78
|
-
request = request.addDimension((0
|
|
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));
|
|
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));
|
|
84
73
|
}
|
|
85
74
|
});
|
|
86
75
|
|
|
@@ -95,29 +84,17 @@ class AnalyticsRequest extends (0, _AnalyticsRequestDimensionsMixin.default)((0,
|
|
|
95
84
|
request = request.addDimension(f.dimension, (_f$items = f.items) === null || _f$items === void 0 ? void 0 : _f$items.map(item => item.id));
|
|
96
85
|
} else {
|
|
97
86
|
var _f$programStage, _f$repetition, _f$repetition$indexes;
|
|
98
|
-
let filterString = f.dimension;
|
|
87
|
+
let filterString = (_f$programStage = f.programStage) !== null && _f$programStage !== void 0 && _f$programStage.id ? `${f.programStage.id}.${f.dimension}` : f.dimension;
|
|
99
88
|
if (f.filter) {
|
|
100
89
|
filterString += `:${f.filter}`;
|
|
101
90
|
}
|
|
102
|
-
const programStageId = (_f$programStage = f.programStage) === null || _f$programStage === void 0 ? void 0 : _f$programStage.id;
|
|
103
91
|
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) {
|
|
104
92
|
f.repetition.indexes.forEach(index => {
|
|
105
|
-
|
|
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
|
-
}));
|
|
93
|
+
request = request.addFilter(filterString.replace(/\./, `[${index}].`));
|
|
112
94
|
});
|
|
113
95
|
} else {
|
|
114
|
-
var _f$
|
|
115
|
-
request = request.addFilter((0
|
|
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));
|
|
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));
|
|
121
98
|
}
|
|
122
99
|
}
|
|
123
100
|
});
|
|
@@ -24,7 +24,6 @@ class AnalyticsRequestBase {
|
|
|
24
24
|
format = 'json',
|
|
25
25
|
path,
|
|
26
26
|
program,
|
|
27
|
-
trackedEntityType,
|
|
28
27
|
dimensions = [],
|
|
29
28
|
filters = [],
|
|
30
29
|
parameters = {}
|
|
@@ -33,7 +32,6 @@ class AnalyticsRequestBase {
|
|
|
33
32
|
this.format = format.toLowerCase();
|
|
34
33
|
this.path = path;
|
|
35
34
|
this.program = program;
|
|
36
|
-
this.trackedEntityType = trackedEntityType;
|
|
37
35
|
this.dimensions = dimensions;
|
|
38
36
|
this.filters = filters;
|
|
39
37
|
this.parameters = {
|
|
@@ -55,7 +53,7 @@ class AnalyticsRequestBase {
|
|
|
55
53
|
buildUrl(options) {
|
|
56
54
|
// at least 1 dimension is required
|
|
57
55
|
let dimensions = this.dimensions;
|
|
58
|
-
if (options && options.sorted) {
|
|
56
|
+
if (dimensions.length && options !== null && options !== void 0 && options.sorted) {
|
|
59
57
|
dimensions = (0, _sortBy.default)(dimensions, 'dimension');
|
|
60
58
|
}
|
|
61
59
|
const encodedDimensions = dimensions.map(_ref => {
|
|
@@ -65,15 +63,19 @@ class AnalyticsRequestBase {
|
|
|
65
63
|
} = _ref;
|
|
66
64
|
if (Array.isArray(items) && items.length) {
|
|
67
65
|
const encodedItems = items.map(_utils.customEncodeURIComponent);
|
|
68
|
-
if (options && options.sorted) {
|
|
66
|
+
if (options !== null && options !== void 0 && options.sorted) {
|
|
69
67
|
encodedItems.sort();
|
|
70
68
|
}
|
|
71
69
|
return `${dimension}:${encodedItems.join(';')}`;
|
|
72
70
|
}
|
|
73
71
|
return dimension;
|
|
74
72
|
});
|
|
75
|
-
const endPoint = [this.endPoint, this.path, this.program
|
|
76
|
-
|
|
73
|
+
const endPoint = [this.endPoint, this.path, this.program].filter(e => !!e).join('/');
|
|
74
|
+
let url = `${endPoint}.${this.format}`;
|
|
75
|
+
if (encodedDimensions.length) {
|
|
76
|
+
url += `?dimension=${encodedDimensions.join('&dimension=')}`;
|
|
77
|
+
}
|
|
78
|
+
return url;
|
|
77
79
|
}
|
|
78
80
|
|
|
79
81
|
/**
|
|
@@ -91,7 +93,7 @@ class AnalyticsRequestBase {
|
|
|
91
93
|
*/
|
|
92
94
|
buildQuery(options) {
|
|
93
95
|
let filters = this.filters;
|
|
94
|
-
if (options && options.sorted) {
|
|
96
|
+
if (filters.length && options !== null && options !== void 0 && options.sorted) {
|
|
95
97
|
filters = (0, _sortBy.default)(filters, 'dimension');
|
|
96
98
|
}
|
|
97
99
|
const encodedFilters = filters.map(_ref2 => {
|
|
@@ -101,7 +103,7 @@ class AnalyticsRequestBase {
|
|
|
101
103
|
} = _ref2;
|
|
102
104
|
if (Array.isArray(items) && items.length) {
|
|
103
105
|
const encodedItems = items.map(_utils.customEncodeURIComponent);
|
|
104
|
-
if (options && options.sorted) {
|
|
106
|
+
if (options !== null && options !== void 0 && options.sorted) {
|
|
105
107
|
encodedItems.sort();
|
|
106
108
|
}
|
|
107
109
|
return `${dimension}:${encodedItems.join(';')}`;
|
|
@@ -497,25 +497,6 @@ 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
|
-
|
|
519
500
|
/**
|
|
520
501
|
* Sets the program for the request.
|
|
521
502
|
* It appends the program id to the request's path.
|