@sis-cc/dotstatsuite-components 9.1.0 → 9.2.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.
- package/lib/rules/src/preparators/enhanceObservations.js +155 -0
- package/lib/rules/src/preparators/formatValue.js +77 -0
- package/lib/rules/src/preparators/getDimensions.js +55 -0
- package/lib/rules/src/preparators/getDisplay.js +32 -0
- package/lib/rules/src/preparators/getObservations.js +27 -0
- package/lib/rules/src/table/factories/getCells.js +1 -3
- package/lib/rules/src/table/factories/getLayoutData.js +102 -161
- package/lib/rules/src/table/factories/getSortedLayoutIndexes.js +118 -0
- package/lib/rules/src/table/factories/getTableData.js +12 -10
- package/lib/rules/src/table/factories/refineLayoutSize.js +210 -0
- package/lib/rules/src/table/preparators/prepareData.js +23 -23
- package/lib/rules/src/table/units/appendUnitsInLayoutDataEntry.js +10 -10
- package/lib/rules/src/table/units/getAttachmentSeriesIndexes.js +1 -1
- package/lib/rules/src/table/units/getUnitsSeries.js +31 -0
- package/lib/rules/src/v8-transformer.js +3 -2
- package/package.json +2 -2
- package/src/rules/src/preparators/enhanceObservations.js +163 -0
- package/src/rules/src/preparators/formatValue.js +73 -0
- package/src/rules/src/preparators/getDimensions.js +49 -0
- package/src/rules/src/preparators/getDisplay.js +20 -0
- package/src/rules/src/preparators/getObservations.js +19 -0
- package/src/rules/src/table/factories/getCells.js +3 -7
- package/src/rules/src/table/factories/getLayoutData.js +135 -184
- package/src/rules/src/table/factories/getSortedLayoutIndexes.js +108 -0
- package/src/rules/src/table/factories/getTableData.js +10 -10
- package/src/rules/src/table/factories/refineLayoutSize.js +224 -0
- package/src/rules/src/table/preparators/prepareData.js +23 -32
- package/src/rules/src/table/units/appendUnitsInLayoutDataEntry.js +15 -18
- package/src/rules/src/table/units/getAttachmentSeriesIndexes.js +2 -1
- package/src/rules/src/table/units/getUnitsSeries.js +20 -0
- package/src/rules/src/v8-transformer.js +4 -2
- package/test/appendUnitsInLayoutDataEntry.test.js +3 -3
- package/test/enhanceObservations.test.js +270 -0
- package/test/getAttachmentSeriesIndexes.test.js +1 -1
- package/test/getCells.test.js +4 -39
- package/test/getLayoutData2.test.js +194 -0
- package/test/getOneValueDimensions.test.js +1 -1
- package/test/getSortedLayoutIndexes.test.js +80 -0
- package/test/getUnitsArtefacts.test.js +1 -1
- package/test/getUnitsSeries.test.js +64 -0
- package/test/mocks/table-layout-multi-hierarchies--layout.json +621 -0
- package/test/mocks/table-layout-multi-hierarchies--layoutData.json +32410 -0
- package/test/mocks/table-layout-multi-hierarchies--layoutIndexes.json +2760 -0
- package/test/mocks/table-layout-multi-hierarchies--observations.json +30688 -0
- package/test/mocks/table-layout-multi-hierarchies--sizedIndexes.json +2761 -0
- package/test/mocks/table-layout-truncation1--layout.json +27469 -0
- package/test/mocks/table-layout-truncation1--layoutData.json +19413 -0
- package/test/mocks/table-layout-truncation1--layoutIndexes.json +7512 -0
- package/test/mocks/table-layout-truncation1--observations.json +70002 -0
- package/test/mocks/table-layout-truncation1--sizedIndexes.json +3010 -0
- package/test/mocks/table-prep-multi-hierarchies--attributes.json +44 -0
- package/test/mocks/table-prep-multi-hierarchies--dimensions.json +688 -0
- package/test/mocks/table-prep-multi-hierarchies--enhancedObservations.json +19696 -0
- package/test/mocks/table-prep-multi-hierarchies--observations.json +8246 -0
- package/test/mocks/table-prep-multi-hierarchies--sdmxJson.json +2985 -0
- package/test/mocks/table-prep-truncation1--dimensions.json +35057 -0
- package/test/mocks/table-prep-truncation1--enhancedObservations.json +70002 -0
- package/test/mocks/table-prep-truncation1--observations.json +27502 -0
- package/test/mocks/table-prep-truncation1--sdmxJson.json +55103 -0
- package/test/mocks/table-prep-units--observations.json +284286 -0
- package/test/mocks/table-prep-units--unitsSeries.json +41042 -0
- package/test/parseAttributes.test.js +1 -1
- package/test/refineLayoutSize.test.js +415 -0
- package/test/table-layout-perf.test.js +74 -0
- package/test/table-prep-perf.test.js +65 -0
- package/lib/rules/src/table/factories/getSortedLayoutData.js +0 -145
- package/lib/rules/src/table/factories/refineLayoutHierarchy.js +0 -61
- package/lib/rules/src/table/preparators/parseObservations.js +0 -76
- package/lib/rules/src/table/units/getUnitsSeriesOccurences.js +0 -39
- package/src/rules/src/table/factories/getSortedLayoutData.js +0 -133
- package/src/rules/src/table/factories/refineLayoutHierarchy.js +0 -64
- package/src/rules/src/table/preparators/parseObservations.js +0 -81
- package/src/rules/src/table/units/getUnitsSeriesOccurences.js +0 -51
- package/test/appendUnitsInLayoutData.test.js +0 -248
- package/test/getLayoutData.test.js +0 -311
- package/test/getSortedLayoutData.test.js +0 -382
- package/test/getUnitsSeriesOccurences.test.js +0 -133
- package/test/parseObservations.test.js +0 -116
- package/test/refineDimSeriesUnits.test.js +0 -24
- package/test/refineLayoutHierarchy.test.js +0 -79
|
@@ -3,200 +3,141 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getLayoutData =
|
|
7
|
-
|
|
8
|
-
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
|
|
9
|
-
|
|
10
|
-
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
|
|
6
|
+
exports.getLayoutData = undefined;
|
|
11
7
|
|
|
12
8
|
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
|
|
13
9
|
|
|
14
10
|
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
|
|
15
11
|
|
|
16
|
-
var
|
|
12
|
+
var _extends2 = require('babel-runtime/helpers/extends');
|
|
17
13
|
|
|
18
|
-
var
|
|
14
|
+
var _extends3 = _interopRequireDefault(_extends2);
|
|
19
15
|
|
|
20
16
|
var _ramda = require('ramda');
|
|
21
17
|
|
|
22
18
|
var R = _interopRequireWildcard(_ramda);
|
|
23
19
|
|
|
24
|
-
var _getSortedLayoutData = require('./getSortedLayoutData');
|
|
25
|
-
|
|
26
|
-
var _getCuratedCells = require('./getCuratedCells');
|
|
27
|
-
|
|
28
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; } }
|
|
29
21
|
|
|
30
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
23
|
|
|
32
|
-
var
|
|
33
|
-
return (
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return R.join(':', results);
|
|
41
|
-
}, getters);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
var refineSectionsData = exports.refineSectionsData = function refineSectionsData(sectionsData, extractedKeys, curatedData, dataToKey) {
|
|
45
|
-
return R.pipe(R.map(function (section) {
|
|
46
|
-
var sectionKey = dataToKey.sections(R.head(section));
|
|
47
|
-
return R.over(R.lensIndex(1), R.filter(function (rowData) {
|
|
48
|
-
var rowKey = dataToKey.rows(rowData);
|
|
49
|
-
return R.pipe(R.path([sectionKey, rowKey]), R.omit(extractedKeys), R.isEmpty, R.not)(curatedData);
|
|
50
|
-
}))(section);
|
|
51
|
-
}), R.filter(R.pipe(R.nth(1), R.isEmpty, R.not)))(sectionsData);
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
var refineHeaderData = exports.refineHeaderData = function refineHeaderData(headerData, extractedKeys, curatedData, dataToKey) {
|
|
55
|
-
return R.filter( // extracted : { [sectionKey]: [...rowKeys] }
|
|
56
|
-
function (header) {
|
|
57
|
-
var headerKey = dataToKey.header(header);
|
|
58
|
-
return R.pipe(R.prop(headerKey), function (sections) {
|
|
59
|
-
return R.pickBy(function (rows, section) {
|
|
60
|
-
return R.pipe(R.omit(R.propOr([], section, extractedKeys)), R.isEmpty, R.not)(rows);
|
|
61
|
-
}, sections);
|
|
62
|
-
}, R.isEmpty, R.not)(curatedData);
|
|
63
|
-
})(headerData);
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
var truncateSectionRows = exports.truncateSectionRows = function truncateSectionRows(n, sectionsData, dataToKey) {
|
|
67
|
-
var _R$pipe = R.pipe(R.last, // last section
|
|
68
|
-
R.nth(1), // rows
|
|
69
|
-
R.splitAt(R.negate(n)) // truncate from the end
|
|
70
|
-
)(sectionsData),
|
|
71
|
-
_R$pipe2 = (0, _slicedToArray3.default)(_R$pipe, 2),
|
|
72
|
-
rest = _R$pipe2[0],
|
|
73
|
-
extracted = _R$pipe2[1];
|
|
74
|
-
|
|
75
|
-
var truncatedData = R.isEmpty(rest) ? R.dropLast(1, sectionsData) // remove section if no more rows
|
|
76
|
-
: R.adjust(-1, R.adjust(1, R.always(rest)), sectionsData);
|
|
77
|
-
|
|
78
|
-
var sectionKey = dataToKey.sections(R.pipe(R.last, R.head)(sectionsData));
|
|
79
|
-
var rowKeys = R.map(dataToKey.rows, extracted);
|
|
80
|
-
|
|
81
|
-
var extractedLength = R.length(extracted);
|
|
82
|
-
if (extractedLength < n) {
|
|
83
|
-
var _truncateSectionRows = truncateSectionRows(n - extractedLength, truncatedData, dataToKey),
|
|
84
|
-
truncated = _truncateSectionRows.truncated,
|
|
85
|
-
extractedKeys = _truncateSectionRows.extractedKeys;
|
|
86
|
-
|
|
87
|
-
return { truncated: truncated, extractedKeys: (0, _extends4.default)({}, extractedKeys, (0, _defineProperty3.default)({}, sectionKey, rowKeys)) };
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return { truncated: truncatedData, extractedKeys: (0, _defineProperty3.default)({}, sectionKey, rowKeys) };
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
var truncateHeader = exports.truncateHeader = function truncateHeader(n, headerData, dataToKey) {
|
|
94
|
-
var _R$splitAt = R.splitAt(R.negate(n))(headerData),
|
|
95
|
-
_R$splitAt2 = (0, _slicedToArray3.default)(_R$splitAt, 2),
|
|
96
|
-
truncated = _R$splitAt2[0],
|
|
97
|
-
extracted = _R$splitAt2[1];
|
|
98
|
-
|
|
99
|
-
return { truncated: truncated, extractedKeys: R.map(dataToKey.header, extracted) };
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
var refineLength = function refineLength(length) {
|
|
103
|
-
return length === 0 ? 1 : length;
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
var truncateLayout = function truncateLayout(isVertical) {
|
|
107
|
-
return R.ifElse(R.always(isVertical), truncateSectionRows, truncateHeader);
|
|
24
|
+
var indexesToLayoutData = function indexesToLayoutData(dimensions, indexes) {
|
|
25
|
+
return R.addIndex(R.map)(function (valueIndex, dimensionIndex) {
|
|
26
|
+
var dimension = R.nth(dimensionIndex, dimensions);
|
|
27
|
+
return {
|
|
28
|
+
dimension: R.pick(['id', 'name', '__index'], dimension),
|
|
29
|
+
value: R.nth(Number(valueIndex), R.propOr([], 'values', dimension))
|
|
30
|
+
};
|
|
31
|
+
}, indexes);
|
|
108
32
|
};
|
|
109
33
|
|
|
110
|
-
var
|
|
111
|
-
return R.
|
|
112
|
-
|
|
34
|
+
var getRowData = function getRowData(indexes, dimension) {
|
|
35
|
+
return R.pipe(R.propOr([], 'values'), R.props(indexes), R.reduce(function (_ref, _value) {
|
|
36
|
+
var data = _ref.data,
|
|
37
|
+
missingParents = _ref.missingParents;
|
|
38
|
+
|
|
39
|
+
var raw = {
|
|
40
|
+
dimension: R.pick(['id', 'name', '__index'], dimension),
|
|
41
|
+
value: _value
|
|
42
|
+
};
|
|
43
|
+
if (R.isNil(_value.parents) || R.isEmpty(_value.parents)) {
|
|
44
|
+
return { data: R.append([raw], data), missingParents: {} };
|
|
45
|
+
}
|
|
46
|
+
var previous = R.head(R.last(data) || []);
|
|
113
47
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
48
|
+
if (R.last(_value.parents) === R.path(['value', 'id'], previous)) {
|
|
49
|
+
//previous is parent
|
|
50
|
+
var _value2 = R.set(R.lensPath(['value', 'parents']), R.append(R.path(['value', 'id'], previous), R.pathOr([], ['value', 'parents'], previous)))(raw);
|
|
51
|
+
return { data: R.append([_value2], data), missingParents: {} };
|
|
52
|
+
}
|
|
117
53
|
|
|
118
|
-
var
|
|
119
|
-
|
|
120
|
-
|
|
54
|
+
var previousParent = R.pipe(R.pathOr([], ['value', 'parents']), R.last)(previous);
|
|
55
|
+
if (R.last(_value.parents) === previousParent) {
|
|
56
|
+
//previous is bro
|
|
57
|
+
var _value3 = R.set(R.lensPath(['value']), (0, _extends3.default)({}, _value, {
|
|
58
|
+
name: R.isEmpty(missingParents) ? _value.name : missingParents.name + ' > ' + _value.name,
|
|
59
|
+
parents: R.pathOr([], ['value', 'parents'], previous)
|
|
60
|
+
}))(raw);
|
|
61
|
+
return { data: R.append([_value3], data), missingParents: missingParents };
|
|
62
|
+
}
|
|
121
63
|
|
|
122
|
-
var
|
|
123
|
-
|
|
64
|
+
var missingIds = R.takeLastWhile(function (id) {
|
|
65
|
+
return id !== R.path(['value', 'id'], previous);
|
|
66
|
+
}, _value.parents);
|
|
67
|
+
var _missingParents = R.reduce(function (acc, value) {
|
|
68
|
+
if (value.id !== R.head(acc.missingIds)) {
|
|
69
|
+
return acc;
|
|
70
|
+
}
|
|
71
|
+
var _missingIds = R.tail(acc.missingIds);
|
|
72
|
+
if (R.isEmpty(acc.name)) {
|
|
73
|
+
return { name: value.name, missingIds: _missingIds };
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
name: acc.name + ' > ' + value.name,
|
|
77
|
+
missingIds: _missingIds
|
|
78
|
+
};
|
|
79
|
+
}, { name: '', missingIds: missingIds }, dimension.values);
|
|
80
|
+
|
|
81
|
+
var value = R.set(R.lensProp('value'), (0, _extends3.default)({}, _value, {
|
|
82
|
+
name: _missingParents.name + ' > ' + _value.name,
|
|
83
|
+
parents: R.length(missingIds) === R.length(_value.parents) ? [] : R.append(R.path(['value', 'id'], previous), R.pathOr([], ['value', 'parents'], previous))
|
|
84
|
+
}))(raw);
|
|
85
|
+
|
|
86
|
+
return { data: R.append([value], data), missingParents: _missingParents };
|
|
87
|
+
}, { data: [], missingParents: {} }), R.prop('data'))(dimension);
|
|
124
88
|
};
|
|
125
89
|
|
|
126
|
-
var
|
|
127
|
-
var
|
|
128
|
-
observations = _ref.observations,
|
|
129
|
-
limit = _ref.limit;
|
|
90
|
+
var getRowsData = function getRowsData(rowsIndexes, dimensions) {
|
|
91
|
+
var dimension = R.head(dimensions);
|
|
130
92
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
sectionsData = layoutData.sectionsData;
|
|
134
|
-
|
|
135
|
-
if (R.isNil(limit) || limit === 0 || R.all(R.isEmpty, [headerData, sectionsData])) {
|
|
136
|
-
return R.assoc('truncated', false, layoutData);
|
|
93
|
+
if (R.length(dimensions) === 1) {
|
|
94
|
+
return getRowData(R.unnest(rowsIndexes), R.head(dimensions));
|
|
137
95
|
}
|
|
138
96
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
R.last, // rows,
|
|
153
|
-
R.head, // first row
|
|
154
|
-
R.length)(sectionsData);
|
|
155
|
-
|
|
156
|
-
// number of cells in a row
|
|
157
|
-
var rowCellsCount = rowDimCount + headerValuesCount + 1;
|
|
158
|
-
|
|
159
|
-
// number of rows
|
|
160
|
-
var rowsCount = R.pipe(R.map(R.last), R.unnest, R.length, R.add(1))(sectionsData);
|
|
161
|
-
|
|
162
|
-
// total of cells in all rows
|
|
163
|
-
var rowsCellsCount = rowCellsCount * rowsCount;
|
|
164
|
-
|
|
165
|
-
// number of sections cells
|
|
166
|
-
var sectionsCellsCount = R.ifElse(R.pipe(R.head, R.head, R.length, R.equals(0)), R.always(0), R.length)(sectionsData);
|
|
167
|
-
|
|
168
|
-
var total = rowsCellsCount + sectionsCellsCount + headerCellsCount;
|
|
169
|
-
|
|
170
|
-
var excess = total - limit;
|
|
171
|
-
if (excess <= 0) {
|
|
172
|
-
return R.assoc('truncated', false, layoutData);
|
|
173
|
-
}
|
|
97
|
+
var groupedIndexes = R.reduce(function (acc, indexes) {
|
|
98
|
+
var headIndex = R.head(indexes);
|
|
99
|
+
var last = R.last(acc.heads);
|
|
100
|
+
if (last === headIndex) {
|
|
101
|
+
return (0, _extends3.default)({}, acc, {
|
|
102
|
+
tails: R.over(R.lensIndex(-1), R.append(R.tail(indexes)))(acc.tails)
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
heads: R.append(headIndex, acc.heads),
|
|
107
|
+
tails: R.append([R.tail(indexes)], acc.tails)
|
|
108
|
+
};
|
|
109
|
+
}, { heads: [], tails: [] }, rowsIndexes);
|
|
174
110
|
|
|
175
|
-
|
|
176
|
-
var columnCellsCount = headerDimCount + rowsCount;
|
|
111
|
+
var headsDatas = getRowData(groupedIndexes.heads, R.head(dimensions));
|
|
177
112
|
|
|
178
|
-
var
|
|
113
|
+
var res = R.addIndex(R.map)(function (tail, i) {
|
|
114
|
+
var tailData = getRowsData(tail, R.tail(dimensions));
|
|
115
|
+
return R.map(R.prepend(R.head(headsDatas[i])), tailData);
|
|
116
|
+
}, groupedIndexes.tails);
|
|
179
117
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
toTruncate = _segregateLayout2[0],
|
|
183
|
-
toRefine = _segregateLayout2[1];
|
|
118
|
+
return R.unnest(res);
|
|
119
|
+
};
|
|
184
120
|
|
|
185
|
-
|
|
121
|
+
var getLayoutData = exports.getLayoutData = function getLayoutData(layoutIndexes, layout) {
|
|
122
|
+
var header = layoutIndexes.header,
|
|
123
|
+
sections = layoutIndexes.sections,
|
|
124
|
+
truncated = layoutIndexes.truncated;
|
|
186
125
|
|
|
187
|
-
var
|
|
126
|
+
var headerData = R.map(function (i) {
|
|
127
|
+
return indexesToLayoutData(layout.header, i);
|
|
128
|
+
}, header);
|
|
188
129
|
|
|
189
|
-
var
|
|
190
|
-
|
|
191
|
-
|
|
130
|
+
var sectionsData = R.map(function (_ref2) {
|
|
131
|
+
var _ref3 = (0, _slicedToArray3.default)(_ref2, 2),
|
|
132
|
+
sectionIndexes = _ref3[0],
|
|
133
|
+
rows = _ref3[1];
|
|
192
134
|
|
|
193
|
-
|
|
194
|
-
return (0, _getCuratedCells.getCuratedCells)({ layout: layout, observations: observations, shape: shape });
|
|
195
|
-
})(isVertical);
|
|
135
|
+
var sectionData = indexesToLayoutData(layout.sections, sectionIndexes);
|
|
196
136
|
|
|
197
|
-
|
|
137
|
+
var rowsData = getRowsData(rows, layout.rows);
|
|
198
138
|
|
|
199
|
-
|
|
139
|
+
return [sectionData, rowsData];
|
|
140
|
+
}, sections);
|
|
200
141
|
|
|
201
|
-
return
|
|
142
|
+
return { headerData: headerData, sectionsData: sectionsData, truncated: truncated };
|
|
202
143
|
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getSortedLayoutIndexes = undefined;
|
|
7
|
+
|
|
8
|
+
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
|
|
9
|
+
|
|
10
|
+
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
|
|
11
|
+
|
|
12
|
+
var _extends2 = require('babel-runtime/helpers/extends');
|
|
13
|
+
|
|
14
|
+
var _extends3 = _interopRequireDefault(_extends2);
|
|
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
|
+
/*
|
|
25
|
+
|
|
26
|
+
const layout = {
|
|
27
|
+
header: [
|
|
28
|
+
{ ...dim, values: [] } // values already sorted regarding order annotation
|
|
29
|
+
],
|
|
30
|
+
rows: [],
|
|
31
|
+
sections: []
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const observations = {
|
|
35
|
+
[obsKey]: {
|
|
36
|
+
...obs,
|
|
37
|
+
orderedDimIndexes: [sortedValIndex]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
var getLayoutPivots = function getLayoutPivots(layout) {
|
|
44
|
+
return R.mapObjIndexed(function (dimensions) {
|
|
45
|
+
return R.props(R.pluck('__index', dimensions));
|
|
46
|
+
})(layout);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
var comparator = function comparator(size) {
|
|
50
|
+
return function (a, b) {
|
|
51
|
+
var i = 0;
|
|
52
|
+
while (a[i] === b[i] && i < size) {
|
|
53
|
+
i++;
|
|
54
|
+
}
|
|
55
|
+
return a[i] - b[i];
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// simple call to ramda uniq method is very slow regarding performance
|
|
60
|
+
var uniqIndexes = function uniqIndexes(indexes) {
|
|
61
|
+
return R.pipe(R.reduce(function (acc, i) {
|
|
62
|
+
var key = R.join(':', i);
|
|
63
|
+
if (R.has(key, acc.keys)) {
|
|
64
|
+
return acc;
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
indexes: R.append(i, acc.indexes),
|
|
68
|
+
keys: R.assoc(key, key, acc.keys)
|
|
69
|
+
};
|
|
70
|
+
}, { indexes: [], keys: {} }), R.prop('indexes'))(indexes);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
var getSortedLayoutIndexes = exports.getSortedLayoutIndexes = function getSortedLayoutIndexes(layout, observations) {
|
|
74
|
+
var dimIndexes = R.pipe(R.values, R.pluck('orderedDimIndexes'))(observations);
|
|
75
|
+
|
|
76
|
+
var headerLength = R.length(layout.header);
|
|
77
|
+
|
|
78
|
+
var sectionLength = R.length(layout.sections);
|
|
79
|
+
var rowLength = R.length(layout.rows);
|
|
80
|
+
|
|
81
|
+
var layoutPivots = getLayoutPivots(layout);
|
|
82
|
+
|
|
83
|
+
var _R$pipe = R.pipe(R.reduce(function (acc, indexes) {
|
|
84
|
+
var headerIndexes = layoutPivots.header(indexes);
|
|
85
|
+
var sectionsIndexes = layoutPivots.sections(indexes);
|
|
86
|
+
var rowsIndexes = layoutPivots.rows(indexes);
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
header: R.append(headerIndexes, acc.header),
|
|
90
|
+
sections: R.append(R.concat(sectionsIndexes, rowsIndexes), acc.sections)
|
|
91
|
+
};
|
|
92
|
+
}, { header: [], sections: [] }), R.mapObjIndexed(uniqIndexes), R.evolve({
|
|
93
|
+
header: R.sort(comparator(headerLength)),
|
|
94
|
+
sections: R.sort(comparator(sectionLength + rowLength))
|
|
95
|
+
}), function (indexes) {
|
|
96
|
+
return (0, _extends3.default)({}, indexes, {
|
|
97
|
+
sections: R.reduce(function (acc, i) {
|
|
98
|
+
var _R$splitAt = R.splitAt(sectionLength, i),
|
|
99
|
+
_R$splitAt2 = (0, _slicedToArray3.default)(_R$splitAt, 2),
|
|
100
|
+
sectionIndexes = _R$splitAt2[0],
|
|
101
|
+
rowIndexes = _R$splitAt2[1];
|
|
102
|
+
|
|
103
|
+
var previousSecIndexes = R.pipe(R.nth(-1), function (i) {
|
|
104
|
+
return R.isNil(i) ? null : R.head(i);
|
|
105
|
+
})(acc);
|
|
106
|
+
if (R.equals(sectionIndexes, previousSecIndexes)) {
|
|
107
|
+
return R.over(R.lensIndex(-1), R.over(R.lensIndex(1), R.append(rowIndexes)))(acc);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return R.append([sectionIndexes, [rowIndexes]], acc);
|
|
111
|
+
}, [], indexes.sections)
|
|
112
|
+
});
|
|
113
|
+
})(dimIndexes),
|
|
114
|
+
header = _R$pipe.header,
|
|
115
|
+
sections = _R$pipe.sections;
|
|
116
|
+
|
|
117
|
+
return { header: header, sections: sections };
|
|
118
|
+
};
|
|
@@ -21,18 +21,20 @@ var _getConfirmedSeriesAttributesIds = require('./getConfirmedSeriesAttributesId
|
|
|
21
21
|
|
|
22
22
|
var _getCuratedCells = require('./getCuratedCells');
|
|
23
23
|
|
|
24
|
-
var _getLayoutData = require('./getLayoutData');
|
|
25
|
-
|
|
26
24
|
var _getLayoutWithFlags = require('./getLayoutWithFlags');
|
|
27
25
|
|
|
28
|
-
var _refineLayoutHierarchy = require('./refineLayoutHierarchy');
|
|
29
|
-
|
|
30
26
|
var _getUnitsinLayout = require('../units/getUnitsinLayout');
|
|
31
27
|
|
|
32
28
|
var _appendUnitsInLayoutData = require('../units/appendUnitsInLayoutData');
|
|
33
29
|
|
|
34
30
|
var _cleanUnitsInLayoutData = require('../units/cleanUnitsInLayoutData');
|
|
35
31
|
|
|
32
|
+
var _getSortedLayoutIndexes = require('./getSortedLayoutIndexes');
|
|
33
|
+
|
|
34
|
+
var _refineLayoutSize = require('./refineLayoutSize');
|
|
35
|
+
|
|
36
|
+
var _getLayoutData = require('./getLayoutData');
|
|
37
|
+
|
|
36
38
|
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; } }
|
|
37
39
|
|
|
38
40
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -74,21 +76,21 @@ var getTableProps = exports.getTableProps = function getTableProps(_ref) {
|
|
|
74
76
|
}), function (dim) {
|
|
75
77
|
return R.over( // sort values
|
|
76
78
|
R.lensProp('values'), R.sortWith([R.ascend(R.prop('__indexPosition')), R.ascend(R.prop('order'))]))(dim);
|
|
77
|
-
}, R.when( // refine hierarchy on
|
|
78
|
-
R.pipe(R.prop('id'), R.
|
|
79
|
+
}, R.when( // refine hierarchy on rows
|
|
80
|
+
R.pipe(R.prop('id'), R.flip(R.includes)(R.propOr([], 'rows', layoutIds))), _dotstatsuiteSdmxjs.withFlatHierarchy)), R.pathOr({}, ['dimensions', 'many'], data));
|
|
79
81
|
|
|
80
82
|
var seriesAttributesValues = R.propOr({}, 'seriesAttributesValues', data);
|
|
81
83
|
var layout = R.pipe(R.mergeRight({ header: [], sections: [], rows: [] }), R.mapObjIndexed(R.flip(R.props)(dimensions)))(layoutIds);
|
|
82
84
|
|
|
83
85
|
var partialUnitSerieIndexes = R.pipe(R.pathOr(0, ['dimensions', 'length']), R.times(R.always('x')))(data);
|
|
84
86
|
|
|
85
|
-
var layoutData = R.pipe(
|
|
86
|
-
return (0,
|
|
87
|
-
}
|
|
87
|
+
var layoutData = R.pipe(_getSortedLayoutIndexes.getSortedLayoutIndexes, (0, _refineLayoutSize.refineLayoutSize)({ layout: layout, observations: data.observations, limit: R.when(R.isNil, R.always(0))(limit) }), function (indexes) {
|
|
88
|
+
return (0, _getLayoutData.getLayoutData)(indexes, layout);
|
|
89
|
+
}, (0, _appendUnitsInLayoutData.appendUnitsInLayoutData)({
|
|
88
90
|
display: display, unitDimension: unitDimension, unitsDisplay: unitsLevelDisplay, unitsSeries: unitsSeries,
|
|
89
91
|
unitsDefinitionCodes: unitsDefinitionCodes, unitsIndexes: unitsAttachmentIndexesInLayout,
|
|
90
92
|
partialUnitSerieIndexes: partialUnitSerieIndexes, rejectedValueIds: rejectedValueIds, layoutIds: layoutIds
|
|
91
|
-
}), (0, _getLayoutWithFlags.getLayoutDataWithFlags)(seriesAttributesValues, display, customAttributes), (0, _cleanUnitsInLayoutData.cleanUnitsInLayoutData)({ unitsDisplay: unitsLevelDisplay, unitsLayoutIndexes: unitsIndexesInLayout }))(
|
|
93
|
+
}), (0, _getLayoutWithFlags.getLayoutDataWithFlags)(seriesAttributesValues, display, customAttributes), (0, _cleanUnitsInLayoutData.cleanUnitsInLayoutData)({ unitsDisplay: unitsLevelDisplay, unitsLayoutIndexes: unitsIndexesInLayout }))(layout, R.propOr({}, 'observations', data));
|
|
92
94
|
return (0, _extends3.default)({
|
|
93
95
|
cells: (0, _getCuratedCells.getCuratedCells)({ layout: layout, observations: cells, shape: ['header', 'sections', 'rows'] }),
|
|
94
96
|
layout: layout
|