@sis-cc/dotstatsuite-components 17.12.6 → 17.13.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 (28) hide show
  1. package/lib/rules2/src/{hierarchiseDimensionWithAdvancedHierarchy.js → hierarchiseDimensionWithAdvancedHierarchy2.js} +22 -17
  2. package/lib/rules2/src/{hierarchiseDimensionWithNativeHierarchy.js → hierarchiseDimensionWithNativeHierarchy2.js} +10 -5
  3. package/lib/rules2/src/index.js +21 -12
  4. package/lib/rules2/src/prepareData.js +2 -2
  5. package/lib/rules2/src/refineDimensions.js +3 -6
  6. package/lib/rules2/src/table/getLayoutData2.js +218 -0
  7. package/lib/rules2/src/table/getTableProps.js +6 -9
  8. package/lib/rules2/src/table/parseSeriesIndexesHierarchies.js +96 -0
  9. package/lib/rules2/src/table/{refineLayoutSize.js → refineLayoutSize2.js} +53 -34
  10. package/package.json +1 -1
  11. package/src/rules2/src/{hierarchiseDimensionWithAdvancedHierarchy.js → hierarchiseDimensionWithAdvancedHierarchy2.js} +24 -23
  12. package/src/rules2/src/{hierarchiseDimensionWithNativeHierarchy.js → hierarchiseDimensionWithNativeHierarchy2.js} +31 -28
  13. package/src/rules2/src/index.js +5 -5
  14. package/src/rules2/src/prepareData.js +2 -2
  15. package/src/rules2/src/refineDimensions.js +3 -6
  16. package/src/rules2/src/table/getLayoutData2.js +175 -0
  17. package/src/rules2/src/table/getTableProps.js +8 -4
  18. package/src/rules2/src/table/parseSeriesIndexesHierarchies.js +62 -0
  19. package/src/rules2/src/table/{refineLayoutSize.js → refineLayoutSize2.js} +50 -21
  20. package/test/getLayoutData2.test.js +268 -0
  21. package/test/{hierarchiseDimensionWithAdvancedHierarchy.test.js → hierarchiseDimensionWithAdvancedHierarchy2.test.js} +34 -69
  22. package/test/{hierarchiseDimensionWithNativeHierarchy.test.js → hierarchiseDimensionWithNativeHierarchy2.test.js} +14 -14
  23. package/test/parseSeriesIndexesHierarchies.test.js +104 -0
  24. package/test/{refineLayoutSize.test.js → refineLayoutSize2.test.js} +63 -64
  25. package/test/refinedDimensions.test.js +8 -8
  26. package/lib/rules2/src/table/getLayoutData.js +0 -209
  27. package/src/rules2/src/table/getLayoutData.js +0 -193
  28. package/test/getLayoutData.test.js +0 -284
@@ -68,28 +68,33 @@ var hierarchiseDimensionWithAdvancedHierarchy = exports.hierarchiseDimensionWith
68
68
  var indexed = R.indexBy(R.prop('id'), dimension.values);
69
69
  var hierarchy = refinePartialHierarchy(_hierarchy, indexed);
70
70
 
