@dhis2/analytics 26.12.3 → 26.13.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 (127) hide show
  1. package/build/cjs/__demo__/FileMenu.stories.js +1 -9
  2. package/build/cjs/__demo__/data/avgTotalAggregationType.visualization.json +256 -1
  3. package/build/cjs/__demo__/data/deep.visualization.json +613 -310
  4. package/build/cjs/__demo__/data/deepWithFilters.visualization.json +0 -3
  5. package/build/cjs/__demo__/data/degs.visualization.json +2 -7
  6. package/build/cjs/__demo__/data/diseaseWeeks.visualization.json +317 -153
  7. package/build/cjs/__demo__/data/emptyColumns.visualization.json +2 -7
  8. package/build/cjs/__demo__/data/emptyRows.visualization.json +292 -297
  9. package/build/cjs/__demo__/data/hierarchy.visualization.json +197 -1
  10. package/build/cjs/__demo__/data/lastFiveYears.visualization.json +2 -7
  11. package/build/cjs/__demo__/data/narrative.visualization.json +2 -7
  12. package/build/cjs/__demo__/data/simple.visualization.json +115 -105
  13. package/build/cjs/__demo__/data/target-with-legend.visualization.json +370 -115
  14. package/build/cjs/__demo__/data/under-above-100.legendSet.json +87 -103
  15. package/build/cjs/__demo__/data/weeklyColumns.visualization.json +2 -7
  16. package/build/cjs/__fixtures__/json/chartAllFields.json +8 -33
  17. package/build/cjs/api/dimensions.js +11 -1
  18. package/build/cjs/api/expression.js +19 -9
  19. package/build/cjs/assets/DimensionItemIcons/CalculationIcon.js +1 -1
  20. package/build/cjs/assets/DimensionItemIcons/DataElementIcon.js +1 -1
  21. package/build/cjs/assets/DimensionItemIcons/GenericIcon.js +1 -1
  22. package/build/cjs/assets/DimensionItemIcons/PeriodIcon.js +1 -1
  23. package/build/cjs/components/DataDimension/DataDimension.js +68 -10
  24. package/build/cjs/components/DataDimension/Info/CalculationInfo.js +3 -3
  25. package/build/cjs/components/DataDimension/Info/DataElementInfo.js +4 -4
  26. package/build/cjs/components/DataDimension/Info/DataElementOperandInfo.js +5 -5
  27. package/build/cjs/components/DataDimension/Info/DataSetInfo.js +3 -3
  28. package/build/cjs/components/DataDimension/Info/EventDataItemInfo.js +6 -6
  29. package/build/cjs/components/DataDimension/Info/IndicatorInfo.js +3 -3
  30. package/build/cjs/components/DataDimension/Info/InfoPopover.js +7 -3
  31. package/build/cjs/components/DataDimension/Info/InfoTable.js +1 -1
  32. package/build/cjs/components/DataDimension/Info/OptionInfo.js +70 -0
  33. package/build/cjs/components/DataDimension/Info/ProgramIndicatorInfo.js +9 -6
  34. package/build/cjs/components/DataDimension/ItemOptionsSelector/ItemOptionsSelector.js +257 -0
  35. package/build/cjs/components/DataDimension/ItemOptionsSelector/styles/ItemOptionSelector.style.js +10 -0
  36. package/build/cjs/components/DataDimension/{DataTypeSelector.js → ItemSelector/DataTypeSelector.js} +4 -4
  37. package/build/cjs/components/DataDimension/{DetailSelector.js → ItemSelector/DetailSelector.js} +2 -2
  38. package/build/cjs/components/DataDimension/{GroupSelector.js → ItemSelector/GroupSelector.js} +3 -3
  39. package/build/cjs/components/DataDimension/{ItemSelector.js → ItemSelector/ItemSelector.js} +76 -163
  40. package/build/cjs/components/DataDimension/{MetricSelector.js → ItemSelector/MetricSelector.js} +3 -3
  41. package/build/cjs/components/DataDimension/SelectedEmptyPlaceholder.js +17 -0
  42. package/build/cjs/components/DataDimension/SourceEmptyPlaceholder.js +113 -0
  43. package/build/cjs/components/DataDimension/TransferOption.js +34 -3
  44. package/build/cjs/components/DataDimension/styles/EmptyPlaceholder.style.js +10 -0
  45. package/build/cjs/components/DataDimension/styles/TransferOption.style.js +2 -2
  46. package/build/cjs/components/DynamicDimension/DynamicDimension.js +1 -1
  47. package/build/cjs/components/DynamicDimension/ItemSelector.js +64 -111
  48. package/build/cjs/components/styles/DimensionSelector.style.js +2 -2
  49. package/build/cjs/locales/cs/translations.json +18 -11
  50. package/build/cjs/locales/en/translations.json +18 -11
  51. package/build/cjs/locales/es/translations.json +18 -11
  52. package/build/cjs/locales/es_419/translations.json +18 -11
  53. package/build/cjs/locales/lo/translations.json +18 -11
  54. package/build/cjs/locales/nl/translations.json +18 -11
  55. package/build/cjs/locales/pt/translations.json +18 -11
  56. package/build/cjs/locales/vi/translations.json +18 -11
  57. package/build/cjs/locales/zh/translations.json +18 -11
  58. package/build/cjs/modules/dataTypes.js +3 -1
  59. package/build/cjs/modules/dimensionListItem.js +4 -0
  60. package/build/es/__demo__/FileMenu.stories.js +1 -9
  61. package/build/es/__demo__/data/avgTotalAggregationType.visualization.json +256 -1
  62. package/build/es/__demo__/data/deep.visualization.json +613 -310
  63. package/build/es/__demo__/data/deepWithFilters.visualization.json +0 -3
  64. package/build/es/__demo__/data/degs.visualization.json +2 -7
  65. package/build/es/__demo__/data/diseaseWeeks.visualization.json +317 -153
  66. package/build/es/__demo__/data/emptyColumns.visualization.json +2 -7
  67. package/build/es/__demo__/data/emptyRows.visualization.json +292 -297
  68. package/build/es/__demo__/data/hierarchy.visualization.json +197 -1
  69. package/build/es/__demo__/data/lastFiveYears.visualization.json +2 -7
  70. package/build/es/__demo__/data/narrative.visualization.json +2 -7
  71. package/build/es/__demo__/data/simple.visualization.json +115 -105
  72. package/build/es/__demo__/data/target-with-legend.visualization.json +370 -115
  73. package/build/es/__demo__/data/under-above-100.legendSet.json +87 -103
  74. package/build/es/__demo__/data/weeklyColumns.visualization.json +2 -7
  75. package/build/es/__fixtures__/json/chartAllFields.json +8 -33
  76. package/build/es/api/dimensions.js +12 -2
  77. package/build/es/api/expression.js +18 -8
  78. package/build/es/assets/DimensionItemIcons/CalculationIcon.js +1 -1
  79. package/build/es/assets/DimensionItemIcons/DataElementIcon.js +1 -1
  80. package/build/es/assets/DimensionItemIcons/GenericIcon.js +1 -1
  81. package/build/es/assets/DimensionItemIcons/PeriodIcon.js +1 -1
  82. package/build/es/components/DataDimension/DataDimension.js +69 -11
  83. package/build/es/components/DataDimension/Info/CalculationInfo.js +3 -3
  84. package/build/es/components/DataDimension/Info/DataElementInfo.js +4 -4
  85. package/build/es/components/DataDimension/Info/DataElementOperandInfo.js +5 -5
  86. package/build/es/components/DataDimension/Info/DataSetInfo.js +3 -3
  87. package/build/es/components/DataDimension/Info/EventDataItemInfo.js +6 -6
  88. package/build/es/components/DataDimension/Info/IndicatorInfo.js +3 -3
  89. package/build/es/components/DataDimension/Info/InfoPopover.js +9 -5
  90. package/build/es/components/DataDimension/Info/InfoTable.js +1 -1
  91. package/build/es/components/DataDimension/Info/OptionInfo.js +62 -0
  92. package/build/es/components/DataDimension/Info/ProgramIndicatorInfo.js +10 -7
  93. package/build/es/components/DataDimension/ItemOptionsSelector/ItemOptionsSelector.js +247 -0
  94. package/build/es/components/DataDimension/ItemOptionsSelector/styles/ItemOptionSelector.style.js +4 -0
  95. package/build/es/components/DataDimension/{DataTypeSelector.js → ItemSelector/DataTypeSelector.js} +4 -4
  96. package/build/es/components/DataDimension/{DetailSelector.js → ItemSelector/DetailSelector.js} +2 -2
  97. package/build/es/components/DataDimension/{GroupSelector.js → ItemSelector/GroupSelector.js} +3 -3
  98. package/build/es/components/DataDimension/{ItemSelector.js → ItemSelector/ItemSelector.js} +76 -163
  99. package/build/es/components/DataDimension/{MetricSelector.js → ItemSelector/MetricSelector.js} +3 -3
  100. package/build/es/components/DataDimension/SelectedEmptyPlaceholder.js +9 -0
  101. package/build/es/components/DataDimension/SourceEmptyPlaceholder.js +105 -0
  102. package/build/es/components/DataDimension/TransferOption.js +35 -4
  103. package/build/es/components/DataDimension/styles/EmptyPlaceholder.style.js +4 -0
  104. package/build/es/components/DataDimension/styles/TransferOption.style.js +2 -2
  105. package/build/es/components/DynamicDimension/DynamicDimension.js +1 -1
  106. package/build/es/components/DynamicDimension/ItemSelector.js +66 -113
  107. package/build/es/components/styles/DimensionSelector.style.js +2 -2
  108. package/build/es/locales/cs/translations.json +18 -11
  109. package/build/es/locales/en/translations.json +18 -11
  110. package/build/es/locales/es/translations.json +18 -11
  111. package/build/es/locales/es_419/translations.json +18 -11
  112. package/build/es/locales/lo/translations.json +18 -11
  113. package/build/es/locales/nl/translations.json +18 -11
  114. package/build/es/locales/pt/translations.json +18 -11
  115. package/build/es/locales/vi/translations.json +18 -11
  116. package/build/es/locales/zh/translations.json +18 -11
  117. package/build/es/modules/dataTypes.js +2 -0
  118. package/build/es/modules/dimensionListItem.js +5 -1
  119. package/package.json +2 -2
  120. /package/build/cjs/components/DataDimension/{styles → ItemSelector/styles}/DataTypeSelector.style.js +0 -0
  121. /package/build/cjs/components/DataDimension/{styles → ItemSelector/styles}/DetailSelector.style.js +0 -0
  122. /package/build/cjs/components/DataDimension/{styles → ItemSelector/styles}/GroupSelector.style.js +0 -0
  123. /package/build/cjs/components/DataDimension/{styles → ItemSelector/styles}/MetricSelector.style.js +0 -0
  124. /package/build/es/components/DataDimension/{styles → ItemSelector/styles}/DataTypeSelector.style.js +0 -0
  125. /package/build/es/components/DataDimension/{styles → ItemSelector/styles}/DetailSelector.style.js +0 -0
  126. /package/build/es/components/DataDimension/{styles → ItemSelector/styles}/GroupSelector.style.js +0 -0
  127. /package/build/es/components/DataDimension/{styles → ItemSelector/styles}/MetricSelector.style.js +0 -0
