@dhis2/analytics 20.6.3 → 21.0.0-alpha.2

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 (214) 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 +95 -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 +168 -203
  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 +6 -6
  79. package/build/cjs/locales/en/translations.json +5 -0
  80. package/build/cjs/locales/ru/translations.json +1 -1
  81. package/build/cjs/locales/zh/translations.json +7 -7
  82. package/build/cjs/modules/axis.js +1 -1
  83. package/build/cjs/modules/layoutUiRules/rules.js +1 -1
  84. package/build/cjs/modules/ouIdHelper/index.js +9 -3
  85. package/build/cjs/modules/pivotTable/PivotTableEngine.js +3 -3
  86. package/build/cjs/modules/pivotTable/measureText.js +1 -1
  87. package/build/cjs/modules/relativeItems/index.js +1 -1
  88. package/build/cjs/modules/visTypes.js +1 -1
  89. package/build/cjs/visualizations/config/adapters/dhis_highcharts/addTrendLines.js +1 -1
  90. package/build/cjs/visualizations/config/adapters/dhis_highcharts/axis.js +2 -2
  91. package/build/cjs/visualizations/config/adapters/dhis_highcharts/getAxisTitle.js +1 -1
  92. package/build/cjs/visualizations/config/adapters/dhis_highcharts/index.js +2 -2
  93. package/build/cjs/visualizations/config/adapters/dhis_highcharts/legend.js +19 -8
  94. package/build/cjs/visualizations/config/adapters/dhis_highcharts/legendSet.js +1 -1
  95. package/build/cjs/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  96. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +1 -1
  97. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/index.js +1 -1
  98. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/scatter.js +1 -1
  99. package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +1 -1
  100. package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js +3 -3
  101. package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +2 -2
  102. package/build/cjs/visualizations/config/generators/dhis/singleValue.js +5 -5
  103. package/build/cjs/visualizations/config/index.js +3 -3
  104. package/build/cjs/visualizations/store/adapters/dhis_dhis/index.js +1 -1
  105. package/build/cjs/visualizations/store/adapters/dhis_highcharts/index.js +1 -1
  106. package/build/cjs/visualizations/store/adapters/dhis_highcharts/twoCategory.js +1 -1
  107. package/build/cjs/visualizations/store/index.js +2 -2
  108. package/build/cjs/visualizations/util/axisId.js +1 -1
  109. package/build/cjs/visualizations/util/getFilterText.js +3 -3
  110. package/build/es/__demo__/OpenFileDialog.stories.js +1 -1
  111. package/build/es/__demo__/OrgUnitDimension.stories.js +84 -0
  112. package/build/es/api/analytics/AnalyticsBase.js +1 -1
  113. package/build/es/api/analytics/AnalyticsRequest.js +1 -1
  114. package/build/es/api/analytics/AnalyticsRequestBase.js +3 -3
  115. package/build/es/api/analytics/AnalyticsRequestPropertiesMixin.js +7 -7
  116. package/build/es/api/analytics/AnalyticsResponse.js +2 -2
  117. package/build/es/api/analytics/__tests__/AnalyticsAggregate.spec.js +11 -1
  118. package/build/es/api/analytics/__tests__/AnalyticsRequest.spec.js +9 -9
  119. package/build/es/api/analytics/__tests__/AnalyticsRequestBase.spec.js +4 -4
  120. package/build/es/api/analytics/utils.js +1 -1
  121. package/build/es/api/dimensions.js +39 -39
  122. package/build/es/api/organisationUnits.js +93 -43
  123. package/build/es/components/DataDimension/DataTypesSelector.js +3 -3
  124. package/build/es/components/DataDimension/DetailSelector.js +2 -2
  125. package/build/es/components/DataDimension/GroupSelector.js +7 -7
  126. package/build/es/components/DataDimension/ItemSelector.js +17 -17
  127. package/build/es/components/DataDimension/MetricSelector.js +3 -3
  128. package/build/es/components/DataDimension/styles/DataTypesSelector.style.js +1 -1
  129. package/build/es/components/DataDimension/styles/DetailSelector.style.js +1 -1
  130. package/build/es/components/DataDimension/styles/GroupSelector.style.js +1 -1
  131. package/build/es/components/DataDimension/styles/MetricSelector.style.js +1 -1
  132. package/build/es/components/DimensionMenu.js +10 -10
  133. package/build/es/components/DimensionsPanel/List/DimensionItem.js +3 -3
  134. package/build/es/components/DimensionsPanel/List/DimensionList.js +8 -8
  135. package/build/es/components/DimensionsPanel/List/styles/DimensionList.style.js +1 -1
  136. package/build/es/components/DimensionsPanel/styles/DimensionsPanel.style.js +1 -1
  137. package/build/es/components/DynamicDimension/DynamicDimension.js +4 -4
  138. package/build/es/components/DynamicDimension/ItemSelector.js +6 -6
  139. package/build/es/components/DynamicDimension/styles/DynamicDimension.style.js +1 -1
  140. package/build/es/components/FileMenu/DeleteDialog.js +1 -1
  141. package/build/es/components/FileMenu/FileMenu.js +4 -4
  142. package/build/es/components/FileMenu/FileMenu.styles.js +1 -1
  143. package/build/es/components/FileMenu/GetLinkDialog.js +2 -2
  144. package/build/es/components/FileMenu/RenameDialog.js +1 -1
  145. package/build/es/components/FileMenu/SaveAsDialog.js +1 -1
  146. package/build/es/components/FileMenu/__tests__/DeleteDialog.spec.js +1 -1
  147. package/build/es/components/FileMenu/__tests__/RenameDialog.spec.js +1 -1
  148. package/build/es/components/FileMenu/__tests__/SaveAsDialog.spec.js +1 -1
  149. package/build/es/components/FileMenu/utils.js +3 -3
  150. package/build/es/components/Filter/Filter.js +1 -1
  151. package/build/es/components/Filter/styles/Filter.style.js +1 -1
  152. package/build/es/components/LegendKey/LegendKey.js +9 -9
  153. package/build/es/components/LegendKey/styles/LegendKey.style.js +1 -1
  154. package/build/es/components/OpenFileDialog/CustomSelectOption.js +2 -2
  155. package/build/es/components/OpenFileDialog/OpenFileDialog.js +19 -19
  156. package/build/es/components/OpenFileDialog/OpenFileDialog.styles.js +1 -1
  157. package/build/es/components/OpenFileDialog/styles/CustomSelectOption.style.js +1 -1
  158. package/build/es/components/Options/styles/VisualizationOptions.style.js +10 -10
  159. package/build/es/components/OrgUnitDimension/OrgUnitDimension.js +168 -204
  160. package/build/es/components/OrgUnitDimension/OrgUnitDimensionOld.js +220 -0
  161. package/build/es/components/OrgUnitDimension/styles/OrgUnitDimension.style.js +3 -2
  162. package/build/es/components/PeriodDimension/FixedPeriodFilter.js +5 -5
  163. package/build/es/components/PeriodDimension/FixedPeriodSelect.js +3 -3
  164. package/build/es/components/PeriodDimension/PeriodTransfer.js +9 -9
  165. package/build/es/components/PeriodDimension/RelativePeriodFilter.js +2 -2
  166. package/build/es/components/PeriodDimension/styles/FixedPeriodSelect.style.js +1 -1
  167. package/build/es/components/PeriodDimension/styles/PeriodFilter.style.js +1 -1
  168. package/build/es/components/PeriodDimension/utils/fixedPeriods.js +49 -49
  169. package/build/es/components/PivotTable/PivotTableCell.js +3 -3
  170. package/build/es/components/PivotTable/PivotTableColumnHeaderCell.js +2 -2
  171. package/build/es/components/PivotTable/PivotTableContainer.js +2 -2
  172. package/build/es/components/PivotTable/PivotTableSortIcon.js +2 -2
  173. package/build/es/components/PivotTable/PivotTableTitleRow.js +2 -2
  174. package/build/es/components/PivotTable/styles/PivotTable.style.js +3 -3
  175. package/build/es/components/TransferOption.js +6 -6
  176. package/build/es/components/styles/DimensionSelector.style.js +1 -1
  177. package/build/es/components/styles/TransferOption.style.js +1 -1
  178. package/build/es/index.js +1 -1
  179. package/build/es/locales/en/translations.json +5 -0
  180. package/build/es/locales/ru/translations.json +1 -1
  181. package/build/es/locales/zh/translations.json +7 -7
  182. package/build/es/modules/axis.js +1 -1
  183. package/build/es/modules/layoutUiRules/rules.js +1 -1
  184. package/build/es/modules/ouIdHelper/index.js +5 -2
  185. package/build/es/modules/pivotTable/PivotTableEngine.js +3 -3
  186. package/build/es/modules/pivotTable/measureText.js +1 -1
  187. package/build/es/modules/relativeItems/index.js +2 -2
  188. package/build/es/modules/visTypes.js +1 -1
  189. package/build/es/visualizations/config/adapters/dhis_highcharts/addTrendLines.js +1 -1
  190. package/build/es/visualizations/config/adapters/dhis_highcharts/axis.js +2 -2
  191. package/build/es/visualizations/config/adapters/dhis_highcharts/getAxisTitle.js +1 -1
  192. package/build/es/visualizations/config/adapters/dhis_highcharts/legend.js +19 -8
  193. package/build/es/visualizations/config/adapters/dhis_highcharts/legendSet.js +1 -1
  194. package/build/es/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  195. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +1 -1
  196. package/build/es/visualizations/config/adapters/dhis_highcharts/title/index.js +1 -1
  197. package/build/es/visualizations/config/adapters/dhis_highcharts/title/scatter.js +1 -1
  198. package/build/es/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +1 -1
  199. package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js +3 -3
  200. package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +2 -2
  201. package/build/es/visualizations/config/generators/dhis/singleValue.js +5 -5
  202. package/build/es/visualizations/config/index.js +3 -3
  203. package/build/es/visualizations/store/adapters/dhis_dhis/index.js +1 -1
  204. package/build/es/visualizations/store/adapters/dhis_highcharts/index.js +1 -1
  205. package/build/es/visualizations/store/adapters/dhis_highcharts/twoCategory.js +1 -1
  206. package/build/es/visualizations/store/index.js +2 -2
  207. package/build/es/visualizations/util/axisId.js +1 -1
  208. package/build/es/visualizations/util/getFilterText.js +3 -3
  209. package/package.json +2 -1
  210. package/CHANGELOG.md +0 -2742
  211. package/build/cjs/api/organisationUnits-dataEngine.js +0 -119
  212. package/build/cjs/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +0 -96
  213. package/build/es/api/organisationUnits-dataEngine.js +0 -96
  214. package/build/es/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +0 -86
