@dhis2/analytics 20.6.4 → 21.0.0-alpha.3

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 (212) hide show
  1. package/build/cjs/__demo__/Filter.stories.js +2 -2
  2. package/build/cjs/__demo__/FixedPeriodSelect.stories.js +2 -2
  3. package/build/cjs/__demo__/OpenFileDialog.stories.js +1 -1
  4. package/build/cjs/__demo__/OrgUnitDimension.stories.js +104 -0
  5. package/build/cjs/__demo__/PivotTable.stories.js +2 -2
  6. package/build/cjs/api/analytics/AnalyticsBase.js +1 -1
  7. package/build/cjs/api/analytics/AnalyticsRequest.js +1 -1
  8. package/build/cjs/api/analytics/AnalyticsRequestBase.js +3 -3
  9. package/build/cjs/api/analytics/AnalyticsRequestPropertiesMixin.js +7 -7
  10. package/build/cjs/api/analytics/AnalyticsResponse.js +2 -2
  11. package/build/cjs/api/analytics/__tests__/AnalyticsAggregate.spec.js +11 -1
  12. package/build/cjs/api/analytics/__tests__/AnalyticsRequest.spec.js +9 -9
  13. package/build/cjs/api/analytics/__tests__/AnalyticsRequestBase.spec.js +4 -4
  14. package/build/cjs/api/analytics/utils.js +1 -1
  15. package/build/cjs/api/dimensions.js +37 -37
  16. package/build/cjs/api/organisationUnits.js +100 -46
  17. package/build/cjs/components/DataDimension/DataTypesSelector.js +3 -3
  18. package/build/cjs/components/DataDimension/DetailSelector.js +2 -2
  19. package/build/cjs/components/DataDimension/GroupSelector.js +9 -9
  20. package/build/cjs/components/DataDimension/ItemSelector.js +19 -19
  21. package/build/cjs/components/DataDimension/MetricSelector.js +3 -3
  22. package/build/cjs/components/DataDimension/styles/DataTypesSelector.style.js +1 -1
  23. package/build/cjs/components/DataDimension/styles/DetailSelector.style.js +1 -1
  24. package/build/cjs/components/DataDimension/styles/GroupSelector.style.js +1 -1
  25. package/build/cjs/components/DataDimension/styles/MetricSelector.style.js +1 -1
  26. package/build/cjs/components/DimensionMenu.js +10 -10
  27. package/build/cjs/components/DimensionsPanel/DimensionsPanel.js +2 -2
  28. package/build/cjs/components/DimensionsPanel/List/DimensionItem.js +5 -5
  29. package/build/cjs/components/DimensionsPanel/List/DimensionLabel.js +2 -2
  30. package/build/cjs/components/DimensionsPanel/List/DimensionList.js +10 -10
  31. package/build/cjs/components/DimensionsPanel/List/styles/DimensionList.style.js +1 -1
  32. package/build/cjs/components/DimensionsPanel/styles/DimensionsPanel.style.js +1 -1
  33. package/build/cjs/components/DynamicDimension/DynamicDimension.js +4 -4
  34. package/build/cjs/components/DynamicDimension/ItemSelector.js +8 -8
  35. package/build/cjs/components/DynamicDimension/styles/DynamicDimension.style.js +1 -1
  36. package/build/cjs/components/FileMenu/DeleteDialog.js +4 -4
  37. package/build/cjs/components/FileMenu/FileMenu.js +7 -7
  38. package/build/cjs/components/FileMenu/FileMenu.styles.js +1 -1
  39. package/build/cjs/components/FileMenu/GetLinkDialog.js +3 -3
  40. package/build/cjs/components/FileMenu/RenameDialog.js +4 -4
  41. package/build/cjs/components/FileMenu/SaveAsDialog.js +4 -4
  42. package/build/cjs/components/FileMenu/__tests__/DeleteDialog.spec.js +1 -1
  43. package/build/cjs/components/FileMenu/__tests__/RenameDialog.spec.js +1 -1
  44. package/build/cjs/components/FileMenu/__tests__/SaveAsDialog.spec.js +1 -1
  45. package/build/cjs/components/FileMenu/utils.js +3 -3
  46. package/build/cjs/components/Filter/Filter.js +1 -1
  47. package/build/cjs/components/Filter/styles/Filter.style.js +1 -1
  48. package/build/cjs/components/LegendKey/LegendKey.js +9 -9
  49. package/build/cjs/components/LegendKey/styles/LegendKey.style.js +1 -1
  50. package/build/cjs/components/OpenFileDialog/CustomSelectOption.js +2 -2
  51. package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +21 -21
  52. package/build/cjs/components/OpenFileDialog/OpenFileDialog.styles.js +1 -1
  53. package/build/cjs/components/OpenFileDialog/styles/CustomSelectOption.style.js +1 -1
  54. package/build/cjs/components/Options/VisualizationOptions.js +2 -2
  55. package/build/cjs/components/Options/styles/VisualizationOptions.style.js +10 -10
  56. package/build/cjs/components/OrgUnitDimension/OrgUnitDimension.js +224 -195
  57. package/build/cjs/components/OrgUnitDimension/OrgUnitDimensionOld.js +244 -0
  58. package/build/cjs/components/OrgUnitDimension/styles/OrgUnitDimension.style.js +5 -2
  59. package/build/cjs/components/PeriodDimension/FixedPeriodFilter.js +5 -5
  60. package/build/cjs/components/PeriodDimension/FixedPeriodSelect.js +6 -6
  61. package/build/cjs/components/PeriodDimension/PeriodTransfer.js +11 -11
  62. package/build/cjs/components/PeriodDimension/RelativePeriodFilter.js +2 -2
  63. package/build/cjs/components/PeriodDimension/styles/FixedPeriodSelect.style.js +1 -1
  64. package/build/cjs/components/PeriodDimension/styles/PeriodFilter.style.js +1 -1
  65. package/build/cjs/components/PeriodDimension/utils/fixedPeriods.js +49 -49
  66. package/build/cjs/components/PivotTable/PivotTable.js +2 -2
  67. package/build/cjs/components/PivotTable/PivotTableCell.js +3 -3
  68. package/build/cjs/components/PivotTable/PivotTableColumnHeaderCell.js +2 -2
  69. package/build/cjs/components/PivotTable/PivotTableContainer.js +2 -2
  70. package/build/cjs/components/PivotTable/PivotTableEngineContext.js +2 -2
  71. package/build/cjs/components/PivotTable/PivotTableSortIcon.js +2 -2
  72. package/build/cjs/components/PivotTable/PivotTableTitleRow.js +4 -4
  73. package/build/cjs/components/PivotTable/PivotTableValueCell.js +2 -2
  74. package/build/cjs/components/PivotTable/styles/PivotTable.style.js +3 -3
  75. package/build/cjs/components/TransferOption.js +7 -7
  76. package/build/cjs/components/styles/DimensionSelector.style.js +1 -1
  77. package/build/cjs/components/styles/TransferOption.style.js +1 -1
  78. package/build/cjs/index.js +24 -6
  79. package/build/cjs/locales/en/translations.json +15 -0
  80. package/build/cjs/locales/ru/translations.json +1 -1
  81. package/build/cjs/modules/axis.js +1 -1
  82. package/build/cjs/modules/layoutUiRules/rules.js +1 -1
  83. package/build/cjs/modules/ouIdHelper/index.js +9 -3
  84. package/build/cjs/modules/pivotTable/PivotTableEngine.js +3 -3
  85. package/build/cjs/modules/pivotTable/measureText.js +1 -1
  86. package/build/cjs/modules/relativeItems/index.js +1 -1
  87. package/build/cjs/modules/visTypes.js +1 -1
  88. package/build/cjs/visualizations/config/adapters/dhis_highcharts/addTrendLines.js +1 -1
  89. package/build/cjs/visualizations/config/adapters/dhis_highcharts/axis.js +2 -2
  90. package/build/cjs/visualizations/config/adapters/dhis_highcharts/getAxisTitle.js +1 -1
  91. package/build/cjs/visualizations/config/adapters/dhis_highcharts/index.js +2 -2
  92. package/build/cjs/visualizations/config/adapters/dhis_highcharts/legend.js +19 -8
  93. package/build/cjs/visualizations/config/adapters/dhis_highcharts/legendSet.js +1 -1
  94. package/build/cjs/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  95. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +1 -1
  96. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/index.js +1 -1
  97. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/scatter.js +1 -1
  98. package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +1 -1
  99. package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js +3 -3
  100. package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +2 -2
  101. package/build/cjs/visualizations/config/generators/dhis/singleValue.js +5 -5
  102. package/build/cjs/visualizations/config/index.js +3 -3
  103. package/build/cjs/visualizations/store/adapters/dhis_dhis/index.js +1 -1
  104. package/build/cjs/visualizations/store/adapters/dhis_highcharts/index.js +1 -1
  105. package/build/cjs/visualizations/store/adapters/dhis_highcharts/twoCategory.js +1 -1
  106. package/build/cjs/visualizations/store/index.js +2 -2
  107. package/build/cjs/visualizations/util/axisId.js +1 -1
  108. package/build/cjs/visualizations/util/getFilterText.js +3 -3
  109. package/build/es/__demo__/OpenFileDialog.stories.js +1 -1
  110. package/build/es/__demo__/OrgUnitDimension.stories.js +93 -0
  111. package/build/es/api/analytics/AnalyticsBase.js +1 -1
  112. package/build/es/api/analytics/AnalyticsRequest.js +1 -1
  113. package/build/es/api/analytics/AnalyticsRequestBase.js +3 -3
  114. package/build/es/api/analytics/AnalyticsRequestPropertiesMixin.js +7 -7
  115. package/build/es/api/analytics/AnalyticsResponse.js +2 -2
  116. package/build/es/api/analytics/__tests__/AnalyticsAggregate.spec.js +11 -1
  117. package/build/es/api/analytics/__tests__/AnalyticsRequest.spec.js +9 -9
  118. package/build/es/api/analytics/__tests__/AnalyticsRequestBase.spec.js +4 -4
  119. package/build/es/api/analytics/utils.js +1 -1
  120. package/build/es/api/dimensions.js +39 -39
  121. package/build/es/api/organisationUnits.js +93 -43
  122. package/build/es/components/DataDimension/DataTypesSelector.js +3 -3
  123. package/build/es/components/DataDimension/DetailSelector.js +2 -2
  124. package/build/es/components/DataDimension/GroupSelector.js +7 -7
  125. package/build/es/components/DataDimension/ItemSelector.js +17 -17
  126. package/build/es/components/DataDimension/MetricSelector.js +3 -3
  127. package/build/es/components/DataDimension/styles/DataTypesSelector.style.js +1 -1
  128. package/build/es/components/DataDimension/styles/DetailSelector.style.js +1 -1
  129. package/build/es/components/DataDimension/styles/GroupSelector.style.js +1 -1
  130. package/build/es/components/DataDimension/styles/MetricSelector.style.js +1 -1
  131. package/build/es/components/DimensionMenu.js +10 -10
  132. package/build/es/components/DimensionsPanel/List/DimensionItem.js +3 -3
  133. package/build/es/components/DimensionsPanel/List/DimensionList.js +8 -8
  134. package/build/es/components/DimensionsPanel/List/styles/DimensionList.style.js +1 -1
  135. package/build/es/components/DimensionsPanel/styles/DimensionsPanel.style.js +1 -1
  136. package/build/es/components/DynamicDimension/DynamicDimension.js +4 -4
  137. package/build/es/components/DynamicDimension/ItemSelector.js +6 -6
  138. package/build/es/components/DynamicDimension/styles/DynamicDimension.style.js +1 -1
  139. package/build/es/components/FileMenu/DeleteDialog.js +1 -1
  140. package/build/es/components/FileMenu/FileMenu.js +4 -4
  141. package/build/es/components/FileMenu/FileMenu.styles.js +1 -1
  142. package/build/es/components/FileMenu/GetLinkDialog.js +2 -2
  143. package/build/es/components/FileMenu/RenameDialog.js +1 -1
  144. package/build/es/components/FileMenu/SaveAsDialog.js +1 -1
  145. package/build/es/components/FileMenu/__tests__/DeleteDialog.spec.js +1 -1
  146. package/build/es/components/FileMenu/__tests__/RenameDialog.spec.js +1 -1
  147. package/build/es/components/FileMenu/__tests__/SaveAsDialog.spec.js +1 -1
  148. package/build/es/components/FileMenu/utils.js +3 -3
  149. package/build/es/components/Filter/Filter.js +1 -1
  150. package/build/es/components/Filter/styles/Filter.style.js +1 -1
  151. package/build/es/components/LegendKey/LegendKey.js +9 -9
  152. package/build/es/components/LegendKey/styles/LegendKey.style.js +1 -1
  153. package/build/es/components/OpenFileDialog/CustomSelectOption.js +2 -2
  154. package/build/es/components/OpenFileDialog/OpenFileDialog.js +19 -19
  155. package/build/es/components/OpenFileDialog/OpenFileDialog.styles.js +1 -1
  156. package/build/es/components/OpenFileDialog/styles/CustomSelectOption.style.js +1 -1
  157. package/build/es/components/Options/styles/VisualizationOptions.style.js +10 -10
  158. package/build/es/components/OrgUnitDimension/OrgUnitDimension.js +224 -196
  159. package/build/es/components/OrgUnitDimension/OrgUnitDimensionOld.js +220 -0
  160. package/build/es/components/OrgUnitDimension/styles/OrgUnitDimension.style.js +3 -2
  161. package/build/es/components/PeriodDimension/FixedPeriodFilter.js +5 -5
  162. package/build/es/components/PeriodDimension/FixedPeriodSelect.js +3 -3
  163. package/build/es/components/PeriodDimension/PeriodTransfer.js +9 -9
  164. package/build/es/components/PeriodDimension/RelativePeriodFilter.js +2 -2
  165. package/build/es/components/PeriodDimension/styles/FixedPeriodSelect.style.js +1 -1
  166. package/build/es/components/PeriodDimension/styles/PeriodFilter.style.js +1 -1
  167. package/build/es/components/PeriodDimension/utils/fixedPeriods.js +49 -49
  168. package/build/es/components/PivotTable/PivotTableCell.js +3 -3
  169. package/build/es/components/PivotTable/PivotTableColumnHeaderCell.js +2 -2
  170. package/build/es/components/PivotTable/PivotTableContainer.js +2 -2
  171. package/build/es/components/PivotTable/PivotTableSortIcon.js +2 -2
  172. package/build/es/components/PivotTable/PivotTableTitleRow.js +2 -2
  173. package/build/es/components/PivotTable/styles/PivotTable.style.js +3 -3
  174. package/build/es/components/TransferOption.js +6 -6
  175. package/build/es/components/styles/DimensionSelector.style.js +1 -1
  176. package/build/es/components/styles/TransferOption.style.js +1 -1
  177. package/build/es/index.js +2 -2
  178. package/build/es/locales/en/translations.json +15 -0
  179. package/build/es/locales/ru/translations.json +1 -1
  180. package/build/es/modules/axis.js +1 -1
  181. package/build/es/modules/layoutUiRules/rules.js +1 -1
  182. package/build/es/modules/ouIdHelper/index.js +5 -2
  183. package/build/es/modules/pivotTable/PivotTableEngine.js +3 -3
  184. package/build/es/modules/pivotTable/measureText.js +1 -1
  185. package/build/es/modules/relativeItems/index.js +2 -2
  186. package/build/es/modules/visTypes.js +1 -1
  187. package/build/es/visualizations/config/adapters/dhis_highcharts/addTrendLines.js +1 -1
  188. package/build/es/visualizations/config/adapters/dhis_highcharts/axis.js +2 -2
  189. package/build/es/visualizations/config/adapters/dhis_highcharts/getAxisTitle.js +1 -1
  190. package/build/es/visualizations/config/adapters/dhis_highcharts/legend.js +19 -8
  191. package/build/es/visualizations/config/adapters/dhis_highcharts/legendSet.js +1 -1
  192. package/build/es/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  193. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +1 -1
  194. package/build/es/visualizations/config/adapters/dhis_highcharts/title/index.js +1 -1
  195. package/build/es/visualizations/config/adapters/dhis_highcharts/title/scatter.js +1 -1
  196. package/build/es/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +1 -1
  197. package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js +3 -3
  198. package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +2 -2
  199. package/build/es/visualizations/config/generators/dhis/singleValue.js +5 -5
  200. package/build/es/visualizations/config/index.js +3 -3
  201. package/build/es/visualizations/store/adapters/dhis_dhis/index.js +1 -1
  202. package/build/es/visualizations/store/adapters/dhis_highcharts/index.js +1 -1
  203. package/build/es/visualizations/store/adapters/dhis_highcharts/twoCategory.js +1 -1
  204. package/build/es/visualizations/store/index.js +2 -2
  205. package/build/es/visualizations/util/axisId.js +1 -1
  206. package/build/es/visualizations/util/getFilterText.js +3 -3
  207. package/package.json +2 -1
  208. package/CHANGELOG.md +0 -2749
  209. package/build/cjs/api/organisationUnits-dataEngine.js +0 -119
  210. package/build/cjs/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +0 -96
  211. package/build/es/api/organisationUnits-dataEngine.js +0 -96
  212. package/build/es/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +0 -86