@@ -1,113 +1,97 @@
1
1
  {
2
2
  "code": "UA100",
3
+ "name": "Under or above 100%",
3
4
  "created": "2017-05-19T15:43:40.983",
4
5
  "lastUpdated": "2017-05-19T15:43:40.983",
5
- "name": "Under or above 100%",
6
- "href": "http://localhost:8080/api/32/legendSets/gFJUXah1uRH",
7
- "id": "gFJUXah1uRH",
8
- "displayName": "Under or above 100%",
9
- "publicAccess": "rw------",
10
- "externalAccess": false,
11
- "favorite": false,
12
- "lastUpdatedBy": {
13
- "id": "GOLswS44mh8"
6
+ "translations": [],
7
+ "createdBy": {
8
+ "id": "GOLswS44mh8",
9
+ "code": null,
10
+ "name": "Tom Wakiki",
11
+ "displayName": "Tom Wakiki",
12
+ "username": "system"
14
13
  },
15
- "access": {
16
- "read": true,
17
- "update": true,
18
- "externalize": false,
19
- "delete": true,
20
- "write": true,
21
- "manage": true
14
+ "favorites": [],
15
+ "lastUpdatedBy": {
16
+ "id": "GOLswS44mh8",
17
+ "code": null,
18
+ "name": "Tom Wakiki",
19
+ "displayName": "Tom Wakiki",
20
+ "username": "system"
22
21
  },
23
- "user": {
24
- "id": "GOLswS44mh8"
22
+ "sharing": {
23
+ "owner": "GOLswS44mh8",
24
+ "external": false,
25
+ "users": {},
26
+ "userGroups": {},
27
+ "public": "rw------"
25
28
  },
26
- "favorites": [
27
-
28
- ],
29
- "userGroupAccesses": [
30
-
31
- ],
32
- "attributeValues": [
33
-
34
- ],
35
29
  "legends": [
36
- {
37
- "lastUpdated": "2017-05-19T15:43:40.983",
38
- "id": "I0lBkYHTjPw",
39
- "created": "2017-05-19T15:43:40.983",
40
- "name": "Above 100%",
41
- "endValue": 900.0,
42
- "color": "#B4F3BD",
43
- "displayName": "Above 100%",
44
- "externalAccess": false,
45
- "startValue": 100.0,
46
- "favorite": false,
47
- "access": {
48
- "read": true,
49
- "update": true,
50
- "externalize": false,
51
- "delete": true,
52
- "write": true,
53
- "manage": true
54
- },
55
- "favorites": [
56
-
57
- ],
58
- "translations": [
59
-
60
- ],
61
- "userGroupAccesses": [
62
-
63
- ],
64
- "attributeValues": [
65
-
66
- ],
67
- "userAccesses": [
68
-
69
- ]
70
- },
71
- {
72
- "lastUpdated": "2017-05-19T15:43:40.984",
73
- "id": "qCU0BSbmwjX",
74
- "created": "2017-05-19T15:43:40.984",
75
- "name": "Under 100%",
76
- "endValue": 100.0,
77
- "color": "#FF9C89",
78
- "displayName": "Under 100%",
79
- "externalAccess": false,
80
- "startValue": 0.0,
81
- "favorite": false,
82
- "access": {
83
- "read": true,
84
- "update": true,
85
- "externalize": false,
86
- "delete": true,
87
- "write": true,
88
- "manage": true
30
+ {
31
+ "name": "Above 100%",
32
+ "created": "2017-05-19T15:43:40.983",
33
+ "lastUpdated": "2017-05-19T15:43:40.983",
34
+ "translations": [],
35
+ "favorites": [],
36
+ "sharing": { "external": false, "users": {}, "userGroups": {} },
37
+ "startValue": 100.0,
38
+ "endValue": 900.0,
39
+ "color": "#B4F3BD",
40
+ "access": {
41
+ "manage": true,
42
+ "externalize": false,
43
+ "write": true,
44
+ "read": true,
45
+ "update": true,
46
+ "delete": true
47
+ },
48
+ "displayName": "Above 100%",
49
+ "favorite": false,
50
+ "id": "I0lBkYHTjPw",
51
+ "attributeValues": []
89
52
  },
90
- "favorites": [
91
-
92
- ],
93
- "translations": [
94
-
95
- ],
96
- "userGroupAccesses": [
97
-
98
- ],
99
- "attributeValues": [
100
-
101
- ],
102
- "userAccesses": [
103
-
104
- ]
105
- }
106
- ],
107
- "translations": [
108
-
53
+ {
54
+ "name": "Under 100%",
55
+ "created": "2017-05-19T15:43:40.984",
56
+ "lastUpdated": "2017-05-19T15:43:40.984",
57
+ "translations": [],
58
+ "favorites": [],
59
+ "sharing": { "external": false, "users": {}, "userGroups": {} },
60
+ "startValue": 0.0,
61
+ "endValue": 100.0,
62
+ "color": "#FF9C89",
63
+ "access": {
64
+ "manage": true,
65
+ "externalize": false,
66
+ "write": true,
67
+ "read": true,
68
+ "update": true,
69
+ "delete": true
70
+ },
71
+ "displayName": "Under 100%",
72
+ "favorite": false,
73
+ "id": "qCU0BSbmwjX",
74
+ "attributeValues": []
75
+ }
109
76
  ],
110
- "userAccesses": [
111
-
112
- ]
113
- }
77
+ "access": {
78
+ "manage": true,
79
+ "externalize": false,
80
+ "write": true,
81
+ "read": true,
82
+ "update": true,
83
+ "delete": true
84
+ },
85
+ "displayName": "Under or above 100%",
86
+ "favorite": false,
87
+ "user": {
88
+ "id": "GOLswS44mh8",
89
+ "code": null,
90
+ "name": "Tom Wakiki",
91
+ "displayName": "Tom Wakiki",
92
+ "username": "system"
93
+ },
94
+ "href": "https://debug.dhis2.org/dev/api/legendSets/gFJUXah1uRH",
95
+ "id": "gFJUXah1uRH",
96
+ "attributeValues": []
97
+ }
@@ -3,7 +3,6 @@
3
3
  "id": "YXZjH1F9ntO",
4
4
  "created": "2020-09-07T13:01:07.853",
5
5
  "name": "TEST - Empty Columns Error 2",
6
- "publicAccess": "--------",
7
6
  "legendDisplayStyle": "FILL",
8
7
  "type": "PIVOT_TABLE",
9
8
  "hideEmptyColumns": false,
@@ -64,14 +63,11 @@
64
63
  "user": {
65
64
  "name": "Astride Traore",
66
65
  "displayName": "Astride Traore",
67
- "userCredentials": {
68
- "username": "admin"
69
- }
66
+ "username": "admin"
70
67
  },
71
68
  "translations": [],
72
69
  "yearlySeries": [],
73
70
  "interpretations": [],
74
- "userGroupAccesses": [],
75
71
  "subscribers": [],
76
72
  "optionalAxes": [],
77
73
  "columns": [
@@ -459,7 +455,6 @@
459
455
  ]
460
456
  }
461
457
  ],
462
- "userAccesses": [],
463
458
  "favorites": [],
464
459
  "filters": [
465
460
  {
@@ -489,4 +484,4 @@
489
484
  ]
490
485
  }
491
486
  ]
