@sis-cc/dotstatsuite-components 13.2.0 → 13.4.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/constants.js +4 -2
- package/lib/rules/src/factories/timeline-series.js +0 -26
- package/lib/rules/src/preparators/getReportingYearStart.js +7 -1
- package/lib/rules/src/table/preparators/parseAttributes.js +3 -0
- package/lib/rules/src/v8-transformer.js +9 -16
- package/lib/rules2/src/getMSDInformations.js +4 -3
- package/lib/rules2/src/parseMetadataSeries.js +50 -13
- package/package.json +2 -2
- package/src/rules/src/constants.js +3 -0
- package/src/rules/src/factories/choro-series.js +1 -1
- package/src/rules/src/factories/timeline-series.js +1 -40
- package/src/rules/src/preparators/getReportingYearStart.js +4 -1
- package/src/rules/src/properties/scatter.js +0 -1
- package/src/rules/src/table/preparators/parseAttributes.js +2 -0
- package/src/rules/src/v8-transformer.js +11 -14
- package/src/rules2/src/getMSDInformations.js +4 -3
- package/src/rules2/src/parseMetadataSeries.js +59 -22
- package/test/getMSDInformations.test.js +21 -21
- package/test/getReportingYearStart.test.js +43 -0
- package/test/metadata-parsing-perf.test.js +23 -1
- package/test/mocks/large_metadata_series.json +20 -20
- package/test/parseAttributes.test.js +2 -0
- package/test/parseMetadataSeries.test.js +73 -7
- package/lib/rules/src/preparators/getDimensions.js +0 -55
- package/src/rules/src/preparators/getDimensions.js +0 -49
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.OBS_TYPE_STRING = exports.OBS_TYPE_NUMERICAL_STRING = exports.OBS_TYPE_NUMBER = exports.V8_SDMX_JSON = exports.DEFAULT_MAJOR_ATTRIBUTES = exports.DIMENSION_DISPLAY_PARTS = exports.DEFAULT_REJECTED_SUBTITLE_IDS = exports.DEFAULT_REJECTED_UPR_VALUES_IDS = exports.DEFAULT_UPR_IDS = exports.FREQ_M = exports.FREQ_Q = exports.FREQ_S = exports.FREQ_A = exports.TYPES = exports.VALUES = exports.PERCENT = exports.CHORO = exports.STACKED_ROW = exports.STACKED_BAR = exports.V_SYMBOL = exports.H_SYMBOL = exports.TIMELINE = exports.SCATTER = exports.ROW = exports.BAR = undefined;
|
|
6
|
+
exports.REPYEARSTART = exports.REPORTING_YEAR_START_DAY = exports.OBS_TYPE_STRING = exports.OBS_TYPE_NUMERICAL_STRING = exports.OBS_TYPE_NUMBER = exports.V8_SDMX_JSON = exports.DEFAULT_MAJOR_ATTRIBUTES = exports.DIMENSION_DISPLAY_PARTS = exports.DEFAULT_REJECTED_SUBTITLE_IDS = exports.DEFAULT_REJECTED_UPR_VALUES_IDS = exports.DEFAULT_UPR_IDS = exports.FREQ_M = exports.FREQ_Q = exports.FREQ_S = exports.FREQ_A = exports.TYPES = exports.VALUES = exports.PERCENT = exports.CHORO = exports.STACKED_ROW = exports.STACKED_BAR = exports.V_SYMBOL = exports.H_SYMBOL = exports.TIMELINE = exports.SCATTER = exports.ROW = exports.BAR = undefined;
|
|
7
7
|
|
|
8
8
|
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
|
|
9
9
|
|
|
@@ -63,4 +63,6 @@ var V8_SDMX_JSON = exports.V8_SDMX_JSON = "application/vnd.sdmx.data+json;versio
|
|
|
63
63
|
|
|
64
64
|
var OBS_TYPE_NUMBER = exports.OBS_TYPE_NUMBER = 'OBS_TYPE_NUMBER';
|
|
65
65
|
var OBS_TYPE_NUMERICAL_STRING = exports.OBS_TYPE_NUMERICAL_STRING = 'OBS_TYPE_NUMERICAL_STRING';
|
|
66
|
-
var OBS_TYPE_STRING = exports.OBS_TYPE_STRING = 'OBS_TYPE_STRING';
|
|
66
|
+
var OBS_TYPE_STRING = exports.OBS_TYPE_STRING = 'OBS_TYPE_STRING';
|
|
67
|
+
var REPORTING_YEAR_START_DAY = exports.REPORTING_YEAR_START_DAY = 'REPORTING_YEAR_START_DAY';
|
|
68
|
+
var REPYEARSTART = exports.REPYEARSTART = 'REPYEARSTART';
|
|
@@ -48,12 +48,6 @@ var _findIndex2 = require('lodash/findIndex');
|
|
|
48
48
|
|
|
49
49
|
var _findIndex3 = _interopRequireDefault(_findIndex2);
|
|
50
50
|
|
|
51
|
-
var _concat2 = require('lodash/concat');
|
|
52
|
-
|
|
53
|
-
var _concat3 = _interopRequireDefault(_concat2);
|
|
54
|
-
|
|
55
|
-
var _constants = require('../constants');
|
|
56
|
-
|
|
57
51
|
var _dotstatsuiteSdmxjs = require('@sis-cc/dotstatsuite-sdmxjs');
|
|
58
52
|
|
|
59
53
|
var _dimensionUtils = require('../dimension-utils');
|
|
@@ -62,26 +56,6 @@ var _observationFormater = require('../observation-formater');
|
|
|
62
56
|
|
|
63
57
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
64
58
|
|
|
65
|
-
var getLineCategory = function getLineCategory(oDimensionValuesIndexes, dimensions, timePeriodDimensionIndex, dimensionsWithValuesIndexedById) {
|
|
66
|
-
return (0, _reduce3.default)(oDimensionValuesIndexes, function (memo, dimensionValueIndex, dimensionIndex) {
|
|
67
|
-
var dimension = (0, _get3.default)(dimensions, '[' + dimensionIndex + ']', {});
|
|
68
|
-
if (dimensionIndex !== timePeriodDimensionIndex && (0, _has3.default)(dimensionsWithValuesIndexedById, dimension.id)) {
|
|
69
|
-
return (0, _concat3.default)(memo, (0, _get3.default)(dimensions, '[' + dimensionIndex + '].values[' + dimensionValueIndex + '].name', ''));
|
|
70
|
-
}
|
|
71
|
-
return memo;
|
|
72
|
-
}, []).join(' - ');
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
var getLineCategoryId = function getLineCategoryId(oDimensionValuesIndexes, dimensions, timePeriodDimensionIndex, dimensionsWithValuesIndexedById) {
|
|
76
|
-
return (0, _reduce3.default)(oDimensionValuesIndexes, function (memo, dimensionValueIndex, dimensionIndex) {
|
|
77
|
-
var dimension = (0, _get3.default)(dimensions, '[' + dimensionIndex + ']', {});
|
|
78
|
-
if (dimensionIndex !== timePeriodDimensionIndex && (0, _has3.default)(dimensionsWithValuesIndexedById, dimension.id)) {
|
|
79
|
-
return (0, _concat3.default)(memo, (0, _get3.default)(dimensions, '[' + dimensionIndex + '].values[' + dimensionValueIndex + '].id', ''));
|
|
80
|
-
}
|
|
81
|
-
return memo;
|
|
82
|
-
}, []).join(' - ');
|
|
83
|
-
};
|
|
84
|
-
|
|
85
59
|
var getDimensionValues = function getDimensionValues(splitObservationKey, dimensions, dimensionsWithValuesIndexedById, rejectedId, display) {
|
|
86
60
|
return (0, _reduce3.default)(splitObservationKey, function (memo, dimensionValueIndex, dimensionIndex) {
|
|
87
61
|
var dimension = (0, _get3.default)(dimensions, '[' + dimensionIndex + ']', {});
|
|
@@ -17,6 +17,8 @@ var _ramda = require('ramda');
|
|
|
17
17
|
|
|
18
18
|
var R = _interopRequireWildcard(_ramda);
|
|
19
19
|
|
|
20
|
+
var _constants = require('../constants');
|
|
21
|
+
|
|
20
22
|
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
23
|
|
|
22
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -32,7 +34,11 @@ var getReportingYearStart = exports.getReportingYearStart = function getReportin
|
|
|
32
34
|
return [].concat((0, _toConsumableArray3.default)(dataSet), (0, _toConsumableArray3.default)(observation), (0, _toConsumableArray3.default)(series));
|
|
33
35
|
})(sdmxJson);
|
|
34
36
|
|
|
35
|
-
var reportYearStartAttr = R.find(
|
|
37
|
+
var reportYearStartAttr = R.find(function (_ref2) {
|
|
38
|
+
var id = _ref2.id;
|
|
39
|
+
|
|
40
|
+
return id === _constants.REPORTING_YEAR_START_DAY || id === _constants.REPYEARSTART;
|
|
41
|
+
}, attributes) || {};
|
|
36
42
|
var reportYearStart = R.pathOr('--01-01', ['values', 0, 'name'], reportYearStartAttr);
|
|
37
43
|
|
|
38
44
|
var _R$match = R.match(/[\d]{2}/g, reportYearStart),
|
|
@@ -9,6 +9,8 @@ var _ramda = require('ramda');
|
|
|
9
9
|
|
|
10
10
|
var R = _interopRequireWildcard(_ramda);
|
|
11
11
|
|
|
12
|
+
var _constants = require('../../constants');
|
|
13
|
+
|
|
12
14
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
|
13
15
|
|
|
14
16
|
var registerAttrId = function registerAttrId(path, id) {
|
|
@@ -63,6 +65,7 @@ var parseAttributes = exports.parseAttributes = function parseAttributes(_ref) {
|
|
|
63
65
|
if (R.isEmpty(values) || !R.propOr(true, 'display', attribute) || R.includes(attribute.id, R.propOr([], 'units', customAttributes))) {
|
|
64
66
|
return acc;
|
|
65
67
|
}
|
|
68
|
+
if (R.includes(attribute.id, [_constants.REPORTING_YEAR_START_DAY, _constants.REPYEARSTART])) return acc;
|
|
66
69
|
|
|
67
70
|
var registers = getAttributeRegisters(R.pipe(R.assoc('index', attributeIndex), R.over(R.lensProp('values'), R.map(function (value) {
|
|
68
71
|
if (!R.propOr(true, 'display', value)) {
|
|
@@ -33,16 +33,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
33
33
|
|
|
34
34
|
var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew) {
|
|
35
35
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
36
|
+
var locale = options.locale;
|
|
36
37
|
|
|
37
|
-
var getLanguage = R.pipe(R.pathOr('', ['meta', 'contentLanguages']), R.head());
|
|
38
|
-
var locale = getLanguage(dataNew);
|
|
39
38
|
var reportYearStart = (0, _getReportingYearStart.getReportingYearStart)(dataNew);
|
|
40
|
-
var getProp = function getProp(prop, locale) {
|
|
41
|
-
return R.pathOr(null, [prop, locale]);
|
|
42
|
-
};
|
|
43
|
-
var getLocalisedProp = R.curry(function (prop, collection) {
|
|
44
|
-
return getProp(prop, locale)(collection);
|
|
45
|
-
});
|
|
46
39
|
|
|
47
40
|
//---------------------------------------------------------------------------------------Annotations
|
|
48
41
|
var getStructure = R.pathOr({}, ['data', 'structure']);
|
|
@@ -62,7 +55,7 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
62
55
|
var valAnnotations = R.props(value.annotations || [], annotations);
|
|
63
56
|
return (0, _extends3.default)({}, value, {
|
|
64
57
|
display: !R.has(parent + '.' + value.id, hiddenIds) && !(0, _sdmxData.getIsHidden)(valAnnotations),
|
|
65
|
-
name:
|
|
58
|
+
name: (0, _dotstatsuiteSdmxjs.getRefinedName)(value)
|
|
66
59
|
});
|
|
67
60
|
}, values);
|
|
68
61
|
};
|
|
@@ -71,7 +64,7 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
71
64
|
return R.pipe(R.addIndex(R.map)(function (value, __index) {
|
|
72
65
|
var valueAnnotations = R.pipe(R.propOr([], 'annotations'), R.flip(R.props)(annotations))(value);
|
|
73
66
|
var isHidden = R.has(parent + '.' + value.id, hiddenIds) || (0, _sdmxData.getIsHidden)(valueAnnotations);
|
|
74
|
-
var name =
|
|
67
|
+
var name = (0, _dotstatsuiteSdmxjs.getRefinedName)(value);
|
|
75
68
|
var __indexPosition = NaN;
|
|
76
69
|
var start = null;
|
|
77
70
|
if (isTimeDimension) {
|
|
@@ -82,7 +75,7 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
82
75
|
__indexPosition = _dateFns2.default.getTime(new Date(R.prop('start', value)));
|
|
83
76
|
}
|
|
84
77
|
if (isNaN(__indexPosition)) {
|
|
85
|
-
__indexPosition = (0, _dotstatsuiteSdmxjs.getCodeOrder)(
|
|
78
|
+
__indexPosition = (0, _dotstatsuiteSdmxjs.getCodeOrder)({ annotations: valueAnnotations });
|
|
86
79
|
}
|
|
87
80
|
var timeFormat = R.prop('timeFormat', options);
|
|
88
81
|
return (0, _extends3.default)({}, value, {
|
|
@@ -106,7 +99,7 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
106
99
|
var sender = getSender(meta);
|
|
107
100
|
|
|
108
101
|
var resHeader = (0, _extends3.default)({}, meta, {
|
|
109
|
-
sender: (0, _extends3.default)({}, sender, { name:
|
|
102
|
+
sender: (0, _extends3.default)({}, sender, { name: (0, _dotstatsuiteSdmxjs.getRefinedName)(sender) })
|
|
110
103
|
});
|
|
111
104
|
|
|
112
105
|
//----------------------------------------------------------------------------------------Attributes
|
|
@@ -120,7 +113,7 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
120
113
|
var obsAnnotations = R.props(observation.annotations || [], annotations);
|
|
121
114
|
return (0, _extends3.default)({}, observation, {
|
|
122
115
|
display: !R.has(observation.id, hiddenIds) && !(0, _sdmxData.getIsHidden)(obsAnnotations),
|
|
123
|
-
name:
|
|
116
|
+
name: (0, _dotstatsuiteSdmxjs.getRefinedName)(observation),
|
|
124
117
|
values: getValues(observation.values || [], observation.id),
|
|
125
118
|
roles: !R.isNil(observation.role) ? R.head(observation.role) : null
|
|
126
119
|
});
|
|
@@ -130,7 +123,7 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
130
123
|
var attrAnnotations = R.props(attr.annotations || [], annotations);
|
|
131
124
|
return (0, _extends3.default)({}, attr, {
|
|
132
125
|
display: !R.has(attr.id, hiddenIds) && !(0, _sdmxData.getIsHidden)(attrAnnotations),
|
|
133
|
-
name:
|
|
126
|
+
name: (0, _dotstatsuiteSdmxjs.getRefinedName)(observation),
|
|
134
127
|
values: getValues(attr.values || [], attr.id)
|
|
135
128
|
});
|
|
136
129
|
}, R.propOr([], 'dataSet', attributes));
|
|
@@ -179,7 +172,7 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
179
172
|
observation: R.append((0, _extends3.default)({}, observation, {
|
|
180
173
|
display: !isHidden,
|
|
181
174
|
__index: obsIndex,
|
|
182
|
-
name:
|
|
175
|
+
name: (0, _dotstatsuiteSdmxjs.getRefinedName)(observation),
|
|
183
176
|
values: sortedValues,
|
|
184
177
|
role: R.isNil(observation.roles) ? null : R.head(observation.roles)
|
|
185
178
|
}))(acc.observation),
|
|
@@ -195,7 +188,7 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
195
188
|
observation = _getObservations.observation;
|
|
196
189
|
|
|
197
190
|
var resStructure = (0, _extends3.default)({}, structure, {
|
|
198
|
-
name:
|
|
191
|
+
name: (0, _dotstatsuiteSdmxjs.getRefinedName)((0, _extends3.default)({}, structure, { id: options.dataflowId })),
|
|
199
192
|
annotations: annotations,
|
|
200
193
|
attributes: resAttributes,
|
|
201
194
|
dimensions: { observation: observation }
|
|
@@ -27,12 +27,13 @@ var getMSDInformations = exports.getMSDInformations = function getMSDInformation
|
|
|
27
27
|
var parseAttributes = function parseAttributes(parent) {
|
|
28
28
|
return R.reduce(function (acc, attribute) {
|
|
29
29
|
var id = attribute.id;
|
|
30
|
+
var hierarchicalId = parent === '#ROOT' ? id : parent + '.' + id;
|
|
30
31
|
var format = R.path(['localRepresentation', 'textFormat', 'textType'], attribute);
|
|
31
32
|
if (R.has('metadataAttributes', attribute)) {
|
|
32
|
-
var collection = parseAttributes(
|
|
33
|
-
return (0, _extends4.default)({}, acc, collection, (0, _defineProperty3.default)({},
|
|
33
|
+
var collection = parseAttributes(hierarchicalId)(attribute.metadataAttributes);
|
|
34
|
+
return (0, _extends4.default)({}, acc, collection, (0, _defineProperty3.default)({}, hierarchicalId, { format: format, parent: parent, id: id }));
|
|
34
35
|
}
|
|
35
|
-
return R.assoc(
|
|
36
|
+
return R.assoc(hierarchicalId, { format: format, parent: parent, id: id }, acc);
|
|
36
37
|
}, {});
|
|
37
38
|
};
|
|
38
39
|
|
|
@@ -5,6 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.parseMetadataSeries = undefined;
|
|
7
7
|
|
|
8
|
+
var _extends2 = require('babel-runtime/helpers/extends');
|
|
9
|
+
|
|
10
|
+
var _extends3 = _interopRequireDefault(_extends2);
|
|
11
|
+
|
|
8
12
|
var _ramda = require('ramda');
|
|
9
13
|
|
|
10
14
|
var R = _interopRequireWildcard(_ramda);
|
|
@@ -13,15 +17,18 @@ var _dotstatsuiteSdmxjs = require('@sis-cc/dotstatsuite-sdmxjs');
|
|
|
13
17
|
|
|
14
18
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
var dimensionValueDisplay = function dimensionValueDisplay(display) {
|
|
17
23
|
return function (data) {
|
|
18
24
|
if (display === 'code') {
|
|
19
25
|
return R.prop('id', data);
|
|
20
26
|
}
|
|
27
|
+
var name = (0, _dotstatsuiteSdmxjs.getRefinedName)(data);
|
|
21
28
|
if (display === 'both') {
|
|
22
|
-
return R.prop('id', data) + ': ' +
|
|
29
|
+
return R.prop('id', data) + ': ' + name;
|
|
23
30
|
}
|
|
24
|
-
return
|
|
31
|
+
return name;
|
|
25
32
|
};
|
|
26
33
|
};
|
|
27
34
|
// options = { locale, display, dimensions = [], attributes = { [id]: { format, parent } } };
|
|
@@ -59,22 +66,52 @@ var parseMetadataSeries = exports.parseMetadataSeries = function parseMetadataSe
|
|
|
59
66
|
return R.propOr('', '__index', originalVal);
|
|
60
67
|
}), R.join(':'))(serieKey);
|
|
61
68
|
|
|
62
|
-
var attributes = R.addIndex(R.reduce)(function (acc, valueIndex, attrIndex) {
|
|
63
|
-
|
|
69
|
+
var attributes = R.pipe(R.addIndex(R.reduce)(function (acc, valueIndex, attrIndex) {
|
|
70
|
+
var attribute = R.nth(attrIndex, metadataAttributes);
|
|
71
|
+
if (R.isNil(valueIndex) && !attribute.isPresentational) {
|
|
64
72
|
return acc;
|
|
65
73
|
}
|
|
66
|
-
var
|
|
67
|
-
var
|
|
74
|
+
var attrOptions = R.pathOr({}, ['attributes', attribute.id], options);
|
|
75
|
+
var id = attrOptions.id;
|
|
76
|
+
var label = dimensionValueDisplay(options.display)((0, _extends3.default)({}, attribute, { id: id }));
|
|
68
77
|
|
|
69
|
-
var
|
|
78
|
+
var _value = R.prop('value', R.nth(valueIndex, attribute.values || []));
|
|
79
|
+
var value = R.is(Object, _value) ? R.prop(options.locale, _value) : _value;
|
|
70
80
|
|
|
71
|
-
return R.append({
|
|
81
|
+
return R.append((0, _extends3.default)({}, R.isNil(value) ? {} : { value: value }, {
|
|
72
82
|
id: attribute.id,
|
|
73
83
|
label: label,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
84
|
+
handlerProps: R.omit(['id'], R.pathOr({}, ['attributes', attribute.id], options))
|
|
85
|
+
}), acc);
|
|
86
|
+
}, []), function (attributes) {
|
|
87
|
+
// missing parents in metadata response
|
|
88
|
+
var groupedAttrs = R.groupBy(R.pathOr('#ROOT', ['handlerProps', 'parent']), attributes);
|
|
89
|
+
var indexedAttrs = R.indexBy(R.prop('id'), attributes);
|
|
90
|
+
|
|
91
|
+
return R.reduce(function (acc, id) {
|
|
92
|
+
if (R.has(id, indexedAttrs) || id === '#ROOT') {
|
|
93
|
+
return acc;
|
|
94
|
+
}
|
|
95
|
+
return R.append({
|
|
96
|
+
id: id,
|
|
97
|
+
label: dimensionValueDisplay(options.display)({ id: id }),
|
|
98
|
+
handlerProps: R.omit(['id'], R.pathOr({}, ['attributes', id], options))
|
|
99
|
+
}, acc);
|
|
100
|
+
}, attributes, R.keys(groupedAttrs));
|
|
101
|
+
}, function (attributes) {
|
|
102
|
+
var groupedAttrs = R.groupBy(R.pathOr('#ROOT', ['handlerProps', 'parent']), attributes);
|
|
103
|
+
var makeTree = R.map(function (attr) {
|
|
104
|
+
if (R.has(attr.id, groupedAttrs)) {
|
|
105
|
+
var children = makeTree(R.prop(attr.id, groupedAttrs));
|
|
106
|
+
return R.assoc('children', children, attr);
|
|
107
|
+
}
|
|
108
|
+
return attr;
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
return makeTree(R.propOr([], '#ROOT', groupedAttrs));
|
|
112
|
+
}, R.reject(function (attr) {
|
|
113
|
+
return R.isNil(attr.value) && R.isEmpty(attr.children || []);
|
|
114
|
+
}))(metaIndexes);
|
|
78
115
|
|
|
79
116
|
return R.assoc(evolvedKey, attributes, acc);
|
|
80
117
|
}, {}, R.keys(series));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sis-cc/dotstatsuite-components",
|
|
3
3
|
"description": "Set components based on React.",
|
|
4
|
-
"version": "13.
|
|
4
|
+
"version": "13.4.0",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"author": "OECD",
|
|
7
7
|
"license": "MIT",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"@material-ui/core": "^4.x",
|
|
39
39
|
"@sis-cc/dotstatsuite-visions": "^7.x",
|
|
40
|
-
"@sis-cc/dotstatsuite-sdmxjs": "^
|
|
40
|
+
"@sis-cc/dotstatsuite-sdmxjs": "^6.x",
|
|
41
41
|
"react": "16.x"
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -59,3 +59,6 @@ export const V8_SDMX_JSON = "application/vnd.sdmx.data+json;version=1.0.0-wd";
|
|
|
59
59
|
export const OBS_TYPE_NUMBER = 'OBS_TYPE_NUMBER';
|
|
60
60
|
export const OBS_TYPE_NUMERICAL_STRING = 'OBS_TYPE_NUMERICAL_STRING';
|
|
61
61
|
export const OBS_TYPE_STRING = 'OBS_TYPE_STRING';
|
|
62
|
+
export const REPORTING_YEAR_START_DAY = 'REPORTING_YEAR_START_DAY';
|
|
63
|
+
export const REPYEARSTART = 'REPYEARSTART';
|
|
64
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { get, has, head, isUndefined, map, split, transform } from 'lodash';
|
|
2
2
|
import { getRefAreaDimension } from '@sis-cc/dotstatsuite-sdmxjs';
|
|
3
3
|
import { categoryDisplay, dimensionValueDisplay } from '../dimension-utils';
|
|
4
4
|
|
|
@@ -1,47 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
concat, filter, findIndex, get, has, head, isEmpty, isNil, map, reduce, size, sortBy, split, keys, includes
|
|
3
|
-
} from 'lodash';
|
|
4
|
-
import { FREQ_A, FREQ_Q, FREQ_M } from '../constants';
|
|
1
|
+
import { findIndex, get, has, head, isEmpty, isNil, map, reduce, sortBy, split } from 'lodash';
|
|
5
2
|
import { getTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';
|
|
6
3
|
import { categoryDisplay, dimensionValueDisplayAt } from '../dimension-utils';
|
|
7
4
|
import { getFormatedObservation } from '../observation-formater';
|
|
8
5
|
|
|
9
|
-
const getLineCategory = (
|
|
10
|
-
oDimensionValuesIndexes, dimensions, timePeriodDimensionIndex, dimensionsWithValuesIndexedById
|
|
11
|
-
) => (
|
|
12
|
-
reduce(
|
|
13
|
-
oDimensionValuesIndexes,
|
|
14
|
-
(memo, dimensionValueIndex, dimensionIndex) => {
|
|
15
|
-
const dimension = get(dimensions, `[${dimensionIndex}]`, {});
|
|
16
|
-
if ((dimensionIndex !== timePeriodDimensionIndex) && (has(dimensionsWithValuesIndexedById, dimension.id))) {
|
|
17
|
-
return concat(
|
|
18
|
-
memo, get(dimensions, `[${dimensionIndex}].values[${dimensionValueIndex}].name`, '')
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
return memo;
|
|
22
|
-
},
|
|
23
|
-
[]
|
|
24
|
-
).join(' - ')
|
|
25
|
-
);
|
|
26
|
-
|
|
27
|
-
const getLineCategoryId = (
|
|
28
|
-
oDimensionValuesIndexes, dimensions, timePeriodDimensionIndex, dimensionsWithValuesIndexedById
|
|
29
|
-
) => (
|
|
30
|
-
reduce(
|
|
31
|
-
oDimensionValuesIndexes,
|
|
32
|
-
(memo, dimensionValueIndex, dimensionIndex) => {
|
|
33
|
-
const dimension = get(dimensions, `[${dimensionIndex}]`, {});
|
|
34
|
-
if ((dimensionIndex !== timePeriodDimensionIndex) && (has(dimensionsWithValuesIndexedById, dimension.id))) {
|
|
35
|
-
return concat(
|
|
36
|
-
memo, get(dimensions, `[${dimensionIndex}].values[${dimensionValueIndex}].id`, '')
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
return memo;
|
|
40
|
-
},
|
|
41
|
-
[]
|
|
42
|
-
).join(' - ')
|
|
43
|
-
);
|
|
44
|
-
|
|
45
6
|
const getDimensionValues = (splitObservationKey, dimensions, dimensionsWithValuesIndexedById, rejectedId, display) => (
|
|
46
7
|
reduce(
|
|
47
8
|
splitObservationKey,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as R from 'ramda';
|
|
2
|
+
import { REPORTING_YEAR_START_DAY, REPYEARSTART } from '../constants';
|
|
2
3
|
|
|
3
4
|
export const getReportingYearStart = (sdmxJson) => {
|
|
4
5
|
const attributes = R.pipe(
|
|
@@ -6,7 +7,9 @@ export const getReportingYearStart = (sdmxJson) => {
|
|
|
6
7
|
({ dataSet=[], observation=[], series=[] }) => [...dataSet, ...observation, ...series]
|
|
7
8
|
)(sdmxJson);
|
|
8
9
|
|
|
9
|
-
const reportYearStartAttr = R.find(
|
|
10
|
+
const reportYearStartAttr = R.find(({ id }) => {
|
|
11
|
+
return id === REPORTING_YEAR_START_DAY || id === REPYEARSTART;
|
|
12
|
+
}, attributes) || {};
|
|
10
13
|
const reportYearStart = R.pathOr('--01-01', ['values', 0, 'name'], reportYearStartAttr);
|
|
11
14
|
const [month, day] = R.match(/[\d]{2}/g, reportYearStart);
|
|
12
15
|
return ({ month, day });
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as R from 'ramda';
|
|
2
|
+
import { REPORTING_YEAR_START_DAY, REPYEARSTART } from '../../constants';
|
|
2
3
|
|
|
3
4
|
const registerAttrId = (path, id) => R.over(
|
|
4
5
|
R.lensPath(R.prepend('attributesIdsIndexedByTargets', path)),
|
|
@@ -85,6 +86,7 @@ export const parseAttributes = ({ attributes, parsedDimensionsIds, customAttribu
|
|
|
85
86
|
if (R.isEmpty(values) || !R.propOr(true, 'display', attribute) || R.includes(attribute.id, R.propOr([], 'units', customAttributes))) {
|
|
86
87
|
return acc;
|
|
87
88
|
}
|
|
89
|
+
if (R.includes(attribute.id, [REPORTING_YEAR_START_DAY, REPYEARSTART])) return acc;
|
|
88
90
|
|
|
89
91
|
const registers = getAttributeRegisters(
|
|
90
92
|
R.pipe(
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import * as R from 'ramda';
|
|
2
2
|
import dateFns from 'date-fns';
|
|
3
|
-
import { getCodeOrder, isTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';
|
|
3
|
+
import { getCodeOrder, getRefinedName, isTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';
|
|
4
4
|
import {
|
|
5
|
-
getRelationnalAnnotations, setAnnotationsLayout, getIsHidden
|
|
5
|
+
getRelationnalAnnotations, setAnnotationsLayout, getIsHidden } from './sdmx-data';
|
|
6
6
|
import { getReportedTimePeriodLabel } from './date';
|
|
7
7
|
import { getReportingYearStart } from './preparators/getReportingYearStart';
|
|
8
8
|
import { getNotDisplayedIds } from '../../rules2/src';
|
|
9
9
|
|
|
10
10
|
export const dataTransformer = (dataNew, options = {}) => {
|
|
11
|
-
const
|
|
12
|
-
const locale = getLanguage(dataNew);
|
|
11
|
+
const { locale } = options;
|
|
13
12
|
const reportYearStart = getReportingYearStart(dataNew);
|
|
14
|
-
const getProp = (prop, locale) => R.pathOr(null,[prop, locale]);
|
|
15
|
-
const getLocalisedProp = R.curry((prop, collection) => getProp(prop, locale)(collection));
|
|
16
13
|
|
|
17
14
|
//---------------------------------------------------------------------------------------Annotations
|
|
18
15
|
const getStructure = R.pathOr({},['data', 'structure']);
|
|
@@ -32,7 +29,7 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
32
29
|
return ({
|
|
33
30
|
...value,
|
|
34
31
|
display: !R.has(`${parent}.${value.id}`, hiddenIds) && !getIsHidden(valAnnotations),
|
|
35
|
-
name:
|
|
32
|
+
name: getRefinedName(value)
|
|
36
33
|
});
|
|
37
34
|
}, values);
|
|
38
35
|
|
|
@@ -44,7 +41,7 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
44
41
|
R.flip(R.props)(annotations)
|
|
45
42
|
)(value);
|
|
46
43
|
const isHidden = R.has(`${parent}.${value.id}`, hiddenIds) || getIsHidden(valueAnnotations);
|
|
47
|
-
const name =
|
|
44
|
+
const name = getRefinedName(value);
|
|
48
45
|
let __indexPosition = NaN;
|
|
49
46
|
let start = null;
|
|
50
47
|
if (isTimeDimension) {
|
|
@@ -55,7 +52,7 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
55
52
|
__indexPosition = dateFns.getTime(new Date(R.prop('start', value)));
|
|
56
53
|
}
|
|
57
54
|
if (isNaN(__indexPosition)) {
|
|
58
|
-
__indexPosition = getCodeOrder(
|
|
55
|
+
__indexPosition = getCodeOrder({ annotations: valueAnnotations });
|
|
59
56
|
}
|
|
60
57
|
const timeFormat = R.prop('timeFormat', options);
|
|
61
58
|
return ({
|
|
@@ -90,7 +87,7 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
90
87
|
|
|
91
88
|
const resHeader = {
|
|
92
89
|
...meta,
|
|
93
|
-
sender: {...sender, name:
|
|
90
|
+
sender: {...sender, name: getRefinedName(sender)},
|
|
94
91
|
};
|
|
95
92
|
|
|
96
93
|
//----------------------------------------------------------------------------------------Attributes
|
|
@@ -105,7 +102,7 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
105
102
|
return ({
|
|
106
103
|
...observation,
|
|
107
104
|
display: !R.has(observation.id, hiddenIds) && !getIsHidden(obsAnnotations),
|
|
108
|
-
name:
|
|
105
|
+
name: getRefinedName(observation),
|
|
109
106
|
values: getValues(observation.values || [], observation.id),
|
|
110
107
|
roles: !R.isNil(observation.role) ? R.head(observation.role) : null,
|
|
111
108
|
});
|
|
@@ -117,7 +114,7 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
117
114
|
return ({
|
|
118
115
|
...attr,
|
|
119
116
|
display: !R.has(attr.id, hiddenIds) && !getIsHidden(attrAnnotations),
|
|
120
|
-
name:
|
|
117
|
+
name: getRefinedName(observation),
|
|
121
118
|
values: getValues(attr.values || [], attr.id)
|
|
122
119
|
});
|
|
123
120
|
},
|
|
@@ -173,7 +170,7 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
173
170
|
...observation,
|
|
174
171
|
display: !isHidden,
|
|
175
172
|
__index: obsIndex,
|
|
176
|
-
name:
|
|
173
|
+
name: getRefinedName(observation),
|
|
177
174
|
values: sortedValues,
|
|
178
175
|
role: R.isNil(observation.roles) ? null : R.head(observation.roles),
|
|
179
176
|
})(acc.observation),
|
|
@@ -185,7 +182,7 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
185
182
|
const { dimensionsLayout, observation } = getObservations(locale)(dimObservations);
|
|
186
183
|
const resStructure = {
|
|
187
184
|
...structure,
|
|
188
|
-
name:
|
|
185
|
+
name: getRefinedName({ ...structure, id: options.dataflowId }),
|
|
189
186
|
annotations,
|
|
190
187
|
attributes: resAttributes,
|
|
191
188
|
dimensions: { observation },
|
|
@@ -6,12 +6,13 @@ export const getMSDInformations = (msdJson) => {
|
|
|
6
6
|
const parseAttributes = (parent) => R.reduce(
|
|
7
7
|
(acc, attribute) => {
|
|
8
8
|
const id = attribute.id;
|
|
9
|
+
const hierarchicalId = parent === '#ROOT' ? id : `${parent}.${id}`;
|
|
9
10
|
const format = R.path(['localRepresentation', 'textFormat', 'textType'], attribute);
|
|
10
11
|
if (R.has('metadataAttributes', attribute)) {
|
|
11
|
-
const collection = parseAttributes(
|
|
12
|
-
return ({ ...acc, ...collection, [
|
|
12
|
+
const collection = parseAttributes(hierarchicalId)(attribute.metadataAttributes);
|
|
13
|
+
return ({ ...acc, ...collection, [hierarchicalId]: { format, parent, id } });
|
|
13
14
|
}
|
|
14
|
-
return R.assoc(
|
|
15
|
+
return R.assoc(hierarchicalId, { format, parent, id }, acc);
|
|
15
16
|
},
|
|
16
17
|
{}
|
|
17
18
|
)
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import * as R from 'ramda';
|
|
2
|
-
import {
|
|
2
|
+
import { getRefinedName } from '@sis-cc/dotstatsuite-sdmxjs';
|
|
3
3
|
|
|
4
|
-
const dimensionValueDisplay = (
|
|
4
|
+
const dimensionValueDisplay = (display) => data => {
|
|
5
5
|
if (display === 'code') {
|
|
6
6
|
return R.prop('id', data);
|
|
7
7
|
}
|
|
8
|
+
const name = getRefinedName(data);
|
|
8
9
|
if (display === 'both') {
|
|
9
|
-
return `${R.prop('id', data)}: ${
|
|
10
|
+
return `${R.prop('id', data)}: ${name}`;
|
|
10
11
|
}
|
|
11
|
-
return
|
|
12
|
+
return name;
|
|
12
13
|
};
|
|
13
14
|
// options = { locale, display, dimensions = [], attributes = { [id]: { format, parent } } };
|
|
14
15
|
export const parseMetadataSeries = (metadataJson, options) => {
|
|
@@ -48,28 +49,64 @@ export const parseMetadataSeries = (metadataJson, options) => {
|
|
|
48
49
|
return R.propOr('', '__index', originalVal);
|
|
49
50
|
}),
|
|
50
51
|
R.join(':')
|
|
51
|
-
)(serieKey)
|
|
52
|
+
)(serieKey);
|
|
52
53
|
|
|
53
|
-
const attributes = R.
|
|
54
|
-
(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
const attributes = R.pipe(
|
|
55
|
+
R.addIndex(R.reduce)(
|
|
56
|
+
(acc, valueIndex, attrIndex) => {
|
|
57
|
+
const attribute = R.nth(attrIndex, metadataAttributes);
|
|
58
|
+
if (R.isNil(valueIndex) && !(attribute.isPresentational)) {
|
|
59
|
+
return acc;
|
|
60
|
+
}
|
|
61
|
+
const attrOptions = R.pathOr({}, ['attributes', attribute.id], options);
|
|
62
|
+
const id = attrOptions.id;
|
|
63
|
+
const label = dimensionValueDisplay(options.display)({ ...attribute, id });
|
|
64
|
+
|
|
65
|
+
const _value = R.prop('value', R.nth(valueIndex, attribute.values || []));
|
|
66
|
+
const value = R.is(Object, _value) ? R.prop(options.locale, _value) : _value;
|
|
60
67
|
|
|
61
|
-
|
|
68
|
+
return R.append({
|
|
69
|
+
...(R.isNil(value) ? {} : { value }),
|
|
70
|
+
id: attribute.id,
|
|
71
|
+
label,
|
|
72
|
+
handlerProps: R.omit(['id'], R.pathOr({}, ['attributes', attribute.id], options))
|
|
73
|
+
}, acc);
|
|
74
|
+
},
|
|
75
|
+
[],
|
|
76
|
+
),
|
|
77
|
+
attributes => { // missing parents in metadata response
|
|
78
|
+
const groupedAttrs = R.groupBy(R.pathOr('#ROOT', ['handlerProps', 'parent']), attributes);
|
|
79
|
+
const indexedAttrs = R.indexBy(R.prop('id'), attributes);
|
|
80
|
+
|
|
81
|
+
return R.reduce(
|
|
82
|
+
(acc, id) => {
|
|
83
|
+
if (R.has(id, indexedAttrs) || id === '#ROOT') {
|
|
84
|
+
return acc;
|
|
85
|
+
}
|
|
86
|
+
return R.append({
|
|
87
|
+
id,
|
|
88
|
+
label: dimensionValueDisplay(options.display)({ id }),
|
|
89
|
+
handlerProps: R.omit(['id'], R.pathOr({}, ['attributes', id], options))
|
|
90
|
+
}, acc);
|
|
91
|
+
},
|
|
92
|
+
attributes,
|
|
93
|
+
R.keys(groupedAttrs)
|
|
94
|
+
);
|
|
95
|
+
},
|
|
96
|
+
attributes => {
|
|
97
|
+
const groupedAttrs = R.groupBy(R.pathOr('#ROOT', ['handlerProps', 'parent']), attributes);
|
|
98
|
+
const makeTree = R.map(attr => {
|
|
99
|
+
if (R.has(attr.id, groupedAttrs)) {
|
|
100
|
+
const children = makeTree(R.prop(attr.id, groupedAttrs));
|
|
101
|
+
return R.assoc('children', children, attr);
|
|
102
|
+
}
|
|
103
|
+
return attr;
|
|
104
|
+
});
|
|
62
105
|
|
|
63
|
-
return R.
|
|
64
|
-
id: attribute.id,
|
|
65
|
-
label,
|
|
66
|
-
value: R.is(Object, value) ? R.prop(options.locale, value) : value,
|
|
67
|
-
handlerProps: R.pathOr({}, ['attributes', attribute.id], options)
|
|
68
|
-
}, acc);
|
|
106
|
+
return makeTree(R.propOr([], '#ROOT', groupedAttrs));
|
|
69
107
|
},
|
|
70
|
-
[]
|
|
71
|
-
|
|
72
|
-
);
|
|
108
|
+
R.reject(attr => R.isNil(attr.value) && R.isEmpty(attr.children || []))
|
|
109
|
+
)(metaIndexes);
|
|
73
110
|
|
|
74
111
|
return R.assoc(evolvedKey, attributes, acc);
|
|
75
112
|
},
|
|
@@ -6,27 +6,27 @@ describe('getMSDInformations tests', () => {
|
|
|
6
6
|
it('complete test', () => {
|
|
7
7
|
const expected = {
|
|
8
8
|
attributes: {
|
|
9
|
-
STRING_TYPE: { format: 'String', parent: '#ROOT' },
|
|
10
|
-
STRING_MULTILANG_TYPE: { format: 'String', parent: '#ROOT' },
|
|
11
|
-
ALPHANUMERIC_TYPE: { format: 'AlphaNumeric', parent: '#ROOT' },
|
|
12
|
-
ALPHANUMERIC_MULTILANG_TYPE: { format: 'AlphaNumeric', parent: '#ROOT' },
|
|
13
|
-
BOOLEAN_TYPE: { format: 'Boolean', parent: '#ROOT' },
|
|
14
|
-
XHTML_TYPE: { format: 'XHTML', parent: '#ROOT' },
|
|
15
|
-
XHTML_MULTILANG_TYPE: { format: 'XHTML', parent: '#ROOT' },
|
|
16
|
-
INTEGER_TYPE: { format: 'Integer', parent: '#ROOT' },
|
|
17
|
-
INTEGER_MULTILANG_TYPE: { format: 'Integer', parent: '#ROOT' },
|
|
18
|
-
DECIMAL_TYPE: { format: 'Decimal', parent: '#ROOT' },
|
|
19
|
-
DECIMAL_MULTILANG_TYPE: { format: 'Decimal', parent: '#ROOT' },
|
|
20
|
-
DATETIME_TYPE: { format: 'DateTime', parent: '#ROOT' },
|
|
21
|
-
TIME_TYPE: { format: 'Time', parent: '#ROOT' },
|
|
22
|
-
GREGORIANDAY_TYPE: { format: 'GregorianDay', parent: '#ROOT' },
|
|
23
|
-
GREGORIAN_YEAR_TYPE: { format: 'GregorianYear', parent: '#ROOT' },
|
|
24
|
-
GREGORIAN_YEARMONTH_TYPE: { format: 'GregorianYearMonth', parent: '#ROOT' },
|
|
25
|
-
CONTACT: { format: 'String', parent: '#ROOT' },
|
|
26
|
-
CONTACT_NAME: { format: 'String', parent: 'CONTACT' },
|
|
27
|
-
CONTACT_EMAIL: { format: 'String', parent: 'CONTACT' },
|
|
28
|
-
CONTACT_PHONE: { format: 'Numeric', parent: 'CONTACT' },
|
|
29
|
-
CONTACT_ORGANISATION: { format: 'String', parent: 'CONTACT' }
|
|
9
|
+
STRING_TYPE: { format: 'String', parent: '#ROOT', id: 'STRING_TYPE' },
|
|
10
|
+
STRING_MULTILANG_TYPE: { format: 'String', parent: '#ROOT', id: 'STRING_MULTILANG_TYPE' },
|
|
11
|
+
ALPHANUMERIC_TYPE: { format: 'AlphaNumeric', parent: '#ROOT', id: 'ALPHANUMERIC_TYPE' },
|
|
12
|
+
ALPHANUMERIC_MULTILANG_TYPE: { format: 'AlphaNumeric', parent: '#ROOT', id: 'ALPHANUMERIC_MULTILANG_TYPE' },
|
|
13
|
+
BOOLEAN_TYPE: { format: 'Boolean', parent: '#ROOT', id: 'BOOLEAN_TYPE' },
|
|
14
|
+
XHTML_TYPE: { format: 'XHTML', parent: '#ROOT', id: 'XHTML_TYPE' },
|
|
15
|
+
XHTML_MULTILANG_TYPE: { format: 'XHTML', parent: '#ROOT', id: 'XHTML_MULTILANG_TYPE' },
|
|
16
|
+
INTEGER_TYPE: { format: 'Integer', parent: '#ROOT', id: 'INTEGER_TYPE' },
|
|
17
|
+
INTEGER_MULTILANG_TYPE: { format: 'Integer', parent: '#ROOT', id: 'INTEGER_MULTILANG_TYPE' },
|
|
18
|
+
DECIMAL_TYPE: { format: 'Decimal', parent: '#ROOT', id: 'DECIMAL_TYPE' },
|
|
19
|
+
DECIMAL_MULTILANG_TYPE: { format: 'Decimal', parent: '#ROOT', id: 'DECIMAL_MULTILANG_TYPE' },
|
|
20
|
+
DATETIME_TYPE: { format: 'DateTime', parent: '#ROOT', id: 'DATETIME_TYPE' },
|
|
21
|
+
TIME_TYPE: { format: 'Time', parent: '#ROOT', id: 'TIME_TYPE' },
|
|
22
|
+
GREGORIANDAY_TYPE: { format: 'GregorianDay', parent: '#ROOT', id: 'GREGORIANDAY_TYPE' },
|
|
23
|
+
GREGORIAN_YEAR_TYPE: { format: 'GregorianYear', parent: '#ROOT', id: 'GREGORIAN_YEAR_TYPE' },
|
|
24
|
+
GREGORIAN_YEARMONTH_TYPE: { format: 'GregorianYearMonth', parent: '#ROOT', id: 'GREGORIAN_YEARMONTH_TYPE' },
|
|
25
|
+
CONTACT: { format: 'String', parent: '#ROOT', id: 'CONTACT' },
|
|
26
|
+
'CONTACT.CONTACT_NAME': { format: 'String', parent: 'CONTACT', id: 'CONTACT_NAME' },
|
|
27
|
+
'CONTACT.CONTACT_EMAIL': { format: 'String', parent: 'CONTACT', id: 'CONTACT_EMAIL' },
|
|
28
|
+
'CONTACT.CONTACT_PHONE': { format: 'Numeric', parent: 'CONTACT', id: 'CONTACT_PHONE' },
|
|
29
|
+
'CONTACT.CONTACT_ORGANISATION': { format: 'String', parent: 'CONTACT', id: 'CONTACT_ORGANISATION' }
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { getReportingYearStart } from '../src/rules/src/preparators/getReportingYearStart';
|
|
3
|
+
|
|
4
|
+
describe('getReportingYearStart tests', () => {
|
|
5
|
+
it('no data', () => {
|
|
6
|
+
expect(getReportingYearStart()).to.deep.equal({ month: '01', day: '01' });
|
|
7
|
+
});
|
|
8
|
+
it('REPORTING_YEAR_START_DAY', () => {
|
|
9
|
+
const dataReportingYearStartDay = {
|
|
10
|
+
data: {
|
|
11
|
+
structure: {
|
|
12
|
+
attributes: {
|
|
13
|
+
observation: [
|
|
14
|
+
{
|
|
15
|
+
"id": "REPORTING_YEAR_START_DAY",
|
|
16
|
+
"values": [{"name": "--07-01", "names": { "en": "--07-01" }}]
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
expect(getReportingYearStart(dataReportingYearStartDay)).to.deep.equal({ month: '07', day: '01' });
|
|
25
|
+
});
|
|
26
|
+
it('REPYEARSTART', () => {
|
|
27
|
+
const dataReportingYearStart = {
|
|
28
|
+
data: {
|
|
29
|
+
structure: {
|
|
30
|
+
attributes: {
|
|
31
|
+
observation: [
|
|
32
|
+
{
|
|
33
|
+
"id": "REPYEARSTART",
|
|
34
|
+
"values": [{"name": "--08-09", "names": { "en": "--08-09" }}]
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
expect(getReportingYearStart(dataReportingYearStart)).to.deep.equal({ month: '08', day: '09' });
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -41,7 +41,29 @@ describe('metadata parsing performance tests', () => {
|
|
|
41
41
|
id: 'TIME_PERIOD',
|
|
42
42
|
}
|
|
43
43
|
]
|
|
44
|
-
|
|
44
|
+
const attributes = {
|
|
45
|
+
METADATA_ATTR_0: { id: 'METADATA_ATTR_0' },
|
|
46
|
+
METADATA_ATTR_1: { id: 'METADATA_ATTR_1' },
|
|
47
|
+
METADATA_ATTR_2: { id: 'METADATA_ATTR_2' },
|
|
48
|
+
METADATA_ATTR_3: { id: 'METADATA_ATTR_3' },
|
|
49
|
+
METADATA_ATTR_4: { id: 'METADATA_ATTR_4' },
|
|
50
|
+
METADATA_ATTR_5: { id: 'METADATA_ATTR_5' },
|
|
51
|
+
METADATA_ATTR_6: { id: 'METADATA_ATTR_6' },
|
|
52
|
+
METADATA_ATTR_7: { id: 'METADATA_ATTR_7' },
|
|
53
|
+
METADATA_ATTR_8: { id: 'METADATA_ATTR_8' },
|
|
54
|
+
METADATA_ATTR_9: { id: 'METADATA_ATTR_9' },
|
|
55
|
+
METADATA_ATTR_10: { id: 'METADATA_ATTR_10' },
|
|
56
|
+
METADATA_ATTR_11: { id: 'METADATA_ATTR_11' },
|
|
57
|
+
METADATA_ATTR_12: { id: 'METADATA_ATTR_12' },
|
|
58
|
+
METADATA_ATTR_13: { id: 'METADATA_ATTR_13' },
|
|
59
|
+
METADATA_ATTR_14: { id: 'METADATA_ATTR_14' },
|
|
60
|
+
METADATA_ATTR_15: { id: 'METADATA_ATTR_15' },
|
|
61
|
+
METADATA_ATTR_16: { id: 'METADATA_ATTR_16' },
|
|
62
|
+
METADATA_ATTR_17: { id: 'METADATA_ATTR_17' },
|
|
63
|
+
METADATA_ATTR_18: { id: 'METADATA_ATTR_18' },
|
|
64
|
+
METADATA_ATTR_19: { id: 'METADATA_ATTR_19' }
|
|
65
|
+
}
|
|
66
|
+
expect(parseMetadataSeries(metadataMock, { locale: 'en', display: 'both', dimensions, attributes })).to.deep.equal({
|
|
45
67
|
":::": [
|
|
46
68
|
{ id: 'METADATA_ATTR_0', label: 'METADATA_ATTR_0: Metadata Attribute 0', value: 'v0', handlerProps: {} },
|
|
47
69
|
{ id: 'METADATA_ATTR_1', label: 'METADATA_ATTR_1: Metadata Attribute 1', value: 'v0', handlerProps: {} },
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
"dimensionGroup": [
|
|
158
158
|
{
|
|
159
159
|
"id": "METADATA_ATTR_0",
|
|
160
|
-
"
|
|
160
|
+
"name": "Metadata Attribute 0",
|
|
161
161
|
"values": [
|
|
162
162
|
{ "value": "v0" },
|
|
163
163
|
{ "value": "v1" },
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
},
|
|
184
184
|
{
|
|
185
185
|
"id": "METADATA_ATTR_1",
|
|
186
|
-
"
|
|
186
|
+
"name": "Metadata Attribute 1",
|
|
187
187
|
"values": [
|
|
188
188
|
{ "value": "v0" },
|
|
189
189
|
{ "value": "v1" },
|
|
@@ -209,7 +209,7 @@
|
|
|
209
209
|
},
|
|
210
210
|
{
|
|
211
211
|
"id": "METADATA_ATTR_2",
|
|
212
|
-
"
|
|
212
|
+
"name": "Metadata Attribute 2",
|
|
213
213
|
"values": [
|
|
214
214
|
{ "value": "v0" },
|
|
215
215
|
{ "value": "v1" },
|
|
@@ -235,7 +235,7 @@
|
|
|
235
235
|
},
|
|
236
236
|
{
|
|
237
237
|
"id": "METADATA_ATTR_3",
|
|
238
|
-
"
|
|
238
|
+
"name": "Metadata Attribute 3",
|
|
239
239
|
"values": [
|
|
240
240
|
{ "value": "v0" },
|
|
241
241
|
{ "value": "v1" },
|
|
@@ -261,7 +261,7 @@
|
|
|
261
261
|
},
|
|
262
262
|
{
|
|
263
263
|
"id": "METADATA_ATTR_4",
|
|
264
|
-
"
|
|
264
|
+
"name": "Metadata Attribute 4",
|
|
265
265
|
"values": [
|
|
266
266
|
{ "value": "v0" },
|
|
267
267
|
{ "value": "v1" },
|
|
@@ -287,7 +287,7 @@
|
|
|
287
287
|
},
|
|
288
288
|
{
|
|
289
289
|
"id": "METADATA_ATTR_5",
|
|
290
|
-
"
|
|
290
|
+
"name": "Metadata Attribute 5",
|
|
291
291
|
"values": [
|
|
292
292
|
{ "value": "v0" },
|
|
293
293
|
{ "value": "v1" },
|
|
@@ -313,7 +313,7 @@
|
|
|
313
313
|
},
|
|
314
314
|
{
|
|
315
315
|
"id": "METADATA_ATTR_6",
|
|
316
|
-
"
|
|
316
|
+
"name": "Metadata Attribute 6",
|
|
317
317
|
"values": [
|
|
318
318
|
{ "value": "v0" },
|
|
319
319
|
{ "value": "v1" },
|
|
@@ -339,7 +339,7 @@
|
|
|
339
339
|
},
|
|
340
340
|
{
|
|
341
341
|
"id": "METADATA_ATTR_7",
|
|
342
|
-
"
|
|
342
|
+
"name": "Metadata Attribute 7",
|
|
343
343
|
"values": [
|
|
344
344
|
{ "value": "v0" },
|
|
345
345
|
{ "value": "v1" },
|
|
@@ -365,7 +365,7 @@
|
|
|
365
365
|
},
|
|
366
366
|
{
|
|
367
367
|
"id": "METADATA_ATTR_8",
|
|
368
|
-
"
|
|
368
|
+
"name": "Metadata Attribute 8",
|
|
369
369
|
"values": [
|
|
370
370
|
{ "value": "v0" },
|
|
371
371
|
{ "value": "v1" },
|
|
@@ -391,7 +391,7 @@
|
|
|
391
391
|
},
|
|
392
392
|
{
|
|
393
393
|
"id": "METADATA_ATTR_9",
|
|
394
|
-
"
|
|
394
|
+
"name": "Metadata Attribute 9",
|
|
395
395
|
"values": [
|
|
396
396
|
{ "value": "v0" },
|
|
397
397
|
{ "value": "v1" },
|
|
@@ -417,7 +417,7 @@
|
|
|
417
417
|
},
|
|
418
418
|
{
|
|
419
419
|
"id": "METADATA_ATTR_10",
|
|
420
|
-
"
|
|
420
|
+
"name": "Metadata Attribute 10",
|
|
421
421
|
"values": [
|
|
422
422
|
{ "value": "v0" },
|
|
423
423
|
{ "value": "v1" },
|
|
@@ -443,7 +443,7 @@
|
|
|
443
443
|
},
|
|
444
444
|
{
|
|
445
445
|
"id": "METADATA_ATTR_11",
|
|
446
|
-
"
|
|
446
|
+
"name": "Metadata Attribute 11",
|
|
447
447
|
"values": [
|
|
448
448
|
{ "value": "v0" },
|
|
449
449
|
{ "value": "v1" },
|
|
@@ -469,7 +469,7 @@
|
|
|
469
469
|
},
|
|
470
470
|
{
|
|
471
471
|
"id": "METADATA_ATTR_12",
|
|
472
|
-
"
|
|
472
|
+
"name": "Metadata Attribute 12",
|
|
473
473
|
"values": [
|
|
474
474
|
{ "value": "v0" },
|
|
475
475
|
{ "value": "v1" },
|
|
@@ -495,7 +495,7 @@
|
|
|
495
495
|
},
|
|
496
496
|
{
|
|
497
497
|
"id": "METADATA_ATTR_13",
|
|
498
|
-
"
|
|
498
|
+
"name": "Metadata Attribute 13",
|
|
499
499
|
"values": [
|
|
500
500
|
{ "value": "v0" },
|
|
501
501
|
{ "value": "v1" },
|
|
@@ -521,7 +521,7 @@
|
|
|
521
521
|
},
|
|
522
522
|
{
|
|
523
523
|
"id": "METADATA_ATTR_14",
|
|
524
|
-
"
|
|
524
|
+
"name": "Metadata Attribute 14",
|
|
525
525
|
"values": [
|
|
526
526
|
{ "value": "v0" },
|
|
527
527
|
{ "value": "v1" },
|
|
@@ -547,7 +547,7 @@
|
|
|
547
547
|
},
|
|
548
548
|
{
|
|
549
549
|
"id": "METADATA_ATTR_15",
|
|
550
|
-
"
|
|
550
|
+
"name": "Metadata Attribute 15",
|
|
551
551
|
"values": [
|
|
552
552
|
{ "value": "v0" },
|
|
553
553
|
{ "value": "v1" },
|
|
@@ -573,7 +573,7 @@
|
|
|
573
573
|
},
|
|
574
574
|
{
|
|
575
575
|
"id": "METADATA_ATTR_16",
|
|
576
|
-
"
|
|
576
|
+
"name": "Metadata Attribute 16",
|
|
577
577
|
"values": [
|
|
578
578
|
{ "value": "v0" },
|
|
579
579
|
{ "value": "v1" },
|
|
@@ -599,7 +599,7 @@
|
|
|
599
599
|
},
|
|
600
600
|
{
|
|
601
601
|
"id": "METADATA_ATTR_17",
|
|
602
|
-
"
|
|
602
|
+
"name": "Metadata Attribute 17",
|
|
603
603
|
"values": [
|
|
604
604
|
{ "value": "v0" },
|
|
605
605
|
{ "value": "v1" },
|
|
@@ -625,7 +625,7 @@
|
|
|
625
625
|
},
|
|
626
626
|
{
|
|
627
627
|
"id": "METADATA_ATTR_18",
|
|
628
|
-
"
|
|
628
|
+
"name": "Metadata Attribute 18",
|
|
629
629
|
"values": [
|
|
630
630
|
{ "value": "v0" },
|
|
631
631
|
{ "value": "v1" },
|
|
@@ -651,7 +651,7 @@
|
|
|
651
651
|
},
|
|
652
652
|
{
|
|
653
653
|
"id": "METADATA_ATTR_19",
|
|
654
|
-
"
|
|
654
|
+
"name": "Metadata Attribute 19",
|
|
655
655
|
"values": [
|
|
656
656
|
{ "value": "v0" },
|
|
657
657
|
{ "value": "v1" },
|
|
@@ -25,6 +25,8 @@ const attributes = [
|
|
|
25
25
|
{ id: 'a20', relationship: { primaryMeasure: 'OBS_VALUE' }, values: [{ id: 'a20v1' }] }, // units attribute
|
|
26
26
|
{ id: 'a21', relationship: { dataflow: {} }, values: [{ id: 'a21v0' }] }, // alternative dataflow relationship
|
|
27
27
|
{ id: 'a22', relationship: { observation: {} }, values: [{ id: 'a22v0' }] }, // alternative observation relationship
|
|
28
|
+
{ id: 'REPORTING_YEAR_START_DAY', relationship: { observation: {} }, values: [{ id: 'a22v0' }]},
|
|
29
|
+
{ id: 'REPYEARSTART', relationship: { observation: {} }, values: [{ id: 'a22v0' }]},
|
|
28
30
|
];
|
|
29
31
|
|
|
30
32
|
const customAttributes = {
|
|
@@ -14,11 +14,18 @@ const dimensions = [
|
|
|
14
14
|
id: "MEASURE", values: [{ id: "V", __index: 0 }]
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
|
-
|
|
17
|
+
id: "TIME_PERIOD"
|
|
18
18
|
}
|
|
19
19
|
];
|
|
20
20
|
|
|
21
|
-
const attributes = {
|
|
21
|
+
const attributes = {
|
|
22
|
+
DIRECT_SOURCE: { id: 'DIRECT_SOURCE', prop: 'test', parent: '#ROOT' },
|
|
23
|
+
KEY_STATISTICAL_CONCEPT: { id: 'KEY_STATISTICAL_CONCEPT', parent: '#ROOT' },
|
|
24
|
+
UNIT_OF_MEASURE_USED: { id: 'UNIT_OF_MEASURE_USED', parent: '#ROOT' },
|
|
25
|
+
POWER_CODE: { id: 'POWER_CODE', parent: '#ROOT' },
|
|
26
|
+
POREFERENCE_PERIODWER_CODE: { id: 'POREFERENCE_PERIODWER_CODE', parent: '#ROOT' },
|
|
27
|
+
RANDOM: { prop: 'invalid' }
|
|
28
|
+
}
|
|
22
29
|
|
|
23
30
|
describe('parseMetadataSeries test', () => {
|
|
24
31
|
it('complete case', () => {
|
|
@@ -28,13 +35,13 @@ describe('parseMetadataSeries test', () => {
|
|
|
28
35
|
id: 'DIRECT_SOURCE',
|
|
29
36
|
label: 'DIRECT_SOURCE: Direct source',
|
|
30
37
|
value: "Reply to the National Accounts Questionnaire from the Australian Bureau of Statistics, Canberra. The official estimates are published in 'Australian system of national accounts', ABS, catalogue 5204.0.",
|
|
31
|
-
handlerProps: { prop: 'test' }
|
|
38
|
+
handlerProps: { prop: 'test', parent: '#ROOT' }
|
|
32
39
|
},
|
|
33
40
|
{
|
|
34
41
|
id: 'KEY_STATISTICAL_CONCEPT',
|
|
35
42
|
label: 'KEY_STATISTICAL_CONCEPT: Key statistical concept',
|
|
36
43
|
value: "As from December 2009, national accounts estimates are compiled according to the 2008 SNA ('System of National Accounts 2008', Commission of the European Communities-Eurostat, International Monetary Fund, Organisation for Economic Co-operation and Development, United Nations and World Bank, 2009).<br><br>Detailed information about the implementation of the 2008 SNA in Australian national accounts could be found in ABS website: <br><br><a href=\"http://www.abs.gov.au/ausstats/abs@.nsf/mf/5310.0.55.002\">ABS website</a><br><br>All the data refer to fiscal years beginning on the 1st July of the year indicated.<br><br>The financial intermediation services indirectly measured (FISIM) are allocated to industries and institutional sectors. <br><br>Original chain constant price estimates for main aggregates are referenced to fiscal year 2019-2020.",
|
|
37
|
-
handlerProps: {}
|
|
44
|
+
handlerProps: { parent: '#ROOT' }
|
|
38
45
|
}
|
|
39
46
|
],
|
|
40
47
|
'0::0:': [
|
|
@@ -42,19 +49,78 @@ describe('parseMetadataSeries test', () => {
|
|
|
42
49
|
id: 'UNIT_OF_MEASURE_USED',
|
|
43
50
|
label: 'UNIT_OF_MEASURE_USED: Unit of measure used',
|
|
44
51
|
value: 'Australian Dollar',
|
|
45
|
-
handlerProps: {}
|
|
52
|
+
handlerProps: { parent: '#ROOT' }
|
|
46
53
|
},
|
|
47
54
|
{
|
|
48
55
|
id: 'POWER_CODE',
|
|
49
56
|
label: 'POWER_CODE: Power code',
|
|
50
57
|
value: 6,
|
|
51
|
-
handlerProps: {}
|
|
58
|
+
handlerProps: { parent: '#ROOT' }
|
|
52
59
|
},
|
|
53
60
|
{
|
|
54
61
|
id: 'POREFERENCE_PERIODWER_CODE',
|
|
55
62
|
label: 'POREFERENCE_PERIODWER_CODE: Reference period',
|
|
56
63
|
value: '2019',
|
|
57
|
-
handlerProps: {}
|
|
64
|
+
handlerProps: { parent: '#ROOT' }
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
it('hierarchy test', () => {
|
|
70
|
+
const attributes = {
|
|
71
|
+
ROOT1: { id: 'ROOT1', parent: '#ROOT' },
|
|
72
|
+
ROOT2: { id: 'ROOT2', parent: '#ROOT' },
|
|
73
|
+
PARENT1: { id: 'PARENT1', parent: '#ROOT' },
|
|
74
|
+
'PARENT1.CHILD1': { id: 'CHILD1', parent: 'PARENT1' },
|
|
75
|
+
'PARENT1.CHILD2': { id: 'CHILD2', parent: 'PARENT1' },
|
|
76
|
+
PARENT2: { id: 'PARENT1', parent: '#ROOT' },
|
|
77
|
+
'PARENT2.CHILD3': { id: 'CHILD3', parent: 'PARENT2' },
|
|
78
|
+
'PARENT2.CHILD4': { id: 'CHILD4', parent: 'PARENT2' },
|
|
79
|
+
};
|
|
80
|
+
const metadata = {
|
|
81
|
+
data: {
|
|
82
|
+
dataSets: [{
|
|
83
|
+
dimensionGroupAttributes: {
|
|
84
|
+
'::': [0, 0, null, 0, 0, 0, 0]
|
|
85
|
+
}
|
|
86
|
+
}],
|
|
87
|
+
structures: [{
|
|
88
|
+
attributes: {
|
|
89
|
+
dimensionGroup: [
|
|
90
|
+
{ id: 'ROOT1', name: 'Root 1', values: [{ value: 'v' }] },
|
|
91
|
+
{ id: 'ROOT2', name: 'Root 2', values: [{ value: 'v' }] },
|
|
92
|
+
{ id: 'PARENT1', name: 'Parent 1', isPresentational: true, values: [] },
|
|
93
|
+
{ id: 'PARENT1.CHILD1', name: 'Child 1', values: [{ value: 'v' }] },
|
|
94
|
+
{ id: 'PARENT1.CHILD2', name: 'Child 2', values: [{ value: 'v' }] },
|
|
95
|
+
{ id: 'PARENT2.CHILD3', name: 'Child 3', values: [{ value: 'v' }] },
|
|
96
|
+
{ id: 'PARENT2.CHILD4', name: 'Child 4', values: [{ value: 'v' }] },
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
}]
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
expect(parseMetadataSeries(metadata, { display: 'name', locale: 'en', dimensions: [], attributes })).to.deep.equal({
|
|
104
|
+
'::': [
|
|
105
|
+
{ id: 'ROOT1', label: 'Root 1', value: 'v', handlerProps: { parent: '#ROOT' } },
|
|
106
|
+
{ id: 'ROOT2', label: 'Root 2', value: 'v', handlerProps: { parent: '#ROOT' } },
|
|
107
|
+
{
|
|
108
|
+
id: 'PARENT1',
|
|
109
|
+
label: 'Parent 1',
|
|
110
|
+
handlerProps: { parent: '#ROOT' },
|
|
111
|
+
children: [
|
|
112
|
+
{ id: 'PARENT1.CHILD1', label: 'Child 1', value: 'v', handlerProps: { parent: 'PARENT1' } },
|
|
113
|
+
{ id: 'PARENT1.CHILD2', label: 'Child 2', value: 'v', handlerProps: { parent: 'PARENT1' } },
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: 'PARENT2',
|
|
118
|
+
label: '[PARENT2]',
|
|
119
|
+
handlerProps: { parent: '#ROOT' },
|
|
120
|
+
children: [
|
|
121
|
+
{ id: 'PARENT2.CHILD3', label: 'Child 3', value: 'v', handlerProps: { parent: 'PARENT2' } },
|
|
122
|
+
{ id: 'PARENT2.CHILD4', label: 'Child 4', value: 'v', handlerProps: { parent: 'PARENT2' } },
|
|
123
|
+
]
|
|
58
124
|
}
|
|
59
125
|
]
|
|
60
126
|
});
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getDimensions = exports.isDisplayedFromOwnAnnotations = 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 _dotstatsuiteSdmxjs = require('@sis-cc/dotstatsuite-sdmxjs');
|
|
17
|
-
|
|
18
|
-
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; } }
|
|
19
|
-
|
|
20
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
-
|
|
22
|
-
var isDisplayedFromOwnAnnotations = exports.isDisplayedFromOwnAnnotations = function isDisplayedFromOwnAnnotations(artefact) {
|
|
23
|
-
var artefactAnnotations = R.propOr([], 'annotations', artefact);
|
|
24
|
-
return R.pipe(R.propOr([], 'annotations'), R.find(R.propEq('type', 'NOT_DISPLAYED')), R.isNil)(artefact);
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
// sdmxJson
|
|
28
|
-
|
|
29
|
-
var getDimensions = exports.getDimensions = function getDimensions(sdmxJson) {
|
|
30
|
-
var annotations = R.pathOr([], ['data', 'structure', 'annotations'], sdmxJson);
|
|
31
|
-
var locale = R.path([], ['meta', 'contentLanguage'], sdmxJson);
|
|
32
|
-
|
|
33
|
-
var enhanceValues = R.addIndex(R.map)(function (val, __index) {
|
|
34
|
-
var annotationsIndexes = R.propOr([], 'annotations', val);
|
|
35
|
-
var valueAnnotations = R.props(annotationsIndexes, annotations);
|
|
36
|
-
|
|
37
|
-
return (0, _extends3.default)({}, value, {
|
|
38
|
-
__index: __index,
|
|
39
|
-
annotations: valueAnnotations,
|
|
40
|
-
name: R.pathOr('[' + val.id + ']', ['names', locale], val)
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
return R.pipe(R.pathOr([], ['data', 'structure', 'dimensions']), R.addIndex(R.map)(function (dimension, __index) {
|
|
45
|
-
var annotationsIndexes = R.propOr([], 'annotations', dimension);
|
|
46
|
-
var dimensionAnnotations = R.props(annotationsIndexes, annotations);
|
|
47
|
-
|
|
48
|
-
return (0, _extends3.default)({}, dimension, {
|
|
49
|
-
__index: __index,
|
|
50
|
-
name: R.pathOr('[' + val.id + ']', ['names', locale], val),
|
|
51
|
-
annotations: dimensionAnnotations,
|
|
52
|
-
values: enhanceValues(R.propOr([], 'values', dimension))
|
|
53
|
-
});
|
|
54
|
-
}))(sdmxJson);
|
|
55
|
-
};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import * as R from 'ramda';
|
|
2
|
-
import {
|
|
3
|
-
getCodeOrder,
|
|
4
|
-
isTimePeriodDimension
|
|
5
|
-
} from '@sis-cc/dotstatsuite-sdmxjs';
|
|
6
|
-
|
|
7
|
-
export const isDisplayedFromOwnAnnotations = artefact => {
|
|
8
|
-
const artefactAnnotations = R.propOr([], 'annotations', artefact);
|
|
9
|
-
return R.pipe(
|
|
10
|
-
R.propOr([], 'annotations'),
|
|
11
|
-
R.find(R.propEq('type', 'NOT_DISPLAYED')),
|
|
12
|
-
R.isNil
|
|
13
|
-
)(artefact);
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
// sdmxJson
|
|
17
|
-
|
|
18
|
-
export const getDimensions = sdmxJson => {
|
|
19
|
-
const annotations = R.pathOr([], ['data', 'structure', 'annotations'], sdmxJson);
|
|
20
|
-
const locale = R.path([], ['meta', 'contentLanguage'], sdmxJson);
|
|
21
|
-
|
|
22
|
-
const enhanceValues = R.addIndex(R.map)((val, __index) => {
|
|
23
|
-
const annotationsIndexes = R.propOr([], 'annotations', val);
|
|
24
|
-
const valueAnnotations = R.props(annotationsIndexes, annotations);
|
|
25
|
-
|
|
26
|
-
return ({
|
|
27
|
-
...value,
|
|
28
|
-
__index,
|
|
29
|
-
annotations: valueAnnotations,
|
|
30
|
-
name: R.pathOr(`[${val.id}]`, ['names', locale], val),
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
return R.pipe(
|
|
35
|
-
R.pathOr([], ['data', 'structure', 'dimensions']),
|
|
36
|
-
R.addIndex(R.map)((dimension, __index) => {
|
|
37
|
-
const annotationsIndexes = R.propOr([], 'annotations', dimension);
|
|
38
|
-
const dimensionAnnotations = R.props(annotationsIndexes, annotations);
|
|
39
|
-
|
|
40
|
-
return ({
|
|
41
|
-
...dimension,
|
|
42
|
-
__index,
|
|
43
|
-
name: R.pathOr(`[${val.id}]`, ['names', locale], val),
|
|
44
|
-
annotations: dimensionAnnotations,
|
|
45
|
-
values: enhanceValues(R.propOr([], 'values', dimension))
|
|
46
|
-
});
|
|
47
|
-
})
|
|
48
|
-
)(sdmxJson);
|
|
49
|
-
};
|