@@ -62,13 +62,13 @@ class AnalyticsRequestBase {
62
62
  encodedItems.sort();
63
63
  }
64
64
 
65
- return "".concat(dimension, ":").concat(encodedItems.join(';'));
65
+ return `${dimension}:${encodedItems.join(';')}`;
66
66
  }
67
67
 
68
68
  return dimension;
69
69
  });
70
70
  const endPoint = [this.endPoint, this.path, this.program].filter(e => !!e).join('/');
71
- return "".concat(endPoint, ".").concat(this.format, "?dimension=").concat(encodedDimensions.join('&dimension='));
71
+ return `${endPoint}.${this.format}?dimension=${encodedDimensions.join('&dimension=')}`;
72
72
  }
73
73
  /**
74
74
  * @private
@@ -103,7 +103,7 @@ class AnalyticsRequestBase {
103
103
  encodedItems.sort();
104
104
  }
105
105
 
106
- return "".concat(dimension, ":").concat(encodedItems.join(';'));
106
+ return `${dimension}:${encodedItems.join(';')}`;
107
107
  }
108
108
 
109
109
  return dimension;
@@ -97,7 +97,7 @@ class extends base {
97
97
  if (aggregationTypes.has(aggregationType)) {
98
98
  this.parameters.aggregationType = aggregationType;
99
99
  } else if (aggregationType !== 'DEFAULT') {
100
- console.warn("analytics.request.withAggregationType(): \"".concat(value, "\" not listed as possible value"));
100
+ console.warn(`analytics.request.withAggregationType(): "${value}" not listed as possible value`);
101
101
  this.parameters.aggregationType = value;
102
102
  }
103
103
 
@@ -333,7 +333,7 @@ class extends base {
333
333
  if (displayProperties.has(displayProperty)) {
334
334
  this.parameters.displayProperty = displayProperty;
335
335
  } else {
336
- console.warn("analytics.request.withDisplayProperty(): \"".concat(value, "\" not listed as possible value"));
336
+ console.warn(`analytics.request.withDisplayProperty(): "${value}" not listed as possible value`);
337
337
  this.parameters.displayProperty = value;
338
338
  }
339
339
 
@@ -580,7 +580,7 @@ class extends base {
580
580
  if (eventStatuses.has(eventStatus)) {
581
581
  this.parameters.eventStatus = eventStatus;
582
582
  } else {
583
- console.warn("analytics.request.withEventStatus(): \"".concat(value, "\" not listed as possible value"));
583
+ console.warn(`analytics.request.withEventStatus(): "${value}" not listed as possible value`);
584
584
  this.parameters.eventStatus = value;
585
585
  }
586
586
 
@@ -606,7 +606,7 @@ class extends base {
606
606
  if (programStatuses.has(programStatus)) {
607
607
  this.parameters.programStatus = programStatus;
608
608
  } else {
609
- console.warn("analytics.request.withProgramStatus(): \"".concat(value, "\" not listed as possible value"));
609
+ console.warn(`analytics.request.withProgramStatus(): "${value}" not listed as possible value`);
610
610
  this.parameters.programStatus = value;
611
611
  }
612
612
 
@@ -632,7 +632,7 @@ class extends base {
632
632
  if (ouModes.has(ouMode)) {
633
633
  this.parameters.ouMode = ouMode;
634
634
  } else {
635
- console.warn("analytics.request.withOuMode(): \"".concat(value, "\" not listed as possible value"));
635
+ console.warn(`analytics.request.withOuMode(): "${value}" not listed as possible value`);
636
636
  this.parameters.ouMode = value;
637
637
  }
638
638
 
@@ -770,7 +770,7 @@ class extends base {
770
770
  if (sortOrders.has(sortOrder)) {
771
771
  this.parameters.sortOrder = sortOrder;
772
772
  } else {
773
- console.warn("analytics.request.withSortOrder(): \"".concat(value, "\" not listed as possible value"));
773
+ console.warn(`analytics.request.withSortOrder(): "${value}" not listed as possible value`);
774
774
  this.parameters.sortOrder = value;
775
775
  }
776
776
 
@@ -817,7 +817,7 @@ class extends base {
817
817
  if (outputTypes.has(type)) {
818
818
  this.parameters.outputType = type;
819
819
  } else {
820
- console.warn("analytics.request.withOutputType(): \"".concat(value, "\" not listed as possible value"));
820
+ console.warn(`analytics.request.withOutputType(): "${value}" not listed as possible value`);
821
821
  this.parameters.outputType = value;
822
822
  }
823
823
 
@@ -14,7 +14,7 @@ const getParseMiddleware = type => {
14
14
  switch (type) {
15
15
  case 'STRING':
16
16
  case 'TEXT':
17
- return value => "".concat(value);
17
+ return value => `${value}`;
18
18
 
19
19
  case 'INTEGER':
20
20
  case 'NUMBER':
@@ -41,7 +41,7 @@ const isCollectHeader = (header, dimensions) => {
41
41
  return Boolean(Array.isArray(dimensions) && dimensions.length === 0);
42
42
  };
43
43
 
44
- const getPrefixedId = (id, prefix) => "".concat(prefix || '', " ").concat(id);
44
+ const getPrefixedId = (id, prefix) => `${prefix || ''} ${id}`;
45
45
 
46
46
  const getNameByIdsByValueType = (id, valueType) => {
47
47
  if (valueType === 'BOOLEAN') {
@@ -2,7 +2,17 @@ import fixtures from '../../../__fixtures__/fixtures';
2
2
  import DataEngineMock from '../__mocks__/DataEngine';
3
3
  import AnalyticsAggregate from '../AnalyticsAggregate';
4
4
  import AnalyticsRequest from '../AnalyticsRequest';
5
- const debugSqlFixture = "select de.name as de_name, de.uid as de_uid, de.dataelementid as de_id, pe.startdate as\nstart_date, pe.enddate as end_date, pt.name as pt_name, ou.name as ou_name, ou.uid as ou_uid, ou.organisationunitid as\nou_id, coc.name as coc_name, coc.uid as coc_uid, coc.categoryoptioncomboid as coc_id, aoc.name as aoc_name, aoc.uid as\naoc_uid, aoc.categoryoptioncomboid as aoc_id, dv.value as datavalue from datavalue dv inner join dataelement de on\ndv.dataelementid = de.dataelementid inner join period pe on dv.periodid = pe.periodid inner join periodtype pt on\npe.periodtypeid = pt.periodtypeid inner join organisationunit ou on dv.sourceid = ou.organisationunitid inner join\ncategoryoptioncombo coc on dv.categoryoptioncomboid = coc.categoryoptioncomboid inner join categoryoptioncombo aoc on\ndv.attributeoptioncomboid = aoc.categoryoptioncomboid where dv.dataelementid in (359596,359597) and ((pe.startdate >=\n '2016-01-01' and pe.enddate <= '2016-03-31') or (pe.startdate >= '2016-04-01' and pe.enddate <= '2016-06-30') ) and\n((dv.sourceid in (select organisationunitid from _orgunitstructure where idlevel2 = 264)) ) and dv.deleted is false\nlimit 100000";
5
+ const debugSqlFixture = `select de.name as de_name, de.uid as de_uid, de.dataelementid as de_id, pe.startdate as
6
+ start_date, pe.enddate as end_date, pt.name as pt_name, ou.name as ou_name, ou.uid as ou_uid, ou.organisationunitid as
7
+ ou_id, coc.name as coc_name, coc.uid as coc_uid, coc.categoryoptioncomboid as coc_id, aoc.name as aoc_name, aoc.uid as
8
+ aoc_uid, aoc.categoryoptioncomboid as aoc_id, dv.value as datavalue from datavalue dv inner join dataelement de on
9
+ dv.dataelementid = de.dataelementid inner join period pe on dv.periodid = pe.periodid inner join periodtype pt on
10
+ pe.periodtypeid = pt.periodtypeid inner join organisationunit ou on dv.sourceid = ou.organisationunitid inner join
11
+ categoryoptioncombo coc on dv.categoryoptioncomboid = coc.categoryoptioncomboid inner join categoryoptioncombo aoc on
12
+ dv.attributeoptioncomboid = aoc.categoryoptioncomboid where dv.dataelementid in (359596,359597) and ((pe.startdate >=
13
+ '2016-01-01' and pe.enddate <= '2016-03-31') or (pe.startdate >= '2016-04-01' and pe.enddate <= '2016-06-30') ) and
14
+ ((dv.sourceid in (select organisationunitid from _orgunitstructure where idlevel2 = 264)) ) and dv.deleted is false
15
+ limit 100000`;
6
16
  describe('Analytics.aggregate', () => {
7
17
  let aggregate;
8
18
  let request;
@@ -3,7 +3,7 @@ import AnalyticsRequest from '../AnalyticsRequest';
3
3
  let request;
4
4
  let expectedParameters;
5
5
 
6
- const getFuncName = parameter => "with".concat(parameter.charAt(0).toUpperCase()).concat(parameter.slice(1));
6
+ const getFuncName = parameter => `with${parameter.charAt(0).toUpperCase()}${parameter.slice(1)}`;
7
7
 
8
8
  describe('AnalyticsRequest', () => {
9
9
  beforeEach(() => {
@@ -234,12 +234,12 @@ describe('AnalyticsRequest', () => {
234
234
  ;
235
235
  ['aggregateData', 'coordinatesOnly', 'collapseDataDimensions', 'hideEmptyRows', 'hideEmptyColumns', 'hierarchyMeta', 'ignoreLimit', 'includeClusterPoints', 'includeNumDen', 'showHierarchy', 'skipData', 'skipMeta', 'skipRounding', 'tableLayout', 'includeMetadataDetails'].forEach(parameter => {
236
236
  const funcName = getFuncName(parameter);
237
- it("should add the ".concat(parameter, " parameter with default value"), () => {
237
+ it(`should add the ${parameter} parameter with default value`, () => {
238
238
  request[funcName]();
239
239
  expectedParameters[parameter] = true;
240
240
  expect(request.parameters).toEqual(expectedParameters);
241
241
  });
242
- it("should replace the ".concat(parameter, " parameter on subsequent calls with the specified value"), () => {
242
+ it(`should replace the ${parameter} parameter on subsequent calls with the specified value`, () => {
243
243
  request[funcName](false);
244
244
  expectedParameters[parameter] = false;
245
245
  expect(request.parameters).toEqual(expectedParameters);
@@ -255,18 +255,18 @@ describe('AnalyticsRequest', () => {
255
255
  'stage', 'startDate', 'userOrgUnit', 'value' // XXX
256
256
  ].forEach(parameter => {
257
257
  const funcName = getFuncName(parameter);
258
- it("should add the ".concat(parameter, " parameter with the specified value"), () => {
258
+ it(`should add the ${parameter} parameter with the specified value`, () => {
259
259
  request[funcName]('test');
260
260
  expectedParameters[parameter] = 'test';
261
261
  expect(request.parameters).toEqual(expectedParameters);
262
262
  });
263
- it("should replace the ".concat(parameter, " parameter on subsequent calls with the specified value"), () => {
263
+ it(`should replace the ${parameter} parameter on subsequent calls with the specified value`, () => {
264
264
  request = request[funcName]('test');
265
265
  request[funcName]('test2');
266
266
  expectedParameters[parameter] = 'test2';
267
267
  expect(request.parameters).toEqual(expectedParameters);
268
268
  });
269
- it("should not replace the ".concat(parameter, " parameter when called without passing a value"), () => {
269
+ it(`should not replace the ${parameter} parameter when called without passing a value`, () => {
270
270
  request = request[funcName]('test');
271
271
  request[funcName]();
272
272
  expectedParameters[parameter] = 'test';
@@ -282,17 +282,17 @@ describe('AnalyticsRequest', () => {
282
282
  Object.entries(params).forEach(([key, value]) => {
283
283
  const parameter = key;
284
284
  const funcName = getFuncName(parameter);
285
- it("should add the ".concat(parameter, " parameter with the default value"), () => {
285
+ it(`should add the ${parameter} parameter with the default value`, () => {
286
286
  request[funcName]();
287
287
  expectedParameters[parameter] = value;
288
288
  expect(request.parameters).toEqual(expectedParameters);
289
289
  });
290
- it("should add the ".concat(parameter, " parameter with the specified value"), () => {
290
+ it(`should add the ${parameter} parameter with the specified value`, () => {
291
291
  request[funcName](10);
292
292
  expectedParameters[parameter] = 10;
293
293
  expect(request.parameters).toEqual(expectedParameters);
294
294
  });
295
- it("should replace the ".concat(parameter, " parameter on subsequent calls with the specified value"), () => {
295
+ it(`should replace the ${parameter} parameter on subsequent calls with the specified value`, () => {
296
296
  request = request[funcName](10);
297
297
  request[funcName](20);
298
298
  expectedParameters[parameter] = 20;
@@ -1,13 +1,13 @@
1
1
  import AnalyticsRequestBase from '../AnalyticsRequestBase';
2
2
  import { customEncodeURIComponent } from '../utils';
3
3
  jest.mock('../utils', () => ({
4
- customEncodeURIComponent: jest.fn(x => "<".concat(x, ">"))
4
+ customEncodeURIComponent: jest.fn(x => `<${x}>`)
5
5
  }));
6
6
  const endPoint = 'foo';
7
7
  const path = 'bar';
8
8
  const program = 'census';
9
9
  const format = 'json';
10
- const basePath = "".concat(endPoint, "/").concat(path, "/").concat(program, ".").concat(format);
10
+ const basePath = `${endPoint}/${path}/${program}.${format}`;
11
11
  const dimensions = [{
12
12
  dimension: 'ou',
13
13
  items: ['mars', 'earth']
@@ -44,7 +44,7 @@ describe('AnalyticsRequestBase', () => {
44
44
  });
45
45
  const url = request.buildUrl();
46
46
  expect(customEncodeURIComponent).toHaveBeenCalledTimes(4);
47
- expect(url).toBe("".concat(basePath, "?dimension=ou:<mars>;<earth>&dimension=dx:<population>&dimension=question&dimension=answer:<42>"));
47
+ expect(url).toBe(`${basePath}?dimension=ou:<mars>;<earth>&dimension=dx:<population>&dimension=question&dimension=answer:<42>`);
48
48
  });
49
49
  it('Should build a URL with sorted dimension parameters when options.sorted=true', () => {
50
50
  const request = buildRequest({
@@ -54,7 +54,7 @@ describe('AnalyticsRequestBase', () => {
54
54
  sorted: true
55
55
  });
56
56
  expect(customEncodeURIComponent).toHaveBeenCalledTimes(4);
57
- expect(url).toBe("".concat(basePath, "?dimension=answer:<42>&dimension=dx:<population>&dimension=ou:<earth>;<mars>&dimension=question"));
57
+ expect(url).toBe(`${basePath}?dimension=answer:<42>&dimension=dx:<population>&dimension=ou:<earth>;<mars>&dimension=question`);
58
58
  });
59
59
  it('Should not choke on a null or empty filter array', () => {
60
60
  const request = buildRequest();
@@ -1,5 +1,5 @@
1
1
  // Define our very own special list of characters that we don't want to encode in the URI
2
2
  const whitelistURI = ',&$=/;:';
3
3
  const whitelistURICodes = whitelistURI.split('').map(c => encodeURIComponent(c));
4
- const whitelistRegExp = new RegExp("(?:".concat(whitelistURICodes.join('|'), ")"), 'g');
4
+ const whitelistRegExp = new RegExp(`(?:${whitelistURICodes.join('|')})`, 'g');
5
5
  export const customEncodeURIComponent = uri => encodeURIComponent(uri).replace(whitelistRegExp, decodeURIComponent);
@@ -1,6 +1,6 @@
1
1
  import objectClean from 'd2-utilizr/lib/objectClean';
2
- import { ALL_ID // CHART_AGGREGATE_AGGREGATABLE_TYPES,
3
- , INDICATORS, DATA_ELEMENTS, DATA_SETS, PROGRAM_INDICATORS, EVENT_DATA_ITEMS, PROGRAM_DATA_ELEMENT, PROGRAM_ATTRIBUTE, TOTALS } from '../modules/dataTypes';
2
+ import { ALL_ID, // CHART_AGGREGATE_AGGREGATABLE_TYPES,
3
+ INDICATORS, DATA_ELEMENTS, DATA_SETS, PROGRAM_INDICATORS, EVENT_DATA_ITEMS, PROGRAM_DATA_ELEMENT, PROGRAM_ATTRIBUTE, TOTALS } from '../modules/dataTypes';
4
4
  import { onError } from './index'; // Query definitions
5
5
 
6
6
  export const dimensionsQuery = {
@@ -8,8 +8,8 @@ export const dimensionsQuery = {
8
8
  params: ({
9
9
  nameProp
10
10
  }) => ({
11
- fields: "id,".concat(nameProp, "~rename(name),dimensionType,dataDimensionType"),
12
- order: "".concat(nameProp, ":asc"),
11
+ fields: `id,${nameProp}~rename(name),dimensionType,dataDimensionType`,
12
+ order: `${nameProp}:asc`,
13
13
  paging: false
14
14
  })
15
15
  };
@@ -22,11 +22,11 @@ const recommendedDimensionsQuery = {
22
22
  const dimensions = [];
23
23
 
24
24
  if (dxIds.length) {
25
- dimensions.push("dx:".concat(dxIds.join(';')));
25
+ dimensions.push(`dx:${dxIds.join(';')}`);
26
26
  }
27
27
 
28
28
  if (ouIds.length) {
29
- dimensions.push("ou:".concat(ouIds.join(';')));
29
+ dimensions.push(`ou:${ouIds.join(';')}`);
30
30
  }
31
31
 
32
32
  return {
@@ -46,22 +46,22 @@ export const dataItemsQuery = {
46
46
  const filters = []; // TODO: Extract all of this logic out of the query?
47
47
 
48
48
  if ((filter === null || filter === void 0 ? void 0 : filter.dataType) === EVENT_DATA_ITEMS) {
49
- filters.push("dimensionItemType:in:[".concat(PROGRAM_DATA_ELEMENT, ",").concat(PROGRAM_ATTRIBUTE, "]"));
49
+ filters.push(`dimensionItemType:in:[${PROGRAM_DATA_ELEMENT},${PROGRAM_ATTRIBUTE}]`);
50
50
  } else if (filter !== null && filter !== void 0 && filter.dataType && filter.dataType !== ALL_ID) {
51
- filters.push("dimensionItemType:eq:".concat(filter.dataType));
51
+ filters.push(`dimensionItemType:eq:${filter.dataType}`);
52
52
  }
53
53
 
54
54
  if (filter !== null && filter !== void 0 && filter.group && filter.group !== ALL_ID && [EVENT_DATA_ITEMS, PROGRAM_INDICATORS].includes(filter.dataType)) {
55
- filters.push("programId:eq:".concat(filter.group));
55
+ filters.push(`programId:eq:${filter.group}`);
56
56
  }
57
57
 
58
58
  if (searchTerm) {
59
- filters.push("".concat(nameProp, ":ilike:").concat(searchTerm));
59
+ filters.push(`${nameProp}:ilike:${searchTerm}`);
60
60
  }
61
61
 
62
62
  return objectClean({
63
- fields: "id,".concat(nameProp, "~rename(name),dimensionItemType"),
64
- order: "".concat(nameProp, ":asc"),
63
+ fields: `id,${nameProp}~rename(name),dimensionItemType`,
64
+ order: `${nameProp}:asc`,
65
65
  filter: filters,
66
66
  paging: true,
67
67
  page
@@ -79,16 +79,16 @@ export const indicatorsQuery = {
79
79
  const filters = [];
80
80
 
81
81
  if (filter !== null && filter !== void 0 && filter.group && filter.group !== ALL_ID) {
82
- filters.push("indicatorGroups.id:eq:".concat(filter.group));
82
+ filters.push(`indicatorGroups.id:eq:${filter.group}`);
83
83
  }
84
84
 
85
85
  if (searchTerm) {
86
- filters.push("".concat(nameProp, ":ilike:").concat(searchTerm));
86
+ filters.push(`${nameProp}:ilike:${searchTerm}`);
87
87
  }
88
88
 
89
89
  return {
90
- fields: "id,".concat(nameProp, "~rename(name),dimensionItemType"),
91
- order: "".concat(nameProp, ":asc"),
90
+ fields: `id,${nameProp}~rename(name),dimensionItemType`,
91
+ order: `${nameProp}:asc`,
92
92
  filter: filters,
93
93
  paging: true,
94
94
  page
@@ -100,8 +100,8 @@ export const indicatorGroupsQuery = {
100
100
  params: ({
101
101
  nameProp
102
102
  }) => ({
103
- fields: "id,".concat(nameProp, "~rename(name)"),
104
- order: "".concat(nameProp, ":asc"),
103
+ fields: `id,${nameProp}~rename(name)`,
104
+ order: `${nameProp}:asc`,
105
105
  paging: false
106
106
  })
107
107
  };
@@ -117,16 +117,16 @@ export const dataElementsQuery = {
117
117
  const filters = ['domainType:eq:AGGREGATE'];
118
118
 
119
119
  if (filter !== null && filter !== void 0 && filter.group && filter.group !== ALL_ID) {
120
- filters.push("dataElementGroups.id:eq:".concat(filter.group));
120
+ filters.push(`dataElementGroups.id:eq:${filter.group}`);
121
121
  }
122
122
 
123
123
  if (searchTerm) {
124
- filters.push("".concat(nameProp, ":ilike:").concat(searchTerm));
124
+ filters.push(`${nameProp}:ilike:${searchTerm}`);
125
125
  }
126
126
 
127
127
  return {
128
- fields: "".concat(idField, ",").concat(nameProp, "~rename(name),dimensionItemType"),
129
- order: "".concat(nameProp, ":asc"),
128
+ fields: `${idField},${nameProp}~rename(name),dimensionItemType`,
129
+ order: `${nameProp}:asc`,
130
130
  filter: filters,
131
131
  paging: true,
132
132
  page
@@ -138,16 +138,16 @@ export const dataElementGroupsQuery = {
138
138
  params: ({
139
139
  nameProp
140
140
  }) => ({
141
- fields: "id,".concat(nameProp, "~rename(name)"),
142
- order: "".concat(nameProp, ":asc"),
141
+ fields: `id,${nameProp}~rename(name)`,
142
+ order: `${nameProp}:asc`,
143
143
  paging: false
144
144
  })
145
145
  };
146
146
  export const itemsByDimensionQuery = {
147
- resource: "dimensions",
147
+ resource: `dimensions`,
148
148
  id: ({
149
149
  id
150
- }) => "".concat(id, "/items"),
150
+ }) => `${id}/items`,
151
151
  params: ({
152
152
  searchTerm,
153
153
  page,
@@ -156,12 +156,12 @@ export const itemsByDimensionQuery = {
156
156
  const filters = [];
157
157
 
158
158
  if (searchTerm) {
159
- filters.push("".concat(nameProp, ":ilike:").concat(searchTerm));
159
+ filters.push(`${nameProp}:ilike:${searchTerm}`);
160
160
  }
161
161
 
162
162
  return {
163
- fields: "id,".concat(nameProp, "~rename(name)"),
164
- order: "".concat(nameProp, ":asc"),
163
+ fields: `id,${nameProp}~rename(name)`,
164
+ order: `${nameProp}:asc`,
165
165
  filter: filters,
166
166
  paging: true,
167
167
  page
@@ -180,16 +180,16 @@ export const dataElementOperandsQuery = {
180
180
  const filters = [];
181
181
 
182
182
  if (filter !== null && filter !== void 0 && filter.group && filter.group !== ALL_ID) {
183
- filters.push("dataElement.dataElementGroups.id:eq:".concat(filter.group));
183
+ filters.push(`dataElement.dataElementGroups.id:eq:${filter.group}`);
184
184
  }
185
185
 
186
186
  if (searchTerm) {
187
- filters.push("".concat(nameProp, ":ilike:").concat(searchTerm));
187
+ filters.push(`${nameProp}:ilike:${searchTerm}`);
188
188
  }
189
189
 
190
190
  return {
191
- fields: "".concat(idField, ",").concat(nameProp, "~rename(name),dimensionItemType"),
192
- order: "".concat(nameProp, ":asc"),
191
+ fields: `${idField},${nameProp}~rename(name),dimensionItemType`,
192
+ order: `${nameProp}:asc`,
193
193
  filter: filters,
194
194
  paging: true,
195
195
  page
@@ -207,16 +207,16 @@ export const dataSetsQuery = {
207
207
  const filters = [];
208
208
 
209
209
  if (searchTerm) {
210
- filters.push("".concat(nameProp, ":ilike:").concat(searchTerm));
210
+ filters.push(`${nameProp}:ilike:${searchTerm}`);
211
211
  }
212
212
 
213
213
  if (filter !== null && filter !== void 0 && filter.group && filter.group !== ALL_ID) {
214
- filters.push("id:eq:".concat(filter.group));
214
+ filters.push(`id:eq:${filter.group}`);
215
215
  }
216
216
 
217
217
  const query = {
218
- fields: "dimensionItem~rename(id),".concat(nameProp, "~rename(name),dimensionItemType"),
219
- order: "".concat(nameProp, ":asc"),
218
+ fields: `dimensionItem~rename(id),${nameProp}~rename(name),dimensionItemType`,
219
+ order: `${nameProp}:asc`,
220
220
  filter: filters,
221
221
  paging: false
222
222
  };
@@ -234,8 +234,8 @@ export const programsQuery = {
234
234
  params: ({
235
235
  nameProp
236
236
  }) => ({
237
- fields: "id,".concat(nameProp, "~rename(name)"),
238
- order: "".concat(nameProp, ":asc"),
237
+ fields: `id,${nameProp}~rename(name)`,
238
+ order: `${nameProp}:asc`,
239
239
  paging: false
240
240
  })
241
241
  }; // Fetch functions
@@ -1,49 +1,99 @@
1
1
  import { onError } from './index';
2
- export const apiFetchOrganisationUnitRoot = d2 => {
3
- const endPoint = '/organisationUnits';
4
- const fields = ['id', 'displayName', 'name'];
5
- const url = "".concat(endPoint, "?paging=false&userDataViewFallback=true&fields=").concat(fields.join(','));
6
- return d2.Api.getApi().get(url).then(({
7
- organisationUnits
8
- }) => organisationUnits[0]).catch(onError);
9
- };
10
- /**
11
- * Fetch organisation units
12
- * @returns {Promise<T | never>}
13
- */
14
-
15
- export const apiFetchOrganisationUnits = (d2, displayNameProperty) => {
16
- const fields = ['id', 'path', "".concat(displayNameProperty, "~rename(displayName)"), 'children::isNotEmpty'];
17
- return d2.models.organisationUnits.list({
18
- paging: false,
2
+ const orgUnitLevelsQuery = {
3
+ resource: 'organisationUnitLevels',
4
+ params: ({
5
+ displayNameProp = 'displayName'
6
+ }) => ({
7
+ fields: `id,level,${displayNameProp}~rename(displayName),name`,
8
+ paging: false
9
+ })
10
+ };
11
+ const orgUnitGroupsQuery = {
12
+ resource: 'organisationUnitGroups',
13
+ params: ({
14
+ displayNameProp = 'displayName'
15
+ }) => ({
16
+ fields: `id,${displayNameProp}~rename(displayName),name`,
17
+ paging: false
18
+ })
19
+ };
20
+ const orgUnitRootsQuery = {
21
+ resource: 'organisationUnits',
22
+ params: {
23
+ fields: 'id,displayName,name',
24
+ userDataViewFallback: true,
25
+ paging: false
26
+ }
27
+ };
28
+ const orgUnitsQuery = {
29
+ resource: 'organisationUnits',
30
+ params: ({
31
+ displayNameProp
32
+ }) => ({
33
+ fields: `id,path,${displayNameProp}~rename(displayName),children::isNotEmpty`,
19
34
  level: 1,
20
- fields: fields.join(','),
21
- userDataViewFallback: true
35
+ userDataViewFallback: true,
36
+ paging: false
37
+ })
38
+ };
39
+ const orgUnitQuery = {
40
+ resource: 'organisationUnits',
41
+ id: ({
42
+ id
43
+ }) => id,
44
+ params: {
45
+ fields: 'id,level,displayName~rename(name),path,parent[id,displayName~rename(name)],children[level]',
46
+ userDataViewFallback: true,
47
+ paging: false
48
+ }
49
+ };
50
+ export const apiFetchOrganisationUnitLevels = async dataEngine => {
51
+ const orgUnitLevelsData = await dataEngine.query({
52
+ orgUnitLevels: orgUnitLevelsQuery
53
+ }, {
54
+ onError
22
55
  });
56
+ return orgUnitLevelsData.orgUnitLevels.organisationUnitLevels;
23
57
  };
24
- /**
25
- * Fetch organisation unit groups
26
- * @returns {*}
27
- */
28
-
29
- export const apiFetchOrganisationUnitGroups = (d2, displayNameProperty) => {
30
- const endPoint = '/organisationUnitGroups';
31
- const fields = ['id', "".concat(displayNameProperty, "~rename(displayName)"), 'name'];
32
- const url = "".concat(endPoint, "?paging=false&fields=").concat(fields.join(','));
33
- return d2.Api.getApi().get(url).then(({
34
- organisationUnitGroups
35
- }) => organisationUnitGroups).catch(onError);
36
- };
37
- /**
38
- * Fetch organisation unit levels
39
- * @returns {*}
40
- */
58
+ export const apiFetchOrganisationUnitGroups = async (dataEngine, displayNameProp) => {
59
+ const orgUnitGroupsData = await dataEngine.query({
60
+ orgUnitGroups: orgUnitGroupsQuery
61
+ }, {
62
+ variables: {
63
+ displayNameProp
64
+ },
65
+ onError
66
+ });
67
+ return orgUnitGroupsData.orgUnitGroups.organisationUnitGroups;
68
+ };
69
+ export const apiFetchOrganisationUnitRoots = async dataEngine => {
70
+ const orgUnitRootsData = await dataEngine.query({
71
+ orgUnitRoots: orgUnitRootsQuery
72
+ }, {
73
+ onError
74
+ });
75
+ return orgUnitRootsData.orgUnitRoots.organisationUnits;
76
+ }; // TODO: Unused, previously used to load all org units for the tree, but that is done by the ui component internally now, remove?
41
77
 
42
- export const apiFetchOrganisationUnitLevels = d2 => {
43
- const endPoint = '/organisationUnitLevels';
44
- const fields = ['id', 'displayName', 'name', 'level'];
45
- const url = "".concat(endPoint, "?paging=false&fields=").concat(fields.join(','));
46
- return d2.Api.getApi().get(url).then(({
47
- organisationUnitLevels
48
- }) => organisationUnitLevels).catch(onError);
78
+ export const apiFetchOrganisationUnits = async (dataEngine, displayNameProp) => {
79
+ const orgUnitsData = await dataEngine.query({
80
+ orgUnits: orgUnitsQuery
81
+ }, {
82
+ variables: {
83
+ displayNameProp
84
+ },
85
+ onError
86
+ });
87
+ return orgUnitsData.orgUnits.organisationUnits;
88
+ };
89
+ export const apiFetchOrganisationUnit = async (dataEngine, id) => {
90
+ const orgUnitData = await dataEngine.query({
91
+ orgUnit: orgUnitQuery
92
+ }, {
93
+ variables: {
94
+ id
95
+ },
96
+ onError
97
+ });
98
+ return orgUnitData.orgUnit;
49
99
  };
@@ -14,7 +14,7 @@ const DataTypes = ({
14
14
  var _dataTypes$currentDat;
15
15
 
16
16
  return /*#__PURE__*/React.createElement("div", {
17
- className: "jsx-".concat(styles.__hash) + " " + "container"
17
+ className: `jsx-${styles.__hash}` + " " + "container"
18
18
  }, /*#__PURE__*/React.createElement(SingleSelectField, {
19
19
  label: i18n.t('Data Type'),
20
20
  dataTest: dataTest,
@@ -25,12 +25,12 @@ const DataTypes = ({
25
25
  value: ALL_ID,
26
26
  key: ALL_ID,
27
27
  label: i18n.t('All types'),
28
- dataTest: "".concat(dataTest, "-option-all")
28
+ dataTest: `${dataTest}-option-all`
29
29
  }), Object.values(dataTypes).map(type => /*#__PURE__*/React.createElement(SingleSelectOption, {
30
30
  value: type.id,
31
31
  key: type.id,
32
32
  label: type.getName(),
33
- dataTest: "".concat(dataTest, "-option-").concat(type.id)
33
+ dataTest: `${dataTest}-option-${type.id}`
34
34
  }))), /*#__PURE__*/React.createElement(_JSXStyle, {
35
35
  id: styles.__hash
36
36
  }, styles));
@@ -18,7 +18,7 @@ export const DetailSelector = ({
18
18
  }) => {
19
19
  const options = getOptions();
20
20
  return /*#__PURE__*/React.createElement("div", {
21
- className: "jsx-".concat(styles.__hash) + " " + "detail-container"
21
+ className: `jsx-${styles.__hash}` + " " + "detail-container"
22
22
  }, /*#__PURE__*/React.createElement(SingleSelectField, {
23
23
  dataTest: dataTest,
24
24
  label: i18n.t('Disaggregation'),
@@ -29,7 +29,7 @@ export const DetailSelector = ({
29
29
  value: option[0],
30
30
  key: option[0],
31
31
  label: option[1],
32
- dataTest: "".concat(dataTest, "-option-").concat(option[0])
32
+ dataTest: `${dataTest}-option-${option[0]}`
33
33
  }))), /*#__PURE__*/React.createElement(_JSXStyle, {
34
34
  id: styles.__hash
35
35
  }, styles));