@sis-cc/dotstatsuite-components 8.11.1 → 8.14.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 (50) hide show
  1. package/lib/app.js +13 -5
  2. package/lib/rules/src/chart/getChartOptions.js +8 -4
  3. package/lib/rules/src/factories/stacked-dimension.js +17 -23
  4. package/lib/rules/src/factories/stacked-series.js +82 -158
  5. package/lib/rules/src/index.js +3 -6
  6. package/lib/rules/src/properties/index.js +2 -1
  7. package/lib/rules/src/properties/stacked.js +35 -11
  8. package/lib/rules/src/properties/utils.js +7 -1
  9. package/lib/rules-driver/src/app.js +116 -167
  10. package/lib/viewer/src/chartUtils/series.js +4 -0
  11. package/lib/viewer/src/legends/SeriesLegend.js +3 -1
  12. package/package.json +2 -2
  13. package/src/app.js +10 -5
  14. package/src/rules/src/chart/getChartOptions.js +1 -0
  15. package/src/rules/src/factories/stacked-dimension.js +14 -10
  16. package/src/rules/src/factories/stacked-series.js +102 -94
  17. package/src/rules/src/index.js +1 -2
  18. package/src/rules/src/properties/index.js +3 -1
  19. package/src/rules/src/properties/stacked.js +23 -7
  20. package/src/rules/src/properties/utils.js +8 -3
  21. package/src/rules-driver/src/app.js +116 -132
  22. package/src/rules-driver/src/mocks/data1.json +332 -0
  23. package/src/rules-driver/src/mocks/data2.json +309 -0
  24. package/src/viewer/src/chartUtils/series.js +4 -0
  25. package/src/viewer/src/legends/SeriesLegend.js +4 -1
  26. package/lib/rules-driver/src/app/chart.js +0 -52
  27. package/lib/rules-driver/src/app/config-axis.js +0 -95
  28. package/lib/rules-driver/src/app/config-buttons.js +0 -47
  29. package/lib/rules-driver/src/app/config-input.js +0 -51
  30. package/lib/rules-driver/src/app/config-select.js +0 -57
  31. package/lib/rules-driver/src/app/config-t4size.js +0 -61
  32. package/lib/rules-driver/src/app/config1.js +0 -148
  33. package/lib/rules-driver/src/app/menu.js +0 -44
  34. package/lib/rules-driver/src/app/viewer1.js +0 -39
  35. package/lib/rules-driver/src/app/viewer2.js +0 -115
  36. package/src/rules-driver/src/app/chart.js +0 -18
  37. package/src/rules-driver/src/app/config-axis.js +0 -54
  38. package/src/rules-driver/src/app/config-buttons.js +0 -27
  39. package/src/rules-driver/src/app/config-input.js +0 -35
  40. package/src/rules-driver/src/app/config-select.js +0 -25
  41. package/src/rules-driver/src/app/config-t4size.js +0 -50
  42. package/src/rules-driver/src/app/config1.js +0 -120
  43. package/src/rules-driver/src/app/menu.js +0 -27
  44. package/src/rules-driver/src/app/viewer1.js +0 -18
  45. package/src/rules-driver/src/app/viewer2.js +0 -77
  46. package/src/rules-driver/src/mocks/ecb.json +0 -2069
  47. package/src/rules-driver/src/mocks/ins.json +0 -264
  48. package/src/rules-driver/src/mocks/oecd-time.json +0 -864
  49. package/src/rules-driver/src/mocks/oecd.json +0 -372
  50. package/src/rules-driver/src/mocks/tunisia.json +0 -333
@@ -3,201 +3,150 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = undefined;
7
6
 
8
7
  var _extends2 = require('babel-runtime/helpers/extends');
9
8
 
10
9
  var _extends3 = _interopRequireDefault(_extends2);
11
10
 
12
- var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
11
+ var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
13
12
 
14
- var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
13
+ var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
15
14
 
16
- var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
15
+ var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
17
16
 
18
- var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
19
-
20
- var _createClass2 = require('babel-runtime/helpers/createClass');
21
-
22
- var _createClass3 = _interopRequireDefault(_createClass2);
23
-
24
- var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
25
-
26
- var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
27
-
28
- var _inherits2 = require('babel-runtime/helpers/inherits');
29
-
30
- var _inherits3 = _interopRequireDefault(_inherits2);
17
+ var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
31
18
 
