@sis-cc/dotstatsuite-components 10.0.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/lib/index.js +8 -3
  2. package/lib/rules/src/table/factories/getCells.js +22 -4
  3. package/lib/rules/src/table/factories/getLayoutWithFlags.js +44 -8
  4. package/lib/rules/src/table/factories/getTableData.js +9 -2
  5. package/lib/rules/src/table/preparators/prepareData.js +37 -2
  6. package/lib/rules/src/v8-transformer.js +5 -9
  7. package/lib/rules2/src/constants.js +7 -0
  8. package/lib/rules2/src/getAdvAttrSeriesAtCoordinates.js +39 -0
  9. package/lib/rules2/src/getAdvancedAttributes.js +126 -0
  10. package/lib/rules2/src/getMetadataCoordinates.js +38 -0
  11. package/lib/rules2/src/getMetadataStructureFromData.js +23 -0
  12. package/lib/rules2/src/getSidebarData.js +76 -0
  13. package/lib/rules2/src/hasCellMetadata.js +19 -0
  14. package/lib/rules2/src/hasLayoutEntryMetadata.js +18 -0
  15. package/lib/rules2/src/index.js +47 -0
  16. package/lib/rules2/src/parseMetadataSeries.js +83 -0
  17. package/lib/rules2/src/refineMetadataCoordinates.js +34 -0
  18. package/lib/rules2/src/sdmx3.0DataFormatPatch.js +20 -0
  19. package/lib/viewer/src/chart.js +48 -41
  20. package/lib/viewer/src/index.js +76 -56
  21. package/package.json +2 -7
  22. package/src/index.js +2 -0
  23. package/src/rules/src/table/factories/getCells.js +13 -4
  24. package/src/rules/src/table/factories/getLayoutWithFlags.js +50 -13
  25. package/src/rules/src/table/factories/getTableData.js +12 -3
  26. package/src/rules/src/table/preparators/prepareData.js +45 -4
  27. package/src/rules/src/v8-transformer.js +3 -8
  28. package/src/rules2/src/constants.js +2 -0
  29. package/src/rules2/src/getAdvAttrSeriesAtCoordinates.js +29 -0
  30. package/src/rules2/src/getAdvancedAttributes.js +113 -0
  31. package/src/rules2/src/getMetadataCoordinates.js +37 -0
  32. package/src/rules2/src/getMetadataStructureFromData.js +17 -0
  33. package/src/rules2/src/getSidebarData.js +73 -0
  34. package/src/rules2/src/hasCellMetadata.js +11 -0
  35. package/src/rules2/src/hasLayoutEntryMetadata.js +9 -0
  36. package/src/rules2/src/index.js +8 -0
  37. package/src/rules2/src/parseMetadataSeries.js +80 -0
  38. package/src/rules2/src/refineMetadataCoordinates.js +27 -0
  39. package/src/rules2/src/sdmx3.0DataFormatPatch.js +9 -0
  40. package/src/viewer/src/chart.js +15 -14
  41. package/src/viewer/src/index.js +35 -26
  42. package/test/advanced-attributes-parsing-perf.test.js +16 -0
  43. package/test/getCells.test.js +7 -5
  44. package/test/getDataflowAdvancedAttributes.test.js +32 -0
  45. package/test/getLayoutDataWithFlags.test.js +23 -13
  46. package/test/getMetadataCoordinates.test.js +0 -0
  47. package/test/getSeriesAdvancedAttributes.test.js +30 -0
  48. package/test/getSidebarData.test.js +116 -0
  49. package/test/getSubtitleFlags.test.js +1 -1
  50. package/test/getTableData.test.js +2 -1
  51. package/test/metadata-parsing-perf.test.js +487 -0
  52. package/test/mocks/OECD_SNA_TABLE1_1.0_-_AUS_V_metadata.json +152 -0
  53. package/test/mocks/large_metadata_series.json +701 -0
  54. package/test/mocks/observations-advanced-attributes.json +55382 -0
  55. package/test/parseMetadataSeries.test.js +55 -0
  56. package/test/prepareData.test.js +2 -0
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getLayoutEntryMetadataCoordinates = 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
+ /*
15
+ const layoutData = [{ dimension: { id: 'D1', __index: 2 }, value: { id: 'V', __index: 0 } }];
16
+ */
17
+
18
+ var getLayoutEntryMetadataCoordinates = exports.getLayoutEntryMetadataCoordinates = function getLayoutEntryMetadataCoordinates(layoutData, metadataSeries) {};
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _constants = require('./constants');
8
+
9
+ Object.defineProperty(exports, 'SDMX_3_0_JSON_DATA_FORMAT', {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return _constants.SDMX_3_0_JSON_DATA_FORMAT;
13
+ }
14
+ });
15
+ Object.defineProperty(exports, 'SDMX_3_0_CSV_DATA_FORMAT', {
16
+ enumerable: true,
17
+ get: function get() {
18
+ return _constants.SDMX_3_0_CSV_DATA_FORMAT;
19
+ }
20
+ });
21
+
22
+ var _getSidebarData = require('./getSidebarData');
23
+
24
+ Object.defineProperty(exports, 'getSidebarData', {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _getSidebarData.getSidebarData;
28
+ }
29
+ });
30
+
31
+ var _parseMetadataSeries = require('./parseMetadataSeries');
32
+
33
+ Object.defineProperty(exports, 'parseMetadataSeries', {
34
+ enumerable: true,
35
+ get: function get() {
36
+ return _parseMetadataSeries.parseMetadataSeries;
37
+ }
38
+ });
39
+
40
+ var _sdmx = require('./sdmx3.0DataFormatPatch');
41
+
42
+ Object.defineProperty(exports, 'sdmx_3_0_DataFormatPatch', {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _sdmx.sdmx_3_0_DataFormatPatch;
46
+ }
47
+ });
@@ -0,0 +1,83 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseMetadataSeries = undefined;
7
+
8
+ var _ramda = require('ramda');
9
+
10
+ var R = _interopRequireWildcard(_ramda);
11
+
12
+ var _dotstatsuiteSdmxjs = require('@sis-cc/dotstatsuite-sdmxjs');
13
+
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; } }
15
+
16
+ var dimensionValueDisplay = function dimensionValueDisplay(locale, display) {
17
+ return function (data) {
18
+ if (display === 'code') {
19
+ return R.prop('id', data);
20
+ }
21
+ if (display === 'both') {
22
+ return R.prop('id', data) + ': ' + (0, _dotstatsuiteSdmxjs.getLocalisedName)(locale)(data);
23
+ }
24
+ return (0, _dotstatsuiteSdmxjs.getLocalisedName)(locale)(data);
25
+ };
26
+ };
27
+ // options = { locale, display, dimensions = [] };
28
+ var parseMetadataSeries = exports.parseMetadataSeries = function parseMetadataSeries(metadataJson, options) {
29
+ var metadataAttributes = R.pathOr([], ['data', 'structures', 0, 'attributes', 'dimensionGroup'], metadataJson);
30
+ var metaAttrLength = R.length(metadataAttributes);
31
+
32
+ if (!metaAttrLength) {
33
+ return {};
34
+ }
35
+
36
+ var dimensions = R.pipe(R.pathOr([], ['data', 'structures', 0, 'dimensions']), function (_ref) {
37
+ var _ref$series = _ref.series,
38
+ series = _ref$series === undefined ? [] : _ref$series,
39
+ _ref$observation = _ref.observation,
40
+ observation = _ref$observation === undefined ? [] : _ref$observation;
41
+ return R.concat(series, observation);
42
+ }, function (dims) {
43
+ return R.isEmpty(options.dimensions || []) ? dims : R.props(R.pluck('id', options.dimensions), R.indexBy(R.prop('id'), dims));
44
+ })(metadataJson);
45
+
46
+ var metadataSeries = R.pipe(R.pathOr({}, ['data', 'dataSets', 0, 'dimensionGroupAttributes']), function (series) {
47
+ return R.reduce(function (acc, serieKey) {
48
+ var indexes = series[serieKey];
49
+ var metaIndexes = R.take(metaAttrLength, indexes);
50
+
51
+ var evolvedKey = R.pipe(R.split(':'), R.addIndex(R.map)(function (vInd, dInd) {
52
+ if (R.isEmpty(vInd)) {
53
+ return vInd;
54
+ }
55
+ var dim = R.nth(dInd, dimensions);
56
+ var val = R.nth(Number(vInd), dim.values || []);
57
+
58
+ var originalVal = R.find(R.propEq('id', val.id))(R.propOr([], 'values', R.nth(dInd, options.dimensions)));
59
+ return R.propOr('', '__index', originalVal);
60
+ }), R.join(':'))(serieKey);
61
+
62
+ var attributes = R.addIndex(R.reduce)(function (acc, valueIndex, attrIndex) {
63
+ if (R.isNil(valueIndex)) {
64
+ return acc;
65
+ }
66
+ var attribute = R.nth(attrIndex, metadataAttributes);
67
+ var label = dimensionValueDisplay(options.locale, options.display)(attribute);
68
+
69
+ var value = R.prop('value', R.nth(valueIndex, attribute.values || []));
70
+
71
+ return R.append({
72
+ id: attribute.id,
73
+ label: label,
74
+ value: R.is(Object, value) ? R.prop(options.locale, value) : value
75
+ }, acc);
76
+ }, [], metaIndexes);
77
+
78
+ return R.assoc(evolvedKey, attributes, acc);
79
+ }, {}, R.keys(series));
80
+ })(metadataJson);
81
+
82
+ return metadataSeries;
83
+ };
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.refineMetadataCoordinates = 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 refineMetadataCoordinates = exports.refineMetadataCoordinates = function refineMetadataCoordinates(metadataCoordinates, layoutIds, headerDimensionsIds) {
15
+ return R.reduce(function (acc, coordinates) {
16
+ var refinedCoord = R.omit(headerDimensionsIds, coordinates);
17
+ if (R.isEmpty(refinedCoord)) {
18
+ return acc;
19
+ }
20
+ var removedHeaderCodes = R.omit(layoutIds.header, refinedCoord);
21
+ if (R.isEmpty(removedHeaderCodes)) {
22
+ return R.over(R.lensProp('header'), R.append(refinedCoord))(acc);
23
+ }
24
+ var removedSectionCodes = R.omit(layoutIds.sections, refinedCoord);
25
+ if (R.isEmpty(removedSectionCodes)) {
26
+ return R.over(R.lensProp('sections'), R.append(refinedCoord))(acc);
27
+ }
28
+ var removedRowsCodes = R.omit(layoutIds.rows, removedSectionCodes);
29
+ if (R.isEmpty(removedRowsCodes)) {
30
+ return R.over(R.lensProp('rows'), R.append(refinedCoord))(acc);
31
+ }
32
+ return R.over(R.lensProp('cells'), R.append(refinedCoord))(acc);
33
+ }, { cells: [], header: [], sections: [], rows: [] }, metadataCoordinates);
34
+ };
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.sdmx_3_0_DataFormatPatch = 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 sdmx_3_0_DataFormatPatch = exports.sdmx_3_0_DataFormatPatch = function sdmx_3_0_DataFormatPatch(sdmxJson) {
15
+ var dataSet = R.pipe(R.pathOr({}, ['data', 'dataSets']), R.head)(sdmxJson);
16
+ var structureIndex = R.prop('structure', dataSet);
17
+ var structure = R.pipe(R.pathOr([], ['data', 'structures']), R.nth(structureIndex))(sdmxJson);
18
+
19
+ return R.set(R.lensPath(['data', 'structure']), structure)(sdmxJson);
20
+ };
@@ -4,6 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
 
