@sis-cc/dotstatsuite-components 13.5.5 → 14.1.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 (52) hide show
  1. package/lib/rules/src/preparators/enhanceObservations.js +0 -7
  2. package/lib/rules/src/table/factories/getCells.js +1 -1
  3. package/lib/rules/src/table/factories/getCuratedCells.js +2 -3
  4. package/lib/rules/src/table/factories/getTableData.js +6 -11
  5. package/lib/rules/src/table/factories/refineLayoutSize.js +1 -1
  6. package/lib/rules/src/table/preparators/prepareData.js +30 -5
  7. package/lib/rules/src/v8-transformer.js +10 -25
  8. package/lib/rules2/src/duplicateObservations.js +51 -0
  9. package/lib/rules2/src/getDimensionValuesIndexes.js +19 -0
  10. package/lib/rules2/src/getDimensionsSimpleHierarchies.js +42 -0
  11. package/lib/rules2/src/getHCodelistsRefsInData.js +46 -0
  12. package/lib/rules2/src/hierarchiseDimension.js +47 -0
  13. package/lib/rules2/src/index.js +24 -0
  14. package/lib/rules2/src/invertTime.js +33 -0
  15. package/lib/rules2/src/parseHierarchicalCodelist.js +22 -0
  16. package/package.json +2 -2
  17. package/src/rules/src/preparators/enhanceObservations.js +0 -6
  18. package/src/rules/src/table/factories/getCells.js +2 -1
  19. package/src/rules/src/table/factories/getCuratedCells.js +3 -4
  20. package/src/rules/src/table/factories/getTableData.js +3 -22
  21. package/src/rules/src/table/factories/refineLayoutSize.js +1 -1
  22. package/src/rules/src/table/preparators/prepareData.js +20 -3
  23. package/src/rules/src/v8-transformer.js +11 -30
  24. package/src/rules2/src/duplicateObservations.js +45 -0
  25. package/src/rules2/src/getDimensionValuesIndexes.js +13 -0
  26. package/src/rules2/src/getDimensionsSimpleHierarchies.js +34 -0
  27. package/src/rules2/src/getHCodelistsRefsInData.js +23 -0
  28. package/src/rules2/src/hierarchiseDimension.js +38 -0
  29. package/src/rules2/src/index.js +2 -0
  30. package/src/rules2/src/invertTime.js +22 -0
  31. package/src/rules2/src/parseHierarchicalCodelist.js +14 -0
  32. package/test/duplicateObservations.test.js +108 -0
  33. package/test/enhanceObservations.test.js +13 -48
  34. package/test/getCells.test.js +4 -11
  35. package/test/getDimensionValuesIndexes.test.js +33 -0
  36. package/test/getHCodelistsRefs.test.js +20 -0
  37. package/test/hierarchiseDimension.test.js +87 -0
  38. package/test/invertTime.test.js +75 -0
  39. package/test/mocks/h-codelist.json +2095 -0
  40. package/test/mocks/table-invert-time--data.json +80211 -0
  41. package/test/mocks/table-invert-time--inverted.json +80076 -0
  42. package/test/mocks/table-prep-multi-duplicate--duplicated.json +26938 -0
  43. package/test/mocks/table-prep-multi-duplicate--indexes.json +1417 -0
  44. package/test/mocks/table-prep-multi-duplicate--observations.json +20330 -0
  45. package/test/mocks/table-prep-simple-duplicate--duplicated.json +77502 -0
  46. package/test/mocks/table-prep-simple-duplicate--indexes.json +274 -0
  47. package/test/mocks/table-prep-simple-duplicate--observations.json +60002 -0
  48. package/test/parseHierarchicalCodelist.test.js +76 -0
  49. package/test/refineLayoutSize.test.js +84 -0
  50. package/test/table-invert-time-perf.test.js +11 -0
  51. package/test/table-prep-duplicate-perf.test.js +21 -0
  52. package/test/table-prep-perf.test.js +5 -2
@@ -74,12 +74,6 @@ var getObservationUnits = function getObservationUnits(observation, dimensions,
74
74
  return (0, _extends3.default)({}, dimensionsUnits, attributesUnits, { serieKey: serieKey });
75
75
  };
76
76
 
