@sis-cc/dotstatsuite-components 22.6.0 → 23.0.0

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 (194) hide show
  1. package/dist/bridge-d3-react/src/index.js +1 -2
  2. package/dist/bridge-d3-react/src/index.js.map +1 -1
  3. package/dist/rules/src/chart/getChartOptions.js +1 -1
  4. package/dist/rules/src/chart/getChartOptions.js.map +1 -1
  5. package/dist/rules/src/constants.js +1 -35
  6. package/dist/rules/src/constants.js.map +1 -1
  7. package/dist/rules/src/dimension-utils.js +26 -24
  8. package/dist/rules/src/dimension-utils.js.map +1 -1
  9. package/dist/rules/src/factories/choro-series.js +43 -32
  10. package/dist/rules/src/factories/choro-series.js.map +1 -1
  11. package/dist/rules/src/factories/focus.js +20 -0
  12. package/dist/rules/src/factories/focus.js.map +1 -0
  13. package/dist/rules/src/factories/getChartSeries.js +11 -0
  14. package/dist/rules/src/factories/getChartSeries.js.map +1 -0
  15. package/dist/rules/src/factories/sample-focus.js +14 -18
  16. package/dist/rules/src/factories/sample-focus.js.map +1 -1
  17. package/dist/rules/src/factories/sample-series.js +20 -20
  18. package/dist/rules/src/factories/sample-series.js.map +1 -1
  19. package/dist/rules/src/factories/scatter-focus.js +21 -35
  20. package/dist/rules/src/factories/scatter-focus.js.map +1 -1
  21. package/dist/rules/src/factories/scatter-series.js +5 -5
  22. package/dist/rules/src/factories/scatter-series.js.map +1 -1
  23. package/dist/rules/src/factories/series.js +48 -0
  24. package/dist/rules/src/factories/series.js.map +1 -0
  25. package/dist/rules/src/factories/stacked-series.js +6 -7
  26. package/dist/rules/src/factories/stacked-series.js.map +1 -1
  27. package/dist/rules/src/factories/symbol-series.js +39 -46
  28. package/dist/rules/src/factories/symbol-series.js.map +1 -1
  29. package/dist/rules/src/factories/timeline-focus.js +10 -14
  30. package/dist/rules/src/factories/timeline-focus.js.map +1 -1
  31. package/dist/rules/src/factories/timeline-series.js +37 -41
  32. package/dist/rules/src/factories/timeline-series.js.map +1 -1
  33. package/dist/rules/src/get-values-enhanced.js +6 -0
  34. package/dist/rules/src/get-values-enhanced.js.map +1 -1
  35. package/dist/rules/src/index.js +6 -371
  36. package/dist/rules/src/index.js.map +1 -1
  37. package/dist/rules/src/layout.js +4 -2
  38. package/dist/rules/src/layout.js.map +1 -1
  39. package/dist/rules/src/observation-formater.js +8 -14
  40. package/dist/rules/src/observation-formater.js.map +1 -1
  41. package/dist/rules/src/properties/focus.js +51 -3
  42. package/dist/rules/src/properties/focus.js.map +1 -1
  43. package/dist/rules/src/properties/getHeaderProps.js +2 -53
  44. package/dist/rules/src/properties/getHeaderProps.js.map +1 -1
  45. package/dist/rules/src/properties/index.js +3 -94
  46. package/dist/rules/src/properties/index.js.map +1 -1
  47. package/dist/rules/src/properties/linear.js +4 -4
  48. package/dist/rules/src/properties/linear.js.map +1 -1
  49. package/dist/rules/src/properties/scatter.js +4 -4
  50. package/dist/rules/src/properties/scatter.js.map +1 -1
  51. package/dist/rules/src/properties/stacked.js +5 -7
  52. package/dist/rules/src/properties/stacked.js.map +1 -1
  53. package/dist/rules/src/properties/symbol.js.map +1 -1
  54. package/dist/rules/src/properties/utils.js +11 -12
  55. package/dist/rules/src/properties/utils.js.map +1 -1
  56. package/dist/rules/src/sdmx-data/index.js +2 -27
  57. package/dist/rules/src/sdmx-data/index.js.map +1 -1
  58. package/dist/rules2/src/combinedValuesDisplay.js +2 -2
  59. package/dist/rules2/src/combinedValuesDisplay.js.map +1 -1
  60. package/dist/rules2/src/getAttributes.js +37 -0
  61. package/dist/rules2/src/getAttributes.js.map +1 -0
  62. package/dist/rules2/src/getDataflowTooltipAttributesIds.js +2 -2
  63. package/dist/rules2/src/getDataflowTooltipAttributesIds.js.map +1 -1
  64. package/dist/rules2/src/getHeaderCombinations.js +1 -1
  65. package/dist/rules2/src/getHeaderCombinations.js.map +1 -1
  66. package/dist/rules2/src/getHeaderSubtitle.js +1 -1
  67. package/dist/rules2/src/getHeaderSubtitle.js.map +1 -1
  68. package/dist/rules2/src/getHeaderTitle.js +1 -1
  69. package/dist/rules2/src/getHeaderTitle.js.map +1 -1
  70. package/dist/rules2/src/getMetadataCoordinates.js +1 -1
  71. package/dist/rules2/src/getMetadataCoordinates.js.map +1 -1
  72. package/dist/rules2/src/getNotDisplayedIds.js +1 -1
  73. package/dist/rules2/src/getNotDisplayedIds.js.map +1 -1
  74. package/dist/rules2/src/index.js +1 -0
  75. package/dist/rules2/src/index.js.map +1 -1
  76. package/dist/rules2/src/parseAttributes.js +2 -2
  77. package/dist/rules2/src/parseAttributes.js.map +1 -1
  78. package/dist/rules2/src/parseHierarchicalCodelist.js +1 -1
  79. package/dist/rules2/src/parseHierarchicalCodelist.js.map +1 -1
  80. package/dist/rules2/src/parseMetadataSeries.js +1 -1
  81. package/dist/rules2/src/parseMetadataSeries.js.map +1 -1
  82. package/dist/rules2/src/prepareData.js +10 -3
  83. package/dist/rules2/src/prepareData.js.map +1 -1
  84. package/dist/rules2/src/refineDimensions.js +53 -8
  85. package/dist/rules2/src/refineDimensions.js.map +1 -1
  86. package/dist/rules2/src/table/getCells.js +1 -1
  87. package/dist/rules2/src/table/getCells.js.map +1 -1
  88. package/dist/rules2/src/table/getLayout.js +1 -1
  89. package/dist/rules2/src/table/getLayout.js.map +1 -1
  90. package/dist/rules2/src/table/getTableLayoutIds.js +1 -1
  91. package/dist/rules2/src/table/getTableLayoutIds.js.map +1 -1
  92. package/dist/rules2/src/table/getTableProps.js +0 -1
  93. package/dist/rules2/src/table/getTableProps.js.map +1 -1
  94. package/dist/rules2/src/table/parseValueHierarchy.js.map +1 -1
  95. package/dist/rules2/src/table/refineLayoutSize2.js +1 -1
  96. package/dist/rules2/src/table/refineLayoutSize2.js.map +1 -1
  97. package/dist/rules2/src/utils.js.map +1 -1
  98. package/dist/viewer/src/chart.js +13 -2
  99. package/dist/viewer/src/chart.js.map +1 -1
  100. package/dist/viewer/src/legends/FocusLegend.js +1 -1
  101. package/dist/viewer/src/legends/FocusLegend.js.map +1 -1
  102. package/package.json +6 -5
  103. package/src/bridge-d3-react/src/index.js +0 -1
  104. package/src/rules/src/chart/getChartOptions.js +2 -2
  105. package/src/rules/src/constants.js +0 -35
  106. package/src/rules/src/dimension-utils.js +25 -23
  107. package/src/rules/src/factories/choro-series.js +41 -30
  108. package/src/rules/src/factories/focus.js +17 -0
  109. package/src/rules/src/factories/getChartSeries.js +8 -0
  110. package/src/rules/src/factories/sample-focus.js +14 -18
  111. package/src/rules/src/factories/sample-series.js +20 -20
  112. package/src/rules/src/factories/scatter-focus.js +22 -36
  113. package/src/rules/src/factories/scatter-series.js +8 -8
  114. package/src/rules/src/factories/series.js +45 -0
  115. package/src/rules/src/factories/stacked-series.js +4 -5
  116. package/src/rules/src/factories/symbol-series.js +37 -44
  117. package/src/rules/src/factories/timeline-focus.js +10 -14
  118. package/src/rules/src/factories/timeline-series.js +35 -39
  119. package/src/rules/src/get-values-enhanced.js +6 -0
  120. package/src/rules/src/index.js +7 -384
  121. package/src/rules/src/layout.js +4 -2
  122. package/src/rules/src/observation-formater.js +14 -20
  123. package/src/rules/src/properties/focus.js +50 -2
  124. package/src/rules/src/properties/getHeaderProps.js +1 -53
  125. package/src/rules/src/properties/index.js +2 -93
  126. package/src/rules/src/properties/linear.js +2 -2
  127. package/src/rules/src/properties/scatter.js +4 -4
  128. package/src/rules/src/properties/stacked.js +4 -6
  129. package/src/rules/src/properties/symbol.js +0 -1
  130. package/src/rules/src/properties/utils.js +11 -22
  131. package/src/rules/src/sdmx-data/index.js +2 -31
  132. package/src/rules2/src/combinedValuesDisplay.js +2 -2
  133. package/src/rules2/src/getAttributes.js +34 -0
  134. package/src/rules2/src/getDataflowTooltipAttributesIds.js +2 -2
  135. package/src/rules2/src/getHeaderCombinations.js +1 -1
  136. package/src/rules2/src/getHeaderSubtitle.js +2 -2
  137. package/src/rules2/src/getHeaderTitle.js +1 -1
  138. package/src/rules2/src/getMetadataCoordinates.js +1 -1
  139. package/src/rules2/src/getNotDisplayedIds.js +1 -1
  140. package/src/rules2/src/index.js +1 -0
  141. package/src/rules2/src/parseAttributes.js +2 -2
  142. package/src/rules2/src/parseHierarchicalCodelist.js +1 -1
  143. package/src/rules2/src/parseMetadataSeries.js +1 -1
  144. package/src/rules2/src/prepareData.js +10 -3
  145. package/src/rules2/src/refineDimensions.js +53 -8
  146. package/src/rules2/src/table/getCells.js +2 -2
  147. package/src/rules2/src/table/getLayout.js +2 -2
  148. package/src/rules2/src/table/getTableLayoutIds.js +9 -9
  149. package/src/rules2/src/table/getTableProps.js +0 -1
  150. package/src/rules2/src/table/parseValueHierarchy.js +0 -7
  151. package/src/rules2/src/table/refineLayoutSize2.js +5 -5
  152. package/src/rules2/src/utils.js +0 -11
  153. package/src/viewer/src/app/leg.js +0 -1
  154. package/src/viewer/src/chart.jsx +23 -1
  155. package/src/viewer/src/legends/FocusLegend.jsx +1 -1
  156. package/dist/rules/src/factories/scatter-dimension.js +0 -35
  157. package/dist/rules/src/factories/scatter-dimension.js.map +0 -1
  158. package/dist/rules/src/factories/stacked-dimension.js +0 -32
  159. package/dist/rules/src/factories/stacked-dimension.js.map +0 -1
  160. package/dist/rules/src/factories/symbol-dimension.js +0 -32
  161. package/dist/rules/src/factories/symbol-dimension.js.map +0 -1
  162. package/dist/rules/src/header/getDefaultSubtitle.js +0 -44
  163. package/dist/rules/src/header/getDefaultSubtitle.js.map +0 -1
  164. package/dist/rules/src/header/getHeaderUnits.js +0 -21
  165. package/dist/rules/src/header/getHeaderUnits.js.map +0 -1
  166. package/dist/rules/src/header/getSubtitleFlags.js +0 -47
  167. package/dist/rules/src/header/getSubtitleFlags.js.map +0 -1
  168. package/dist/rules/src/header/getTitleFlags.js +0 -12
  169. package/dist/rules/src/header/getTitleFlags.js.map +0 -1
  170. package/dist/rules/src/properties/errors.js +0 -22
  171. package/dist/rules/src/properties/errors.js.map +0 -1
  172. package/dist/rules/src/properties/getInformationsStateFromNewProps.js +0 -50
  173. package/dist/rules/src/properties/getInformationsStateFromNewProps.js.map +0 -1
  174. package/dist/rules/src/v8-transformer.js +0 -174
  175. package/dist/rules/src/v8-transformer.js.map +0 -1
  176. package/src/bridge-d3-react/src/app.js +0 -64
  177. package/src/bridge-d3-react/src/mock-choro.js +0 -394
  178. package/src/rules/src/factories/scatter-dimension.js +0 -32
  179. package/src/rules/src/factories/stacked-dimension.js +0 -29
  180. package/src/rules/src/factories/symbol-dimension.js +0 -29
  181. package/src/rules/src/header/getDefaultSubtitle.js +0 -40
  182. package/src/rules/src/header/getHeaderUnits.js +0 -17
  183. package/src/rules/src/header/getSubtitleFlags.js +0 -43
  184. package/src/rules/src/header/getTitleFlags.js +0 -8
  185. package/src/rules/src/header/index.js +0 -4
  186. package/src/rules/src/preparators/enhanceObservations.js +0 -152
  187. package/src/rules/src/properties/errors.js +0 -19
  188. package/src/rules/src/properties/getInformationsStateFromNewProps.js +0 -47
  189. package/src/rules/src/properties/information.js +0 -84
  190. package/src/rules/src/v8-transformer.js +0 -177
  191. package/src/rules2/src/getAdvAttrSeriesAtCoordinates.js +0 -29
  192. package/src/rules2/src/getMetadataStructureFromData.js +0 -17
  193. package/src/rules2/src/refineMetadataCoordinates.js +0 -28
  194. package/src/rules2/src/table/getCombinationDimensionsData.js +0 -39