@@ -34,15 +34,15 @@ function _default({
34
34
  const _generator = _generators.default[outputFormat];
35
35
 
36
36
  if (_validator === _validators.default.noValidation) {
37
- onWarning("No validation implementation for config input format \"".concat(inputFormat, "\""));
37
+ onWarning(`No validation implementation for config input format "${inputFormat}"`);
38
38
  }
39
39
 
40
40
  if (!_adapter) {
41
- onError("No config tranformation implementation for format \"".concat(inputFormat, "\" to format \"").concat(outputFormat, "\""));
41
+ onError(`No config tranformation implementation for format "${inputFormat}" to format "${outputFormat}"`);
42
42
  }
43
43
 
44
44
  if (!_generator) {
45
- onError("No visualization implementation for format ".concat(outputFormat));
45
+ onError(`No visualization implementation for format ${outputFormat}`);
46
46
  }
47
47
 
48
48
  const DEFAULT_EXTRA_OPTIONS = {
@@ -41,7 +41,7 @@ function getDefault(acc, seriesIds, categoryIds, idValueMap, metaData) {
41
41
  seriesIds.forEach(seriesId => {
42
42
  const serieData = [];
43
43
  categoryIds.forEach(categoryId => {
44
- const value = idValueMap.get("".concat(seriesId, "-").concat(categoryId)); // DHIS2-1261: 0 is a valid value
44
+ const value = idValueMap.get(`${seriesId}-${categoryId}`); // DHIS2-1261: 0 is a valid value
45
45
  // undefined value means the key was not found within the rows
46
46
  // in that case null is returned as value in the serie
47
47
 
@@ -56,7 +56,7 @@ function getDefault(acc, series, categories, idValueMap, metaData) {
56
56
  series[0].forEach(serieItemId => {
57
57
  const serieData = [];
58
58
  categories[0].forEach(categoryItemId => {
59
- const value = idValueMap.get("".concat(serieItemId, "-").concat(categoryItemId)); // DHIS2-1261: 0 is a valid value
59
+ const value = idValueMap.get(`${serieItemId}-${categoryItemId}`); // DHIS2-1261: 0 is a valid value
60
60
  // undefined value means the key was not found within the rows
61
61
  // in that case null is returned as value in the serie
62
62
  // this is to keep the correct indexes for the values within the serie array
@@ -16,7 +16,7 @@ function _default(acc, series, categories, idValueMap, metaData) {
16
16
  categories[0].forEach(category1ItemId => {
17
17
  const groupData = [];
18
18
  categories[1].forEach(category2ItemId => {
19
- const value = idValueMap.get("".concat(seriesItemId, "-").concat(category1ItemId, "-").concat(category2ItemId));
19
+ const value = idValueMap.get(`${seriesItemId}-${category1ItemId}-${category2ItemId}`);
20
20
  groupData.push(value === undefined ? null : parseFloat(value));
21
21
  });
22
22
  groupedData.push(groupData);
@@ -25,11 +25,11 @@ function _default({
25
25
  const _adapter = _adapters.default[inputFormat + '_' + outputFormat];
26
26
 
27
27
  if (_validator === _validators.default.noValidation) {
28
- warning("Validation not supported for data input format \"".concat(inputFormat, "\""));
28
+ warning(`Validation not supported for data input format "${inputFormat}"`);
29
29
  }
30
30
 
31
31
  if (!_adapter) {
32
- error("Data tranformation from \"".concat(inputFormat, "\" to \"").concat(outputFormat, "\" is not supported"));
32
+ error(`Data tranformation from "${inputFormat}" to "${outputFormat}" is not supported`);
33
33
  }
34
34
 
35
35
  this.data = data;
@@ -6,6 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getAxisStringFromId = void 0;
7
7
  const AXIS_ID_PREFIX = 'AXIS_';
8
8
 
9
- const getAxisStringFromId = id => "".concat(AXIS_ID_PREFIX).concat(id);
9
+ const getAxisStringFromId = id => `${AXIS_ID_PREFIX}${id}`;
10
10
 
11
11
  exports.getAxisStringFromId = getAxisStringFromId;
@@ -54,9 +54,9 @@ function _default(filters, metaData) {
54
54
  } // otherwise use the values directly
55
55
  // this is a temporary fix to avoid app crashing when using filters with data items in EV
56
56
  else {
57
- sectionParts.push(metaData.items[filter.dimension].name + ': ' + filterItems.join(', '));
58
- break;
59
- }
57
+ sectionParts.push(metaData.items[filter.dimension].name + ': ' + filterItems.join(', '));
58
+ break;
59
+ }
60
60
  }
61
61
 
62
62
  titleFragments.push(sectionParts.join(', '));
@@ -12,7 +12,7 @@ const user = {
12
12
  username: 'admin'
13
13
  };
14
14
 
15
- const onFileSelect = id => alert("Opening ".concat(id));
15
+ const onFileSelect = id => alert(`Opening ${id}`);
16
16
 
17
17
  storiesOf('OpenFileDialog', module).add('List of visualizations', () => /*#__PURE__*/React.createElement(Provider, {
18
18
  config: configMock
@@ -0,0 +1,84 @@
1
+ import { DataProvider } from '@dhis2/app-runtime';
2
+ import { storiesOf } from '@storybook/react';
3
+ import React, { useState } from 'react';
4
+ import OrgUnitDimension from '../components/OrgUnitDimension/OrgUnitDimension';
5
+
6
+ const Wrapper = story => /*#__PURE__*/React.createElement(DataProvider, {
7
+ baseUrl: "http://localhost:8080/",
8
+ apiVersion: ""
9
+ }, story());
10
+
11
+ const rootOrgUnit = 'ImspTQPwCqd'; // Sierra Leone
12
+
13
+ storiesOf('OrgUnitDimension', module).addDecorator(Wrapper).add('None selected', () => {
14
+ const [selected, setSelected] = useState([]);
15
+ return /*#__PURE__*/React.createElement(OrgUnitDimension, {
16
+ selected: selected,
17
+ onSelect: response => setSelected(response.items),
18
+ root: rootOrgUnit
19
+ });
20
+ });
21
+ storiesOf('OrgUnitDimension', module).addDecorator(Wrapper).add('Root selected', () => {
22
+ const [selected, setSelected] = useState([{
23
+ id: 'ImspTQPwCqd',
24
+ path: '/ImspTQPwCqd',
25
+ name: 'Sierra Leone'
26
+ }]);
27
+ return /*#__PURE__*/React.createElement(OrgUnitDimension, {
28
+ selected: selected,
29
+ onSelect: response => setSelected(response.items),
30
+ root: rootOrgUnit
31
+ });
32
+ });
33
+ storiesOf('OrgUnitDimension', module).addDecorator(Wrapper).add('Single level 2 child selected', () => {
34
+ const [selected, setSelected] = useState([{
35
+ id: 'fdc6uOvgoji',
36
+ path: '/ImspTQPwCqd/fdc6uOvgoji',
37
+ name: 'Bombali'
38
+ }]);
39
+ return /*#__PURE__*/React.createElement(OrgUnitDimension, {
40
+ selected: selected,
41
+ onSelect: response => setSelected(response.items),
42
+ root: rootOrgUnit
43
+ });
44
+ });
45
+ storiesOf('OrgUnitDimension', module).addDecorator(Wrapper).add('Multiple level 2 children selected', () => {
46
+ const [selected, setSelected] = useState([{
47
+ id: 'O6uvpzGd5pu',
48
+ path: '/ImspTQPwCqd/O6uvpzGd5pu',
49
+ name: 'Bo'
50
+ }, {
51
+ id: 'fdc6uOvgoji',
52
+ path: '/ImspTQPwCqd/fdc6uOvgoji',
53
+ name: 'Bombali'
54
+ }, {
55
+ id: 'lc3eMKXaEfw',
56
+ path: '/ImspTQPwCqd/lc3eMKXaEfw',
57
+ name: 'Bonthe'
58
+ }]);
59
+ return /*#__PURE__*/React.createElement(OrgUnitDimension, {
60
+ selected: selected,
61
+ onSelect: response => setSelected(response.items),
62
+ root: rootOrgUnit
63
+ });
64
+ });
65
+ storiesOf('OrgUnitDimension', module).addDecorator(Wrapper).add('Multiple selected across different levels', () => {
66
+ const [selected, setSelected] = useState([{
67
+ id: 'fdc6uOvgoji',
68
+ path: '/ImspTQPwCqd/fdc6uOvgoji',
69
+ name: 'Bombali'
70
+ }, {
71
+ id: 'KKkLOTpMXGV',
72
+ path: '/ImspTQPwCqd/fdc6uOvgoji/KKkLOTpMXGV',
73
+ name: 'Bombali Sebora'
74
+ }, {
75
+ id: 'GQcsUZf81vP',
76
+ path: '/ImspTQPwCqd/fdc6uOvgoji/KKkLOTpMXGV/GQcsUZf81vP',
77
+ name: 'Govt. Hosp. Makeni'
78
+ }]);
79
+ return /*#__PURE__*/React.createElement(OrgUnitDimension, {
80
+ selected: selected,
81
+ onSelect: response => setSelected(response.items),
82
+ root: rootOrgUnit
83
+ });
84
+ });
@@ -76,7 +76,7 @@ const generateDimensionStrings = (dimensions = [], options) => {
76
76
  items.sort();
77
77
  }
78
78
 
79
- return "".concat(dimension, ":").concat(items.join(';'));
79
+ return `${dimension}:${items.join(';')}`;
80
80
  }
81
81
 
82
82
  return dimension;
@@ -46,7 +46,7 @@ class AnalyticsRequest extends AnalyticsRequestDimensionsMixin(AnalyticsRequestF
46
46
  let dimension = d.dimension;
47
47
 
48
48
  if (d.filter) {
49
- dimension += ":".concat(d.filter);
49
+ dimension += `:${d.filter}`;
50
50
  }
51
51
 
52
52
  request = request.addDimension(dimension, d.items.map(item => item.id));
@@ -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);