77
- var getOrderedDimensionsIndexes = function getOrderedDimensionsIndexes(dimensions, indexes) {
78
- return R.addIndex(R.map)(function (valueIndex, dimensionIndex) {
79
- return R.path([dimensionIndex, 'values', valueIndex, '__indexPosition'], dimensions);
80
- }, indexes);
81
- };
82
-
83
77
  var getFormatAttributesIndexes = function getFormatAttributesIndexes(attributes, customAttributes) {
84
78
  return R.addIndex(R.reduce)(function (acc, attribute, index) {
85
79
  if (R.equals(attribute.id, customAttributes.decimals)) {
@@ -141,7 +135,6 @@ var enhanceObservations = exports.enhanceObservations = function enhanceObservat
141
135
  return (0, _extends3.default)({}, observation, {
142
136
  attributes: obsAttributes,
143
137
  formattedValue: (0, _formatValue.formatValue)(observation, formatAttributesIndexes, attributes),
144
- orderedDimIndexes: getOrderedDimensionsIndexes(dimensions, dimValuesIndexes),
145
138
  units: getObservationUnits(observation, dimensions, _attributes, options),
146
139
  indexedDimValIds: indexedDimValIds
147
140
  });
@@ -92,6 +92,6 @@ var getSideProps = function getSideProps(_ref2, customAttributes, metadataCoordi
92
92
 
93
93
  var getCells = exports.getCells = function getCells(data, display, customAttributes, unitsProps, metadataCoordinates) {
94
94
  return R.mapObjIndexed(function (observation) {
95
- return R.pipe(R.set(R.lensProp('flags'), getFlags(customAttributes, (0, _dimensionUtils.dimensionValueDisplay)(display), unitsProps)(observation)), R.set(R.lensProp('intValue'), R.prop('value', observation)), R.set(R.lensProp('value'), R.prop('formattedValue', observation)), R.assoc('indexedDimValIds', R.prop('indexedDimValIds', observation)), R.assoc('sideProps', getSideProps(observation, customAttributes, metadataCoordinates)))({});
95
+ return R.pipe(R.set(R.lensProp('flags'), getFlags(customAttributes, (0, _dimensionUtils.dimensionValueDisplay)(display), unitsProps)(observation)), R.set(R.lensProp('intValue'), R.prop('value', observation)), R.set(R.lensProp('value'), R.prop('formattedValue', observation)), R.assoc('indexedDimValIds', R.prop('indexedDimValIds', observation)), R.assoc('sideProps', getSideProps(observation, customAttributes, metadataCoordinates)), R.set(R.lensProp('key'), R.prop('key', observation)))({});
96
96
  }, R.propOr({}, 'observations', data));
97
97
  };
@@ -26,12 +26,11 @@ var getPivots = function getPivots(layout, shape) {
26
26
  };
27
27
 
28
28
  var indexWithPivots = function indexWithPivots(pivots, observations) {
29
- return R.pipe(R.keys, R.reduce(function (acc, obsKey) {
30
- var splitKey = R.split(':', obsKey);
29
+ return R.pipe(R.values, R.reduce(function (acc, obs) {
30
+ var splitKey = R.split(':', obs.key);
31
31
  var path = R.map(function (pivot) {
32
32
  return pivot(splitKey);
33
33
  }, pivots);
34
- var obs = R.prop(obsKey, observations);
35
34
  return R.over(R.lensPath(path), R.ifElse(R.isNil, R.always([obs]), R.append(obs)))(acc);
36
35
  }, {}))(observations);
37
36
  };
@@ -13,8 +13,6 @@ var _ramda = require('ramda');
13
13
 
14
14
  var R = _interopRequireWildcard(_ramda);
15
15
 
16
- var _dotstatsuiteSdmxjs = require('@sis-cc/dotstatsuite-sdmxjs');
17
-
18
16
  var _getCells = require('./getCells');
19
17
 
20
18
  var _getConfirmedSeriesAttributesIds = require('./getConfirmedSeriesAttributesIds');
@@ -37,6 +35,8 @@ var _getLayoutData = require('./getLayoutData');
37
35
 
38
36
  var _refineMetadataCoordinates = require('../../../../rules2/src/refineMetadataCoordinates');
39
37
 
38
+ var _invertTime2 = require('../../../../rules2/src/invertTime');
39
+
40
40
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
41
41
 
42
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -76,14 +76,9 @@ var getTableProps = exports.getTableProps = function getTableProps(_ref) {
76
76
  unitDimension: unitDimension, rejectedValueIds: rejectedValueIds, layoutDimsIds: layoutDimsIds
77
77
  }, refinedMetadataCoordinates.cells, data.observationsType);
78
78
 
79
- var dimensions = R.mapObjIndexed(R.pipe(R.when( // invert TimeDimension Values
80
- R.allPass([_dotstatsuiteSdmxjs.isTimePeriodDimension, R.always(isTimeInverted)]), function (dim) {
81
- return R.over(R.lensProp('values'), R.map(R.over(R.lensProp('__indexPosition'), R.negate)))(dim);
82
- }), function (dim) {
83
- return R.over( // sort values
84
- R.lensProp('values'), R.sortWith([R.ascend(R.prop('__indexPosition')), R.ascend(R.prop('order'))]))(dim);
85
- }, R.when( // refine hierarchy on rows
86
- R.pipe(R.prop('id'), R.flip(R.includes)(R.propOr([], 'rows', layoutIds))), _dotstatsuiteSdmxjs.withFlatHierarchy)), R.pathOr({}, ['dimensions', 'many'], data));
79
+ var _invertTime = (0, _invertTime2.invertTime)(data, isTimeInverted),
80
+ dimensions = _invertTime.dimensions,
81
+ observations = _invertTime.observations;
87
82
 
88
83
  var seriesAttributesValues = R.propOr({}, 'seriesAttributesValues', data);
89
84
  var layout = R.pipe(R.mergeRight({ header: [], sections: [], rows: [] }), R.mapObjIndexed(R.flip(R.props)(dimensions)))(layoutIds);
@@ -96,7 +91,7 @@ var getTableProps = exports.getTableProps = function getTableProps(_ref) {
96
91
  display: display, unitDimension: unitDimension, unitsDisplay: unitsLevelDisplay, unitsSeries: unitsSeries,
97
92
  unitsDefinitionCodes: unitsDefinitionCodes, unitsIndexes: unitsAttachmentIndexesInLayout,
98
93
  partialUnitSerieIndexes: partialUnitSerieIndexes, rejectedValueIds: rejectedValueIds, layoutIds: layoutIds
99
- }), (0, _getLayoutWithFlags.getLayoutDataWithFlags)(seriesAttributesValues, display, customAttributes, refinedMetadataCoordinates, unitDimension.id), (0, _cleanUnitsInLayoutData.cleanUnitsInLayoutData)({ unitsDisplay: unitsLevelDisplay, unitsLayoutIndexes: unitsIndexesInLayout }))(layout, R.propOr({}, 'observations', data));
94
+ }), (0, _getLayoutWithFlags.getLayoutDataWithFlags)(seriesAttributesValues, display, customAttributes, refinedMetadataCoordinates, unitDimension.id), (0, _cleanUnitsInLayoutData.cleanUnitsInLayoutData)({ unitsDisplay: unitsLevelDisplay, unitsLayoutIndexes: unitsIndexesInLayout }))(layout, observations);
100
95
 
101
96
  return (0, _extends3.default)({
102
97
  cells: (0, _getCuratedCells.getCuratedCells)({ layout: layout, observations: cells, shape: ['header', 'sections', 'rows'] }),
@@ -83,7 +83,7 @@ var truncateSectionRows = exports.truncateSectionRows = function truncateSection
83
83
  var rowsLength = R.length(rows);
84
84
  var sectionKey = R.join(':', R.head(lastSection));
85
85
  if (rowsLength > _n) {
86
- var _R$splitAt = R.splitAt(R.negate(n), rows),
86
+ var _R$splitAt = R.splitAt(R.negate(_n), rows),
87
87
  _R$splitAt2 = (0, _slicedToArray3.default)(_R$splitAt, 2),
88
88
  rest = _R$splitAt2[0],
89
89
  extracted = _R$splitAt2[1];
@@ -5,9 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.prepareData = undefined;
7
7
 
8
- var _extends2 = require('babel-runtime/helpers/extends');
8
+ var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
9
9
 
10
- var _extends3 = _interopRequireDefault(_extends2);
10
+ var _defineProperty3 = _interopRequireDefault(_defineProperty2);
11
+
12
+ var _extends3 = require('babel-runtime/helpers/extends');
13
+
14
+ var _extends4 = _interopRequireDefault(_extends3);
11
15
 
12
16
  var _ramda = require('ramda');
13
17
 
@@ -49,6 +53,14 @@ var _getMetadataCoordinates = require('../../../../rules2/src/getMetadataCoordin
49
53
 
50
54
  var _getAdvancedAttributes = require('../../../../rules2/src/getAdvancedAttributes');
51
55
 
56
+ var _getDimensionsSimpleHierarchies = require('../../../../rules2/src/getDimensionsSimpleHierarchies');
57
+
58
+ var _duplicateObservations = require('../../../../rules2/src/duplicateObservations');
59
+
60
+ var _hierarchiseDimension = require('../../../../rules2/src/hierarchiseDimension');
61
+
62
+ var _getDimensionValuesIndexes = require('../../../../rules2/src/getDimensionValuesIndexes');
63
+
52
64
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
53
65
 
54
66
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -56,6 +68,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
56
68
  var prepareData = exports.prepareData = function prepareData(sdmxJson, customAttributes) {
57
69
  var unitsProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
58
70
 
71
+ var _options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
72
+
59
73
  var _R$pick = R.pick(['defaultCodes', 'annotationsDefinitionCodes', 'rejectedValueIds'], unitsProps),
60
74
  _R$pick$defaultCodes = _R$pick.defaultCodes,
61
75
  defaultCodes = _R$pick$defaultCodes === undefined ? [] : _R$pick$defaultCodes,
@@ -70,6 +84,8 @@ var prepareData = exports.prepareData = function prepareData(sdmxJson, customAtt
70
84
  var _customAttributes = R.assoc('units', unitsDefinitionCodes, customAttributes);
71
85
  var dimensions = R.pathOr([], ['data', 'structure', 'dimensions', 'observation'], sdmxJson);
72
86
 
87
+ var simpleHierarchies = (0, _getDimensionsSimpleHierarchies.getDimensionsSimpleHierarchies)(dimensions);
88
+ var hierarchies = R.mergeRight(simpleHierarchies, _options.hierarchies || {});
73
89
  var dimensionsIndexedByIds = R.indexBy(R.prop('id'), dimensions);
74
90
 
75
91
  var parsedDimensionsIds = (0, _parseDimensionsIds.parseDimensionsIds)(dimensions);
@@ -150,10 +166,19 @@ var prepareData = exports.prepareData = function prepareData(sdmxJson, customAtt
150
166
 
151
167
  var seriesAdvancedAttributes = (0, _getAdvancedAttributes.getSeriesAdvancedAttributes)(seriesAttributesValues, dimensions, seriesAdvancedAttributesIds);
152
168
 
169
+ var hierarchisedDimensions = R.map(function (dim) {
170
+ return (0, _hierarchiseDimension.hierarchiseDimension)(dim, R.propOr({}, dim.id, hierarchies));
171
+ })(manyValuesDimensions);
172
+ var valuesIndexes = R.reduce(function (acc, dim) {
173
+ return (0, _extends4.default)({}, acc, (0, _defineProperty3.default)({}, dim.__index, (0, _getDimensionValuesIndexes.getDimensionValuesIndexes)(dim.values)));
174
+ }, {}, R.values(hierarchisedDimensions));
175
+
176
+ var duplicatedObservations = (0, _duplicateObservations.duplicateObservations)(observations, valuesIndexes);
177
+
153
178
  return {
154
179
  dimensions: {
155
180
  one: oneValueDimensions,
156
- many: manyValuesDimensions,
181
+ many: hierarchisedDimensions,
157
182
  length: R.length(dimensions)
158
183
  },
159
184
  units: {
@@ -164,8 +189,8 @@ var prepareData = exports.prepareData = function prepareData(sdmxJson, customAtt
164
189
  unitsSeries: unitsSeries
165
190
  },
166
191
  metadataCoordinates: metadataCoordinates,
167
- advancedAttributes: (0, _extends3.default)({}, dataflowAdvancedAttributes, observationsAdvancedAttributes, seriesAdvancedAttributes),
168
- observations: observations,
192
+ advancedAttributes: (0, _extends4.default)({}, dataflowAdvancedAttributes, observationsAdvancedAttributes, seriesAdvancedAttributes),
193
+ observations: duplicatedObservations,
169
194
  observationsType: (0, _getObservationsType.getObservationsType)(sdmxJson.data),
170
195
  dataflowAttributes: dataflowAttributes,
171
196
  dataflowName: R.path(['data', 'structure', 'name'], sdmxJson),
@@ -31,6 +31,8 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
31
31
 
32
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
33
 
34
+ var TIME_PERIOD_ID = 'TIME_PERIOD';
35
+
34
36
  var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew) {
35
37
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
36
38
  var locale = options.locale;
@@ -92,7 +94,9 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
92
94
  });
93
95
  }), R.sortWith([R.ascend(R.prop('__indexPosition')), R.ascend(R.propOr(-1, 'order'))]), R.addIndex(R.map)(function (val, index) {
94
96
  return R.assoc('__indexPosition', index, val);
95
- }));
97
+ }),
98
+ /* NEW */
99
+ R.sortBy(R.prop('__index')));
96
100
  };
97
101
 
98
102
  //--------------------------------------------------------------------------------------------Header
@@ -142,43 +146,24 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
142
146
 
143
147
  var getDimObservations = R.propOr([], 'observation');
144
148
  var dimObservations = getDimObservations(dimensions);
149
+ var timePeriodDimension = (0, _dotstatsuiteSdmxjs.getTimePeriodObservation)(dimObservations);
150
+ var timePeriodId = timePeriodDimension.id;
145
151
 
146
152
  var getObservations = function getObservations(locale) {
147
153
  return R.addIndex(R.reduce)(function (acc, observation, obsIndex) {
148
154
  var id = R.prop('id')(observation);
149
155
  var dimAnnotations = (0, _sdmxData.getRelationnalAnnotations)(R.propOr([], 'annotations')(observation))(annotations);
150
156
  var isHidden = R.has(id, hiddenIds) || (0, _sdmxData.getIsHidden)(dimAnnotations);
151
- var isTime = (0, _dotstatsuiteSdmxjs.isTimePeriodDimension)(observation);
152
-
157
+ var isTime = observation.id === timePeriodId;
153
158
  var values = getValuesEnhanced(locale, annotations, isTime, id)(R.propOr([], 'values', observation));
154
- var ids = R.pipe(R.pluck('id'), R.indexBy(R.identity))(values);
155
- var groupedByParentsValues = R.groupBy(function (val) {
156
- var parentId = R.propOr('##ROOT', 'parent', val);
157
- if (parentId !== '##ROOT' && !R.has(parentId, ids)) {
158
- return '##ROOT';
159
- }
160
- return parentId;
161
- }, values);
162
- var sortedGroupedValues = R.mapObjIndexed(R.sortWith([R.ascend(R.prop('__indexPosition')), R.ascend(R.prop('__index'))]), groupedByParentsValues);
163
-
164
- var getReccursiveChildren = function getReccursiveChildren(parent) {
165
- var children = R.propOr([], parent, sortedGroupedValues);
166
- return R.map(function (child) {
167
- return R.prepend(child, getReccursiveChildren(child.id));
168
- }, children);
169
- };
170
-
171
- var sortedValues = R.pipe(getReccursiveChildren, R.flatten, R.addIndex(R.map)(function (value, index) {
172
- return R.assoc('__indexPosition', index, value);
173
- }), R.sortBy(R.prop('__index')))('##ROOT');
174
159
 
175
160
  return {
176
161
  observation: R.append((0, _extends3.default)({}, observation, {
177
162
  display: !isHidden,
178
163
  __index: obsIndex,
179
164
  name: (0, _dotstatsuiteSdmxjs.getRefinedName)(observation),
180
- values: sortedValues,
181
- role: R.isNil(observation.roles) ? null : R.head(observation.roles)
165
+ values: values,
166
+ role: isTime ? TIME_PERIOD_ID : R.head(R.propOr([], 'roles', observation))
182
167
  }))(acc.observation),
183
168
  dimensionsLayout: (0, _sdmxData.setAnnotationsLayout)(id, acc.dimensionsLayout)(dimAnnotations)
184
169
  };
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.duplicateObservations = undefined;
7
+
8
+ var _extends2 = require('babel-runtime/helpers/extends');
9
+
10
+ var _extends3 = _interopRequireDefault(_extends2);
11
+
12
+ var _ramda = require('ramda');
13
+
14
+ var R = _interopRequireWildcard(_ramda);
15
+
16
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ var duplicateObservations = exports.duplicateObservations = function duplicateObservations(observations, indexes) {
21
+ return R.addIndex(R.reduce)(function (acc, obs, i) {
22
+
23
+ var orderedIndexes = R.addIndex(R.map)(function (valueIndex, dimIndex) {
24
+ return R.pathOr([Number(valueIndex)], [dimIndex, valueIndex], indexes);
25
+ }, R.propOr([], 'dimValuesIndexes', obs));
26
+
27
+ var cartesian = void 0;
28
+
29
+ if (R.any(function (is) {
30
+ return R.length(is) > 1;
31
+ })(orderedIndexes)) {
32
+ cartesian = R.reduce(function (acc, oInds) {
33
+ var r = R.map(function (i) {
34
+ return R.map(function (is) {
35
+ return R.append(i, is);
36
+ }, acc);
37
+ }, oInds);
38
+ return R.unnest(r);
39
+ }, R.pipe(R.head, R.map(R.of))(orderedIndexes), R.tail(orderedIndexes));
40
+ } else {
41
+ cartesian = [R.unnest(orderedIndexes)];
42
+ }
43
+
44
+ var duplicatedObs = R.reduce(function (acc, orderedDimIndexes) {
45
+ var key = R.join(':', orderedDimIndexes);
46
+ return R.assoc(key, (0, _extends3.default)({}, obs, { orderedDimIndexes: orderedDimIndexes }), acc);
47
+ }, {}, cartesian);
48
+
49
+ return R.mergeRight(acc, duplicatedObs);
50
+ }, {}, R.values(observations));
51
+ };
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getDimensionValuesIndexes = undefined;
7
+
8
+ var _ramda = require('ramda');
9
+
10
+ var R = _interopRequireWildcard(_ramda);
11
+
12
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
13
+
14
+ var getDimensionValuesIndexes = exports.getDimensionValuesIndexes = function getDimensionValuesIndexes(values) {
15
+ return R.addIndex(R.reduce)(function (acc, value, position) {
16
+ var sdmxIndex = value.__index;
17
+ return R.over(R.lensProp(String(sdmxIndex)), R.ifElse(R.isNil, R.always([position]), R.append(position)))(acc);
18
+ }, {}, values);
19
+ };
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getDimensionsSimpleHierarchies = undefined;
7
+
8
+ var _ramda = require('ramda');
9
+
10
+ var R = _interopRequireWildcard(_ramda);
11
+
12
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
13
+
14
+ var getDimensionSimpleHierarchy = function getDimensionSimpleHierarchy(_ref) {
15
+ var values = _ref.values;
16
+
17
+ var indexed = R.indexBy(R.prop('id'), values);
18
+ return R.pipe(R.reduce(function (acc, value) {
19
+ var id = value.id,
20
+ parent = value.parent;
21
+
22
+ var _parent = R.isNil(parent) || !R.has(parent, indexed) ? '#ROOT' : parent;
23
+ return R.over(R.lensProp(_parent), function (ids) {
24
+ return R.isNil(ids) ? [id] : R.append(id, ids);
25
+ })(acc);
26
+ }, {}), R.map(R.sortBy(function (id) {
27
+ return R.pathOr(-1, [id, '__indexPosition'], indexed);
28
+ })))(values);
29
+ };
30
+
31
+ var getDimensionsSimpleHierarchies = exports.getDimensionsSimpleHierarchies = function getDimensionsSimpleHierarchies(dimensions) {
32
+ return R.reduce(function (acc, dim) {
33
+ var id = dim.id,
34
+ values = dim.values;
35
+
36
+ if (R.length(values) < 2) {
37
+ return acc;
38
+ }
39
+ var hierarchy = getDimensionSimpleHierarchy(dim);
40
+ return R.assoc(id, hierarchy, acc);
41
+ }, {}, dimensions);
42
+ };
@@ -0,0 +1,46 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getHCodelistsRefsInData = exports.getHCodelistsRefs = undefined;
7
+
8
+ var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
9
+
10
+ var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
11
+
12
+ var _ramda = require('ramda');
13
+
14
+ var R = _interopRequireWildcard(_ramda);
15
+
16
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ var getHCodelistsRefs = exports.getHCodelistsRefs = function getHCodelistsRefs(annotations) {
21
+ return R.reduce(function (acc, annotation) {
22
+ if (annotation.type !== 'HIER_CONTEXT') {
23
+ return acc;
24
+ }
25
+ var reference = annotation.text || '';
26
+ var match = reference.match(/([\w@_.]+):([\w@_.]+):([\w@_.]+)\(([\d.]+)\).([\w@_.]+)$/);
27
+ if (R.isNil(match)) {
28
+ return acc;
29
+ }
30
+
31
+ var _R$tail = R.tail(match),
32
+ _R$tail2 = (0, _slicedToArray3.default)(_R$tail, 5),
33
+ codelistId = _R$tail2[0],
34
+ agencyId = _R$tail2[1],
35
+ code = _R$tail2[2],
36
+ version = _R$tail2[3],
37
+ hierarchy = _R$tail2[4];
38
+
39
+ return R.assoc(codelistId, { agencyId: agencyId, code: code, version: version, hierarchy: hierarchy, codelistId: codelistId }, acc);
40
+ }, {}, annotations);
41
+ };
42
+
43
+ var getHCodelistsRefsInData = exports.getHCodelistsRefsInData = function getHCodelistsRefsInData(sdmxJson) {
44
+ var annotations = R.pathOr([], ['data', 'structure', 'annotations'], sdmxJson);
45
+ return getHCodelistsRefs(annotations);
46
+ };
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.hierarchiseDimension = undefined;
7
+
8
+ var _extends2 = require('babel-runtime/helpers/extends');
9
+
10
+ var _extends3 = _interopRequireDefault(_extends2);
11
+
12
+ var _ramda = require('ramda');
13
+
14
+ var R = _interopRequireWildcard(_ramda);
15
+
16
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ var hierarchiseDimension = exports.hierarchiseDimension = function hierarchiseDimension(dimension, hierarchy) {
21
+ var indexed = R.indexBy(R.prop('id'), dimension.values);
22
+ var _hierarchy = hierarchy;
23
+ if (!R.has('#ROOT', hierarchy)) {
24
+ var indexes = R.pluck('id', dimension.values);
25
+ var refinedHierarchy = R.pick(indexes, _hierarchy);
26
+ var childrenIds = R.pipe(R.values, R.unnest, R.indexBy(R.identity))(refinedHierarchy);
27
+ var rootIds = R.pipe(R.reject(function (val) {
28
+ return R.has(val.id, childrenIds);
29
+ }), R.sortBy(R.prop('__indexPosition')), R.pluck('id'))(dimension.values);
30
+ _hierarchy = R.assoc('#ROOT', rootIds, hierarchy);
31
+ }
32
+
33
+ var getChildren = function getChildren(parents) {
34
+ return R.pipe(function (ids) {
35
+ return R.props(ids, indexed);
36
+ }, R.filter(R.identity), R.map(function (val) {
37
+ var _val = (0, _extends3.default)({}, val, {
38
+ parent: R.last(parents),
39
+ parents: parents
40
+ });
41
+ var children = getChildren(R.append(val.id, parents));
42
+ return R.prepend(_val, children);
43
+ }))(R.propOr([], R.last(parents) || '#ROOT', _hierarchy));
44
+ };
45
+
46
+ return R.set(R.lensProp('values'), R.flatten(getChildren([])))(dimension);
47
+ };
@@ -71,4 +71,28 @@ Object.defineProperty(exports, 'getNotDisplayedIds', {
71
71
  get: function get() {
72
72
  return _getNotDisplayedIds.getNotDisplayedIds;
73
73
  }
74
+ });
75
+
76
+ var _getHCodelistsRefsInData = require('./getHCodelistsRefsInData');
77
+
78
+ Object.defineProperty(exports, 'getHCodelistsRefs', {
79
+ enumerable: true,
80
+ get: function get() {
81
+ return _getHCodelistsRefsInData.getHCodelistsRefs;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, 'getHCodelistsRefsInData', {
85
+ enumerable: true,
86
+ get: function get() {
87
+ return _getHCodelistsRefsInData.getHCodelistsRefsInData;
88
+ }
89
+ });
90
+
91
+ var _parseHierarchicalCodelist = require('./parseHierarchicalCodelist');
92
+
93
+ Object.defineProperty(exports, 'parseHierarchicalCodelist', {
94
+ enumerable: true,
95
+ get: function get() {
96
+ return _parseHierarchicalCodelist.parseHierarchicalCodelist;
97
+ }
74
98
  });
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.invertTime = undefined;
7
+
8
+ var _ramda = require('ramda');
9
+
10
+ var R = _interopRequireWildcard(_ramda);
11
+
12
+ var _dotstatsuiteSdmxjs = require('@sis-cc/dotstatsuite-sdmxjs');
13
+
14
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
15
+
16
+ var invertTime = exports.invertTime = function invertTime(data, isTimeInverted) {
17
+ var dimensions = R.pathOr([], ['dimensions', 'many'], data);
18
+ var observations = R.propOr({}, 'observations', data);
19
+ if (!isTimeInverted) {
20
+ return { dimensions: dimensions, observations: observations };
21
+ }
22
+ var timeD = R.find(_dotstatsuiteSdmxjs.isTimePeriodDimension, R.values(dimensions));
23
+ if (!timeD) {
24
+ return { dimensions: dimensions, observations: observations };
25
+ }
26
+ var timeLength = R.length(timeD.values);
27
+ var timeIndex = timeD.__index;
28
+ var invertTimeInObs = R.map(R.over(R.lensProp('orderedDimIndexes'), R.over(R.lensIndex(timeIndex), function (i) {
29
+ return timeLength - i - 1;
30
+ })), observations);
31
+ var invertedTimeInDims = R.over(R.lensProp(timeD.id), R.over(R.lensProp('values'), R.reverse))(dimensions);
32
+ return { dimensions: invertedTimeInDims, observations: invertTimeInObs };
33
+ };
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseHierarchicalCodelist = undefined;
7
+
8
+ var _ramda = require('ramda');
9
+
10
+ var R = _interopRequireWildcard(_ramda);
11
+
12
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
13
+
14
+ var parseHierarchicalCodelist = exports.parseHierarchicalCodelist = function parseHierarchicalCodelist(sdmxJson, hierarchyId) {
15
+ var hCodelist = R.pathOr({}, ['data', 'hierarchicalCodelists', 0], sdmxJson);
16
+ var hierarchy = R.find(R.propEq('id', hierarchyId), hCodelist.hierarchies || []);
17
+
18
+ return R.pipe(R.propOr([], 'hierarchicalCodes'), R.reduce(function (acc, parentCode) {
19
+ var children = R.pluck('id', parentCode.hierarchicalCodes || []);
20
+ return R.assoc(parentCode.id, children, acc);
21
+ }, {}))(hierarchy);
22
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sis-cc/dotstatsuite-components",
3
3
  "description": "Set components based on React.",
4
- "version": "13.5.5",
4
+ "version": "14.1.0",
5
5
  "main": "lib/index.js",
6
6
  "author": "OECD",
7
7
  "license": "MIT",
@@ -37,7 +37,7 @@
37
37
  "peerDependencies": {
38
38
  "@material-ui/core": "^4.x",
39
39
  "@sis-cc/dotstatsuite-visions": "^7.x",
40
- "@sis-cc/dotstatsuite-sdmxjs": "^6.x",
40
+ "@sis-cc/dotstatsuite-sdmxjs": "^7.x",
41
41
  "react": "16.x"
42
42
  }
43
43
  }
@@ -71,11 +71,6 @@ const getObservationUnits = (observation, dimensions, attributes, options) => {
71
71
  return ({ ...dimensionsUnits, ...attributesUnits, serieKey });
72
72
  };
73
73
 
74
- const getOrderedDimensionsIndexes = (dimensions, indexes) => R.addIndex(R.map)(
75
- (valueIndex, dimensionIndex) => R.path([dimensionIndex, 'values', valueIndex, '__indexPosition'], dimensions),
76
- indexes
77
- );
78
-
79
74
  const getFormatAttributesIndexes = (attributes, customAttributes) => R.addIndex(R.reduce)(
80
75
  (acc, attribute, index) => {
81
76
  if (R.equals(attribute.id, customAttributes.decimals)) {
@@ -148,7 +143,6 @@ export const enhanceObservations = (dimensions = [], observations = {}, attribut
148
143
  ...observation,
149
144
  attributes: obsAttributes,
150
145
  formattedValue: formatValue(observation, formatAttributesIndexes, attributes),
151
- orderedDimIndexes: getOrderedDimensionsIndexes(dimensions, dimValuesIndexes),
152
146
  units: getObservationUnits(observation, dimensions, _attributes, options),
153
147
  indexedDimValIds,
154
148
  });
@@ -95,7 +95,8 @@ export const getCells = (data, display, customAttributes, unitsProps, metadataCo
95
95
  R.set(R.lensProp('intValue'), R.prop('value', observation)),
96
96
  R.set(R.lensProp('value'), R.prop('formattedValue', observation)),
97
97
  R.assoc('indexedDimValIds', R.prop('indexedDimValIds', observation)),
98
- R.assoc('sideProps', getSideProps(observation, customAttributes, metadataCoordinates))
98
+ R.assoc('sideProps', getSideProps(observation, customAttributes, metadataCoordinates)),
99
+ R.set(R.lensProp('key'), R.prop('key', observation)),
99
100
  )({}),
100
101
  R.propOr({}, 'observations', data)
101
102
  );
@@ -17,15 +17,14 @@ const getPivots = (layout, shape) => R.pipe(
17
17
  )(layout);
18
18
 
19
19
  const indexWithPivots = (pivots, observations) => R.pipe(
20
- R.keys,
20
+ R.values,
21
21
  R.reduce(
22
- (acc, obsKey) => {
23
- const splitKey = R.split(':', obsKey);
22
+ (acc, obs) => {
23
+ const splitKey = R.split(':', obs.key);
24
24
  const path = R.map(
25
25
  pivot => pivot(splitKey),
26
26
  pivots
27
27
  );
28
- const obs = R.prop(obsKey, observations);
29
28
  return R.over(
30
29
  R.lensPath(path),
31
30
  R.ifElse(R.isNil, R.always([obs]), R.append(obs))