7
+ var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
8
+
9
+ var _defineProperty3 = _interopRequireDefault(_defineProperty2);
10
+
7
11
  var _react = require('react');
8
12
 
9
13
  var _react2 = _interopRequireDefault(_react);
@@ -14,9 +18,11 @@ var _ramda = require('ramda');
14
18
 
15
19
  var R = _interopRequireWildcard(_ramda);
16
20
 
17
- var _glamorous = require('glamorous');
21
+ var _classnames = require('classnames');
22
+
23
+ var _classnames2 = _interopRequireDefault(_classnames);
18
24
 
19
- var _glamorous2 = _interopRequireDefault(_glamorous);
25
+ var _styles = require('@material-ui/core/styles');
20
26
 
21
27
  var _dotstatsuiteVisions = require('@sis-cc/dotstatsuite-visions');
22
28
 
@@ -40,46 +46,47 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
40
46
 
41
47
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
42
48
 
43
- var Container = _glamorous2.default.div({
44
- backgroundColor: 'none',
45
- overflow: 'hidden',
46
- position: 'relative',
47
- direction: 'ltr !important'
48
- }, function (_ref) {
49
- var type = _ref.type;
50
-
51
- if (!R.equals(_constants.SCATTER, type)) return {};
49
+ var useStyles = (0, _styles.makeStyles)(function () {
52
50
  return {
53
- '& .rcw-chart__chart__line--x:last-of-type': {
54
- visibility: 'hidden'
55
- },
56
- '& .rcw-chart__chart__line--y:last-of-type': {
57
- visibility: 'hidden'
51
+ container: {
52
+ backgroundColor: 'none',
53
+ overflow: 'hidden',
54
+ position: 'relative',
55
+ direction: 'ltr !important'
58
56
  },
59
- '& .rcw-chart__chart__axis--x': {
60
- '& .tick:last-of-type': {
57
+ chartContainer: {
58
+ '& .rcw-chart__chart__line--x:last-of-type': {
61
59
  visibility: 'hidden'
62
- }
63
- },
64
- '& .rcw-chart__chart__axis--y': {
65
- '& .tick:last-of-type': {
60
+ },
61
+ '& .rcw-chart__chart__line--y:last-of-type': {
66
62
  visibility: 'hidden'
63
+ },
64
+ '& .rcw-chart__chart__axis--x': {
65
+ '& .tick:last-of-type': {
66
+ visibility: 'hidden'
67
+ }
68
+ },
69
+ '& .rcw-chart__chart__axis--y': {
70
+ '& .tick:last-of-type': {
71
+ visibility: 'hidden'
72
+ }
67
73
  }
68
74
  }
69
75
  };
70
76
  });
71
77
 
72
- var Chart = function Chart(_ref2) {
73
- var options = _ref2.options,
74
- series = _ref2.series,
75
- type = _ref2.type,
76
- width = _ref2.width,
77
- getAxisOptions = _ref2.getAxisOptions;
78
+ var Chart = function Chart(_ref) {
79
+ var options = _ref.options,
80
+ series = _ref.series,
81
+ type = _ref.type,
82
+ width = _ref.width,
83
+ getAxisOptions = _ref.getAxisOptions;
78
84
 
85
+ var classes = useStyles();
79
86
  var ChartClass = charts[type];
80
87
  return _react2.default.createElement(
81
- Container,
82
- { type: type },
88
+ 'div',
89
+ { className: (0, _classnames2.default)((0, _defineProperty3.default)({}, classes.chartContainer, !R.equals(_constants.SCATTER, type))) },
83
90
  _react2.default.createElement(ChartClass, {
84
91
  data: series,
85
92
  options: options,
@@ -89,9 +96,9 @@ var Chart = function Chart(_ref2) {
89
96
  );
90
97
  };
91
98
 
92
- exports.default = (0, _recompose.compose)((0, _recompose.withProps)(function (_ref3) {
93
- var heightOffsets = _ref3.heightOffsets,
94
- options = _ref3.options;
99
+ exports.default = (0, _recompose.compose)((0, _recompose.withProps)(function (_ref2) {
100
+ var heightOffsets = _ref2.heightOffsets,
101
+ options = _ref2.options;
95
102
  return {
96
103
  options: R.over( // adjust svg height regarding header and footer height
97
104
  R.lensPath(['base', 'height']), R.pipe(function (h) {
@@ -99,10 +106,10 @@ exports.default = (0, _recompose.compose)((0, _recompose.withProps)(function (_r
99
106
  }, R.when(R.gt(0), R.always(300))), // 2 = borders
100
107
  options)
101
108
  };
102
- }), (0, _recompose.branch)(_utils.isChartNoData, (0, _recompose.renderComponent)(function (_ref4) {
103
- var noData = _ref4.noData,
104
- options = _ref4.options,
105
- fixedHeight = _ref4.fixedHeight;
109
+ }), (0, _recompose.branch)(_utils.isChartNoData, (0, _recompose.renderComponent)(function (_ref3) {
110
+ var noData = _ref3.noData,
111
+ options = _ref3.options,
112
+ fixedHeight = _ref3.fixedHeight;
106
113
 
107
114
  if (R.isNil(fixedHeight)) {
108
115
  return _react2.default.createElement(_dotstatsuiteVisions.NoData, { message: noData || 'No Data' });
@@ -114,10 +121,10 @@ exports.default = (0, _recompose.compose)((0, _recompose.withProps)(function (_r
114
121
  { style: style },
115
122
  _react2.default.createElement(_dotstatsuiteVisions.NoData, { message: noData || 'No Data' })
116
123
  );
117
- })), (0, _recompose.withProps)(function (_ref5) {
118
- var data = _ref5.data,
119
- options = _ref5.options,
120
- type = _ref5.type;
124
+ })), (0, _recompose.withProps)(function (_ref4) {
125
+ var data = _ref4.data,
126
+ options = _ref4.options,
127
+ type = _ref4.type;
121
128
  return {
122
129
  series: (0, _series2.default)(data.series, type, options) // responsive rule only display highlighted data
123
130
  };
@@ -4,6 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
 
7
+ var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
8
+
9
+ var _defineProperty3 = _interopRequireDefault(_defineProperty2);
10
+
7
11
  var _extends2 = require('babel-runtime/helpers/extends');
8
12
 
9
13
  var _extends3 = _interopRequireDefault(_extends2);
@@ -20,6 +24,10 @@ var _ramda = require('ramda');
20
24
 
21
25
  var R = _interopRequireWildcard(_ramda);
22
26
 
27
+ var _classnames = require('classnames');
28
+
29
+ var _classnames2 = _interopRequireDefault(_classnames);
30
+
23
31
  var _recompose = require('recompose');
24
32
 
25
33
  var _reactSizeme = require('react-sizeme');
@@ -28,10 +36,6 @@ var _reactSizeme2 = _interopRequireDefault(_reactSizeme);
28
36
 
29
37
  var _dotstatsuiteVisions = require('@sis-cc/dotstatsuite-visions');
30
38
 
31
- var _glamorous = require('glamorous');
32
-
33
- var _glamorous2 = _interopRequireDefault(_glamorous);
34
-
35
39
  var _styles = require('@material-ui/core/styles');
36
40
 
37
41
  var _options = require('./chartUtils/options');
@@ -54,37 +58,45 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
54
58
 
55
59
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
56
60
 
57
- var Container = _glamorous2.default.div({
58
- borderColor: '#007bc7',
59
- borderBottomWidth: 1,
60
- borderLeftWidth: 0,
61
- borderTopWidth: 1,
62
- borderRightWidth: 0,
63
- borderStyle: 'solid',
64
- '& svg text::selection': {
65
- background: 'none'
66
- } }, function (_ref) {
67
- var type = _ref.type,
68
- fixedWidth = _ref.fixedWidth,
69
- fixedHeight = _ref.fixedHeight;
70
- return R.ifElse(R.always(type === 'table'), R.always({
71
- minWidth: '100%',
72
- minHeight: '100%'
73
- }), R.always({
74
- width: fixedWidth || '100%',
75
- height: fixedHeight || '100%',
76
- overflow: 'hidden'
77
- }));
61
+ var useStyles = (0, _styles.makeStyles)(function (theme) {
62
+ return {
63
+ container: {
64
+ borderColor: '#007bc7',
65
+ borderBottomWidth: 1,
66
+ borderLeftWidth: 0,
67
+ borderTopWidth: 1,
68
+ borderRightWidth: 0,
69
+ borderStyle: 'solid',
70
+ '& svg text::selection': {
71
+ background: 'none'
72
+ }
73
+ },
74
+ tableContainer: {
75
+ minWidth: '100%',
76
+ minHeight: '100%'
77
+ },
78
+ chartContainer: {
79
+ width: function width(_ref) {
80
+ var fixedWidth = _ref.fixedWidth;
81
+ return fixedWidth || '100%';
82
+ },
83
+ height: function height(_ref2) {
84
+ var fixedHeight = _ref2.fixedHeight;
85
+ return fixedHeight || '100%';
86
+ },
87
+ overflow: 'hidden'
88
+ }
89
+ };
78
90
  });
79
91
 
80
- var ViewContent = function ViewContent(_ref2) {
81
- var loading = _ref2.loading,
82
- _ref2$noData = _ref2.noData,
83
- noData = _ref2$noData === undefined ? 'No Data' : _ref2$noData,
84
- type = _ref2.type,
85
- width = _ref2.width,
86
- errorMessage = _ref2.errorMessage,
87
- rest = (0, _objectWithoutProperties3.default)(_ref2, ['loading', 'noData', 'type', 'width', 'errorMessage']);
92
+ var ViewContent = function ViewContent(_ref3) {
93
+ var loading = _ref3.loading,
94
+ _ref3$noData = _ref3.noData,
95
+ noData = _ref3$noData === undefined ? 'No Data' : _ref3$noData,
96
+ type = _ref3.type,
97
+ width = _ref3.width,
98
+ errorMessage = _ref3.errorMessage,
99
+ rest = (0, _objectWithoutProperties3.default)(_ref3, ['loading', 'noData', 'type', 'width', 'errorMessage']);
88
100
 
89
101
  if (loading) return _react2.default.createElement(_dotstatsuiteVisions.Loading, { message: loading });
90
102
  if (!width) return _react2.default.createElement(_dotstatsuiteVisions.Loading, { message: loading });
@@ -109,14 +121,20 @@ var ViewContent = function ViewContent(_ref2) {
109
121
  });
110
122
  };
111
123
 
112
- var Viewer = function Viewer(_ref3) {
113
- var getResponsiveSize = _ref3.getResponsiveSize,
114
- setFooterOffset = _ref3.setFooterOffset,
115
- setHeaderOffset = _ref3.setHeaderOffset,
116
- size = _ref3.size,
117
- type = _ref3.type,
118
- rest = (0, _objectWithoutProperties3.default)(_ref3, ['getResponsiveSize', 'setFooterOffset', 'setHeaderOffset', 'size', 'type']);
124
+ var Viewer = function Viewer(_ref4) {
125
+ var _cx;
119
126
 
127
+ var getResponsiveSize = _ref4.getResponsiveSize,
128
+ setFooterOffset = _ref4.setFooterOffset,
129
+ setHeaderOffset = _ref4.setHeaderOffset,
130
+ size = _ref4.size,
131
+ type = _ref4.type,
132
+ rest = (0, _objectWithoutProperties3.default)(_ref4, ['getResponsiveSize', 'setFooterOffset', 'setHeaderOffset', 'size', 'type']);
133
+
134
+ var classes = useStyles({
135
+ fixedWidth: rest.fixedWidth,
136
+ fixedHeight: rest.fixedHeight
137
+ });
120
138
  (0, _react.useEffect)(function () {
121
139
  if (R.is(Function, getResponsiveSize)) {
122
140
  getResponsiveSize({
@@ -127,8 +145,10 @@ var Viewer = function Viewer(_ref3) {
127
145
  });
128
146
 
129
147
  return _react2.default.createElement(
130
- Container,
131
- (0, _extends3.default)({ type: type }, R.pick(['fixedWidth', 'fixedHeight'], rest)),
148
+ 'div',
149
+ {
150
+ className: (0, _classnames2.default)(classes.container, (_cx = {}, (0, _defineProperty3.default)(_cx, classes.tableContainer, type === 'table'), (0, _defineProperty3.default)(_cx, classes.chartContainer, type !== 'table'), _cx))
151
+ },
132
152
  _react2.default.createElement(_header2.default, (0, _extends3.default)({
133
153
  onSize: function onSize(size) {
134
154
  return setHeaderOffset(size.height);
@@ -146,9 +166,9 @@ var Viewer = function Viewer(_ref3) {
146
166
  );
147
167
  };
148
168
 
149
- exports.default = (0, _recompose.compose)((0, _reactSizeme2.default)({ noPlaceholder: true, monitorWidth: true, monitorHeight: true }), (0, _recompose.withState)('heightOffsets', 'setHeightOffsets', { footer: undefined, header: undefined }), (0, _recompose.withProps)(function (_ref4) {
150
- var heightOffsets = _ref4.heightOffsets,
151
- setHeightOffsets = _ref4.setHeightOffsets;
169
+ exports.default = (0, _recompose.compose)((0, _reactSizeme2.default)({ noPlaceholder: true, monitorWidth: true, monitorHeight: true }), (0, _recompose.withState)('heightOffsets', 'setHeightOffsets', { footer: undefined, header: undefined }), (0, _recompose.withProps)(function (_ref5) {
170
+ var heightOffsets = _ref5.heightOffsets,
171
+ setHeightOffsets = _ref5.setHeightOffsets;
152
172
  return {
153
173
  heightOffsets: R.evolve({
154
174
  footer: R.when(R.isNil, R.always(0)),
@@ -162,11 +182,11 @@ exports.default = (0, _recompose.compose)((0, _reactSizeme2.default)({ noPlaceho
162
182
  }
163
183
  };
164
184
  }), (0, _recompose.withProps)( // inject responsive size if needed for chart
165
- function (_ref5) {
166
- var chartOptions = _ref5.chartOptions,
167
- heightOffsets = _ref5.heightOffsets,
168
- size = _ref5.size,
169
- type = _ref5.type;
185
+ function (_ref6) {
186
+ var chartOptions = _ref6.chartOptions,
187
+ heightOffsets = _ref6.heightOffsets,
188
+ size = _ref6.size,
189
+ type = _ref6.type;
170
190
 
171
191
  if (type === 'table') {
172
192
  return {};
@@ -178,12 +198,12 @@ function (_ref5) {
178
198
  fixedHeight: R.path(['base', 'height'], chartOptions)
179
199
  };
180
200
  }), (0, _recompose.withProps)( // compute all chart options regarding oecd design
181
- function (_ref6) {
182
- var chartData = _ref6.chartData,
183
- chartOptions = _ref6.chartOptions,
184
- timeFormats = _ref6.timeFormats,
185
- type = _ref6.type,
186
- locale = _ref6.locale;
201
+ function (_ref7) {
202
+ var chartData = _ref7.chartData,
203
+ chartOptions = _ref7.chartOptions,
204
+ timeFormats = _ref7.timeFormats,
205
+ type = _ref7.type,
206
+ locale = _ref7.locale;
187
207
 
188
208
  if (type === 'table') {
189
209
  return {};
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": "10.0.0",
4
+ "version": "12.1.0",
5
5
  "main": "lib/index.js",
6
6
  "author": "OECD",
7
7
  "license": "MIT",
@@ -24,24 +24,19 @@
24
24
  "@react-hook/size": "^2.1.1",
25
25
  "@sis-cc/dotstatsuite-d3-charts": "^8.0.0",
26
26
  "date-fns": "^1.30.1",
27
- "glamor": "^2.20.40",
28
- "glamorous": "^4.13.1",
29
27
  "lodash": "^4.17.2",
30
28
  "lodash.compose": "^2.4.1",
31
29
  "memoizee": "^0.4.4",
32
30
  "numeral": "^2.0.6",
33
31
  "prop-types": "^15.6.2",
34
- "query-string": "^4.3.2",
35
32
  "ramda": "^0.26.1",
36
- "react-addons-css-transition-group": "^15.6.2",
37
33
  "react-dom": "^16.5.2",
38
- "react-select": "^1.2.1",
39
34
  "react-sizeme": "^2.3.6",
40
35
  "recompose": "^0.30.0"
41
36
  },
42
37
  "peerDependencies": {
43
38
  "@material-ui/core": "^4.x",
44
- "@sis-cc/dotstatsuite-visions": "^6.x",
39
+ "@sis-cc/dotstatsuite-visions": "^7.x",
45
40
  "@sis-cc/dotstatsuite-sdmxjs": "^5.x",
46
41
  "react": "16.x"
47
42
  }
package/src/index.js CHANGED
@@ -2,9 +2,11 @@ import meta from '../package.json';
2
2
  console.info(`${meta.name}@${meta.version}`);
3
3
 
4
4
  import * as rules from './rules/src';
5
+ import * as rules2 from './rules2/src';
5
6
  import * as bridgeD3React from './bridge-d3-react/src';
6
7
 
7
8
  export { rules };
9
+ export { rules2 };
8
10
  export { bridgeD3React };
9
11
 
10
12
  export { default as RulesDriver } from './rules-driver/src';
@@ -1,12 +1,13 @@
1
1
  import * as R from 'ramda';
2
2
  import { dimensionValueDisplay } from '../../dimension-utils';
3
+ import { hasCellMetadata } from '../../../../rules2/src/hasCellMetadata';
3
4
 
4
5
  const getAttrLabel = (display) => (attribute) => `${display(attribute)}: ${display(R.propOr({}, 'value', attribute))}`;
5
6
 
6
7
  export const getFlags = (customAttributesIds, display, unitsProps) => ({ attributes={}, units={} }) => {
7
8
  const refinedAttributes = R.omit(R.propOr([], 'rejected', customAttributesIds), attributes);
8
9
  const flags = R.pipe(R.pick(R.propOr([], 'flags', customAttributesIds)), R.values)(refinedAttributes);
9
- const footnotes = R.pipe(R.omit(R.propOr([], 'flags', customAttributesIds)), R.values)(refinedAttributes);
10
+ const footnotes = R.pipe(R.pick(R.propOr([], 'footnotes', customAttributesIds)), R.values)(refinedAttributes);
10
11
 
11
12
  const unitsDisplay = R.prop('unitsDisplay', unitsProps);
12
13
  const rejectedUnitsValueIds = R.propOr([], 'rejectedValueIds', unitsProps);
@@ -73,9 +74,16 @@ export const getFlags = (customAttributesIds, display, unitsProps) => ({ attribu
73
74
  )(flags, footnotes);
74
75
  };
75
76
 
76
- const isValidNumber = R.both(R.is(Number), R.complement(R.equals(NaN)));
77
+ const getSideProps = ({ attributes, indexedDimValIds }, customAttributes, metadataCoordinates) => {
78
+ const rejected = [...customAttributes.flags || [], ...customAttributes.footnotes || [], ...customAttributes.rejected || []];
79
+ const advancedAttributes = R.omit(rejected, attributes);
80
+ const hasAdvancedAttributes = !R.isEmpty(advancedAttributes);
81
+ const hasMetadata = hasCellMetadata(metadataCoordinates, indexedDimValIds);
77
82
 
78
- export const getCells = (data, display, customAttributes, unitsProps) => R.mapObjIndexed(
83
+ return hasAdvancedAttributes || hasMetadata ? { hasAdvancedAttributes, hasMetadata, coordinates: indexedDimValIds } : null;
84
+ }
85
+
86
+ export const getCells = (data, display, customAttributes, unitsProps, metadataCoordinates) => R.mapObjIndexed(
79
87
  (observation) => R.pipe(
80
88
  R.set(
81
89
  R.lensProp('flags'),
@@ -85,7 +93,8 @@ export const getCells = (data, display, customAttributes, unitsProps) => R.mapOb
85
93
  ),
86
94
  R.set(R.lensProp('intValue'), R.prop('value', observation)),
87
95
  R.set(R.lensProp('value'), R.prop('formattedValue', observation)),
88
- R.assoc('indexedDimValIds', R.prop('indexedDimValIds', observation))
96
+ R.assoc('indexedDimValIds', R.prop('indexedDimValIds', observation)),
97
+ R.assoc('sideProps', getSideProps(observation, customAttributes, metadataCoordinates))
89
98
  )({}),
90
99
  R.propOr({}, 'observations', data)
91
100
  );