492
- }
487
+ }
@@ -3,7 +3,6 @@
3
3
  "id": "UlfTKWZWV4u",
4
4
  "created": "2018-04-13T14:48:36.803",
5
5
  "name": "ANC: 1 and 3 coverage Yearly",
6
- "publicAccess": "rw------",
7
6
  "type": "BAR",
8
7
  "subscribed": false,
9
8
  "displayDescription": "This chart allows us to compare the performance of districts and allows peers to measure their performance against each other. This implies we can spot poor performers as we all as top performers.",
@@ -39,9 +38,7 @@
39
38
  },
40
39
  "user": {
41
40
  "displayName": "John Traore",
42
- "userCredentials": {
43
- "username": "admin"
44
- }
41
+ "username": "admin"
45
42
  },
46
43
  "dataElementGroupSetDimensions": [],
47
44
  "attributeDimensions": [],
@@ -60,7 +57,6 @@
60
57
  "created": "2018-06-01T14:25:01.086",
61
58
  "name": "DU4EnxBgP3A",
62
59
  "displayName": "DU4EnxBgP3A",
63
- "publicAccess": "rw------",
64
60
  "type": "CHART",
65
61
  "externalAccess": false,
66
62
  "text": "<p>bla bla&nbsp;<a href=\"http://example.org\">test</a>&nbsp;and some smiles&nbsp;<img title=\"smiley\" alt=\"smiley\" width=\"23\" height=\"23\" src=\"http://localhost:8080/dhis-web-core-resource/ckeditor/4.6.1/plugins/smiley/images/regular_smile.png\" /></p>",