@@ -1,23 +1,24 @@
1
- import { has, get, reduce, split, head, isNil, isEmpty, findIndex, map, sortBy } from 'lodash';
1
+ import * as R from 'ramda';
2
2
  import { getTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';
3
3
  import { categoryDisplay, dimensionValueDisplayAt } from '../dimension-utils.js';
4
4
  import { getFormatedObservation } from '../observation-formater.js';
5
5
 
6
6
  const getDimensionValues = (splitObservationKey, dimensions, dimensionsWithValuesIndexedById, rejectedId, display) => (
7
- reduce(
8
- splitObservationKey,
9
- (memo, dimensionValueIndex, dimensionIndex) => {
10
- const dimension = get(dimensions, `[${dimensionIndex}]`, {});
11
- if (has(dimensionsWithValuesIndexedById, dimension.id) && dimension.id !== rejectedId) {
12
- const dimensionValue = get(dimension, `values[${dimensionValueIndex}]`, {});
13
- memo[dimensionValue.id] = {
14
- ...dimensionValue,
15
- name: dimensionValueDisplayAt(dimension, dimensionValueIndex, display)
16
- };
7
+ R.addIndex(R.reduce)(
8
+ (acc, dimensionValueIndex, dimensionIndex) => {
9
+ const dimension = R.nth(dimensionIndex, dimensions) || {};
10
+ if (R.has(dimension.id, dimensionsWithValuesIndexedById) && dimension.id !== rejectedId) {
11
+ const dimensionValue = R.pathOr({}, ['values', dimensionValueIndex], dimension);
12
+ return R.set(
13
+ R.lensPath([dimensionValue.id, 'name']),
14
+ dimensionValueDisplayAt(dimension, dimensionValueIndex, display),
15
+ acc
16
+ );
17
17
  }
18
- return memo;
18
+ return acc;
19
19
  },
20
- {}
20
+ {},
21
+ splitObservationKey,
21
22
  )
22
23
  );
23
24
 
@@ -27,24 +28,23 @@ const series = (
27
28
  timePeriodDimensionIndex,
28
29
  display, formaterAttrs
29
30
  ) => {
30
- const rawSeries = reduce(
31
- observations,
32
- (memo, o, k) => {
33
- const oDimensionValuesIndexes = split(k, ':');
31
+ const rawSeries = R.reduce(
32
+ (acc, k) => {
33
+ const o = observations[k];
34
+ const oDimensionValuesIndexes = R.split(':', k);
34
35
 
35
- const timePeriodDimension = get(dimensions, `[${timePeriodDimensionIndex}]`);
36
- const timePeriodDimensionValueIndex = oDimensionValuesIndexes[timePeriodDimensionIndex];
37
- const timePeriod = get(timePeriodDimension, `values[${timePeriodDimensionValueIndex}]`);
36
+ const timePeriodDimension = R.nth(timePeriodDimensionIndex, dimensions);
37
+ const timePeriodDimensionValueIndex = R.nth(timePeriodDimensionIndex, oDimensionValuesIndexes);
38
+ const timePeriod = R.path(['values', timePeriodDimensionValueIndex], timePeriodDimension);
38
39
 
39
40
  const datapoint = {
40
41
  x: timePeriod.start,
41
- y: head(o),
42
+ y: R.head(o),
42
43
  timeLabel: timePeriod.name,
43
44
  formatedValue: getFormatedObservation(o, formaterAttrs),
44
45
  dimensionValues: getDimensionValues(
45
46
  oDimensionValuesIndexes, dimensions, dimensionsWithValuesIndexedById, timePeriodDimension.id, display
46
47
  ),
47
- //index: Number(timePeriodDimensionValueIndex)
48
48
  };
49
49
 
50
50
  const category = categoryDisplay(
@@ -53,35 +53,31 @@ const series = (
53
53
  let key = categoryDisplay(
54
54
  oDimensionValuesIndexes, dimensions, dimensionsWithValuesIndexedById, timePeriodDimension.id, 'code'
55
55
  );
56
- if (isNil(key) || isEmpty(key)) {
56
+ if (R.isNil(key) || R.isEmpty(key)) {
57
57
  key = 'uniq-dp';
58
58
  }
59
- const serieIndex = findIndex(memo, serie => serie.key === key);
59
+ const serieIndex = R.findIndex(serie => serie.key === key, acc);
60
60
 
61
- if (serieIndex !== -1) memo[serieIndex].datapoints.push(datapoint);
62
- else memo.push({ datapoints: [datapoint], category, key });
61
+ if (serieIndex !== -1)
62
+ return R.over(R.lensPath([serieIndex, 'datapoints']), R.append(datapoint), acc);
63
63
 
64
- return memo;
64
+ return R.append({ datapoints: [datapoint], category, key }, acc);
65
65
  },
66
- []
66
+ [],
67
+ R.keys(observations),
67
68
  );
68
- return map(
69
+ return R.map(
70
+ serie => ({ ...serie, datapoints: R.sortBy(R.prop('x'), serie.datapoints) }),
69
71
  rawSeries,
70
- serie => ({
71
- ...serie,
72
- datapoints: sortBy(
73
- serie.datapoints,
74
- datapoint => datapoint.x
75
- )
76
- })
77
72
  );
78
73
  };
79
74
 
80
- var __timelineSeries = ({ observations, dimensions }, dimensionsWithValuesIndexedById, display, formaterAttrs) => {
75
+ var timelineSeries = ({ observations, dimensions }, dimensionsWithValuesIndexedById, display, formaterAttrs) => {
81
76
  const timePeriodDimension = getTimePeriodDimension({ dimensions });
82
- const timePeriodDimensionIndex = timePeriodDimension ? timePeriodDimension.index : -1;
83
- const timePeriodDimensionHasManyPeriods = !has(dimensionsWithValuesIndexedById, get(timePeriodDimension, 'id'));
84
- if ((timePeriodDimensionIndex === -1) || timePeriodDimensionHasManyPeriods) return [];
77
+ const timePeriodDimensionIndex = timePeriodDimension ? timePeriodDimension.__index : -1;
78
+ const timePeriodDimensionHasManyPeriods = !R.has(R.prop('id', timePeriodDimension), dimensionsWithValuesIndexedById);
79
+ if (!timePeriodDimensionIndex || (timePeriodDimensionIndex === -1) || timePeriodDimensionHasManyPeriods)
80
+ return [];
85
81
 
86
82
  return series(
87
83
  observations, dimensions,
@@ -90,5 +86,5 @@ var __timelineSeries = ({ observations, dimensions }, dimensionsWithValuesIndexe
90
86
  );
91
87
  };
92
88
 
93
- export { __timelineSeries as default };
89
+ export { timelineSeries as default };
94
90
  //# sourceMappingURL=timeline-series.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeline-series.js","sources":["../../../../src/rules/src/factories/timeline-series.js"],"sourcesContent":["import { findIndex, get, has, head, isEmpty, isNil, map, reduce, sortBy, split } from 'lodash';\nimport { getTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';\nimport { categoryDisplay, dimensionValueDisplayAt } from '../dimension-utils';\nimport { getFormatedObservation } from '../observation-formater';\n\nconst getDimensionValues = (splitObservationKey, dimensions, dimensionsWithValuesIndexedById, rejectedId, display) => (\n reduce(\n splitObservationKey,\n (memo, dimensionValueIndex, dimensionIndex) => {\n const dimension = get(dimensions, `[${dimensionIndex}]`, {});\n if (has(dimensionsWithValuesIndexedById, dimension.id) && dimension.id !== rejectedId) {\n const dimensionValue = get(dimension, `values[${dimensionValueIndex}]`, {});\n memo[dimensionValue.id] = {\n ...dimensionValue,\n name: dimensionValueDisplayAt(dimension, dimensionValueIndex, display)\n }\n }\n return memo;\n },\n {}\n )\n);\n\nconst series = (\n observations, dimensions,\n dimensionsWithValuesIndexedById,\n timePeriodDimensionIndex,\n display, formaterAttrs\n) => {\n const rawSeries = reduce(\n observations,\n (memo, o, k) => {\n const oDimensionValuesIndexes = split(k, ':');\n\n const timePeriodDimension = get(dimensions, `[${timePeriodDimensionIndex}]`);\n const timePeriodDimensionValueIndex = oDimensionValuesIndexes[timePeriodDimensionIndex];\n const timePeriod = get(timePeriodDimension, `values[${timePeriodDimensionValueIndex}]`);\n\n const datapoint = {\n x: timePeriod.start,\n y: head(o),\n timeLabel: timePeriod.name,\n formatedValue: getFormatedObservation(o, formaterAttrs),\n dimensionValues: getDimensionValues(\n oDimensionValuesIndexes, dimensions, dimensionsWithValuesIndexedById, timePeriodDimension.id, display\n ),\n //index: Number(timePeriodDimensionValueIndex)\n };\n\n const category = categoryDisplay(\n oDimensionValuesIndexes, dimensions, dimensionsWithValuesIndexedById, timePeriodDimension.id, display\n );\n let key = categoryDisplay(\n oDimensionValuesIndexes, dimensions, dimensionsWithValuesIndexedById, timePeriodDimension.id, 'code'\n );\n if (isNil(key) || isEmpty(key)) {\n key = 'uniq-dp';\n }\n const serieIndex = findIndex(memo, serie => serie.key === key);\n\n if (serieIndex !== -1) memo[serieIndex].datapoints.push(datapoint);\n else memo.push({ datapoints: [datapoint], category, key });\n\n return memo;\n },\n []\n );\n return map(\n rawSeries,\n serie => ({\n ...serie,\n datapoints: sortBy(\n serie.datapoints,\n datapoint => datapoint.x\n )\n })\n );\n};\n\nexport default ({ observations, dimensions }, dimensionsWithValuesIndexedById, display, formaterAttrs) => {\n const timePeriodDimension = getTimePeriodDimension({ dimensions });\n const timePeriodDimensionIndex = timePeriodDimension ? timePeriodDimension.index : -1;\n const timePeriodDimensionHasManyPeriods = !has(dimensionsWithValuesIndexedById, get(timePeriodDimension, 'id'));\n if ((timePeriodDimensionIndex === -1) || timePeriodDimensionHasManyPeriods) return [];\n \n return series(\n observations, dimensions,\n dimensionsWithValuesIndexedById,\n timePeriodDimensionIndex, display, formaterAttrs\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timeline-series.js","sources":["../../../../src/rules/src/factories/timeline-series.js"],"sourcesContent":["import * as R from 'ramda';\nimport { getTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';\nimport { categoryDisplay, dimensionValueDisplayAt } from '../dimension-utils';\nimport { getFormatedObservation } from '../observation-formater';\n\nconst getDimensionValues = (splitObservationKey, dimensions, dimensionsWithValuesIndexedById, rejectedId, display) => (\n R.addIndex(R.reduce)(\n (acc, dimensionValueIndex, dimensionIndex) => {\n const dimension = R.nth(dimensionIndex, dimensions) || {};\n if (R.has(dimension.id, dimensionsWithValuesIndexedById) && dimension.id !== rejectedId) {\n const dimensionValue = R.pathOr({}, ['values', dimensionValueIndex], dimension);\n return R.set(\n R.lensPath([dimensionValue.id, 'name']),\n dimensionValueDisplayAt(dimension, dimensionValueIndex, display),\n acc\n );\n }\n return acc;\n },\n {},\n splitObservationKey,\n )\n);\n\nconst series = (\n observations, dimensions,\n dimensionsWithValuesIndexedById,\n timePeriodDimensionIndex,\n display, formaterAttrs\n) => {\n const rawSeries = R.reduce(\n (acc, k) => {\n const o = observations[k];\n const oDimensionValuesIndexes = R.split(':', k);\n\n const timePeriodDimension = R.nth(timePeriodDimensionIndex, dimensions);\n const timePeriodDimensionValueIndex = R.nth(timePeriodDimensionIndex, oDimensionValuesIndexes);\n const timePeriod = R.path(['values', timePeriodDimensionValueIndex], timePeriodDimension);\n\n const datapoint = {\n x: timePeriod.start,\n y: R.head(o),\n timeLabel: timePeriod.name,\n formatedValue: getFormatedObservation(o, formaterAttrs),\n dimensionValues: getDimensionValues(\n oDimensionValuesIndexes, dimensions, dimensionsWithValuesIndexedById, timePeriodDimension.id, display\n ),\n };\n\n const category = categoryDisplay(\n oDimensionValuesIndexes, dimensions, dimensionsWithValuesIndexedById, timePeriodDimension.id, display\n );\n let key = categoryDisplay(\n oDimensionValuesIndexes, dimensions, dimensionsWithValuesIndexedById, timePeriodDimension.id, 'code'\n );\n if (R.isNil(key) || R.isEmpty(key)) {\n key = 'uniq-dp';\n }\n const serieIndex = R.findIndex(serie => serie.key === key, acc);\n\n if (serieIndex !== -1)\n return R.over(R.lensPath([serieIndex, 'datapoints']), R.append(datapoint), acc);\n\n return R.append({ datapoints: [datapoint], category, key }, acc);\n },\n [],\n R.keys(observations),\n );\n return R.map(\n serie => ({ ...serie, datapoints: R.sortBy(R.prop('x'), serie.datapoints) }),\n rawSeries,\n );\n};\n\nexport default ({ observations, dimensions }, dimensionsWithValuesIndexedById, display, formaterAttrs) => {\n const timePeriodDimension = getTimePeriodDimension({ dimensions });\n const timePeriodDimensionIndex = timePeriodDimension ? timePeriodDimension.__index : -1;\n const timePeriodDimensionHasManyPeriods = !R.has(R.prop('id', timePeriodDimension), dimensionsWithValuesIndexedById);\n if (!timePeriodDimensionIndex || (timePeriodDimensionIndex === -1) || timePeriodDimensionHasManyPeriods)\n return [];\n \n return series(\n observations, dimensions,\n dimensionsWithValuesIndexedById,\n timePeriodDimensionIndex, display, formaterAttrs\n );\n};\n"],"names":[],"mappings":";;;;;AAKA,MAAM,kBAAkB,GAAG,CAAC,mBAAmB,EAAE,UAAU,EAAE,+BAA+B,EAAE,UAAU,EAAE,OAAO;AACjH,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACtB,IAAI,CAAC,GAAG,EAAE,mBAAmB,EAAE,cAAc,KAAK;AAClD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE;AAC/D,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,+BAA+B,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,UAAU,EAAE;AAC/F,QAAQ,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,SAAS,CAAC;AACvF,QAAQ,OAAO,CAAC,CAAC,GAAG;AACpB,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACjD,UAAU,uBAAuB,CAAC,SAAS,EAAE,mBAAmB,EAAE,OAAO,CAAC;AAC1E,UAAU;AACV,SAAS;AACT,MAAM;AACN,MAAM,OAAO,GAAG;AAChB,IAAI,CAAC;AACL,IAAI,EAAE;AACN,IAAI,mBAAmB;AACvB;AACA,CAAC;;AAED,MAAM,MAAM,GAAG;AACf,EAAE,YAAY,EAAE,UAAU;AAC1B,EAAE,+BAA+B;AACjC,EAAE,wBAAwB;AAC1B,EAAE,OAAO,EAAE;AACX,KAAK;AACL,EAAE,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM;AAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK;AAChB,MAAM,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAC/B,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;;AAErD,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,wBAAwB,EAAE,UAAU,CAAC;AAC7E,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,GAAG,CAAC,wBAAwB,EAAE,uBAAuB,CAAC;AACpG,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,6BAA6B,CAAC,EAAE,mBAAmB,CAAC;;AAE/F,MAAM,MAAM,SAAS,GAAG;AACxB,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK;AAC3B,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACpB,QAAQ,SAAS,EAAE,UAAU,CAAC,IAAI;AAClC,QAAQ,aAAa,EAAE,sBAAsB,CAAC,CAAC,EAAE,aAAa,CAAC;AAC/D,QAAQ,eAAe,EAAE,kBAAkB;AAC3C,UAAU,uBAAuB,EAAE,UAAU,EAAE,+BAA+B,EAAE,mBAAmB,CAAC,EAAE,EAAE;AACxG,SAAS;AACT,OAAO;;AAEP,MAAM,MAAM,QAAQ,GAAG,eAAe;AACtC,QAAQ,uBAAuB,EAAE,UAAU,EAAE,+BAA+B,EAAE,mBAAmB,CAAC,EAAE,EAAE;AACtG,OAAO;AACP,MAAM,IAAI,GAAG,GAAG,eAAe;AAC/B,QAAQ,uBAAuB,EAAE,UAAU,EAAE,+BAA+B,EAAE,mBAAmB,CAAC,EAAE,EAAE;AACtG,OAAO;AACP,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC1C,QAAQ,GAAG,GAAG,SAAS;AACvB,MAAM;AACN,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC;;AAErE,MAAM,IAAI,UAAU,KAAK,EAAE;AAC3B,QAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC;;AAEvF,MAAM,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC;AACtE,IAAI,CAAC;AACL,IAAI,EAAE;AACN,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;AACxB,GAAG;AACH,EAAE,OAAO,CAAC,CAAC,GAAG;AACd,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;AAChF,IAAI,SAAS;AACb,GAAG;AACH,CAAC;;AAED,qBAAe,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,+BAA+B,EAAE,OAAO,EAAE,aAAa,KAAK;AAC1G,EAAE,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,EAAE,UAAU,EAAE,CAAC;AACpE,EAAE,MAAM,wBAAwB,GAAG,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,GAAG,EAAE;AACzF,EAAE,MAAM,iCAAiC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,+BAA+B,CAAC;AACtH,EAAE,IAAI,CAAC,wBAAwB,KAAK,wBAAwB,KAAK,EAAE,CAAC,IAAI,iCAAiC;AACzG,IAAI,OAAO,EAAE;AACb;AACA,EAAE,OAAO,MAAM;AACf,IAAI,YAAY,EAAE,UAAU;AAC5B,IAAI,+BAA+B;AACnC,IAAI,wBAAwB,EAAE,OAAO,EAAE;AACvC,GAAG;AACH,CAAC;;;;"}
@@ -38,7 +38,9 @@ const getValuesEnhanced = ({
38
38
  reportYearStart,
39
39
  hiddenIds = {},
40
40
  options = {},
41
+ selection = []
41
42
  }) => {
43
+ const selectionSet = new Set(selection);
42
44
  return R.pipe(
43
45
  R.addIndex(R.map)((value, __index) => {
44
46
  const id = getId(value, `${parent}-${__index}`);
@@ -59,12 +61,16 @@ const getValuesEnhanced = ({
59
61
  if (isNaN(__indexPosition)) {
60
62
  __indexPosition = getCodeOrder({ annotations: valueAnnotations });
61
63
  }
64
+ const isSelected = selectionSet.has(value.id) || R.isNil(selection)
65
+ || R.isEmpty(selection) || R.isEmpty(R.head(selection));
62
66
  let res = {
63
67
  // names is explicitely skipped because of metadata "standard"
64
68
  // not completely aligned with NSI "standard"
65
69
  // value is explicitely skipped (non-coded) into id
66
70
  ...R.omit(['names', 'value'], value),
67
71
  id,
72
+ isSelected,
73
+ empty: !isSelected,
68
74
  display: !isHidden,
69
75
  start: start ? start.toISOString() : null,
70
76
  flags: notes,
@@ -1 +1 @@
1
- {"version":3,"file":"get-values-enhanced.js","sources":["../../../src/rules/src/get-values-enhanced.js"],"sourcesContent":["import * as R from 'ramda';\nimport getTime from 'date-fns/getTime'\nimport { getCodeOrder } from '@sis-cc/dotstatsuite-sdmxjs';\nimport { getIsHidden } from './sdmx-data';\nimport {\n getReportedTimePeriodLabel,\n getReportedTimePeriodNote,\n getReportedTimePeriod,\n} from './date';\nimport { refineTimePeriod } from '../../rules2/src/refineTimePeriod';\n\nconst isNonCoded = R.both(R.has('value'), R.pipe(R.has('id'), R.not));\n\nconst getId = (value, fallbackId) => {\n const valueId = R.prop('id', value);\n if (valueId) return valueId;\n if (isNonCoded(value)) return R.prop('value', value);\n // Fallback (value has no id but is not a non-coded)\n return fallbackId;\n};\n\nconst getName =\n ({ isTimeDimension, options, locale, start, reportYearStart }) =>\n (value) => {\n if (!isTimeDimension) return R.prop('name')(value);\n return getReportedTimePeriodLabel(\n options.frequency,\n options.timeFormat,\n locale,\n )(reportYearStart, {\n id: value.id,\n reportedStart: start,\n start: new Date(value.start),\n });\n };\n\nexport const getValuesEnhanced = ({\n locale = '',\n annotations = [],\n isTimeDimension = false,\n parent = '',\n reportYearStart,\n hiddenIds = {},\n options = {},\n}) => {\n return R.pipe(\n R.addIndex(R.map)((value, __index) => {\n const id = getId(value, `${parent}-${__index}`);\n\n const valueAnnotations = R.pipe(\n R.propOr([], 'annotations'),\n R.flip(R.props)(annotations),\n )(value);\n\n const isHidden = R.has(`${parent}.${id}`, hiddenIds) ||\n getIsHidden(valueAnnotations);\n\n const { start, notes } = isTimeDimension\n ? getTimePeriodAttributes({ reportYearStart, options })(value)\n : { notes: [] };\n\n let __indexPosition = NaN;\n if (isNaN(__indexPosition)) {\n __indexPosition = getCodeOrder({ annotations: valueAnnotations });\n }\n let res = {\n // names is explicitely skipped because of metadata \"standard\"\n // not completely aligned with NSI \"standard\"\n // value is explicitely skipped (non-coded) into id\n ...R.omit(['names', 'value'], value),\n id,\n display: !isHidden,\n start: start ? start.toISOString() : null,\n flags: notes,\n __indexPosition,\n __index,\n isNonCoded: isNonCoded(value),\n };\n if (!isNonCoded(value)) {\n res = R.assoc(\n 'name',\n getName({ isTimeDimension, options, locale, start, reportYearStart })(\n value,\n ),\n res,\n );\n }\n if (isTimeDimension) {\n res = refineTimePeriod(res, {\n locale,\n monthlyFormat: options.timeFormat,\n });\n }\n return res;\n }),\n // __indexPosition is used for pre-sorting\n R.sortWith(isTimeDimension ? timeDimensionSorts : defaultSorts),\n // __indexPosition is reset after pre-sorting\n R.addIndex(R.map)((val, index) => R.assoc('__indexPosition', index, val)),\n // values are re-sorted by __index after __indexPosition settlement\n R.sortBy(R.prop('__index')),\n );\n};\n\nconst getDateForSort = (key) => (val) => getTime(new Date(R.prop(key, val)));\nconst byStartDate = R.ascend(getDateForSort('start'));\nconst byEndDate = R.descend(getDateForSort('end'));\nconst timeDimensionSorts = [byStartDate, byEndDate];\nconst byIndexPosition = R.ascend(R.prop('__indexPosition'));\nconst byOrder = R.ascend(R.propOr(-1, 'order'));\nconst defaultSorts = [byIndexPosition, byOrder];\n\nconst getTimePeriodAttributes =\n ({ reportYearStart, options }) =>\n (value) => {\n const reported = getReportedTimePeriod(\n reportYearStart,\n value,\n options.frequency,\n );\n const start = reported.start;\n const end = reported.end;\n const reportTimeNote = getReportedTimePeriodNote(\n reportYearStart,\n start,\n end,\n options.frequency,\n options.isRtl,\n );\n const notes = R.isNil(reportTimeNote)\n ? []\n : R.append(reportTimeNote, []);\n return { start, notes };\n };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-values-enhanced.js","sources":["../../../src/rules/src/get-values-enhanced.js"],"sourcesContent":["import * as R from 'ramda';\nimport getTime from 'date-fns/getTime'\nimport { getCodeOrder } from '@sis-cc/dotstatsuite-sdmxjs';\nimport { getIsHidden } from './sdmx-data';\nimport {\n getReportedTimePeriodLabel,\n getReportedTimePeriodNote,\n getReportedTimePeriod,\n} from './date';\nimport { refineTimePeriod } from '../../rules2/src/refineTimePeriod';\n\nconst isNonCoded = R.both(R.has('value'), R.pipe(R.has('id'), R.not));\n\nconst getId = (value, fallbackId) => {\n const valueId = R.prop('id', value);\n if (valueId) return valueId;\n if (isNonCoded(value)) return R.prop('value', value);\n // Fallback (value has no id but is not a non-coded)\n return fallbackId;\n};\n\nconst getName =\n ({ isTimeDimension, options, locale, start, reportYearStart }) =>\n (value) => {\n if (!isTimeDimension) return R.prop('name')(value);\n return getReportedTimePeriodLabel(\n options.frequency,\n options.timeFormat,\n locale,\n )(reportYearStart, {\n id: value.id,\n reportedStart: start,\n start: new Date(value.start),\n });\n };\n\nexport const getValuesEnhanced = ({\n locale = '',\n annotations = [],\n isTimeDimension = false,\n parent = '',\n reportYearStart,\n hiddenIds = {},\n options = {},\n selection = []\n}) => {\n const selectionSet = new Set(selection);\n return R.pipe(\n R.addIndex(R.map)((value, __index) => {\n const id = getId(value, `${parent}-${__index}`);\n\n const valueAnnotations = R.pipe(\n R.propOr([], 'annotations'),\n R.flip(R.props)(annotations),\n )(value);\n\n const isHidden = R.has(`${parent}.${id}`, hiddenIds) ||\n getIsHidden(valueAnnotations);\n\n const { start, notes } = isTimeDimension\n ? getTimePeriodAttributes({ reportYearStart, options })(value)\n : { notes: [] };\n\n let __indexPosition = NaN;\n if (isNaN(__indexPosition)) {\n __indexPosition = getCodeOrder({ annotations: valueAnnotations });\n }\n const isSelected = selectionSet.has(value.id) || R.isNil(selection)\n || R.isEmpty(selection) || R.isEmpty(R.head(selection));\n let res = {\n // names is explicitely skipped because of metadata \"standard\"\n // not completely aligned with NSI \"standard\"\n // value is explicitely skipped (non-coded) into id\n ...R.omit(['names', 'value'], value),\n id,\n isSelected,\n empty: !isSelected,\n display: !isHidden,\n start: start ? start.toISOString() : null,\n flags: notes,\n __indexPosition,\n __index,\n isNonCoded: isNonCoded(value),\n };\n if (!isNonCoded(value)) {\n res = R.assoc(\n 'name',\n getName({ isTimeDimension, options, locale, start, reportYearStart })(\n value,\n ),\n res,\n );\n }\n if (isTimeDimension) {\n res = refineTimePeriod(res, {\n locale,\n monthlyFormat: options.timeFormat,\n });\n }\n return res;\n }),\n // __indexPosition is used for pre-sorting\n R.sortWith(isTimeDimension ? timeDimensionSorts : defaultSorts),\n // __indexPosition is reset after pre-sorting\n R.addIndex(R.map)((val, index) => R.assoc('__indexPosition', index, val)),\n // values are re-sorted by __index after __indexPosition settlement\n R.sortBy(R.prop('__index')),\n );\n};\n\nconst getDateForSort = (key) => (val) => getTime(new Date(R.prop(key, val)));\nconst byStartDate = R.ascend(getDateForSort('start'));\nconst byEndDate = R.descend(getDateForSort('end'));\nconst timeDimensionSorts = [byStartDate, byEndDate];\nconst byIndexPosition = R.ascend(R.prop('__indexPosition'));\nconst byOrder = R.ascend(R.propOr(-1, 'order'));\nconst defaultSorts = [byIndexPosition, byOrder];\n\nconst getTimePeriodAttributes =\n ({ reportYearStart, options }) =>\n (value) => {\n const reported = getReportedTimePeriod(\n reportYearStart,\n value,\n options.frequency,\n );\n const start = reported.start;\n const end = reported.end;\n const reportTimeNote = getReportedTimePeriodNote(\n reportYearStart,\n start,\n end,\n options.frequency,\n options.isRtl,\n );\n const notes = R.isNil(reportTimeNote)\n ? []\n : R.append(reportTimeNote, []);\n return { start, notes };\n };\n"],"names":[],"mappings":"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"}
@@ -1,379 +1,14 @@
1
- import { get, reduce, map, filter, size, partition, reject, isEmpty, keyBy, isNil, includes, omit, flatten, compact, find, isArray, findIndex, isEqual, pick } from 'lodash';
2
- import * as R from 'ramda';
3
- import memoizee from 'memoizee';
4
- import __sampleSeries from './factories/sample-series.js';
5
- import focus$1 from './factories/sample-focus.js';
6
- import __scatterSeries from './factories/scatter-series.js';
7
- import focus$3 from './factories/scatter-focus.js';
8
- import __scatterDimension from './factories/scatter-dimension.js';
9
- import __symbolSeries from './factories/symbol-series.js';
10
- import __symbolDimension from './factories/symbol-dimension.js';
11
- import __timelineSeries from './factories/timeline-series.js';
12
- import focus$2 from './factories/timeline-focus.js';
13
- import __stackedSeries from './factories/stacked-series.js';
14
- import __stackedDimension from './factories/stacked-dimension.js';
15
- import __choroSeries from './factories/choro-series.js';
16
- import { FREQ_A, FREQ_Q, FREQ_M, DEFAULT_REJECTED_SUBTITLE_IDS, DEFAULT_UPR_IDS, DEFAULT_REJECTED_UPR_VALUES_IDS } from './constants.js';
17
- export { DEFAULT_MAJOR_ATTRIBUTES, DIMENSION_DISPLAY_PARTS, V8_SDMX_JSON, TYPES as chartTypes } from './constants.js';
18
- import { dimensionValueDisplay } from './dimension-utils.js';
19
- import { getObservationsFormaterAttributes } from './observation-formater.js';
20
- export { getErrors, initialState, onChangeProperties, stateFromNewProps, toChartData, toChartOptions, toProperties, toSingularity } from './properties/index.js';
21
- export { dataTransformer as v8Transformer } from './v8-transformer.js';
1
+ export { dimensionValueDisplay, parseDisplay } from './dimension-utils.js';
2
+ export { stateFromNewProps, toChartOptions, toProperties, toSingularity } from './properties/index.js';
3
+ export { parseFocus } from './properties/focus.js';
22
4
  export { getFullName } from './sdmx-data/index.js';
23
5
  export { getTimePeriodLabel } from './date.js';
24
- export { getFooterProps, getHeaderProps } from './properties/getHeaderProps.js';
25
- export { getInformationsStateFromNewProps } from './properties/getInformationsStateFromNewProps.js';
26
- export { getObservationsType } from './properties/getObservationsType.js';
6
+ export { getFooterProps } from './properties/getHeaderProps.js';
27
7
  export { getAvailableChartTypes } from './properties/getAvailableChartTypes.js';
28
8
  export { isSharedLayoutCompatible } from './layout.js';
29
9
  export { getObservations } from './preparators/getObservations.js';
30
10
  export { getChartOptions } from './chart/getChartOptions.js';
11
+ export { getReportingYearStart } from './preparators/getReportingYearStart.js';
12
+ export { getChartSeries } from './factories/getChartSeries.js';
31
13
  export { getCellValue } from './table/factories/getCellValue.js';
32
-
33
- const freqA = FREQ_A;
34
- const freqQ = FREQ_Q;
35
- const freqM = FREQ_M;
36
-
37
- // --------------------------------------------------------------------------------extractSdmxErrors
38
- const _extractSdmxErrors = (data) => R.compose(
39
- (errors) => map(errors, (error) => ({ label: error.code, description: error.message })),
40
- (data) => get(data, 'errors', [])
41
- );
42
- const extractSdmxErrors = memoizee(_extractSdmxErrors);
43
-
44
- const extractDataName = (data) => R.pathOr(null, ['structure', 'name'], data);
45
-
46
- // -----------------------------------------------------------------------------extractSdmxArtefacts
47
- const _extractSdmxArtefacts = (data) => {
48
- const parseStructure = (data) => get(data, 'structure', {});
49
- const parseItem = (item) => parseComponents(get(item, 'observation', []));
50
- const parseDimensions = (structure) => parseItem(get(structure, 'dimensions', {}));
51
- const parseAttributes = (structure) => parseItem(get(structure, 'attributes', {}));
52
- const parseComponents = (components) => map(components, parseComponent);
53
- const parseComponent = (component, index) => {
54
- let parsed = { ...pick(component, 'id', 'name', 'values', 'role', 'isHidden'), index };
55
- if (isEmpty(parsed))
56
- return parsed;
57
- if (isNil(parsed.role))
58
- parsed.role = parsed.id;
59
- parsed.values = R.sortBy(R.prop('__index'))(parsed.values);
60
- return parsed;
61
- };
62
- const parseDatasetItem = (item) => parseComponents(get(item, 'dataSet', []));
63
- const parseDatasetAttributes = (structure) => parseDatasetItem(get(structure, 'attributes', {}));
64
-
65
- return {
66
- attributes: parseAttributes(parseStructure(data)),
67
- datasetAttributes: parseDatasetAttributes(parseStructure(data)),
68
- dimensions: parseDimensions(parseStructure(data)),
69
- id: get(data, 'header.id', null),
70
- name: extractDataName(data),
71
- observations: R.pipe(
72
- R.pathOr({}, ['dataSets', 0, 'observations']),
73
- R.mapObjIndexed(obs => R.over(R.lensIndex(0), val => R.isNil(val) ? null : Number(val))(obs)),
74
- R.reject(R.pipe(R.head, R.anyPass([R.isNil, isNaN]))),
75
- )(data),
76
- source: get(data, 'header.links[0].href', null),
77
- };
78
- };
79
- const extractSdmxArtefacts = memoizee(_extractSdmxArtefacts);
80
-
81
- const _getRelevantsDatasetAttributes = (data) => {
82
- const { datasetAttributes } = extractSdmxArtefacts(data);
83
- return filter(datasetAttributes, attr => size(attr.values) === 1);
84
- };
85
- const getRelevantsDatasetAttributes = memoizee(_getRelevantsDatasetAttributes);
86
-
87
- // -------------------------------------------------------------------------------getDimensionValues
88
- const getDimensionValues = (dimension) => get(dimension, 'values', []);
89
-
90
- // ----------------------------------------------------------------------------------splitDimensions
91
- const _splitDimensions = (data) => {
92
- const { dimensions } = extractSdmxArtefacts(data);
93
- const [value, values] = partition(
94
- reject(dimensions, R.compose(isEmpty, getDimensionValues)),
95
- R.compose((values) => size(values) === 1, getDimensionValues)
96
- );
97
- return { value, values };
98
- };
99
- const splitDimensions = memoizee(_splitDimensions);
100
-
101
- // ------------------------------------------------------------------dimensionsWithValuesIndexedById
102
- const _dimensionsWithValuesIndexedById = (data) => R.compose(
103
- (dimensionsWithValues) => keyBy(dimensionsWithValues, 'id'),
104
- (split) => split.values,
105
- splitDimensions
106
- )(data);
107
- const dimensionsWithValuesIndexedById = memoizee(_dimensionsWithValuesIndexedById);
108
-
109
- // -------------------------------------------------------------------------------------parseDisplay
110
- const _parseDisplay = (display) =>
111
- (isNil(display) || !(includes(['both', 'code'], display)))
112
- ? 'label' : display;
113
- const parseDisplay = memoizee(_parseDisplay);
114
-
115
- // -------------------------------------------------------------------------------------sampleSeries
116
- const _sampleSeries = (data, type, display, formaterIds) => __sampleSeries(
117
- type,
118
- extractSdmxArtefacts(data),
119
- dimensionsWithValuesIndexedById(data),
120
- parseDisplay(display),
121
- getObservationsFormaterAttributes(data, formaterIds)
122
- );
123
- const sampleSeries = memoizee(_sampleSeries);
124
-
125
- // ---------------------------------------------------------------------------------scatterDimension
126
- const _scatterDimension = (data, ids) => {
127
- const { values } = splitDimensions(data);
128
- return __scatterDimension(values, ids);
129
- };
130
- const scatterDimension = memoizee(_scatterDimension);
131
-
132
- // ----------------------------------------------------------------------------------symbolDimension
133
- const _symbolDimension = (data, ids) => {
134
- const { values } = splitDimensions(data);
135
- return __symbolDimension(values, ids);
136
- };
137
- const symbolDimension = memoizee(_symbolDimension);
138
-
139
- const _stackedDimension = (data, singularity) => {
140
- return __stackedDimension(splitDimensions(data), singularity);
141
- };
142
- const stackedDimension = memoizee(_stackedDimension);
143
-
144
- // ------------------------------------------------------------------------------------scatterSeries
145
- const _scatterSeries = (data, ids, display, formaterIds) => __scatterSeries(
146
- extractSdmxArtefacts(data),
147
- dimensionsWithValuesIndexedById(data),
148
- scatterDimension(data, ids),
149
- parseDisplay(display),
150
- getObservationsFormaterAttributes(data, formaterIds)
151
- );
152
- const scatterSeries = memoizee(_scatterSeries);
153
-
154
- // -------------------------------------------------------------------------------------symbolSeries
155
- const _symbolSeries = (data, type, ids, display, formaterIds) => __symbolSeries(
156
- extractSdmxArtefacts(data),
157
- type,
158
- dimensionsWithValuesIndexedById(data),
159
- symbolDimension(data, ids),
160
- parseDisplay(display),
161
- getObservationsFormaterAttributes(data, formaterIds)
162
- );
163
- const symbolSeries = memoizee(_symbolSeries);
164
-
165
- // -----------------------------------------------------------------------------------timelineSeries
166
- const _timelineSeries = (data, display, formaterIds) => __timelineSeries(
167
- extractSdmxArtefacts(data),
168
- dimensionsWithValuesIndexedById(data),
169
- parseDisplay(display),
170
- getObservationsFormaterAttributes(data, formaterIds)
171
- );
172
- const timelineSeries = memoizee(_timelineSeries);
173
-
174
- const _stackedSeries = (data, singularity, display, formaterIds, [stackKey, categoryKey]) => __stackedSeries(
175
- extractSdmxArtefacts(data),
176
- dimensionsWithValuesIndexedById(data),
177
- stackedDimension(data, singularity),
178
- parseDisplay(display),
179
- getObservationsFormaterAttributes(data, formaterIds),
180
- [stackKey, categoryKey]
181
- );
182
- const stackedSeries = memoizee(_stackedSeries);
183
-
184
- // --------------------------------------------------------------------------------------choroSeries
185
- const _choroSeries = (data, map, display) => __choroSeries(
186
- extractSdmxArtefacts(data),
187
- dimensionsWithValuesIndexedById(data),
188
- map,
189
- parseDisplay(display)
190
- );
191
- const choroSeries = memoizee(_choroSeries);
192
-
193
- // -------------------------------------------------------------------------------------------series
194
- const _series = (data, type, focus, singularity, map, display, formaterIds) => {
195
- switch(type) {
196
- case 'RowChart': case 'BarChart':
197
- return focus$1(sampleSeries(data, type, display, formaterIds), focus);
198
- case 'ScatterChart':
199
- return focus$3(scatterSeries(data, singularity, display, formaterIds), focus);
200
- case 'HorizontalSymbolChart': case 'VerticalSymbolChart':
201
- return focus$1(symbolSeries(data, type, singularity, display, formaterIds), focus);
202
- case 'TimelineChart':
203
- return focus$2(timelineSeries(data, display, formaterIds), focus);
204
- case 'StackedBarChart':
205
- return focus$1(stackedSeries(data, singularity, display, formaterIds, ['y', 'x']), focus);
206
- case 'StackedRowChart':
207
- return focus$1(stackedSeries(data, singularity, display, formaterIds, ['x', 'y']), focus);
208
- case 'ChoroplethChart':
209
- return choroSeries(data, map, display);
210
- }
211
- };
212
- const series = memoizee(_series);
213
-
214
- // -------------------------------------------------------------------------------------------source
215
- const _source = (data, config, meta) => {
216
- const hasSource = get(meta, 'hasSource', true);
217
- if (!hasSource)
218
- return null;
219
- const source = get(config, 'source', null);
220
- if (source && !(isEmpty(source)))
221
- return source;
222
- const artefacts = extractSdmxArtefacts(data);
223
- const uri = get(artefacts, 'source');
224
- if (!uri)
225
- return get(config, 'defaultSource', null);
226
- const match = uri.match(/(^http.*)\/SDMX-JSON\/data\/([^\/]+)\//);
227
- if (size(match) !== 3)
228
- return null;
229
- const [m, domain, dataset] = match;
230
- return `${domain}/Index.aspx?DataSetCode=${dataset}`; //tmp
231
- };
232
- const source = memoizee(_source);
233
-
234
- // --------------------------------------------------------------------------------------------focus
235
- const _focus = (data, type, dimension, _display) => {
236
- const display = parseDisplay(_display);
237
- switch(type) {
238
- case 'RowChart': case 'BarChart':
239
- case 'HorizontalSymbolChart': case 'VerticalSymbolChart':
240
- case 'StackedBarChart': case 'StackedRowChart':
241
- return R.compose(
242
- (datapoints) => map(datapoints, (dp) => ({ label: dp.category, value: dp.key })),
243
- (series) => series[0].datapoints,
244
- series
245
- )(data, type, null, dimension, null, display);
246
- case 'TimelineChart':
247
- return R.compose(
248
- (series) => map(series, (serie) => ({ label: serie.category, value: serie.key })),
249
- series
250
- )(data, type, null, dimension, null, display)
251
- case 'ScatterChart':
252
- const id = get(dimension, 'id');
253
- if (isNil(id)) return [];
254
- const dimensions = R.compose(
255
- (dimensions) => omit(dimensions, id),
256
- dimensionsWithValuesIndexedById
257
- )(data);
258
- return flatten(map(
259
- dimensions,
260
- (dimension) => {
261
- return map(
262
- get(dimension, 'values'),
263
- (value) => ({
264
- label: `${dimensionValueDisplay(display)(dimension)} - ${dimensionValueDisplay(display)(value)}`,
265
- options: { dimensionId: dimension.id, dimensionValueId: value.id },
266
- value: `${dimension.id}-${value.id}`
267
- })
268
- )
269
- }
270
- ));
271
- }
272
- };
273
- const focus = memoizee(_focus);
274
-
275
- const _parseFocus = (data, type, dimension, display, { baseline, highlight }) => {
276
- const options = focus(data, type, dimension, display);
277
-
278
- const parseSelection = selection => compact(map(selection, ({ value }) => find(options, option => isEqual(option.value, value))));
279
- return ({ baseline: parseSelection(baseline), highlight: parseSelection(highlight) });
280
- };
281
- const parseFocus = memoizee(_parseFocus);
282
-
283
- const _defaultSubtitle = (data, display, REJECTED_SUBTITLE_IDS = DEFAULT_REJECTED_SUBTITLE_IDS) => {
284
- const { value } = splitDimensions(data);
285
- const values = reduce(
286
- R.reject(R.prop('isHidden'))(value),
287
- (memo, d) => {
288
- const dvId = get(d, 'values[0].id');
289
- if (!includes(REJECTED_SUBTITLE_IDS, dvId)) {
290
- memo.push(`${dimensionValueDisplay(display)(d)}: ${dimensionValueDisplay(display)(get(d, 'values[0]'))}`);
291
- }
292
- return memo;
293
- },
294
- []
295
- );
296
- return values;
297
- };
298
- const defaultSubtitle = memoizee(_defaultSubtitle);
299
-
300
- const _uprAttributes = (attributes, UPR_IDS = DEFAULT_UPR_IDS) => (
301
- reduce(
302
- UPR_IDS,
303
- (memo, ids, uprKey) => {
304
- const attr = find(attributes, attribute => includes(ids, get(attribute, 'id')));
305
- if (attr) {
306
- memo[uprKey] = attr;
307
- }
308
- return memo;
309
- },
310
- {}
311
- )
312
- );
313
- const uprAttributes = memoizee(_uprAttributes);
314
-
315
- const _uprAttributesWithOneRelevantValue = (uprAttributes, UPR_IDS = DEFAULT_UPR_IDS, REJECTED_UPR_VALUES_IDS = DEFAULT_REJECTED_UPR_VALUES_IDS) => reduce(
316
- uprAttributes,
317
- (memo, attr, key) => {
318
- if (size(get(attr, 'values', [])) === 1 && !(includes(REJECTED_UPR_VALUES_IDS[key], get(attr, 'values[0].id', ''))))
319
- memo[key] = attr;
320
- return memo;
321
- },
322
- {}
323
- );
324
- const uprAttributesWithOneRelevantValue = memoizee(_uprAttributesWithOneRelevantValue);
325
-
326
- const headerUprsLabel = display => uprAttributes => {
327
- return map(
328
- uprAttributes,
329
- attr => dimensionValueDisplay(display)(get(attr, 'values[0]'))
330
- ).join(', ');
331
- };
332
-
333
- const getUprs = (data, display) => R.compose(
334
- headerUprsLabel(parseDisplay(display)),
335
- uprAttributesWithOneRelevantValue,
336
- ({ attributes }) => uprAttributes(attributes),
337
- extractSdmxArtefacts
338
- )(data);
339
-
340
- const _header = (data, _title, _subtitle, _display) => {
341
- const display = parseDisplay(_display);
342
- const title = (isNil(_title) || isEmpty(_title)) ? get(data, 'structure.name') : _title;
343
- const subtitle = (isNil(_subtitle) || isEmpty(_subtitle)) ? defaultSubtitle(data, display) : _subtitle;
344
- return ({
345
- title,
346
- subtitle: isArray(subtitle) ? subtitle : [subtitle],
347
- uprs: R.compose(
348
- headerUprsLabel(display),
349
- uprAttributesWithOneRelevantValue,
350
- ({ attributes }) => uprAttributes(attributes),
351
- extractSdmxArtefacts
352
- )(data)
353
- });
354
- };
355
- const header = memoizee(_header);
356
-
357
- const _sourceLabel = (data, label) => (
358
- (isNil(label) || isEmpty(label)) ? extractSdmxArtefacts(data).name : label
359
- );
360
- const sourceLabel = memoizee(_sourceLabel);
361
-
362
- const _getTopologyAreasCollections = (topology) => map(topology.objects, (entry, key) => key);
363
- const getTopologyAreasCollections = memoizee(_getTopologyAreasCollections);
364
-
365
- const _isNonIdealState = (data, type, map) => {
366
- const defaultSeries = series(data, type, null, null, map);
367
- if (type === 'ChoroplethChart')
368
- {
369
- return findIndex(get(defaultSeries, 'objects.areas.geometries', []), geometry => get(geometry, 'properties.value', null)) === -1;
370
- }
371
- return isEmpty(get(defaultSeries, '[0].datapoints', []));
372
- };
373
- const isNonIdealState = memoizee(_isNonIdealState);
374
-
375
- const getFlags = R.identity;
376
- const prepareData = R.identity;
377
-
378
- export { DEFAULT_UPR_IDS, choroSeries, defaultSubtitle, dimensionValueDisplay, dimensionsWithValuesIndexedById, extractDataName, extractSdmxArtefacts, extractSdmxErrors, focus, freqA, freqM, freqQ, getDimensionValues, getFlags, getRelevantsDatasetAttributes, getTopologyAreasCollections, getUprs, header, headerUprsLabel, isNonIdealState, parseDisplay, parseFocus, prepareData, sampleSeries, scatterDimension, scatterSeries, series, source, sourceLabel, splitDimensions, stackedDimension, stackedSeries, symbolDimension, symbolSeries, timelineSeries, uprAttributes, uprAttributesWithOneRelevantValue };
379
14
  //# sourceMappingURL=index.js.map