32
19
  var _react = require('react');
33
20
 
34
21
  var _react2 = _interopRequireDefault(_react);
35
22
 
36
- var _reactDom = require('react-dom');
37
-
38
- var _core = require('@blueprintjs/core');
23
+ var _ramda = require('ramda');
39
24
 
40
- require('@blueprintjs/core/dist/blueprint.css');
25
+ var R = _interopRequireWildcard(_ramda);
41
26
 
42
- var _ramda = require('ramda');
27
+ var _dotstatsuiteVisions = require('@sis-cc/dotstatsuite-visions');
43
28
 
44
29
  var _ = require('./');
45
30
 
46
31
  var _2 = _interopRequireDefault(_);
47
32
 
48
- var _oecd = require('./mocks/oecd.json');
49
-
50
- var _oecd2 = _interopRequireDefault(_oecd);
51
-
52
- var _oecdTime = require('./mocks/oecd-time.json');
53
-
54
- var _oecdTime2 = _interopRequireDefault(_oecdTime);
55
-
56
- var _menu = require('./app/menu');
33
+ var _data = require('./mocks/data1.json');
57
34
 
58
- var _menu2 = _interopRequireDefault(_menu);
35
+ var _data2 = _interopRequireDefault(_data);
59
36
 
60
- var _viewer = require('./app/viewer1');
37
+ var _data3 = require('./mocks/data2.json');
61
38
 
62
- var _viewer2 = _interopRequireDefault(_viewer);
39
+ var _data4 = _interopRequireDefault(_data3);
63
40
 
64
- var _viewer3 = require('./app/viewer2');
41
+ var _3 = require('../../');
65
42
 
66
- var _viewer4 = _interopRequireDefault(_viewer3);
43
+ 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; } }
67
44
 
68
45
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
69
46
 