@@ -80,9 +76,7 @@
80
76
  "user": {
81
77
  "id": "xE7jOejl9FI",
82
78
  "displayName": "John Traore",
83
- "userCredentials": {
84
- "username": "admin"
85
- }
79
+ "username": "admin"
86
80
  },
87
81
  "chart": {
88
82
  "id": "UlfTKWZWV4u"
@@ -91,9 +85,7 @@
91
85
  "likedBy": [],
92
86
  "translations": [],
93
87
  "comments": [],
94
- "userGroupAccesses": [],
95
88
  "attributeValues": [],
96
- "userAccesses": [],
97
89
  "mentions": []
98
90
  },
99
91
  {
@@ -103,7 +95,6 @@
103
95
  "created": "2018-03-16T11:01:15.076",
104
96
  "name": "HBeV5W36cOx",
105
97
  "displayName": "HBeV5W36cOx",
106
- "publicAccess": "rw------",
107
98
  "type": "CHART",
108
99
  "externalAccess": false,
109
100
  "text": "test interpretation",
@@ -123,9 +114,7 @@
123
114
  "user": {
124
115
  "id": "xE7jOejl9FI",
125
116
  "displayName": "John Traore",
126
- "userCredentials": {
127
- "username": "admin"
128
- }
117
+ "username": "admin"
129
118
  },
130
119
  "chart": {
131
120
  "id": "UlfTKWZWV4u"
@@ -134,9 +123,7 @@
134
123
  "likedBy": [],
135
124
  "translations": [],
136
125
  "comments": [],
137
- "userGroupAccesses": [],
138
- "attributeValues": [],
139
- "userAccesses": []
126
+ "attributeValues": []
140
127
  },
141
128
  {
142
129
  "lastUpdated": "2018-10-10T18:20:04.272",
@@ -145,7 +132,6 @@
145
132
  "created": "2018-10-10T18:20:04.272",
146
133
  "name": "Db1s6CsNsca",
147
134
  "displayName": "Db1s6CsNsca",
148
- "publicAccess": "rw------",
149
135
  "type": "CHART",
150
136
  "externalAccess": false,
151
137
  "text": "Bo, Tonkolili and Western Area are the best performers.",
@@ -165,9 +151,7 @@
165
151
  "user": {
166
152
  "id": "GOLswS44mh8",
167
153
  "displayName": "Tom Wakiki",
168
- "userCredentials": {
169
- "username": "system"
170
- }
154
+ "username": "system"
171
155
  },
172
156
  "chart": {
173
157
  "id": "UlfTKWZWV4u"
@@ -176,9 +160,7 @@
176
160
  "likedBy": [],
177
161
  "translations": [],
178
162
  "comments": [],
179
- "userGroupAccesses": [],
180
- "attributeValues": [],
181
- "userAccesses": []
163
+ "attributeValues": []
182
164
  },
183
165
  {
184
166
  "lastUpdated": "2018-11-03T11:02:30.780",
@@ -187,7 +169,6 @@
187
169
  "created": "2018-11-03T11:02:30.780",
188
170
  "name": "c5sjWWhIPDE",
189
171
  "displayName": "c5sjWWhIPDE",
190
- "publicAccess": "--------",
191
172
  "type": "CHART",
192
173
  "externalAccess": false,
193
174
  "text": "ANC 1 looks low in Kono! What could be the reason?",
@@ -207,9 +188,7 @@
207
188
  "user": {
208
189
  "id": "GOLswS44mh8",
209
190
  "displayName": "Tom Wakiki",
210
- "userCredentials": {
211
- "username": "system"
212
- }
191
+ "username": "system"
213
192
  },
214
193
  "chart": {
215
194
  "id": "UlfTKWZWV4u"
@@ -218,12 +197,9 @@
218
197
  "likedBy": [],
219
198
  "translations": [],
220
199
  "comments": [],
221
- "userGroupAccesses": [],
222
- "attributeValues": [],
223
- "userAccesses": []
200
+ "attributeValues": []
224
201
  }
225
202
  ],
226
- "userGroupAccesses": [],
227
203
  "columns": [
228
204
  {
229
205
  "dimension": "dx",
@@ -245,7 +221,6 @@
245
221
  "categoryDimensions": [],
246
222
  "programIndicatorDimensions": [],
247
223
  "attributeValues": [],
248
- "userAccesses": [],
249
224
  "favorites": [],
250
225
  "dataDimensionItems": [
251
226
  {
@@ -1,5 +1,5 @@
1
1
  import objectClean from 'd2-utilizr/lib/objectClean';
2
- import { DIMENSION_TYPE_ALL, DIMENSION_TYPE_INDICATOR, DIMENSION_TYPE_DATA_ELEMENT, DIMENSION_TYPE_DATA_SET, DIMENSION_TYPE_PROGRAM_INDICATOR, DIMENSION_TYPE_EVENT_DATA_ITEM, DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, DIMENSION_TYPE_PROGRAM_ATTRIBUTE, TOTALS } from '../modules/dataTypes.js';
2
+ import { DIMENSION_TYPE_ALL, DIMENSION_TYPE_INDICATOR, DIMENSION_TYPE_DATA_ELEMENT, DIMENSION_TYPE_DATA_SET, DIMENSION_TYPE_PROGRAM_INDICATOR, DIMENSION_TYPE_EVENT_DATA_ITEM, DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION, DIMENSION_TYPE_PROGRAM_ATTRIBUTE, DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION, TOTALS } from '../modules/dataTypes.js';
3
3
  import { onError } from './index.js';
4
4
 
5
5
  // Query definitions
@@ -45,6 +45,7 @@ export const dataItemsQuery = {
45
45
  searchTerm,
46
46
  page
47
47
  } = _ref3;
48
+ let fields = `id,${nameProp}~rename(name),dimensionItemType,expression,optionSetId`;
48
49
  const filters = [];
49
50
 
50
51
  // TODO: Extract all of this logic out of the query?
@@ -56,11 +57,20 @@ export const dataItemsQuery = {
56
57
  if (filter !== null && filter !== void 0 && filter.group && filter.group !== DIMENSION_TYPE_ALL && [DIMENSION_TYPE_EVENT_DATA_ITEM, DIMENSION_TYPE_PROGRAM_INDICATOR].includes(filter.dataType)) {
57
58
  filters.push(`programId:eq:${filter.group}`);
58
59
  }
60
+ if (filter !== null && filter !== void 0 && filter.dataItemId) {
61
+ // remove unnecessary fields
62
+ fields = `id,${nameProp}~rename(name),dimensionItemType`;
63
+ if (filter.dataType === DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION) {
64
+ filters.push(`programDataElementId:eq:${filter.dataItemId}`);
65
+ } else if (filter.dataType === DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION) {
66
+ filters.push(`programAttributeId:eq:${filter.dataItemId}`);
67
+ }
68
+ }
59
69
  if (searchTerm) {
60
70
  filters.push(`${nameProp}:ilike:${searchTerm}`);
61
71
  }
62
72
  return objectClean({
63
- fields: `id,${nameProp}~rename(name),dimensionItemType,expression`,
73
+ fields,
64
74
  order: `${nameProp}:asc`,
65
75
  filter: filters,
66
76
  paging: true,
@@ -18,14 +18,24 @@ export const validateProgramIndicatorExpressionMutation = {
18
18
  return expression;
19
19
  }
20
20
  };
21
+ export const validateProgramIndicatorFilterMutation = {
22
+ type: 'create',
23
+ resource: 'programIndicators/filter/description',
24
+ data: _ref3 => {
25
+ let {
26
+ filter
27
+ } = _ref3;
28
+ return filter;
29
+ }
30
+ };
21
31
  export const createCalculationMutation = {
22
32
  type: 'create',
23
33
  resource: 'expressionDimensionItems',
24
- data: _ref3 => {
34
+ data: _ref4 => {
25
35
  let {
26
36
  name,
27
37
  expression
28
- } = _ref3;
38
+ } = _ref4;
29
39
  return {
30
40
  name,
31
41
  shortName: name,
@@ -36,17 +46,17 @@ export const createCalculationMutation = {
36
46
  export const updateCalculationMutation = {
37
47
  type: 'json-patch',
38
48
  resource: 'expressionDimensionItems',
39
- id: _ref4 => {
49
+ id: _ref5 => {
40
50
  let {
41
51
  id
42
- } = _ref4;
52
+ } = _ref5;
43
53
  return id;
44
54
  },
45
- data: _ref5 => {
55
+ data: _ref6 => {
46
56
  let {
47
57
  name,
48
58
  expression
49
- } = _ref5;
59
+ } = _ref6;
50
60
  return [{
51
61
  op: 'add',
52
62
  path: '/name',
@@ -65,10 +75,10 @@ export const updateCalculationMutation = {
65
75
  export const deleteCalculationMutation = {
66
76
  type: 'delete',
67
77
  resource: 'expressionDimensionItems',
68
- id: _ref6 => {
78
+ id: _ref7 => {
69
79
  let {
70
80
  id
71
- } = _ref6;
81
+ } = _ref7;
72
82
  return id;
73
83
  }
74
84
  };
@@ -9,5 +9,5 @@ export default /*#__PURE__*/React.createElement("svg", {
9
9
  fillRule: "evenodd",
10
10
  clipRule: "evenodd",
11
11
  d: "M7 4H5V2H4V4H2V5H4V7H5V5H7V4ZM7 9.5H2V10.5H7V9.5ZM2 12H7V13H2V12ZM14 4H9V5H14V4ZM14 9.205L12.205 11L14 12.795L13.295 13.5L11.5 11.705L9.705 13.5L9 12.795L10.795 11L9 9.205L9.705 8.5L11.5 10.295L13.295 8.5L14 9.205Z",
12
- fill: "#404B5A"
12
+ fill: "currentColor"
13
13
  }));
@@ -6,5 +6,5 @@ export default /*#__PURE__*/React.createElement("svg", {
6
6
  xmlns: "http://www.w3.org/2000/svg"
7
7
  }, /*#__PURE__*/React.createElement("path", {
8
8
  d: "m8 5c1.65685425 0 3 1.34314575 3 3s-1.34314575 3-3 3-3-1.34314575-3-3 1.34314575-3 3-3zm0 1c-1.1045695 0-2 .8954305-2 2s.8954305 2 2 2 2-.8954305 2-2-.8954305-2-2-2z",
9
- fill: "#010101"
9
+ fill: "currentColor"
10
10
  }));
@@ -5,6 +5,6 @@ export default /*#__PURE__*/React.createElement("svg", {
5
5
  height: "16",
6
6
  viewBox: "0 0 16 16"
7
7
  }, /*#__PURE__*/React.createElement("path", {
8
- fill: "#6E7A8A",
8
+ fill: "currentColor",
9
9
  d: "M11,5 L11,11 L5,11 L5,5 L11,5 Z M10,6 L6,6 L6,10 L10,10 L10,6 Z"
10
10
  }));
@@ -5,6 +5,6 @@ export default /*#__PURE__*/React.createElement("svg", {
5
5
  height: "16",
6
6
  viewBox: "0 0 16 16"
7
7
  }, /*#__PURE__*/React.createElement("path", {
8
- fill: "#6E7A8A",
8
+ fill: "currentColor",
9
9
  d: "M8,4 C10.209139,4 12,5.790861 12,8 C12,10.209139 10.209139,12 8,12 C5.790861,12 4,10.209139 4,8 C4,5.790861 5.790861,4 8,4 Z M8,5 C6.34314575,5 5,6.34314575 5,8 C5,9.65685425 6.34314575,11 8,11 C9.65685425,11 11,9.65685425 11,8 C11,6.34314575 9.65685425,5 8,5 Z M8.5,6 L8.5,7.5 L9.5,7.5 L9.5,8.5 L7.5,8.5 L7.5,6 L8.5,6 Z"
10
10
  }));
@@ -1,9 +1,12 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
1
2
  import { useConfig } from '@dhis2/app-runtime';
2
3
  import PropTypes from 'prop-types';
3
- import React, { createContext, useContext, useCallback, useEffect, useState } from 'react';
4
+ import React, { createContext, useContext, useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
5
  import { dataTypeMap, DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM } from '../../modules/dataTypes.js';
5
6
  import { DIMENSION_ID_DATA } from '../../modules/predefinedDimensions.js';
6
- import ItemSelector from './ItemSelector.js';
7
+ import { InfoPopover } from './Info/InfoPopover.js';
8
+ import { ItemOptionsSelector } from './ItemOptionsSelector/ItemOptionsSelector.js';
9
+ import ItemSelector from './ItemSelector/ItemSelector.js';
7
10
  const DataDimensionCtx = /*#__PURE__*/createContext({});
8
11
  const DataDimension = _ref => {
9
12
  let {
@@ -19,6 +22,7 @@ const DataDimension = _ref => {
19
22
  const {
20
23
  serverVersion
21
24
  } = useConfig();
25
+ const itemsRef = useRef(new Map());
22
26
  const filterDataTypesByVersion = useCallback(dataTypes => dataTypes.filter(_ref2 => {
23
27
  let {
24
28
  id
@@ -29,36 +33,90 @@ const DataDimension = _ref => {
29
33
  );
30
34
  }), [serverVersion.minor]);
31
35
  const [dataTypes, setDataTypes] = useState(filterDataTypesByVersion(enabledDataTypes || Object.values(dataTypeMap)));
36
+ const supportsEDI = dataTypes.map(_ref3 => {
37
+ let {
38
+ id
39
+ } = _ref3;
40
+ return id;
41
+ }).includes(DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM);
42
+ const [currentCalculation, setCurrentCalculation] = useState();
43
+ const [currentDataItem, setCurrentDataItem] = useState();
44
+ const [infoDataItem, setInfoDataItem] = useState();
45
+ const selectedItems = useMemo(() => selectedDimensions.map(item => ({
46
+ value: item.id,
47
+ label: item.name,
48
+ isActive: item.isActive,
49
+ type: item.type,
50
+ optionSetId: item.optionSetId,
51
+ expression: item.expression,
52
+ access: item.access
53
+ })), [selectedDimensions]);
32
54
  const onSelectItems = selectedItem => onSelect({
33
55
  dimensionId: DIMENSION_ID_DATA,
34
56
  items: selectedItem.map(item => ({
35
57
  id: item.value,
36
58
  name: item.label,
37
59
  type: item.type,
60
+ optionSetId: item.optionSetId,
38
61
  expression: item.expression
39
62
  }))
40
63
  });
41
64
  useEffect(() => enabledDataTypes && setDataTypes(filterDataTypesByVersion(enabledDataTypes)), [enabledDataTypes, filterDataTypesByVersion]);
65
+ const onEditClick = dataItem => {
66
+ var _dataItem$access;
67
+ if (dataItem.type === DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM && !(((_dataItem$access = dataItem.access) === null || _dataItem$access === void 0 ? void 0 : _dataItem$access.write) === false) && supportsEDI) {
68
+ // calculation
69
+ setCurrentCalculation({
70
+ id: dataItem.value,
71
+ name: dataItem.label,
72
+ expression: dataItem.expression
73
+ });
74
+ } else if (dataItem.optionSetId) {
75
+ setCurrentDataItem({
76
+ id: dataItem.value,
77
+ name: dataItem.label,
78
+ type: dataItem.type,
79
+ optionSetId: dataItem.optionSetId
80
+ });
81
+ }
82
+ };
42
83
  return /*#__PURE__*/React.createElement(DataDimensionCtx.Provider, {
43
84
  value: {
44
85
  visType,
45
86
  currentUser
46
87
  }
47
88
  }, /*#__PURE__*/React.createElement(ItemSelector, {
48
- selectedItems: selectedDimensions.map(item => ({
49
- value: item.id,
50
- label: item.name,
51
- isActive: item.isActive,
52
- type: item.type,
53
- expression: item.expression,
54
- access: item.access
55
- })),
89
+ selectedItems: selectedItems,
56
90
  onSelect: onSelectItems,
57
91
  displayNameProp: displayNameProp,
58
92
  infoBoxMessage: infoBoxMessage,
59
93
  dataTest: 'data-dimension',
60
94
  dataTypes: dataTypes,
61
- onEDISave: onCalculationSave
95
+ itemsRef: itemsRef,
96
+ supportsEDI: supportsEDI,
97
+ onEDISave: onCalculationSave,
98
+ isOptionViewMode: Boolean(currentDataItem),
99
+ currentCalculation: currentCalculation,
100
+ setCurrentCalculation: setCurrentCalculation,
101
+ infoDataItem: infoDataItem,
102
+ setInfoDataItem: setInfoDataItem,
103
+ onEditClick: onEditClick
104
+ }), currentDataItem && /*#__PURE__*/React.createElement(ItemOptionsSelector, _extends({}, currentDataItem, {
105
+ selectedItems: selectedItems,
106
+ onSelect: onSelectItems,
107
+ displayNameProp: displayNameProp,
108
+ dataTest: 'data-dimension',
109
+ itemsRef: itemsRef,
110
+ infoDataItem: infoDataItem,
111
+ setInfoDataItem: setInfoDataItem,
112
+ onClose: () => setCurrentDataItem(),
113
+ onEditClick: onEditClick
114
+ })), infoDataItem && /*#__PURE__*/React.createElement(InfoPopover, {
115
+ dataTest: 'data-dimension-info',
116
+ item: infoDataItem,
117
+ reference: itemsRef.current.get(infoDataItem.id),
118
+ onClose: () => setInfoDataItem(),
119
+ displayNameProp: displayNameProp
62
120
  }));
63
121
  };
64
122
  DataDimension.propTypes = {
@@ -90,7 +90,7 @@ export const CalculationInfo = _ref3 => {
90
90
  }, styles));
91
91
  };
92
92
  CalculationInfo.propTypes = {
93
- displayNameProp: PropTypes.string,
94
- id: PropTypes.string,
95
- type: PropTypes.string
93
+ displayNameProp: PropTypes.string.isRequired,
94
+ id: PropTypes.string.isRequired,
95
+ type: PropTypes.string.isRequired
96
96
  };
@@ -100,7 +100,7 @@ export const DataElementInfo = _ref3 => {
100
100
  }, displayName);
101
101
  }))))), (data === null || data === void 0 ? void 0 : data.dataElement.optionSet) && /*#__PURE__*/React.createElement("tr", {
102
102
  className: `jsx-${styles.__hash}`
103
- }, /*#__PURE__*/React.createElement("td", {
103
+ }, /*#__PURE__*/React.createElement("th", {
104
104
  className: `jsx-${styles.__hash}`
105
105
  }, i18n.t('Option set')), /*#__PURE__*/React.createElement("td", {
106
106
  className: `jsx-${styles.__hash}`
@@ -121,7 +121,7 @@ export const DataElementInfo = _ref3 => {
121
121
  }, styles));
122
122
  };
123
123
  DataElementInfo.propTypes = {
124
- displayNameProp: PropTypes.string,
125
- id: PropTypes.string,
126
- type: PropTypes.string
124
+ displayNameProp: PropTypes.string.isRequired,
125
+ id: PropTypes.string.isRequired,
126
+ type: PropTypes.string.isRequired
127
127
  };