71
- var rest = indexed;
72
- var getChildren = function getChildren(parents, hier) {
73
- return R.pipe(function (ids) {
74
- rest = R.omit(ids, rest);
75
- return R.props(ids, indexed);
76
- }, R.filter(R.identity), R.map(function (val) {
77
- var _val = (0, _extends3.default)({}, val, {
78
- parent: R.last(parents),
79
- parents: parents
80
- });
81
- var children = getChildren(R.append(val.id, parents), hier);
82
- return R.prepend(_val, children);
83
- }))(R.propOr([], R.isEmpty(parents) ? '#ROOT' : R.join('.', parents), hier));
71
+ var rest = R.pipe(R.values, R.unnest, R.flip(R.omit)(indexed), R.values)(hierarchy);
72
+ var index = R.length(rest) - 1;
73
+ var getChildren = function getChildren(_ref3) {
74
+ var parentsIndexes = _ref3.parentsIndexes,
75
+ parentId = _ref3.parentId;
76
+
77
+ var childrenIds = R.propOr([], parentId, hierarchy);
78
+ var children = R.reduce(function (acc, childId) {
79
+ if (!R.has(childId, indexed)) {
80
+ return acc;
81
+ }
82
+ index = index + 1;
83
+ var child = (0, _extends3.default)({}, R.prop(childId, indexed), { __indexPosition: index, parents: parentsIndexes, parent: R.isEmpty(parentsIndexes) ? undefined : R.pipe(R.split('.'), R.last)(parentId) });
84
+ var descendants = getChildren({ parentsIndexes: R.append(index, parentsIndexes), parentId: R.isEmpty(parentsIndexes) ? child.id : parentId + '.' + child.id });
85
+ return R.append(R.prepend(child, descendants), acc);
86
+ }, [], childrenIds);
87
+
88
+ return children;
84
89
  };
85
90
 
86
91
  return R.set(R.lensProp('values'), R.pipe(getChildren, R.flatten, function (values) {
87
92
  if (R.isEmpty(rest)) {
88
93
  return values;
89
94
  }
90
- var sortedRest = R.pipe(R.values, R.map(function (val) {
91
- return (0, _extends3.default)({}, val, { parent: undefined, parents: [] });
92
- }), R.sortBy(R.prop('__indexPosition')))(rest);
95
+ var sortedRest = R.pipe(R.sortBy(R.prop('__indexPosition')), R.addIndex(R.map)(function (val, ind) {
96
+ return (0, _extends3.default)({}, val, { __indexPosition: ind, parent: undefined, parents: [] });
97
+ }))(rest);
93
98
  return R.concat(sortedRest, values);
94
- })([], hierarchy))(dimension);
99
+ })({ parentsIndexes: [], parentId: '#ROOT' }))(dimension);
95
100
  };
@@ -18,14 +18,19 @@ var hierarchiseDimensionWithNativeHierarchy = exports.hierarchiseDimensionWithNa
18
18
  return val.parent && R.has(val.parent, indexed) ? val.parent : '#ROOT';
19
19
  }, values);
20
20
 
21
- var getChildren = function getChildren(parents) {
22
- var childs = R.propOr([], R.defaultTo('#ROOT', R.last(parents)), grouped);
21
+ var index = -1;
22
+ var getChildren = function getChildren(_ref) {
23
+ var parentsIndexes = _ref.parentsIndexes,
24
+ parentId = _ref.parentId;
25
+
26
+ var childs = R.propOr([], parentId, grouped);
23
27
  return R.reduce(function (acc, child) {
24
- var refined = R.pipe(R.assoc('parents', parents), R.assoc('parent', R.last(parents)))(child);
25
- var children = getChildren(R.append(child.id, parents));
28
+ index = index + 1;
29
+ var refined = R.pipe(R.assoc('__indexPosition', index), R.assoc('parents', parentsIndexes), R.assoc('parent', R.isEmpty(parentsIndexes) ? undefined : parentId))(child);
30
+ var children = getChildren({ parentsIndexes: R.append(index, parentsIndexes), parentId: child.id });
26
31
  return R.concat(acc, R.prepend(refined, children));
27
32
  }, [], childs);
28
33
  };
29
34
 
30
- return R.set(R.lensProp('values'), getChildren([]))(dimension);
35
+ return R.set(R.lensProp('values'), getChildren({ parentsIndexes: [], parentId: '#ROOT' }))(dimension);
31
36
  };
@@ -97,15 +97,6 @@ Object.defineProperty(exports, 'parseHierarchicalCodelist', {
97
97
  }
98
98
  });
99
99
 
100
- var _hierarchiseDimensionWithAdvancedHierarchy = require('./hierarchiseDimensionWithAdvancedHierarchy');
101
-
102
- Object.defineProperty(exports, 'refinePartialHierarchy', {
103
- enumerable: true,
104
- get: function get() {
105
- return _hierarchiseDimensionWithAdvancedHierarchy.refinePartialHierarchy;
106
- }
107
- });
108
-
109
100
  var _getMetadataCoordinates = require('./getMetadataCoordinates');
110
101
 
