@sis-cc/dotstatsuite-components 15.0.20 → 16.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.
- package/LICENSE +1 -1
- package/lib/rules/src/index.js +1 -145
- package/lib/rules/src/table/index.js +0 -42
- package/lib/rules/src/v8-transformer.js +6 -5
- package/lib/rules2/src/constants.js +3 -1
- package/lib/rules2/src/enhanceObservations.js +98 -0
- package/lib/rules2/src/getAttributesSeries.js +33 -0
- package/lib/rules2/src/getCombinationDefinitions.js +48 -0
- package/lib/rules2/src/getHeaderCombinations.js +42 -0
- package/lib/rules2/src/getHeaderSubtitle.js +41 -0
- package/lib/rules2/src/getManyValuesDimensions.js +39 -0
- package/lib/rules2/src/getNotDisplayedIds.js +5 -1
- package/lib/rules2/src/getOneValueDimensions.js +46 -0
- package/lib/rules2/src/hasCellMetadata.js +1 -1
- package/lib/rules2/src/index.js +186 -18
- package/lib/rules2/src/parseAttributes.js +50 -0
- package/lib/rules2/src/parseCombinations.js +54 -0
- package/lib/rules2/src/prepareData.js +74 -0
- package/lib/{rules/src/table/preparators/getAttributeValue.js → rules2/src/refineAttributes.js} +13 -11
- package/lib/rules2/src/table/getCells.js +74 -0
- package/lib/rules2/src/table/getCellsAttributesIds.js +63 -0
- package/lib/rules2/src/table/getCombinationDimensionsData.js +47 -0
- package/lib/rules2/src/table/getCuratedCells.js +28 -0
- package/lib/rules2/src/table/getFlagsAndNotes.js +28 -0
- package/lib/rules2/src/table/getIndexedCombinationsByDisplay.js +31 -0
- package/lib/rules2/src/table/getLayout.js +93 -0
- package/lib/rules2/src/table/getLayoutData.js +202 -0
- package/lib/{rules/src/table/factories → rules2/src/table}/getSortedLayoutIndexes.js +55 -40
- package/lib/rules2/src/table/getTableProps.js +64 -0
- package/lib/rules2/src/table/parseValueHierarchy.js +55 -0
- package/lib/{rules/src/table/factories → rules2/src/table}/refineLayoutSize.js +17 -8
- package/lib/rules2/src/{hasLayoutEntryMetadata.js → utils.js} +9 -6
- package/package.json +1 -1
- package/src/rules/src/index.js +1 -19
- package/src/rules/src/table/index.js +0 -4
- package/src/rules/src/v8-transformer.js +75 -74
- package/src/rules2/src/constants.js +2 -0
- package/src/rules2/src/enhanceObservations.js +88 -0
- package/src/rules2/src/getAttributesSeries.js +29 -0
- package/src/rules2/src/getCombinationDefinitions.js +29 -0
- package/src/rules2/src/getHeaderCombinations.js +39 -0
- package/src/rules2/src/getHeaderSubtitle.js +34 -0
- package/src/rules2/src/getManyValuesDimensions.js +34 -0
- package/src/rules2/src/getNotDisplayedIds.js +5 -1
- package/src/rules2/src/getOneValueDimensions.js +33 -0
- package/src/rules2/src/hasCellMetadata.js +1 -1
- package/src/rules2/src/index.js +21 -6
- package/src/rules2/src/parseAttributes.js +36 -0
- package/src/rules2/src/parseCombinations.js +36 -0
- package/src/rules2/src/prepareData.js +50 -0
- package/src/rules2/src/refineAttributes.js +16 -0
- package/src/rules2/src/table/getCells.js +72 -0
- package/src/rules2/src/table/getCellsAttributesIds.js +38 -0
- package/src/rules2/src/table/getCombinationDimensionsData.js +38 -0
- package/src/rules2/src/table/getCuratedCells.js +33 -0
- package/src/rules2/src/table/getFlagsAndNotes.js +21 -0
- package/src/rules2/src/table/getIndexedCombinationsByDisplay.js +16 -0
- package/src/rules2/src/table/getLayout.js +80 -0
- package/src/rules2/src/table/getLayoutData.js +183 -0
- package/src/rules2/src/table/getSortedLayoutIndexes.js +119 -0
- package/src/rules2/src/table/getTableProps.js +36 -0
- package/src/rules2/src/table/parseValueHierarchy.js +27 -0
- package/src/{rules/src/table/factories → rules2/src/table}/refineLayoutSize.js +24 -8
- package/src/rules2/src/utils.js +12 -0
- package/test/enhanceObservations2.test.js +219 -0
- package/test/getAttributesSeries.test.js +58 -0
- package/test/getCells.test.js +6 -40
- package/test/getCombinationDimensionsData.test.js +48 -0
- package/test/getNotDisplayedIds.test.js +15 -2
- package/test/getSortedLayoutIndexes.test.js +1025 -3
- package/test/parseAttributes.test.js +17 -62
- package/test/parseValueHierarchy.test.js +88 -0
- package/test/refineLayoutSize.test.js +2621 -1
- package/lib/rules/src/table/factories/getCells.js +0 -97
- package/lib/rules/src/table/factories/getConfirmedSeriesAttributesIds.js +0 -26
- package/lib/rules/src/table/factories/getCuratedCells.js +0 -45
- package/lib/rules/src/table/factories/getLayoutData.js +0 -168
- package/lib/rules/src/table/factories/getLayoutWithFlags.js +0 -133
- package/lib/rules/src/table/factories/getTableCells.js +0 -24
- package/lib/rules/src/table/factories/getTableData.js +0 -98
- package/lib/rules/src/table/preparators/getDimensionsAttributesRegisters.js +0 -43
- package/lib/rules/src/table/preparators/getManyValuesDimensions.js +0 -33
- package/lib/rules/src/table/preparators/getOneValueDimensions.js +0 -24
- package/lib/rules/src/table/preparators/getUniqValuesAttributes.js +0 -36
- package/lib/rules/src/table/preparators/parseAttributes.js +0 -84
- package/lib/rules/src/table/preparators/parseAttributesValuesFromObservations.js +0 -22
- package/lib/rules/src/table/preparators/parseDimensionsIds.js +0 -22
- package/lib/rules/src/table/preparators/prepareData.js +0 -191
- package/lib/rules/src/table/preparators/refineObservationsAttributesValues.js +0 -31
- package/lib/rules/src/table/preparators/refineSeriesAttributesValues.js +0 -23
- package/lib/rules/src/table/units/appendUnitsInLayoutData.js +0 -82
- package/lib/rules/src/table/units/appendUnitsInLayoutDataEntry.js +0 -45
- package/lib/rules/src/table/units/cleanUnitsInLayoutData.js +0 -66
- package/lib/rules/src/table/units/getAttachmentSeriesIndexes.js +0 -25
- package/lib/rules/src/table/units/getHeaderUnits.js +0 -35
- package/lib/rules/src/table/units/getUnitsArtefacts.js +0 -85
- package/lib/rules/src/table/units/getUnitsCodes.js +0 -23
- package/lib/rules/src/table/units/getUnitsDefinition.js +0 -33
- package/lib/rules/src/table/units/getUnitsDisplay.js +0 -33
- package/lib/rules/src/table/units/getUnitsSerieIndexes.js +0 -23
- package/lib/rules/src/table/units/getUnitsSeries.js +0 -49
- package/lib/rules/src/table/units/getUnitsinLayout.js +0 -74
- package/lib/rules/src/table/units/refineDimSeriesUnits.js +0 -44
- package/lib/rules2/src/getAdvancedAttributes.js +0 -124
- package/lib/rules2/src/invertTime.js +0 -33
- package/src/rules/src/table/factories/getCells.js +0 -102
- package/src/rules/src/table/factories/getConfirmedSeriesAttributesIds.js +0 -27
- package/src/rules/src/table/factories/getCuratedCells.js +0 -40
- package/src/rules/src/table/factories/getLayoutData.js +0 -171
- package/src/rules/src/table/factories/getLayoutWithFlags.js +0 -137
- package/src/rules/src/table/factories/getSortedLayoutIndexes.js +0 -108
- package/src/rules/src/table/factories/getTableCells.js +0 -16
- package/src/rules/src/table/factories/getTableData.js +0 -86
- package/src/rules/src/table/preparators/getAttributeValue.js +0 -17
- package/src/rules/src/table/preparators/getDimensionsAttributesRegisters.js +0 -51
- package/src/rules/src/table/preparators/getManyValuesDimensions.js +0 -19
- package/src/rules/src/table/preparators/getOneValueDimensions.js +0 -17
- package/src/rules/src/table/preparators/getUniqValuesAttributes.js +0 -24
- package/src/rules/src/table/preparators/parseAttributes.js +0 -113
- package/src/rules/src/table/preparators/parseAttributesValuesFromObservations.js +0 -16
- package/src/rules/src/table/preparators/parseDimensionsIds.js +0 -17
- package/src/rules/src/table/preparators/prepareData.js +0 -197
- package/src/rules/src/table/preparators/refineObservationsAttributesValues.js +0 -22
- package/src/rules/src/table/preparators/refineSeriesAttributesValues.js +0 -11
- package/src/rules/src/table/units/appendUnitsInLayoutData.js +0 -56
- package/src/rules/src/table/units/appendUnitsInLayoutDataEntry.js +0 -38
- package/src/rules/src/table/units/cleanUnitsInLayoutData.js +0 -65
- package/src/rules/src/table/units/getAttachmentSeriesIndexes.js +0 -27
- package/src/rules/src/table/units/getHeaderUnits.js +0 -32
- package/src/rules/src/table/units/getUnitsArtefacts.js +0 -90
- package/src/rules/src/table/units/getUnitsCodes.js +0 -22
- package/src/rules/src/table/units/getUnitsDefinition.js +0 -34
- package/src/rules/src/table/units/getUnitsDisplay.js +0 -19
- package/src/rules/src/table/units/getUnitsSerieIndexes.js +0 -12
- package/src/rules/src/table/units/getUnitsSeries.js +0 -41
- package/src/rules/src/table/units/getUnitsinLayout.js +0 -71
- package/src/rules/src/table/units/refineDimSeriesUnits.js +0 -26
- package/src/rules2/src/getAdvancedAttributes.js +0 -111
- package/src/rules2/src/hasLayoutEntryMetadata.js +0 -9
- package/src/rules2/src/invertTime.js +0 -22
- package/test/advanced-attributes-parsing-perf.test.js +0 -16
- package/test/appendUnitsInLayoutDataEntry.test.js +0 -65
- package/test/cleanUnitsInLayoutData.test.js +0 -85
- package/test/enhanceObservations.test.js +0 -340
- package/test/getAttachmentSeriesIndexes.test.js +0 -35
- package/test/getConfirmedSeriesAttributesIds.test.js +0 -27
- package/test/getDataflowAdvancedAttributes.test.js +0 -32
- package/test/getHeaderUnits.test.js +0 -51
- package/test/getLayoutData.test.js +0 -206
- package/test/getLayoutDataWithFlags.test.js +0 -142
- package/test/getOneValueDimensions.test.js +0 -26
- package/test/getSeriesAdvancedAttributes.test.js +0 -32
- package/test/getSubtitleFlags.test.js +0 -42
- package/test/getTableData.test.js +0 -1317
- package/test/getUnitsArtefacts.test.js +0 -117
- package/test/getUnitsDefinition.test.js +0 -37
- package/test/getUnitsInLayout.test.js +0 -77
- package/test/getUnitsSeries.test.js +0 -154
- package/test/invertTime.test.js +0 -77
- package/test/parseAttributesValuesFromObservations.test.js +0 -45
- package/test/parseDimensionsIds.test.js +0 -20
- package/test/prepareData.test.js +0 -29
- package/test/refineObservationsAttributesValues.test.js +0 -33
- package/test/table-invert-time-perf.test.js +0 -11
- package/test/table-layout-perf.test.js +0 -74
- package/test/table-prep-duplicate-perf.test.js +0 -15
- package/test/table-prep-perf.test.js +0 -61
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getFlagsAndNotes = 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 getFlagsAndNotes = exports.getFlagsAndNotes = function getFlagsAndNotes(attributesValues, customAttributes) {
|
|
15
|
+
var flagsIds = R.propOr([], 'flags', customAttributes);
|
|
16
|
+
var notesIds = R.propOr([], 'notes', customAttributes);
|
|
17
|
+
|
|
18
|
+
return R.addIndex(R.reduce)(function (acc, id, index) {
|
|
19
|
+
if (!R.has(id, attributesValues)) {
|
|
20
|
+
return acc;
|
|
21
|
+
}
|
|
22
|
+
var attr = R.prop(id, attributesValues);
|
|
23
|
+
if (R.isNil(attr.value)) {
|
|
24
|
+
return acc;
|
|
25
|
+
}
|
|
26
|
+
return R.append(index < flagsIds.length ? R.assoc('code', R.path(['value', 'id'], attr), attr) : attr, acc);
|
|
27
|
+
}, [], R.concat(flagsIds, notesIds));
|
|
28
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getIndexedCombinationsByDisplay = 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 getIndexedCombinationsByDisplay = exports.getIndexedCombinationsByDisplay = function getIndexedCombinationsByDisplay(layout, combinations) {
|
|
21
|
+
var layoutIds = R.pipe(R.map(R.pluck('id')), R.values, R.unnest, R.indexBy(R.identity))(layout);
|
|
22
|
+
|
|
23
|
+
var _R$partition = R.partition(function (comb) {
|
|
24
|
+
return R.has(comb.id, layoutIds);
|
|
25
|
+
}, combinations),
|
|
26
|
+
_R$partition2 = (0, _slicedToArray3.default)(_R$partition, 2),
|
|
27
|
+
combsInLayout = _R$partition2[0],
|
|
28
|
+
combsInCells = _R$partition2[1];
|
|
29
|
+
|
|
30
|
+
return { cells: combsInCells, layout: combsInLayout };
|
|
31
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getLayout = 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
|
+
var _dotstatsuiteSdmxjs = require('@sis-cc/dotstatsuite-sdmxjs');
|
|
21
|
+
|
|
22
|
+
var _utils = require('../utils');
|
|
23
|
+
|
|
24
|
+
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; } }
|
|
25
|
+
|
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
+
|
|
28
|
+
var getLayout = exports.getLayout = function getLayout(layoutIds, dimensions, combinations, isTimeInverted, fixedDimensions) {
|
|
29
|
+
var indexedDimensions = R.pipe(R.indexBy(R.prop('id')), R.map(function (d) {
|
|
30
|
+
return (0, _dotstatsuiteSdmxjs.isTimePeriodDimension)(d) && isTimeInverted ? R.assoc('isInverted', true, d) : d;
|
|
31
|
+
}))(dimensions);
|
|
32
|
+
var indexedFixedDimsValues = R.reduce(function (acc, dim) {
|
|
33
|
+
var value = R.head(dim.values);
|
|
34
|
+
return !dim.display || !value.display ? acc : R.assoc(dim.id, R.head(dim.values), acc);
|
|
35
|
+
}, {}, fixedDimensions);
|
|
36
|
+
var indexedHeaderIds = R.indexBy(R.identity, layoutIds.header);
|
|
37
|
+
var indexedSectionsIds = R.indexBy(R.identity, layoutIds.sections);
|
|
38
|
+
var indexedRowsIds = (0, _extends3.default)({}, indexedSectionsIds, R.indexBy(R.identity, layoutIds.rows));
|
|
39
|
+
var layout = { header: [], sections: [], rows: [] };
|
|
40
|
+
R.forEach(function (comb) {
|
|
41
|
+
if (R.isEmpty(comb.relationship)) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
var _R$partition = R.partition(function (id) {
|
|
46
|
+
return R.has(id, indexedHeaderIds);
|
|
47
|
+
}, comb.relationship),
|
|
48
|
+
_R$partition2 = (0, _slicedToArray3.default)(_R$partition, 2),
|
|
49
|
+
idsInHeader = _R$partition2[0],
|
|
50
|
+
rest = _R$partition2[1];
|
|
51
|
+
|
|
52
|
+
if (R.isEmpty(rest)) {
|
|
53
|
+
layout = R.over(R.lensProp('header'), R.append((0, _extends3.default)({}, comb, {
|
|
54
|
+
dimensions: (0, _utils.trimedProps)(comb.concepts, indexedDimensions),
|
|
55
|
+
fixedDimValues: R.pick(comb.concepts, indexedFixedDimsValues)
|
|
56
|
+
})))(layout);
|
|
57
|
+
} else if (!R.isEmpty(idsInHeader)) {
|
|
58
|
+
return;
|
|
59
|
+
} else {
|
|
60
|
+
var idsNotInSections = R.reject(function (id) {
|
|
61
|
+
return R.has(id, indexedSectionsIds);
|
|
62
|
+
}, comb.relationship);
|
|
63
|
+
if (R.isEmpty(idsNotInSections)) {
|
|
64
|
+
layout = R.over(R.lensProp('sections'), R.append((0, _extends3.default)({}, comb, {
|
|
65
|
+
dimensions: (0, _utils.trimedProps)(comb.concepts, indexedDimensions),
|
|
66
|
+
fixedDimValues: R.pick(comb.concepts, indexedFixedDimsValues)
|
|
67
|
+
})))(layout);
|
|
68
|
+
} else {
|
|
69
|
+
var idsNotInRows = R.reject(function (id) {
|
|
70
|
+
return R.has(id, indexedRowsIds);
|
|
71
|
+
}, comb.relationship);
|
|
72
|
+
if (R.isEmpty(idsNotInRows)) {
|
|
73
|
+
layout = R.over(R.lensProp('rows'), R.append((0, _extends3.default)({}, comb, {
|
|
74
|
+
dimensions: R.pipe(R.omit(layoutIds.sections), function (o) {
|
|
75
|
+
return (0, _utils.trimedProps)(comb.concepts, o);
|
|
76
|
+
})(indexedDimensions),
|
|
77
|
+
fixedDimValues: R.pick(comb.concepts, indexedFixedDimsValues)
|
|
78
|
+
})))(layout);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}, combinations);
|
|
83
|
+
return R.mapObjIndexed(function (combs, key) {
|
|
84
|
+
var conceptIds = R.pipe(R.pluck('concepts'), R.unnest, R.indexBy(R.identity))(combs);
|
|
85
|
+
var rest = R.reduce(function (acc, id) {
|
|
86
|
+
if (R.has(id, conceptIds)) {
|
|
87
|
+
return acc;
|
|
88
|
+
}
|
|
89
|
+
return R.append(R.prop(id, indexedDimensions), acc);
|
|
90
|
+
}, [], layoutIds[key]);
|
|
91
|
+
return R.concat(rest, combs);
|
|
92
|
+
}, layout);
|
|
93
|
+
};
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getLayoutData = undefined;
|
|
7
|
+
|
|
8
|
+
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
|
|
9
|
+
|
|
10
|
+
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
|
|
13
|
+
|
|
14
|
+
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
|
|
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 _hasCellMetadata = require('../hasCellMetadata');
|
|
27
|
+
|
|
28
|
+
var _getCombinationDimensionsData = require('./getCombinationDimensionsData');
|
|
29
|
+
|
|
30
|
+
var _parseValueHierarchy = require('./parseValueHierarchy');
|
|
31
|
+
|
|
32
|
+
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; } }
|
|
33
|
+
|
|
34
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
|
+
|
|
36
|
+
var getSubLayoutData = function getSubLayoutData(series, _definition, _ref) {
|
|
37
|
+
var metadataCoordinates = _ref.metadataCoordinates,
|
|
38
|
+
attributesSeries = _ref.attributesSeries,
|
|
39
|
+
customAttributes = _ref.customAttributes;
|
|
40
|
+
|
|
41
|
+
var getHasAdvancedAttributes = function getHasAdvancedAttributes(attrValues) {
|
|
42
|
+
return R.pipe(R.omit(R.concat(customAttributes.flags, customAttributes.notes)), R.isEmpty, R.not)(attrValues);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var combinationConceptIds = R.reduce(function (acc, def) {
|
|
46
|
+
var concepts = R.propOr([], 'concepts', def);
|
|
47
|
+
if (R.isEmpty(concepts)) {
|
|
48
|
+
return acc;
|
|
49
|
+
}
|
|
50
|
+
return R.concat(acc, concepts);
|
|
51
|
+
}, [], _definition);
|
|
52
|
+
|
|
53
|
+
var definition = R.map( //used for parseValueHierarchy ...
|
|
54
|
+
function (entry) {
|
|
55
|
+
if (R.has('dimensions', entry)) {
|
|
56
|
+
return (0, _extends3.default)({}, entry, {
|
|
57
|
+
dimensions: R.map(function (dim) {
|
|
58
|
+
return R.assoc('indexedValues', R.indexBy(R.prop('id'), dim.values || []), dim);
|
|
59
|
+
}, entry.dimensions)
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return R.assoc('indexedValues', R.indexBy(R.prop('id'), entry.values || []), entry);
|
|
63
|
+
}, _definition);
|
|
64
|
+
|
|
65
|
+
var _R$reduce = R.reduce(function (acc, serie) {
|
|
66
|
+
var data = [];
|
|
67
|
+
var next = [];
|
|
68
|
+
var sameSerie = true;
|
|
69
|
+
var i = 0;
|
|
70
|
+
var hasAdvancedAttributes = false;
|
|
71
|
+
var coordinates = {};
|
|
72
|
+
var ids = [];
|
|
73
|
+
while (i < serie.length) {
|
|
74
|
+
var entry = serie[i];
|
|
75
|
+
if (R.is(Array, entry)) {
|
|
76
|
+
var combination = definition[i];
|
|
77
|
+
var previousDimValues = R.nth(i, acc.previous);
|
|
78
|
+
var combData = (0, _getCombinationDimensionsData.getCombinationDimensionsData)(entry, combination, previousDimValues, sameSerie);
|
|
79
|
+
data = R.append({
|
|
80
|
+
dimension: R.pick(['id', 'name'], combination),
|
|
81
|
+
dimValues: combData.dimValues
|
|
82
|
+
}, data);
|
|
83
|
+
next = R.append(combData.dimValues, next);
|
|
84
|
+
hasAdvancedAttributes = !hasAdvancedAttributes ? combData.hasAdvancedAttributes : true;
|
|
85
|
+
sameSerie = combData.sameSerie;
|
|
86
|
+
coordinates = (0, _extends3.default)({}, coordinates, combData.coordinates);
|
|
87
|
+
ids = R.concat(ids, combData.ids);
|
|
88
|
+
} else {
|
|
89
|
+
var dimension = definition[i];
|
|
90
|
+
var value = R.nth(Math.abs(entry), dimension.values || []);
|
|
91
|
+
var previousValue = R.nth(i, acc.previous) || {};
|
|
92
|
+
coordinates = R.assoc(dimension.id, value.id, coordinates);
|
|
93
|
+
ids = R.append(dimension.id + '=' + value.id, ids);
|
|
94
|
+
if (value.id === R.prop('id', previousValue || {}) && sameSerie) {
|
|
95
|
+
next = R.append(previousValue, next);
|
|
96
|
+
data = R.append({
|
|
97
|
+
dimension: R.pick(['id', 'name', '__index'], dimension),
|
|
98
|
+
value: previousValue
|
|
99
|
+
}, data);
|
|
100
|
+
} else {
|
|
101
|
+
hasAdvancedAttributes = !hasAdvancedAttributes ? value.hasAdvancedAttributes : true;
|
|
102
|
+
var parsedValue = (0, _parseValueHierarchy.parseValueHierarchy)(value, sameSerie ? previousValue || {} : {}, dimension.indexedValues);
|
|
103
|
+
next = R.append(parsedValue, next);
|
|
104
|
+
data = R.append({
|
|
105
|
+
dimension: R.pick(['id', 'name', '__index'], dimension),
|
|
106
|
+
value: parsedValue
|
|
107
|
+
}, data);
|
|
108
|
+
if (!R.isNil(acc.previous)) {
|
|
109
|
+
sameSerie = false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
i++;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
var attributesValues = R.reduce(function (acc, key) {
|
|
117
|
+
var splitKey = R.split(':', key);
|
|
118
|
+
var isValid = R.all(function (entry) {
|
|
119
|
+
var _R$split = R.split('=', entry),
|
|
120
|
+
_R$split2 = (0, _slicedToArray3.default)(_R$split, 2),
|
|
121
|
+
d = _R$split2[0],
|
|
122
|
+
v = _R$split2[1];
|
|
123
|
+
|
|
124
|
+
return R.propEq(d, v, coordinates);
|
|
125
|
+
}, splitKey);
|
|
126
|
+
return isValid ? (0, _extends3.default)({}, acc, R.length(splitKey) === 1 ? R.pick(combinationConceptIds, R.prop(key, attributesSeries)) : R.prop(key, attributesSeries)) : acc;
|
|
127
|
+
}, {}, R.keys(attributesSeries));
|
|
128
|
+
|
|
129
|
+
data = R.addIndex(R.map)(function (entry, ind) {
|
|
130
|
+
if (!R.has('dimValues', entry)) {
|
|
131
|
+
return entry;
|
|
132
|
+
}
|
|
133
|
+
var dimValues = entry.dimValues,
|
|
134
|
+
dimension = entry.dimension;
|
|
135
|
+
|
|
136
|
+
var def = R.nth(ind, definition);
|
|
137
|
+
var fixedDimValues = R.propOr([], 'fixedDimValues', def);
|
|
138
|
+
var values = R.reduce(function (_acc, id) {
|
|
139
|
+
if (R.has(id, dimValues)) {
|
|
140
|
+
return R.append(R.prop(id, dimValues), _acc);
|
|
141
|
+
}
|
|
142
|
+
if (R.has(id, fixedDimValues)) {
|
|
143
|
+
return R.append(R.prop(id, fixedDimValues), _acc);
|
|
144
|
+
}
|
|
145
|
+
if (!R.has(id, attributesValues)) {
|
|
146
|
+
return _acc;
|
|
147
|
+
}
|
|
148
|
+
return R.append(R.path([id, 'value'], attributesValues), _acc);
|
|
149
|
+
}, [], def.concepts);
|
|
150
|
+
return { dimension: dimension, values: values };
|
|
151
|
+
}, data);
|
|
152
|
+
|
|
153
|
+
var layoutAttrValues = R.pipe(R.omit(combinationConceptIds), R.reject(R.prop('isObs')))(attributesValues);
|
|
154
|
+
|
|
155
|
+
var flags = (0, _getFlagsAndNotes.getFlagsAndNotes)(layoutAttrValues, customAttributes);
|
|
156
|
+
var hasMetadata = (0, _hasCellMetadata.hasCellMetadata)(metadataCoordinates, coordinates);
|
|
157
|
+
|
|
158
|
+
if (!hasAdvancedAttributes) {
|
|
159
|
+
hasAdvancedAttributes = getHasAdvancedAttributes(layoutAttrValues);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
var sideProps = hasMetadata || hasAdvancedAttributes ? { hasMetadata: hasMetadata, hasAdvancedAttributes: hasAdvancedAttributes, coordinates: coordinates } : null;
|
|
163
|
+
|
|
164
|
+
return {
|
|
165
|
+
res: R.append({ data: data, key: R.join(':', ids), flags: flags, sideProps: sideProps }, acc.res),
|
|
166
|
+
previous: next
|
|
167
|
+
};
|
|
168
|
+
}, { res: [], previous: [] }, series),
|
|
169
|
+
res = _R$reduce.res;
|
|
170
|
+
|
|
171
|
+
return res;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
var getLayoutData = function getLayoutData(layoutIndexes, layout, _ref2) {
|
|
175
|
+
var metadataCoordinates = _ref2.metadataCoordinates,
|
|
176
|
+
attributesSeries = _ref2.attributesSeries,
|
|
177
|
+
customAttributes = _ref2.customAttributes;
|
|
178
|
+
var header = layoutIndexes.header,
|
|
179
|
+
sections = layoutIndexes.sections,
|
|
180
|
+
rest = (0, _objectWithoutProperties3.default)(layoutIndexes, ['header', 'sections']);
|
|
181
|
+
|
|
182
|
+
var opts = { metadataCoordinates: metadataCoordinates, attributesSeries: attributesSeries, customAttributes: customAttributes };
|
|
183
|
+
var headerData = getSubLayoutData(header, layout.header, opts);
|
|
184
|
+
var sectionsData = R.pipe(R.transpose, function (_ref3) {
|
|
185
|
+
var _ref4 = (0, _slicedToArray3.default)(_ref3, 2),
|
|
186
|
+
sections = _ref4[0],
|
|
187
|
+
sectionsRows = _ref4[1];
|
|
188
|
+
|
|
189
|
+
if (R.isNil(sections)) {
|
|
190
|
+
return [];
|
|
191
|
+
}
|
|
192
|
+
var _sectionsData = getSubLayoutData(sections, layout.sections, opts);
|
|
193
|
+
var rowsData = R.map(function (rows) {
|
|
194
|
+
return getSubLayoutData(rows, layout.rows, opts);
|
|
195
|
+
}, sectionsRows);
|
|
196
|
+
|
|
197
|
+
return R.transpose([_sectionsData, rowsData]);
|
|
198
|
+
})(sections);
|
|
199
|
+
|
|
200
|
+
return (0, _extends3.default)({ headerData: headerData, sectionsData: sectionsData }, rest);
|
|
201
|
+
};
|
|
202
|
+
exports.getLayoutData = getLayoutData;
|
|
@@ -21,45 +21,62 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
|
|
|
21
21
|
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
23
|
|
|
24
|
-
/*
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const observations = {
|
|
35
|
-
[obsKey]: {
|
|
36
|
-
...obs,
|
|
37
|
-
orderedDimIndexes: [sortedValIndex]
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
24
|
+
/*
|
|
25
|
+
const layout = {
|
|
26
|
+
header: [
|
|
27
|
+
{ id, __index },
|
|
28
|
+
{ id: COMB, dimensions: [{ id, __index }] }
|
|
29
|
+
],
|
|
30
|
+
sections: [],
|
|
31
|
+
rows: []
|
|
32
|
+
}
|
|
33
|
+
|
|
41
34
|
*/
|
|
42
35
|
|
|
43
|
-
var getLayoutPivots = function getLayoutPivots(
|
|
44
|
-
|
|
45
|
-
return R.
|
|
46
|
-
|
|
36
|
+
var getLayoutPivots = function getLayoutPivots(layoutEntry) {
|
|
37
|
+
var valIndexGetter = function valIndexGetter(d) {
|
|
38
|
+
return R.pipe(R.nth(R.prop('__index', d)), function (ind) {
|
|
39
|
+
return d.isInverted ? R.negate(ind) : ind;
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
return function (indexes) {
|
|
43
|
+
return R.map(R.ifElse(R.has('dimensions'), function (c) {
|
|
44
|
+
return R.map(function (d) {
|
|
45
|
+
return valIndexGetter(d)(indexes);
|
|
46
|
+
}, R.prop('dimensions', c));
|
|
47
|
+
}, function (d) {
|
|
48
|
+
return valIndexGetter(d)(indexes);
|
|
49
|
+
}), layoutEntry);
|
|
50
|
+
};
|
|
47
51
|
};
|
|
48
52
|
|
|
49
|
-
var comparator = function comparator(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
var comparator = function comparator(a, b) {
|
|
54
|
+
var size = R.length(a);
|
|
55
|
+
var i = 0;
|
|
56
|
+
while (i < size) {
|
|
57
|
+
if (R.is(Array, a[i])) {
|
|
58
|
+
var _a = a[i];
|
|
59
|
+
var _b = b[i];
|
|
60
|
+
var _size = R.length(_a);
|
|
61
|
+
var j = 0;
|
|
62
|
+
while (_a[j] === _b[j] && j < _size) {
|
|
63
|
+
j++;
|
|
64
|
+
}
|
|
65
|
+
if (_a[j] !== _b[j]) {
|
|
66
|
+
return _a[j] - _b[j];
|
|
67
|
+
}
|
|
68
|
+
} else if (a[i] !== b[i]) {
|
|
69
|
+
return a[i] - b[i];
|
|
54
70
|
}
|
|
55
|
-
|
|
56
|
-
}
|
|
71
|
+
i++;
|
|
72
|
+
}
|
|
73
|
+
return a[i] - b[i];
|
|
57
74
|
};
|
|
58
75
|
|
|
59
76
|
// simple call to ramda uniq method is very slow regarding performance
|
|
60
77
|
var uniqIndexes = function uniqIndexes(indexes) {
|
|
61
78
|
return R.pipe(R.reduce(function (acc, i) {
|
|
62
|
-
var key = R.join(':', i);
|
|
79
|
+
var key = R.join(':', R.unnest(i));
|
|
63
80
|
if (R.has(key, acc.keys)) {
|
|
64
81
|
return acc;
|
|
65
82
|
}
|
|
@@ -73,25 +90,22 @@ var uniqIndexes = function uniqIndexes(indexes) {
|
|
|
73
90
|
var getSortedLayoutIndexes = exports.getSortedLayoutIndexes = function getSortedLayoutIndexes(layout, observations) {
|
|
74
91
|
var dimIndexes = R.pipe(R.values, R.map(R.propOr([], 'orderedDimIndexes')))(observations);
|
|
75
92
|
|
|
76
|
-
var
|
|
93
|
+
var headerPivots = getLayoutPivots(layout.header);
|
|
94
|
+
var sectionsPivots = getLayoutPivots(R.concat(layout.sections, layout.rows));
|
|
77
95
|
|
|
78
96
|
var sectionLength = R.length(layout.sections);
|
|
79
|
-
var rowLength = R.length(layout.rows);
|
|
80
|
-
|
|
81
|
-
var layoutPivots = getLayoutPivots(layout);
|
|
82
97
|
|
|
83
98
|
var _R$pipe = R.pipe(R.reduce(function (acc, indexes) {
|
|
84
|
-
var headerIndexes =
|
|
85
|
-
var sectionsIndexes =
|
|
86
|
-
var rowsIndexes = layoutPivots.rows(indexes);
|
|
99
|
+
var headerIndexes = headerPivots(indexes);
|
|
100
|
+
var sectionsIndexes = sectionsPivots(indexes);
|
|
87
101
|
|
|
88
102
|
return {
|
|
89
103
|
header: R.append(headerIndexes, acc.header),
|
|
90
|
-
sections: R.append(
|
|
104
|
+
sections: R.append(sectionsIndexes, acc.sections)
|
|
91
105
|
};
|
|
92
106
|
}, { header: [], sections: [] }), R.mapObjIndexed(uniqIndexes), R.evolve({
|
|
93
|
-
header: R.sort(comparator
|
|
94
|
-
sections: R.sort(comparator
|
|
107
|
+
header: R.sort(comparator),
|
|
108
|
+
sections: R.sort(comparator)
|
|
95
109
|
}), function (indexes) {
|
|
96
110
|
return (0, _extends3.default)({}, indexes, {
|
|
97
111
|
sections: R.reduce(function (acc, i) {
|
|
@@ -103,7 +117,8 @@ var getSortedLayoutIndexes = exports.getSortedLayoutIndexes = function getSorted
|
|
|
103
117
|
var previousSecIndexes = R.pipe(R.nth(-1), function (i) {
|
|
104
118
|
return R.isNil(i) ? null : R.head(i);
|
|
105
119
|
})(acc);
|
|
106
|
-
if (R.equals(sectionIndexes, previousSecIndexes)) {
|
|
120
|
+
if (R.equals(R.unnest(sectionIndexes), previousSecIndexes ? R.unnest(previousSecIndexes) : null)) {
|
|
121
|
+
//perhaps a bit dirty ...
|
|
107
122
|
return R.over(R.lensIndex(-1), R.over(R.lensIndex(1), R.append(rowIndexes)))(acc);
|
|
108
123
|
}
|
|
109
124
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getTableProps = 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
|
+
var _getLayout = require('./getLayout');
|
|
17
|
+
|
|
18
|
+
var _getSortedLayoutIndexes = require('./getSortedLayoutIndexes');
|
|
19
|
+
|
|
20
|
+
var _refineLayoutSize = require('./refineLayoutSize');
|
|
21
|
+
|
|
22
|
+
var _getLayoutData = require('./getLayoutData');
|
|
23
|
+
|
|
24
|
+
var _getCellsAttributesIds = require('./getCellsAttributesIds');
|
|
25
|
+
|
|
26
|
+
var _getIndexedCombinationsByDisplay = require('./getIndexedCombinationsByDisplay');
|
|
27
|
+
|
|
28
|
+
var _getCells = require('./getCells');
|
|
29
|
+
|
|
30
|
+
var _getCuratedCells = require('./getCuratedCells');
|
|
31
|
+
|
|
32
|
+
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; } }
|
|
33
|
+
|
|
34
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
|
+
|
|
36
|
+
var getTableProps = exports.getTableProps = function getTableProps(_ref) {
|
|
37
|
+
var data = _ref.data,
|
|
38
|
+
layoutIds = _ref.layoutIds,
|
|
39
|
+
customAttributes = _ref.customAttributes,
|
|
40
|
+
limit = _ref.limit,
|
|
41
|
+
isTimeInverted = _ref.isTimeInverted;
|
|
42
|
+
var observations = data.observations,
|
|
43
|
+
dimensions = data.dimensions,
|
|
44
|
+
combinations = data.combinations,
|
|
45
|
+
oneValueDimensions = data.oneValueDimensions,
|
|
46
|
+
attributesSeries = data.attributesSeries,
|
|
47
|
+
metadataCoordinates = data.metadataCoordinates,
|
|
48
|
+
attributes = data.attributes;
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
var seriesCombinations = R.filter(R.prop('series'), combinations);
|
|
52
|
+
var layout = (0, _getLayout.getLayout)(layoutIds, dimensions, seriesCombinations, isTimeInverted, oneValueDimensions);
|
|
53
|
+
var layoutIndexes = (0, _getSortedLayoutIndexes.getSortedLayoutIndexes)(layout, observations);
|
|
54
|
+
var refinedLayoutIndexes = (0, _refineLayoutSize.refineLayoutSize)({ layout: layout, observations: observations, limit: limit })(layoutIndexes);
|
|
55
|
+
var layoutData = (0, _getLayoutData.getLayoutData)(refinedLayoutIndexes, layout, { metadataCoordinates: metadataCoordinates, attributesSeries: attributesSeries, customAttributes: customAttributes });
|
|
56
|
+
|
|
57
|
+
var cellsAttributesIds = (0, _getCellsAttributesIds.getCellsAttributesIds)(layoutIds, attributes);
|
|
58
|
+
var indexedCombinations = (0, _getIndexedCombinationsByDisplay.getIndexedCombinationsByDisplay)(layout, seriesCombinations);
|
|
59
|
+
var cells = (0, _getCells.getCells)(customAttributes, cellsAttributesIds, indexedCombinations, attributesSeries, metadataCoordinates)(observations);
|
|
60
|
+
|
|
61
|
+
return (0, _extends3.default)({}, layoutData, {
|
|
62
|
+
cells: (0, _getCuratedCells.getCuratedCells)(cells, layout)
|
|
63
|
+
});
|
|
64
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseValueHierarchy = undefined;
|
|
7
|
+
|
|
8
|
+
var _extends2 = require('babel-runtime/helpers/extends');
|
|
9
|
+
|
|
10
|
+
var _extends3 = _interopRequireDefault(_extends2);
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
|
|
13
|
+
|
|
14
|
+
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
|
|
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 parseValueHierarchy = exports.parseValueHierarchy = function parseValueHierarchy(value, previousValue, indexedValues) {
|
|
25
|
+
var parentsIds = R.propOr([], 'parents', value);
|
|
26
|
+
if (R.isEmpty(parentsIds)) {
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
var _previousParentsIds = R.propOr([], 'parentsIds', previousValue);
|
|
30
|
+
var previousParentsIds = R.isNil(previousValue) ? [] : R.append(R.prop('id', previousValue), _previousParentsIds);
|
|
31
|
+
|
|
32
|
+
var _R$addIndex = R.addIndex(R.splitWhen)(function (val, ind) {
|
|
33
|
+
return R.nth(ind, previousParentsIds) !== val;
|
|
34
|
+
}, parentsIds),
|
|
35
|
+
_R$addIndex2 = (0, _slicedToArray3.default)(_R$addIndex, 2),
|
|
36
|
+
presentIds = _R$addIndex2[0],
|
|
37
|
+
missingIds = _R$addIndex2[1];
|
|
38
|
+
//console.log({ presentIds, missingIds });
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
var _previousParents = R.propOr([], 'parents', previousValue);
|
|
42
|
+
var previousParents = R.isNil(previousValue) ? [] : R.append(R.pick(['id', 'name'], previousValue), _previousParents);
|
|
43
|
+
//console.log('previousParents', previousParents);
|
|
44
|
+
var parents = R.takeWhile(function (p) {
|
|
45
|
+
return R.includes(p.id, presentIds);
|
|
46
|
+
}, previousParents);
|
|
47
|
+
var missingParents = R.concat(R.includes(R.prop('id', previousValue), presentIds) ? [] : R.takeWhile(function (p) {
|
|
48
|
+
return R.includes(p.id, presentIds);
|
|
49
|
+
}, R.propOr([], 'missingParents', previousValue)), R.props(missingIds, indexedValues));
|
|
50
|
+
return (0, _extends3.default)({}, value, {
|
|
51
|
+
parents: parents,
|
|
52
|
+
parentsIds: parentsIds,
|
|
53
|
+
missingParents: missingParents
|
|
54
|
+
});
|
|
55
|
+
};
|