70
- var App = function (_Component) {
71
- (0, _inherits3.default)(App, _Component);
72
-
73
- function App(props) {
74
- (0, _classCallCheck3.default)(this, App);
75
-
76
- var _this = (0, _possibleConstructorReturn3.default)(this, (App.__proto__ || (0, _getPrototypeOf2.default)(App)).call(this, props));
77
-
78
- _this.availableDatas = { oecdData: _oecd2.default, oecdTimeData: _oecdTime2.default };
79
-
80
- _this.sources = [{ label: 'oecd', value: 'oecdData', dataflowCode: 'KEI' }, { label: 'oecd quarter', value: 'oecdTimeData', dataflowCode: 'KEI' }];
81
-
82
- _this.chartTypes = [{ label: 'Bar', value: 'BarChart' }, { label: 'Row', value: 'RowChart' }, { label: 'Scatter', value: 'ScatterChart' }, { label: 'Timeline', value: 'TimelineChart' }, { label: 'H Symbol', value: 'HorizontalSymbolChart' }, { label: 'V Symbol', value: 'VerticalSymbolChart' }, { label: 'Stacked Bar', value: 'StackedBarChart' }, { label: 'Non Chart Type', value: 'NonChartType' }];
83
-
84
- _this.viewerOptions = [{ label: 'Old Classic OCC View', value: 'Viewer1' }, { label: 'Alternative Split', value: 'Viewer2' }];
85
-
86
- _this.viewers = {
87
- Viewer1: _viewer2.default,
88
- Viewer2: _viewer4.default
89
- };
90
-
91
- _this.state = {
92
- data: _oecd2.default,
93
- display: 'label',
94
- source: 'oecdData',
95
- type: 'BarChart',
96
- viewer: 'Viewer1'
97
- };
98
-
99
- _this.onChangeData = _this.onChangeData.bind(_this);
100
- _this.onChangeType = _this.onChangeType.bind(_this);
101
- _this.onChangeViewer = _this.onChangeViewer.bind(_this);
102
- _this.onChangeDisplay = _this.onChangeDisplay.bind(_this);
103
- return _this;
47
+ var labels = {
48
+ focus: 'Chart Focus',
49
+ highlight: 'Highlights',
50
+ baseline: 'Baseline',
51
+ select: 'Select',
52
+ size: 'Chart Size',
53
+ width: 'Width',
54
+ height: 'Height',
55
+ series: 'Chart Series',
56
+ scatterDimension: 'Scatter Dimension',
57
+ scatterX: 'Scatter X',
58
+ scatterY: 'Scatter Y',
59
+ symbolDimension: 'Symbol Dimension',
60
+ stackedDimension: 'Stacked Dimension',
61
+ stackedMode: 'Stacked Mode',
62
+ stackedModeOptions: {
63
+ values: 'Values',
64
+ percent: 'Percent'
65
+ },
66
+ axisX: 'Chart X Axis',
67
+ axisY: 'Chart Y Axis',
68
+ max: 'Max',
69
+ min: 'Min',
70
+ pivot: 'Pivot',
71
+ step: 'Step',
72
+ frequency: 'Frequency',
73
+ freqStep: 'Frequency Step',
74
+ logo: 'Remove logo',
75
+ copyright: 'Remove copyright',
76
+ title: 'Title',
77
+ subtitle: 'Subtitle',
78
+ source: 'Source',
79
+ information: 'Information',
80
+ reset: 'reset label',
81
+ uniqFocusOption: 'serie',
82
+ display: 'Display',
83
+ displayOptions: {
84
+ name: 'Name',
85
+ code: 'Code',
86
+ both: 'Both'
104
87
  }
88
+ };
105
89
 
106
- (0, _createClass3.default)(App, [{
107
- key: 'onChangeData',
108
- value: function onChangeData(source) {
109
- this.setState({ data: this.availableDatas[source], source: source });
110
- }
111
- }, {
112
- key: 'onChangeType',
113
- value: function onChangeType(type) {
114
- this.setState({ type: type });
115
- }
116
- }, {
117
- key: 'onChangeViewer',
118
- value: function onChangeViewer(viewer) {
119
- this.setState({ viewer: viewer });
120
- }
121
- }, {
122
- key: 'onChangeDisplay',
123
- value: function onChangeDisplay(display) {
124
- this.setState({ display: display });
125
- }
126
- }, {
127
- key: 'render',
128
- value: function render() {
129
- var _state = this.state,
130
- data = _state.data,
131
- source = _state.source,
132
- type = _state.type,
133
- viewer = _state.viewer,
134
- display = _state.display;
135
-
136
- var displayOptions = [{ label: 'label', value: 'label' }, { label: 'code', value: 'code' }, { label: 'both', value: 'both' }];
137
- var displayProperties = {
138
- display: {
139
- isActive: true,
140
- label: 'Display as',
141
- onChange: this.onChangeDisplay,
142
- options: displayOptions,
143
- value: display
144
- }
145
- };
146
- var dataflowCode = (0, _ramda.prop)('dataflowCode', (0, _ramda.find)((0, _ramda.propEq)('value', this.state.source), this.sources));
147
- var Viewer = this.viewers[viewer];
148
- return _react2.default.createElement(
149
- 'div',
150
- null,
151
- _react2.default.createElement(
152
- 'nav',
153
- { className: 'pt-navbar pt-dark' },
154
- _react2.default.createElement(_menu2.default, {
155
- align: 'left',
156
- items: this.viewerOptions,
157
- onChange: this.onChangeViewer,
158
- selected: viewer
159
- }),
160
- _react2.default.createElement('span', { className: 'pt-navbar-divider' }),
161
- _react2.default.createElement(_menu2.default, {
162
- align: 'right',
163
- items: this.chartTypes,
164
- onChange: this.onChangeType,
165
- selected: type
90
+ var renameKey = R.curry(function (oldKey, newKey, obj) {
91
+ return R.assoc(newKey, R.prop(oldKey, obj), R.dissoc(oldKey, obj));
92
+ });
93
+
94
+ var renameProperties = function renameProperties() {
95
+ var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
96
+ return R.map(R.ifElse(R.pipe(R.prop('id'), R.flip(R.includes)(keys)), renameKey('onChange', 'onSubmit'), R.identity));
97
+ };
98
+
99
+ var propertiesKeys = ['width', 'height', 'freqStep', 'maxX', 'minX', 'pivotX', 'stepX', 'maxY', 'minY', 'pivotY', 'stepY', 'title', 'subtitle', 'source'];
100
+
101
+ var App = function App() {
102
+ var _useState = (0, _react.useState)(true),
103
+ _useState2 = (0, _slicedToArray3.default)(_useState, 2),
104
+ toggle = _useState2[0],
105
+ setToggle = _useState2[1];
106
+
107
+ var dataflow = { id: "DF_KEI_21760", name: "Harmonised Unemployment Rate" };
108
+ var display = 'label';
109
+ var type = 'BarChart';
110
+ var props = { dataflow: dataflow, display: display, type: type };
111
+
112
+ return _react2.default.createElement(
113
+ 'div',
114
+ null,
115
+ _react2.default.createElement(
116
+ 'button',
117
+ { onClick: function onClick() {
118
+ return setToggle(function (prev) {
119
+ return !prev;
120
+ });
121
+ }, style: { marginBottom: '10px' } },
122
+ 'Toggle Selection'
123
+ ),
124
+ _react2.default.createElement(_2.default, (0, _extends3.default)({
125
+ data: toggle ? _data2.default : _data4.default
126
+ }, props, {
127
+ display: display,
128
+ type: type,
129
+ render: function render(_ref) {
130
+ var properties = _ref.properties,
131
+ parsedProps = (0, _objectWithoutProperties3.default)(_ref, ['properties']);
132
+
133
+ return _react2.default.createElement(
134
+ 'div',
135
+ null,
136
+ _react2.default.createElement(_dotstatsuiteVisions.ChartsConfig, {
137
+ properties: R.pipe(renameProperties(propertiesKeys))(properties),
138
+ labels: labels
166
139
  }),
167
- _react2.default.createElement('span', { className: 'pt-navbar-divider' }),
168
- _react2.default.createElement(_menu2.default, {
169
- align: 'right',
170
- iconName: 'import',
171
- items: this.sources,
172
- onChange: this.onChangeData,
173
- selected: source
174
- })
175
- ),
176
- _react2.default.createElement(_2.default, {
177
- data: data,
178
- dataflowCode: dataflowCode,
179
- display: display,
180
- options: { base: { height: 500 } },
181
- type: type,
182
- render: function render(_ref) {
183
- var chartData = _ref.chartData,
184
- chartOptions = _ref.chartOptions,
185
- onChange = _ref.onChange,
186
- properties = _ref.properties;
187
- return _react2.default.createElement(Viewer, {
188
- chartData: chartData,
189
- chartOptions: chartOptions,
190
- onChange: onChange,
191
- properties: (0, _extends3.default)({}, properties, displayProperties),
192
- type: type
193
- });
194
- }
195
- })
196
- );
197
- }
198
- }]);
199
- return App;
200
- }(_react.Component);
201
-
202
- exports.default = App;
203
- ;
140
+ _react2.default.createElement(_3.Viewer, (0, _extends3.default)({}, parsedProps, {
141
+ chartData: R.pick(['series', 'frequency'])(parsedProps.chartData),
142
+ properties: R.tap(console.log)(R.over(R.lensProp('baseline'), R.omit(['onChange']), properties)),
143
+ type: 'BarChart',
144
+ locale: 'en'
145
+ }))
146
+ );
147
+ }
148
+ }))
149
+ );
150
+ };
151
+
152
+ exports.default = App;
@@ -34,6 +34,10 @@ var sampleFilterSeries = function sampleFilterSeries(series) {
34
34
  var lineFilterSeries = R.filter(isFocused);
35
35
 
36
36
  exports.default = function (series, type, options) {
37
+ var responsiveFocusFilter = R.pathOr(true, ['serie', 'responsiveFocusFilter'], options);
38
+ if (!responsiveFocusFilter) {
39
+ return series;
40
+ }
37
41
  var height = R.path(['base', 'height'], options);
38
42
  var width = R.path(['base', 'width'], options);
39
43
  var minWidth = R.path(['base', 'minDisplayWidth'], options);
@@ -53,7 +53,9 @@ var getSymbolSeriesItems = function getSymbolSeriesItems(_ref) {
53
53
  }))(data);
54
54
  };
55
55
 
56
- var getStackedSeriesItems = R.pathOr([], ['options', 'serie', 'stacked', 'layerSeries']);
56
+ var getStackedSeriesItems = R.pipe(R.pathOr([], ['options', 'serie', 'stacked', 'layerSeries']), R.when(function (s) {
57
+ return R.length(s) === 1;
58
+ }, R.always([])));
57
59
 
58
60
  var stackedLayerRenderer = function stackedLayerRenderer(_ref2) {
59
61
  var baseColor = _ref2.baseColor;
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": "8.11.1",
4
+ "version": "8.14.0",
5
5
  "main": "lib/index.js",
6
6
  "author": "OECD",
7
7
  "license": "MIT",
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@react-hook/size": "^2.1.1",
21
- "@sis-cc/dotstatsuite-d3-charts": "^7.2.0",
21
+ "@sis-cc/dotstatsuite-d3-charts": "^7.3.0",
22
22
  "@sis-cc/dotstatsuite-sdmxjs": "^4.5.2",
23
23
  "@sis-cc/dotstatsuite-visions": "^5.15.1",
24
24
  "date-fns": "^1.30.1",
package/src/app.js CHANGED
@@ -1,13 +1,18 @@
1
1
  import React from 'react';
2
2
  import { render } from 'react-dom';
3
- //import RulesDriverApp from './rules-driver/src/app';
3
+ import RulesDriverApp from './rules-driver/src/app';
4
4
  import ViewerApp from './viewer/src/app';
5
+ import { sisccTheme } from '@sis-cc/dotstatsuite-visions';
6
+ import { ThemeProvider } from '@material-ui/core/styles';
7
+ import { createMuiTheme } from '@material-ui/core/styles';
8
+
9
+ const theme = createMuiTheme(sisccTheme({ rtl: 'ltr' }));
5
10
 
6
11
  const App = () => (
7
- <React.Fragment>
8
- {/*<RulesDriverApp />*/}
9
- <ViewerApp />
10
- </React.Fragment>
12
+ <ThemeProvider theme={theme}>
13
+ <RulesDriverApp />
14
+ {/* <ViewerApp /> */}
15
+ </ThemeProvider>
11
16
  );
12
17
 
13
18
  render(<App />, document.getElementById('root'));
@@ -80,6 +80,7 @@ export const getChartOptions = (data, type, options, tooltipFonts, timeFormats,
80
80
  R.mergeRight({ intBoundariesColor: '#8EA4B1' })
81
81
  )(options),
82
82
  serie: {
83
+ ...R.propOr({}, 'serie', options),
83
84
  annotation: getAnnotationOptions(type, options),
84
85
  choropleth: R.pipe(
85
86
  R.pathOr({}, ['serie', 'choropleth']),
@@ -1,20 +1,24 @@
1
- import { get, head, find, isNil } from 'lodash';
1
+ import * as R from 'ramda';
2
2
  import { getRefAreaDimension, getTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';
3
3
 
4
4
  export default (dimensions, singularity) => {
5
- const mode = get(singularity, 'mode') === 'percent' ? 'percent' : 'values';
5
+ const { value, values } = dimensions;
6
+ const mode = R.prop('mode', singularity) === 'percent' ? 'percent' : 'values';
7
+ if (R.length(values) === 1) {
8
+ return ({ mode, id: R.pathOr(null, [0, 'id'], value) });
9
+ }
6
10
  let serieDimension = null;
7
- const id = get(singularity, 'id');
8
- if (!isNil(id)) {
9
- serieDimension = find(dimensions, { id });
11
+ const id = R.prop('id', singularity);
12
+ if (!R.isNil(id)) {
13
+ serieDimension = R.find(R.propEq('id', id), values);
10
14
  }
11
- const areaDimension = getRefAreaDimension({ dimensions });
12
- const timeDimension = getTimePeriodDimension({ dimensions });
15
+ const areaDimension = getRefAreaDimension({ dimensions: values });
16
+ const timeDimension = getTimePeriodDimension({ dimensions: values });
13
17
 
14
- serieDimension = serieDimension || areaDimension || timeDimension || head(dimensions);
18
+ serieDimension = serieDimension || areaDimension || timeDimension || R.head(values);
15
19
 
16
20
  return ({
17
- mode: mode,
18
- id: get(serieDimension, 'id', null)
21
+ mode,
22
+ id: R.propOr(null, 'id', serieDimension)
19
23
  });
20
24
  }