111
102
  Object.defineProperty(exports, 'getMetadataCoordinates', {
@@ -123,6 +114,15 @@ Object.defineProperty(exports, 'duplicateObs', {
123
114
  return _duplicateObservations.duplicateObs;
124
115
  }
125
116
  });
117
+
118
+ var _hierarchiseDimensionWithAdvancedHierarchy = require('./hierarchiseDimensionWithAdvancedHierarchy2');
119
+
120
+ Object.defineProperty(exports, 'refinePartialHierarchy', {
121
+ enumerable: true,
122
+ get: function get() {
123
+ return _hierarchiseDimensionWithAdvancedHierarchy.refinePartialHierarchy;
124
+ }
125
+ });
126
126
  Object.defineProperty(exports, 'hierarchiseDimensionWithAdvancedHierarchy', {
127
127
  enumerable: true,
128
128
  get: function get() {
@@ -130,7 +130,7 @@ Object.defineProperty(exports, 'hierarchiseDimensionWithAdvancedHierarchy', {
130
130
  }
131
131
  });
132
132
 
133
- var _hierarchiseDimensionWithNativeHierarchy = require('./hierarchiseDimensionWithNativeHierarchy');
133
+ var _hierarchiseDimensionWithNativeHierarchy = require('./hierarchiseDimensionWithNativeHierarchy2');
134
134
 
135
135
  Object.defineProperty(exports, 'hierarchiseDimensionWithNativeHierarchy', {
136
136
  enumerable: true,
@@ -301,7 +301,7 @@ Object.defineProperty(exports, 'getSortedLayoutIndexes', {
301
301
  }
302
302
  });
303
303
 
304
- var _refineLayoutSize = require('./table/refineLayoutSize');
304
+ var _refineLayoutSize = require('./table/refineLayoutSize2');
305
305
 
306
306
  Object.defineProperty(exports, 'refineLayoutSize', {
307
307
  enumerable: true,
@@ -319,7 +319,7 @@ Object.defineProperty(exports, 'getFlagsAndNotes', {
319
319
  }
320
320
  });
321
321
 
322
- var _getLayoutData = require('./table/getLayoutData');
322
+ var _getLayoutData = require('./table/getLayoutData2');
323
323
 
324
324
  Object.defineProperty(exports, 'getLayoutData', {
325
325
  enumerable: true,
@@ -407,4 +407,13 @@ Object.defineProperty(exports, 'parseValueHierarchy', {
407
407
  get: function get() {
408
408
  return _parseValueHierarchy.parseValueHierarchy;
409
409
  }
410
+ });
411
+
412
+ var _parseSeriesIndexesHierarchies = require('./table/parseSeriesIndexesHierarchies');
413
+
414
+ Object.defineProperty(exports, 'parseLayoutIndexesHierarchies', {
415
+ enumerable: true,
416
+ get: function get() {
417
+ return _parseSeriesIndexesHierarchies.parseLayoutIndexesHierarchies;
418
+ }
410
419
  });
@@ -33,9 +33,9 @@ var _getManyValuesDimensions = require('./getManyValuesDimensions');
33
33
 
34
34
  var _getOneValueDimensions = require('./getOneValueDimensions');
35
35
 
36
- var _hierarchiseDimensionWithNativeHierarchy = require('./hierarchiseDimensionWithNativeHierarchy');
36
+ var _hierarchiseDimensionWithNativeHierarchy = require('./hierarchiseDimensionWithNativeHierarchy2');
37
37
 
38
- var _hierarchiseDimensionWithAdvancedHierarchy = require('./hierarchiseDimensionWithAdvancedHierarchy');
38
+ var _hierarchiseDimensionWithAdvancedHierarchy = require('./hierarchiseDimensionWithAdvancedHierarchy2');
39
39
 
40
40
  var _getDataflowAttributes = require('./getDataflowAttributes');
41
41
 
@@ -25,15 +25,12 @@ var refineDimensions = exports.refineDimensions = function refineDimensions() {
25
25
 
26
26
  return R.addIndex(R.map)(function (dim, index) {
27
27
  var selection = R.nth(index, selectionIds);
28
- if (R.isNil(selection) || R.length(selection) === 0 || R.isEmpty(R.head(selection))) {
29
- return (0, _extends3.default)({}, dim, { header: R.length(dim.values || []) <= 1 });
30
- }
31
28
  var values = R.map(function (val) {
32
- if (R.includes(val.id, selection)) {
33
- return val;
29
+ if (R.includes(val.id, selection || []) || R.isNil(selection) || R.length(selection) === 0 || R.isEmpty(R.head(selection))) {
30
+ return R.assoc('isSelected', true, val);
34
31
  }
35
32
  return R.assoc('empty', true, val);
36
33
  }, dim.values || []);
37
- return (0, _extends3.default)({}, dim, { values: values, header: R.length(values) <= 1 || R.length(selection) === 1 });
34
+ return (0, _extends3.default)({}, dim, { values: values, header: R.length(values) <= 1 || R.length(selection) === 1 && !R.isEmpty(R.head(selection)) });
38
35
  }, dimensions);
39
36
  };
@@ -0,0 +1,218 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getLayoutData = exports.getSerieDatas = undefined;
7
+
8
+ var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
9
+
10
+ var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
11
+
12
+ var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
13
+
14
+ var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
15
+
16
+ var _extends2 = require('babel-runtime/helpers/extends');
17
+
18
+ var _extends3 = _interopRequireDefault(_extends2);
19
+
20
+ var _ramda = require('ramda');
21
+
22
+ var R = _interopRequireWildcard(_ramda);
23
+
24
+ var _getFlagsAndNotes = require('./getFlagsAndNotes');
25
+
26
+ var _utils = require('../utils');
27
+
28
+ 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; } }
29
+
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
+
32
+ var getValueData = function getValueData(index, dimension, parentsIndexes) {
33
+ return {
34
+ dimension: R.pick(['id', 'name', '__index'], dimension),
35
+ value: (0, _extends3.default)({}, R.pipe(R.pathOr({}, ['values', index]), R.pick(['id', 'name']))(dimension), {
36
+ parents: parentsIndexes
37
+ })
38
+ };
39
+ };
40
+
41
+ var addCoordinatesToKey = function addCoordinatesToKey(key, dimensionId, valueId) {
42
+ return '' + key + (R.isEmpty(key) ? '' : ':') + dimensionId + '=' + valueId;
43
+ };
44
+
45
+ var simpleValueDataSetter = function simpleValueDataSetter(valueData) {
46
+ var datas = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
47
+ return R.append(valueData, datas);
48
+ };
49
+
50
+ var combinedValueDataSetter = function combinedValueDataSetter(valueData) {
51
+ var datas = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
52
+ return R.over(R.lensIndex(-1), function (d) {
53
+ return (0, _extends3.default)({}, d, { values: R.append(R.prop('value', valueData), d.values) });
54
+ }, datas);
55
+ };
56
+
57
+ var addValueToSerieData = function addValueToSerieData(dataSetter) {
58
+ return function (index, parentsIndexes, dimension, serieData) {
59
+ var valueData = getValueData(index, dimension, parentsIndexes);
60
+ var valueId = R.path(['value', 'id'], valueData);
61
+ return (0, _extends3.default)({}, serieData, {
62
+ data: dataSetter(valueData, R.prop('data', serieData)),
63
+ coordinates: R.assoc(dimension.id, valueId, R.prop('coordinates', serieData)),
64
+ key: addCoordinatesToKey(R.prop('key', serieData), R.prop('id', dimension), valueId)
65
+ });
66
+ };
67
+ };
68
+
69
+ var addSimpleValueToSerieData = addValueToSerieData(simpleValueDataSetter);
70
+
71
+ var addCombinedValueToSerieData = addValueToSerieData(combinedValueDataSetter);
72
+
73
+ var getHasAdvancedAttributes = function getHasAdvancedAttributes(attrValues, customAttributes) {
74
+ return R.pipe(R.omit(R.concat(customAttributes.flags || [], customAttributes.notes || [])), R.isEmpty, R.not)(attrValues);
75
+ };
76
+
77
+ var getCoordinates = function getCoordinates(indexes, topCoordinates, definition) {
78
+ return R.addIndex(R.reduce)(function (acc, entry, index) {
79
+ if (R.has('dimensions', entry)) {
80
+ return R.addIndex(R.reduce)(function (_acc, dim, _index) {
81
+ var valInd = R.path([index, _index], indexes);
82
+ return R.assoc(dim.id, R.path(['values', valInd, 'id'], dim), _acc);
83
+ }, acc, entry.dimensions);
84
+ }
85
+ var valInd = R.nth(index, indexes);
86
+ return R.assoc(entry.id, R.path(['values', valInd, 'id'], entry), acc);
87
+ }, topCoordinates, definition);
88
+ };
89
+
90
+ var getAttributesSeries = function getAttributesSeries(validator, attributesSeries) {
91
+ return R.reduce(function (acc, attrs) {
92
+ var attr = R.head(R.values(attrs));
93
+ var coordinates = R.propOr({}, 'coordinates', attr);
94
+ var isValid = validator(coordinates);
95
+ if (!isValid && !attr.isObs) {
96
+ return acc;
97
+ }
98
+ return (0, _extends3.default)({}, acc, attrs);
99
+ }, {}, R.values(attributesSeries));
100
+ };
101
+
102
+ var combineConcepts = function combineConcepts(combDimValues, definition, attrValues) {
103
+ return R.over(R.lensProp('data'), R.over(R.lensIndex(-1), function (data) {
104
+ return (0, _extends3.default)({}, data, {
105
+ values: R.reduce(function (acc, conceptId) {
106
+ if (R.has(conceptId, combDimValues)) {
107
+ return R.append(R.prop(conceptId, combDimValues), acc);
108
+ }
109
+ if (R.has(conceptId, definition.fixedDimValues || {})) {
110
+ return R.append(R.prop(conceptId, definition.fixedDimValues), acc);
111
+ }
112
+ if (R.has(conceptId, attrValues)) {
113
+ var value = R.path([conceptId, 'value'], attrValues);
114
+ return R.append(value, acc);
115
+ }
116
+ return acc;
117
+ }, [], definition.concepts)
118
+ });
119
+ }));
120
+ };
121
+
122
+ var getSerieFlagsAndSideProps = function getSerieFlagsAndSideProps(coordinates, validator, attributesValues, customAttributes, metadataCoordinates) {
123
+ var layoutAttrValues = R.reject(R.prop('isObs'), attributesValues);
124
+ var flags = (0, _getFlagsAndNotes.getFlagsAndNotes)(layoutAttrValues, customAttributes);
125
+ var hasMetadata = !R.isNil(R.find(validator, metadataCoordinates));
126
+ var hasAdvancedAttributes = getHasAdvancedAttributes(layoutAttrValues, customAttributes);
127
+ var sideProps = hasMetadata || hasAdvancedAttributes ? { hasMetadata: hasMetadata, hasAdvancedAttributes: hasAdvancedAttributes, coordinates: coordinates } : null;
128
+ return { flags: flags, sideProps: sideProps };
129
+ };
130
+
131
+ var getSerieDatas = exports.getSerieDatas = function getSerieDatas(serie, definition, topCoordinates, attributesSeries, customAttributes, metadataCoordinates) {
132
+ var lines = [];
133
+
134
+ var serieCoordinates = getCoordinates(serie.indexes, topCoordinates, definition);
135
+ var coordinatesValidator = (0, _utils.getLayoutCoordinatesValidator)(serieCoordinates, topCoordinates);
136
+ var attributesValues = getAttributesSeries(coordinatesValidator, attributesSeries);
137
+
138
+ var addMissingParentsLines = function addMissingParentsLines(dataSetter) {
139
+ return function (missingParentsIndexes, parentsIndexes, dim, serieData) {
140
+ return R.reduce(function (parents, index) {
141
+ var missingParentData = addValueToSerieData(dataSetter)(index, parents, dim, serieData);
142
+ lines.push(R.assoc('isEmpty', true, missingParentData));
143
+ return R.append(index, parents);
144
+ }, parentsIndexes, missingParentsIndexes);
145
+ };
146
+ };
147
+
148
+ var addSimpleMissingParentsLines = addMissingParentsLines(simpleValueDataSetter);
149
+ var addCombinedMissingParentsLines = addMissingParentsLines(combinedValueDataSetter);
150
+
151
+ var serieData = R.addIndex(R.reduce)(function (onGoingSerie, entry, index) {
152
+ if (R.has('dimensions', entry)) {
153
+ var combValuesIndexes = R.pathOr([], ['indexes', index], serie);
154
+ var combParentsIndexes = R.pathOr([], ['parentsIndexes', index], serie);
155
+ var combMissingParentsIndexes = R.pathOr([], ['missingIndexes', index], serie);
156
+ var combDimValues = {};
157
+ var res = R.addIndex(R.reduce)(function (combSerie, dimension, dimIndex) {
158
+ var valueIndex = Math.abs(R.nth(dimIndex, combValuesIndexes));
159
+ var _parentsIndexes = R.nth(dimIndex, combParentsIndexes) || [];
160
+ var missingParentsIndexes = R.nth(dimIndex, combMissingParentsIndexes) || [];
161
+ var parentsIndexes = addCombinedMissingParentsLines(missingParentsIndexes, _parentsIndexes, dimension, combSerie);
162
+ var next = addCombinedValueToSerieData(valueIndex, parentsIndexes, dimension, combSerie);
163
+ var value = R.pipe(R.prop('data'), R.last, R.prop('values'), R.last)(next);
164
+ combDimValues = R.assoc(dimension.id, value, combDimValues);
165
+ return next;
166
+ }, R.over(R.lensProp('data'), R.append({ dimension: R.pick(['id', 'name'], entry), values: [] }))(onGoingSerie), R.propOr([], 'dimensions', entry));
167
+
168
+ var combined = combineConcepts(combDimValues, entry, attributesValues)(res);
169
+ attributesValues = R.omit(entry.concepts, attributesValues);
170
+ return combined;
171
+ }
172
+
173
+ var valueIndex = Math.abs(R.path(['indexes', index], serie));
174
+ var _parentsIndexes = R.pathOr([], ['parentsIndexes', index], serie);
175
+ var missingParentsIndexes = R.pathOr([], ['missingIndexes', index], serie);
176
+ var parentsIndexes = addSimpleMissingParentsLines(missingParentsIndexes, _parentsIndexes, entry, onGoingSerie);
177
+ return addSimpleValueToSerieData(valueIndex, parentsIndexes, entry, onGoingSerie);
178
+ }, { data: [], coordinates: {}, key: '', sideProps: null, flags: [] }, definition);
179
+
180
+ var _getSerieFlagsAndSide = getSerieFlagsAndSideProps(serieCoordinates, coordinatesValidator, attributesValues, customAttributes, metadataCoordinates),
181
+ flags = _getSerieFlagsAndSide.flags,
182
+ sideProps = _getSerieFlagsAndSide.sideProps;
183
+
184
+ lines.push((0, _extends3.default)({}, serieData, { flags: flags, sideProps: sideProps }));
185
+ return lines;
186
+ };
187
+
188
+ var getLayoutData = function getLayoutData(layoutIndexes, layout, _ref) {
189
+ var metadataCoordinates = _ref.metadataCoordinates,
190
+ attributesSeries = _ref.attributesSeries,
191
+ customAttributes = _ref.customAttributes,
192
+ _ref$topCoordinates = _ref.topCoordinates,
193
+ topCoordinates = _ref$topCoordinates === undefined ? {} : _ref$topCoordinates;
194
+ var header = layoutIndexes.header,
195
+ sections = layoutIndexes.sections,
196
+ rest = (0, _objectWithoutProperties3.default)(layoutIndexes, ['header', 'sections']);
197
+
198
+
199
+ var headerData = R.reduce(function (acc, serie) {
200
+ var datas = getSerieDatas(serie, layout.header, topCoordinates, attributesSeries, customAttributes, metadataCoordinates);
201
+ return R.concat(acc, datas);
202
+ }, [], header);
203
+
204
+ var sectionsData = R.map(function (_ref2) {
205
+ var _ref3 = (0, _slicedToArray3.default)(_ref2, 2),
206
+ sectionSerie = _ref3[0],
207
+ rowsSeries = _ref3[1];
208
+
209
+ var sectionData = getSerieDatas(sectionSerie, layout.sections, topCoordinates, attributesSeries, customAttributes, metadataCoordinates);
210
+ return [R.last(sectionData), R.reduce(function (acc, serie) {
211
+ var datas = getSerieDatas(serie, layout.rows, sectionData.coordinates, attributesSeries, customAttributes, metadataCoordinates);
212
+ return R.concat(acc, datas);
213
+ }, [], rowsSeries)];
214
+ }, sections);
215
+
216
+ return (0, _extends3.default)({ headerData: headerData, sectionsData: sectionsData }, rest);
217
+ };
218
+ exports.getLayoutData = getLayoutData;
@@ -9,17 +9,15 @@ var _extends2 = require('babel-runtime/helpers/extends');
9
9
 
10
10
  var _extends3 = _interopRequireDefault(_extends2);
11
11
 
12
- var _ramda = require('ramda');
13
-
14
- var R = _interopRequireWildcard(_ramda);
15
-
16
12
  var _getLayout = require('./getLayout');
17
13
 
18
14
  var _getSortedLayoutIndexes = require('./getSortedLayoutIndexes');
19
15
 
20
- var _refineLayoutSize = require('./refineLayoutSize');
16
+ var _parseSeriesIndexesHierarchies = require('./parseSeriesIndexesHierarchies');
21
17
 
22
- var _getLayoutData = require('./getLayoutData');
18
+ var _refineLayoutSize = require('./refineLayoutSize2');
19
+
20
+ var _getLayoutData = require('./getLayoutData2');
23
21
 
24
22
  var _getCellsAttributesIds = require('./getCellsAttributesIds');
25
23
 
@@ -31,8 +29,6 @@ var _getCuratedCells = require('./getCuratedCells');
31
29
 
32
30
  var _getSeriesCombinations = require('../getSeriesCombinations');
33
31
 
34
- 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; } }
35
-
36
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
33
 
38
34
  var getTableProps = exports.getTableProps = function getTableProps(_ref) {
@@ -54,7 +50,8 @@ var getTableProps = exports.getTableProps = function getTableProps(_ref) {
54
50
  var seriesCombinations = (0, _getSeriesCombinations.getSeriesCombinations)(combinations, oneValueDimensions);
55
51
  var layout = (0, _getLayout.getLayout)(layoutIds, dimensions, seriesCombinations, isTimeInverted);
56
52
  var layoutIndexes = (0, _getSortedLayoutIndexes.getSortedLayoutIndexes)(layout, observations);
57
- var refinedLayoutIndexes = (0, _refineLayoutSize.refineLayoutSize)({ layout: layout, observations: observations, limit: limit })(layoutIndexes);
53
+ var enhancedLayoutIndexes = (0, _parseSeriesIndexesHierarchies.parseLayoutIndexesHierarchies)(layoutIndexes, layout);
54
+ var refinedLayoutIndexes = (0, _refineLayoutSize.refineLayoutSize)({ layout: layout, observations: observations, limit: limit })(enhancedLayoutIndexes);
58
55
  var layoutData = (0, _getLayoutData.getLayoutData)(refinedLayoutIndexes, layout, { metadataCoordinates: metadataCoordinates, attributesSeries: attributesSeries, customAttributes: customAttributes, topCoordinates: header.coordinates });
59
56
 
60
57
  var cellsAttributesIds = (0, _getCellsAttributesIds.getCellsAttributesIds)(layoutIds, attributes);
@@ -0,0 +1,96 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseLayoutIndexesHierarchies = exports.parseSeriesIndexesHierarchies = undefined;
7
+
8
+ var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
9
+
10
+ var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
11
+
12
+ var _set = require('babel-runtime/core-js/set');
13
+
14
+ var _set2 = _interopRequireDefault(_set);
15
+
16
+ var _ramda = require('ramda');
17
+
18
+ var R = _interopRequireWildcard(_ramda);
19
+
20
+ 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; } }
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ var parseSerieIndexesHierarchies = function parseSerieIndexesHierarchies(serieIndexes, previousSerie, dimensions) {
25
+ var isSameSerie = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
26
+
27
+ return R.addIndex(R.reduce)(function (acc, _valueIndex, dimensionIndex) {
28
+ if (R.is(Array, _valueIndex)) {
29
+ var previous = R.isEmpty(previousSerie) ? {} : {
30
+ indexes: R.nth(dimensionIndex, previousSerie.indexes || []),
31
+ parentsIndexes: R.nth(dimensionIndex, previousSerie.parentsIndexes || []),
32
+ missingIndexes: R.nth(dimensionIndex, previousSerie.missingIndexes || []),
33
+ registeredIndexes: R.nth(dimensionIndex, previousSerie.registeredIndexes || [])
34
+ };
35
+ var parsed = parseSerieIndexesHierarchies(_valueIndex, previous, R.pathOr([], [dimensionIndex, 'dimensions'], dimensions), acc.isSameSerie);
36
+ return {
37
+ parentsIndexes: R.append(parsed.parentsIndexes, acc.parentsIndexes),
38
+ missingIndexes: R.append(parsed.missingIndexes, acc.missingIndexes),
39
+ registeredIndexes: R.append(parsed.registeredIndexes, acc.registeredIndexes),
40
+ isSameSerie: parsed.isSameSerie
41
+ };
42
+ }
43
+ var valueIndex = Math.abs(_valueIndex);
44
+ var _parentsIndexes = R.pathOr([], [dimensionIndex, 'values', valueIndex, 'parents'], dimensions);
45
+ var previousIndex = acc.isSameSerie ? R.pathOr(-1, ['indexes', dimensionIndex], previousSerie) : -1;
46
+ var previousRegisteredIndexes = acc.isSameSerie ? R.pathOr(new _set2.default(), ['registeredIndexes', dimensionIndex], previousSerie) : new _set2.default();
47
+ var registeredIndexes = new _set2.default(previousRegisteredIndexes);
48
+
49
+ var _R$reduce = R.reduce(function (_acc, ind) {
50
+ if (previousRegisteredIndexes.has(ind)) {
51
+ return R.over(R.lensIndex(0), R.append(ind), _acc);
52
+ } else if (ind > previousIndex && R.pathOr(false, [dimensionIndex, 'values', ind, 'isSelected'], dimensions)) {
53
+ registeredIndexes.add(ind);
54
+ return R.over(R.lensIndex(1), R.append(ind), _acc);
55
+ }
56
+ return _acc;
57
+ }, [[], []], _parentsIndexes),
58
+ _R$reduce2 = (0, _slicedToArray3.default)(_R$reduce, 2),
59
+ parentsIndexes = _R$reduce2[0],
60
+ missingParentsIndexes = _R$reduce2[1];
61
+
62
+ registeredIndexes.add(valueIndex);
63
+ return {
64
+ parentsIndexes: R.append(parentsIndexes, acc.parentsIndexes),
65
+ missingIndexes: R.append(missingParentsIndexes, acc.missingIndexes),
66
+ registeredIndexes: R.append(registeredIndexes, acc.registeredIndexes),
67
+ isSameSerie: acc.isSameSerie && valueIndex === previousIndex
68
+ };
69
+ }, { parentsIndexes: [], missingIndexes: [], registeredIndexes: [], isSameSerie: isSameSerie }, serieIndexes);
70
+ };
71
+
72
+ var parseSeriesIndexesHierarchies = exports.parseSeriesIndexesHierarchies = function parseSeriesIndexesHierarchies(seriesIndexes, dimensions) {
73
+ return R.reduce(function (acc, serieIndexes) {
74
+ var previousSerie = R.last(acc) || {};
75
+
76
+ var _parseSerieIndexesHie = parseSerieIndexesHierarchies(serieIndexes, previousSerie, dimensions),
77
+ parentsIndexes = _parseSerieIndexesHie.parentsIndexes,
78
+ missingIndexes = _parseSerieIndexesHie.missingIndexes,
79
+ registeredIndexes = _parseSerieIndexesHie.registeredIndexes;
80
+
81
+ return R.append({ indexes: serieIndexes, parentsIndexes: parentsIndexes, missingIndexes: missingIndexes, registeredIndexes: registeredIndexes }, acc);
82
+ }, [], seriesIndexes);
83
+ };
84
+
85
+ var parseLayoutIndexesHierarchies = exports.parseLayoutIndexesHierarchies = function parseLayoutIndexesHierarchies(layoutIndexes, layout) {
86
+ var header = parseSeriesIndexesHierarchies(layoutIndexes.header, layout.header);
87
+ var sections = R.map(function (_ref) {
88
+ var _ref2 = (0, _slicedToArray3.default)(_ref, 2),
89
+ sectionIndexes = _ref2[0],
90
+ rowsIndexes = _ref2[1];
91
+
92
+ return [{ indexes: sectionIndexes, parentsIndexes: [], missingIndexes: [] }, parseSeriesIndexesHierarchies(rowsIndexes, layout.rows)];
93
+ }, layoutIndexes.sections);
94
+
95
+ return { header: header, sections: sections };
96
+ };