@sis-cc/dotstatsuite-components 13.5.1 → 13.5.2
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/rules2/src/getMSDInformations.js +4 -2
- package/lib/rules2/src/parseMetadataSeries.js +1 -1
- package/package.json +1 -1
- package/src/rules2/src/getMSDInformations.js +5 -3
- package/src/rules2/src/parseMetadataSeries.js +1 -1
- package/test/getMSDInformations.test.js +21 -21
- package/test/mocks/MSD_TEST.json +6 -0
- package/test/parseMetadataSeries.test.js +28 -28
|
@@ -23,17 +23,19 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
23
23
|
|
|
24
24
|
var getMSDInformations = exports.getMSDInformations = function getMSDInformations(msdJson) {
|
|
25
25
|
var attributesDefinitions = R.pathOr([], ['data', 'metadataStructures', 0, 'metadataStructureComponents', 'reportStructures', 0, 'metadataAttributes'], msdJson);
|
|
26
|
+
var indexedConcepts = R.pipe(R.pathOr([], ['data', 'conceptSchemes', 0, 'concepts']), R.indexBy(R.prop('id')))(msdJson);
|
|
26
27
|
|
|
27
28
|
var parseAttributes = function parseAttributes(parent) {
|
|
28
29
|
return R.reduce(function (acc, attribute) {
|
|
29
30
|
var id = attribute.id;
|
|
31
|
+
var name = R.path([id, 'name'], indexedConcepts);
|
|
30
32
|
var hierarchicalId = parent === '#ROOT' ? id : parent + '.' + id;
|
|
31
33
|
var format = R.path(['localRepresentation', 'textFormat', 'textType'], attribute);
|
|
32
34
|
if (R.has('metadataAttributes', attribute)) {
|
|
33
35
|
var collection = parseAttributes(hierarchicalId)(attribute.metadataAttributes);
|
|
34
|
-
return (0, _extends4.default)({}, acc, collection, (0, _defineProperty3.default)({}, hierarchicalId, { format: format, parent: parent, id: id }));
|
|
36
|
+
return (0, _extends4.default)({}, acc, collection, (0, _defineProperty3.default)({}, hierarchicalId, { format: format, parent: parent, id: id, name: name }));
|
|
35
37
|
}
|
|
36
|
-
return R.assoc(hierarchicalId, { format: format, parent: parent, id: id }, acc);
|
|
38
|
+
return R.assoc(hierarchicalId, { format: format, parent: parent, id: id, name: name }, acc);
|
|
37
39
|
}, {});
|
|
38
40
|
};
|
|
39
41
|
|
|
@@ -94,7 +94,7 @@ var parseMetadataSeries = exports.parseMetadataSeries = function parseMetadataSe
|
|
|
94
94
|
}
|
|
95
95
|
return R.append({
|
|
96
96
|
id: id,
|
|
97
|
-
label: dimensionValueDisplay(options.display)({ id: id }),
|
|
97
|
+
label: dimensionValueDisplay(options.display)({ id: id, name: R.path(['attributes', id, 'name'], options) }),
|
|
98
98
|
handlerProps: R.omit(['id'], R.pathOr({}, ['attributes', id], options))
|
|
99
99
|
}, acc);
|
|
100
100
|
}, attributes, R.keys(groupedAttrs));
|
package/package.json
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import * as R from 'ramda';
|
|
2
2
|
|
|
3
|
-
export const getMSDInformations =
|
|
3
|
+
export const getMSDInformations = msdJson => {
|
|
4
4
|
const attributesDefinitions = R.pathOr([], ['data', 'metadataStructures', 0, 'metadataStructureComponents', 'reportStructures', 0, 'metadataAttributes'], msdJson);
|
|
5
|
+
const indexedConcepts = R.pipe(R.pathOr([], ['data', 'conceptSchemes', 0, 'concepts']), R.indexBy(R.prop('id')))(msdJson);
|
|
5
6
|
|
|
6
7
|
const parseAttributes = (parent) => R.reduce(
|
|
7
8
|
(acc, attribute) => {
|
|
8
9
|
const id = attribute.id;
|
|
10
|
+
const name = R.path([id, 'name'], indexedConcepts);
|
|
9
11
|
const hierarchicalId = parent === '#ROOT' ? id : `${parent}.${id}`;
|
|
10
12
|
const format = R.path(['localRepresentation', 'textFormat', 'textType'], attribute);
|
|
11
13
|
if (R.has('metadataAttributes', attribute)) {
|
|
12
14
|
const collection = parseAttributes(hierarchicalId)(attribute.metadataAttributes);
|
|
13
|
-
return ({ ...acc, ...collection, [hierarchicalId]: { format, parent, id } });
|
|
15
|
+
return ({ ...acc, ...collection, [hierarchicalId]: { format, parent, id, name } });
|
|
14
16
|
}
|
|
15
|
-
return R.assoc(hierarchicalId, { format, parent, id }, acc);
|
|
17
|
+
return R.assoc(hierarchicalId, { format, parent, id, name }, acc);
|
|
16
18
|
},
|
|
17
19
|
{}
|
|
18
20
|
)
|
|
@@ -85,7 +85,7 @@ export const parseMetadataSeries = (metadataJson, options) => {
|
|
|
85
85
|
}
|
|
86
86
|
return R.append({
|
|
87
87
|
id,
|
|
88
|
-
label: dimensionValueDisplay(options.display)({ id }),
|
|
88
|
+
label: dimensionValueDisplay(options.display)({ id, name: R.path(['attributes', id, 'name'], options) }),
|
|
89
89
|
handlerProps: R.omit(['id'], R.pathOr({}, ['attributes', id], options))
|
|
90
90
|
}, acc);
|
|
91
91
|
},
|
|
@@ -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', 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' }
|
|
9
|
+
STRING_TYPE: { format: 'String', parent: '#ROOT', id: 'STRING_TYPE', name: 'STRING_TYPE en' },
|
|
10
|
+
STRING_MULTILANG_TYPE: { format: 'String', parent: '#ROOT', id: 'STRING_MULTILANG_TYPE', name: [undefined] },
|
|
11
|
+
ALPHANUMERIC_TYPE: { format: 'AlphaNumeric', parent: '#ROOT', id: 'ALPHANUMERIC_TYPE', name: [undefined] },
|
|
12
|
+
ALPHANUMERIC_MULTILANG_TYPE: { format: 'AlphaNumeric', parent: '#ROOT', id: 'ALPHANUMERIC_MULTILANG_TYPE', name: [undefined] },
|
|
13
|
+
BOOLEAN_TYPE: { format: 'Boolean', parent: '#ROOT', id: 'BOOLEAN_TYPE', name: [undefined] },
|
|
14
|
+
XHTML_TYPE: { format: 'XHTML', parent: '#ROOT', id: 'XHTML_TYPE', name: [undefined] },
|
|
15
|
+
XHTML_MULTILANG_TYPE: { format: 'XHTML', parent: '#ROOT', id: 'XHTML_MULTILANG_TYPE', name: [undefined] },
|
|
16
|
+
INTEGER_TYPE: { format: 'Integer', parent: '#ROOT', id: 'INTEGER_TYPE', name: [undefined] },
|
|
17
|
+
INTEGER_MULTILANG_TYPE: { format: 'Integer', parent: '#ROOT', id: 'INTEGER_MULTILANG_TYPE', name: [undefined] },
|
|
18
|
+
DECIMAL_TYPE: { format: 'Decimal', parent: '#ROOT', id: 'DECIMAL_TYPE', name: [undefined] },
|
|
19
|
+
DECIMAL_MULTILANG_TYPE: { format: 'Decimal', parent: '#ROOT', id: 'DECIMAL_MULTILANG_TYPE', name: [undefined] },
|
|
20
|
+
DATETIME_TYPE: { format: 'DateTime', parent: '#ROOT', id: 'DATETIME_TYPE', name: [undefined] },
|
|
21
|
+
TIME_TYPE: { format: 'Time', parent: '#ROOT', id: 'TIME_TYPE', name: [undefined] },
|
|
22
|
+
GREGORIANDAY_TYPE: { format: 'GregorianDay', parent: '#ROOT', id: 'GREGORIANDAY_TYPE', name: [undefined] },
|
|
23
|
+
GREGORIAN_YEAR_TYPE: { format: 'GregorianYear', parent: '#ROOT', id: 'GREGORIAN_YEAR_TYPE', name: [undefined] },
|
|
24
|
+
GREGORIAN_YEARMONTH_TYPE: { format: 'GregorianYearMonth', parent: '#ROOT', id: 'GREGORIAN_YEARMONTH_TYPE', name: [undefined] },
|
|
25
|
+
CONTACT: { format: 'String', parent: '#ROOT', id: 'CONTACT', name: [undefined] },
|
|
26
|
+
'CONTACT.CONTACT_NAME': { format: 'String', parent: 'CONTACT', id: 'CONTACT_NAME', name: [undefined] },
|
|
27
|
+
'CONTACT.CONTACT_EMAIL': { format: 'String', parent: 'CONTACT', id: 'CONTACT_EMAIL', name: [undefined] },
|
|
28
|
+
'CONTACT.CONTACT_PHONE': { format: 'Numeric', parent: 'CONTACT', id: 'CONTACT_PHONE', name: [undefined] },
|
|
29
|
+
'CONTACT.CONTACT_ORGANISATION': { format: 'String', parent: 'CONTACT', id: 'CONTACT_ORGANISATION', name: [undefined] }
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
|
package/test/mocks/MSD_TEST.json
CHANGED
|
@@ -19,12 +19,12 @@ const dimensions = [
|
|
|
19
19
|
];
|
|
20
20
|
|
|
21
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' }
|
|
22
|
+
DIRECT_SOURCE: { id: 'DIRECT_SOURCE', prop: 'test', parent: '#ROOT', name: 'DIRECT_SOURCE' },
|
|
23
|
+
KEY_STATISTICAL_CONCEPT: { id: 'KEY_STATISTICAL_CONCEPT', parent: '#ROOT', name: 'KEY_STATISTICAL_CONCEPT' },
|
|
24
|
+
UNIT_OF_MEASURE_USED: { id: 'UNIT_OF_MEASURE_USED', parent: '#ROOT', name: 'UNIT_OF_MEASURE_USED' },
|
|
25
|
+
POWER_CODE: { id: 'POWER_CODE', parent: '#ROOT', name: 'POWER_CODE' },
|
|
26
|
+
POREFERENCE_PERIODWER_CODE: { id: 'POREFERENCE_PERIODWER_CODE', parent: '#ROOT', name: 'POREFERENCE_PERIODWER_CODE' },
|
|
27
|
+
RANDOM: { prop: 'invalid', name: 'RANDOM' }
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
describe('parseMetadataSeries test', () => {
|
|
@@ -35,13 +35,13 @@ describe('parseMetadataSeries test', () => {
|
|
|
35
35
|
id: 'DIRECT_SOURCE',
|
|
36
36
|
label: 'DIRECT_SOURCE: Direct source',
|
|
37
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.",
|
|
38
|
-
handlerProps: { prop: 'test', parent: '#ROOT' }
|
|
38
|
+
handlerProps: { prop: 'test', parent: '#ROOT', name: 'DIRECT_SOURCE' },
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
id: 'KEY_STATISTICAL_CONCEPT',
|
|
42
42
|
label: 'KEY_STATISTICAL_CONCEPT: Key statistical concept',
|
|
43
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.",
|
|
44
|
-
handlerProps: { parent: '#ROOT' }
|
|
44
|
+
handlerProps: { parent: '#ROOT', name: 'KEY_STATISTICAL_CONCEPT' },
|
|
45
45
|
}
|
|
46
46
|
],
|
|
47
47
|
'0::0:': [
|
|
@@ -49,33 +49,33 @@ describe('parseMetadataSeries test', () => {
|
|
|
49
49
|
id: 'UNIT_OF_MEASURE_USED',
|
|
50
50
|
label: 'UNIT_OF_MEASURE_USED: Unit of measure used',
|
|
51
51
|
value: 'Australian Dollar',
|
|
52
|
-
handlerProps: { parent: '#ROOT' }
|
|
52
|
+
handlerProps: { parent: '#ROOT', name: 'UNIT_OF_MEASURE_USED' },
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
id: 'POWER_CODE',
|
|
56
56
|
label: 'POWER_CODE: Power code',
|
|
57
57
|
value: 6,
|
|
58
|
-
handlerProps: { parent: '#ROOT' }
|
|
58
|
+
handlerProps: { parent: '#ROOT', name: 'POWER_CODE' },
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
id: 'POREFERENCE_PERIODWER_CODE',
|
|
62
62
|
label: 'POREFERENCE_PERIODWER_CODE: Reference period',
|
|
63
63
|
value: '2019',
|
|
64
|
-
handlerProps: { parent: '#ROOT' }
|
|
64
|
+
handlerProps: { parent: '#ROOT', name: 'POREFERENCE_PERIODWER_CODE' },
|
|
65
65
|
}
|
|
66
66
|
]
|
|
67
67
|
});
|
|
68
68
|
});
|
|
69
69
|
it('hierarchy test', () => {
|
|
70
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' },
|
|
71
|
+
ROOT1: { id: 'ROOT1', parent: '#ROOT', name: 'ROOT1' },
|
|
72
|
+
ROOT2: { id: 'ROOT2', parent: '#ROOT', name: 'ROOT2' },
|
|
73
|
+
PARENT1: { id: 'PARENT1', parent: '#ROOT', name: 'PARENT1' },
|
|
74
|
+
'PARENT1.CHILD1': { id: 'CHILD1', parent: 'PARENT1', name: 'CHILD1' },
|
|
75
|
+
'PARENT1.CHILD2': { id: 'CHILD2', parent: 'PARENT1', name: 'CHILD2' },
|
|
76
|
+
PARENT2: { id: 'PARENT1', parent: '#ROOT', name: 'PARENT2' },
|
|
77
|
+
'PARENT2.CHILD3': { id: 'CHILD3', parent: 'PARENT2', name: 'CHILD3' },
|
|
78
|
+
'PARENT2.CHILD4': { id: 'CHILD4', parent: 'PARENT2', name: 'CHILD4' },
|
|
79
79
|
};
|
|
80
80
|
const metadata = {
|
|
81
81
|
data: {
|
|
@@ -102,24 +102,24 @@ describe('parseMetadataSeries test', () => {
|
|
|
102
102
|
|
|
103
103
|
expect(parseMetadataSeries(metadata, { display: 'name', locale: 'en', dimensions: [], attributes })).to.deep.equal({
|
|
104
104
|
'::': [
|
|
105
|
-
{ id: 'ROOT1', label: 'Root 1', value: 'v', handlerProps: { parent: '#ROOT' } },
|
|
106
|
-
{ id: 'ROOT2', label: 'Root 2', value: 'v', handlerProps: { parent: '#ROOT' } },
|
|
105
|
+
{ id: 'ROOT1', label: 'Root 1', value: 'v', handlerProps: { parent: '#ROOT', name: 'ROOT1' } },
|
|
106
|
+
{ id: 'ROOT2', label: 'Root 2', value: 'v', handlerProps: { parent: '#ROOT', name: 'ROOT2' } },
|
|
107
107
|
{
|
|
108
108
|
id: 'PARENT1',
|
|
109
109
|
label: 'Parent 1',
|
|
110
|
-
handlerProps: { parent: '#ROOT' },
|
|
110
|
+
handlerProps: { parent: '#ROOT', name: 'PARENT1' },
|
|
111
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' } },
|
|
112
|
+
{ id: 'PARENT1.CHILD1', label: 'Child 1', value: 'v', handlerProps: { parent: 'PARENT1', name: 'CHILD1' } },
|
|
113
|
+
{ id: 'PARENT1.CHILD2', label: 'Child 2', value: 'v', handlerProps: { parent: 'PARENT1', name: 'CHILD2' } },
|
|
114
114
|
]
|
|
115
115
|
},
|
|
116
116
|
{
|
|
117
117
|
id: 'PARENT2',
|
|
118
|
-
label: '
|
|
119
|
-
handlerProps: { parent: '#ROOT' },
|
|
118
|
+
label: 'PARENT2',
|
|
119
|
+
handlerProps: { parent: '#ROOT', name: 'PARENT2' },
|
|
120
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' } },
|
|
121
|
+
{ id: 'PARENT2.CHILD3', label: 'Child 3', value: 'v', handlerProps: { parent: 'PARENT2', name: 'CHILD3' } },
|
|
122
|
+
{ id: 'PARENT2.CHILD4', label: 'Child 4', value: 'v', handlerProps: { parent: 'PARENT2', name: 'CHILD4' } },
|
|
123
123
|
]
|
|
124
124
|
}
|
|
125
125
|
]
|