@sis-cc/dotstatsuite-components 8.12.0 → 8.13.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/factories/stacked-dimension.js +17 -23
- package/lib/rules/src/factories/stacked-series.js +82 -158
- package/lib/rules/src/index.js +3 -6
- package/lib/rules/src/properties/index.js +1 -1
- package/lib/rules/src/properties/stacked.js +35 -11
- package/lib/rules/src/properties/utils.js +7 -1
- package/lib/viewer/src/legends/SeriesLegend.js +3 -1
- package/package.json +1 -1
- package/src/rules/src/factories/stacked-dimension.js +14 -10
- package/src/rules/src/factories/stacked-series.js +102 -94
- package/src/rules/src/index.js +1 -2
- package/src/rules/src/properties/index.js +2 -1
- package/src/rules/src/properties/stacked.js +23 -7
- package/src/rules/src/properties/utils.js +8 -3
- package/src/viewer/src/legends/SeriesLegend.js +4 -1
|
@@ -4,40 +4,34 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _ramda = require('ramda');
|
|
8
8
|
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
var _find2 = require('lodash/find');
|
|
12
|
-
|
|
13
|
-
var _find3 = _interopRequireDefault(_find2);
|
|
14
|
-
|
|
15
|
-
var _head2 = require('lodash/head');
|
|
16
|
-
|
|
17
|
-
var _head3 = _interopRequireDefault(_head2);
|
|
18
|
-
|
|
19
|
-
var _get2 = require('lodash/get');
|
|
20
|
-
|
|
21
|
-
var _get3 = _interopRequireDefault(_get2);
|
|
9
|
+
var R = _interopRequireWildcard(_ramda);
|
|
22
10
|
|
|
23
11
|
var _dotstatsuiteSdmxjs = require('@sis-cc/dotstatsuite-sdmxjs');
|
|
24
12
|
|
|
25
|
-
function
|
|
13
|
+
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; } }
|
|
26
14
|
|
|
27
15
|
exports.default = function (dimensions, singularity) {
|
|
28
|
-
var
|
|
16
|
+
var value = dimensions.value,
|
|
17
|
+
values = dimensions.values;
|
|
18
|
+
|
|
19
|
+
var mode = R.prop('mode', singularity) === 'percent' ? 'percent' : 'values';
|
|
20
|
+
if (R.length(values) === 1) {
|
|
21
|
+
return { mode: mode, id: R.pathOr(null, [0, 'id'], value) };
|
|
22
|
+
}
|
|
29
23
|
var serieDimension = null;
|
|
30
|
-
var id =
|
|
31
|
-
if (!
|
|
32
|
-
serieDimension = (
|
|
24
|
+
var id = R.prop('id', singularity);
|
|
25
|
+
if (!R.isNil(id)) {
|
|
26
|
+
serieDimension = R.find(R.propEq('id', id), values);
|
|
33
27
|
}
|
|
34
|
-
var areaDimension = (0, _dotstatsuiteSdmxjs.getRefAreaDimension)({ dimensions:
|
|
35
|
-
var timeDimension = (0, _dotstatsuiteSdmxjs.getTimePeriodDimension)({ dimensions:
|
|
28
|
+
var areaDimension = (0, _dotstatsuiteSdmxjs.getRefAreaDimension)({ dimensions: values });
|
|
29
|
+
var timeDimension = (0, _dotstatsuiteSdmxjs.getTimePeriodDimension)({ dimensions: values });
|
|
36
30
|
|
|
37
|
-
serieDimension = serieDimension || areaDimension || timeDimension ||
|
|
31
|
+
serieDimension = serieDimension || areaDimension || timeDimension || R.head(values);
|
|
38
32
|
|
|
39
33
|
return {
|
|
40
34
|
mode: mode,
|
|
41
|
-
id:
|
|
35
|
+
id: R.propOr(null, 'id', serieDimension)
|
|
42
36
|
};
|
|
43
37
|
};
|
|
@@ -4,69 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _extends2 = require('babel-runtime/helpers/extends');
|
|
8
8
|
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
var _extends3 = require('babel-runtime/helpers/extends');
|
|
12
|
-
|
|
13
|
-
var _extends4 = _interopRequireDefault(_extends3);
|
|
14
|
-
|
|
15
|
-
var _take2 = require('lodash/take');
|
|
16
|
-
|
|
17
|
-
var _take3 = _interopRequireDefault(_take2);
|
|
18
|
-
|
|
19
|
-
var _sumBy2 = require('lodash/sumBy');
|
|
20
|
-
|
|
21
|
-
var _sumBy3 = _interopRequireDefault(_sumBy2);
|
|
22
|
-
|
|
23
|
-
var _sortBy2 = require('lodash/sortBy');
|
|
24
|
-
|
|
25
|
-
var _sortBy3 = _interopRequireDefault(_sortBy2);
|
|
26
|
-
|
|
27
|
-
var _split2 = require('lodash/split');
|
|
28
|
-
|
|
29
|
-
var _split3 = _interopRequireDefault(_split2);
|
|
30
|
-
|
|
31
|
-
var _reduce2 = require('lodash/reduce');
|
|
32
|
-
|
|
33
|
-
var _reduce3 = _interopRequireDefault(_reduce2);
|
|
34
|
-
|
|
35
|
-
var _map2 = require('lodash/map');
|
|
36
|
-
|
|
37
|
-
var _map3 = _interopRequireDefault(_map2);
|
|
38
|
-
|
|
39
|
-
var _keyBy2 = require('lodash/keyBy');
|
|
40
|
-
|
|
41
|
-
var _keyBy3 = _interopRequireDefault(_keyBy2);
|
|
42
|
-
|
|
43
|
-
var _join2 = require('lodash/join');
|
|
44
|
-
|
|
45
|
-
var _join3 = _interopRequireDefault(_join2);
|
|
46
|
-
|
|
47
|
-
var _isUndefined2 = require('lodash/isUndefined');
|
|
48
|
-
|
|
49
|
-
var _isUndefined3 = _interopRequireDefault(_isUndefined2);
|
|
50
|
-
|
|
51
|
-
var _head2 = require('lodash/head');
|
|
52
|
-
|
|
53
|
-
var _head3 = _interopRequireDefault(_head2);
|
|
54
|
-
|
|
55
|
-
var _has2 = require('lodash/has');
|
|
56
|
-
|
|
57
|
-
var _has3 = _interopRequireDefault(_has2);
|
|
58
|
-
|
|
59
|
-
var _groupBy2 = require('lodash/groupBy');
|
|
60
|
-
|
|
61
|
-
var _groupBy3 = _interopRequireDefault(_groupBy2);
|
|
62
|
-
|
|
63
|
-
var _get2 = require('lodash/get');
|
|
64
|
-
|
|
65
|
-
var _get3 = _interopRequireDefault(_get2);
|
|
66
|
-
|
|
67
|
-
var _find2 = require('lodash/find');
|
|
68
|
-
|
|
69
|
-
var _find3 = _interopRequireDefault(_find2);
|
|
9
|
+
var _extends3 = _interopRequireDefault(_extends2);
|
|
70
10
|
|
|
71
11
|
var _dotstatsuiteSdmxjs = require('@sis-cc/dotstatsuite-sdmxjs');
|
|
72
12
|
|
|
@@ -74,137 +14,121 @@ var _dimensionUtils = require('../dimension-utils');
|
|
|
74
14
|
|
|
75
15
|
var _observationFormater = require('../observation-formater');
|
|
76
16
|
|
|
17
|
+
var _ramda = require('ramda');
|
|
18
|
+
|
|
19
|
+
var R = _interopRequireWildcard(_ramda);
|
|
20
|
+
|
|
21
|
+
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; } }
|
|
22
|
+
|
|
77
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
78
24
|
|
|
79
25
|
var flatDatapoints = function flatDatapoints(observations, dimensions, dimensionsWithValuesIndexedById, serieDimensionId, display, formaterAttrs) {
|
|
80
|
-
|
|
26
|
+
|
|
27
|
+
var datapoints = R.mapObjIndexed(function (observationValue, observationKey) {
|
|
81
28
|
var x = null;
|
|
82
|
-
var y = Number(
|
|
29
|
+
var y = Number(R.head(observationValue));
|
|
83
30
|
var formater = (0, _observationFormater.getObservationFormater)(observationValue, formaterAttrs);
|
|
84
|
-
var splittedKey =
|
|
31
|
+
var splittedKey = R.split(':', observationKey);
|
|
85
32
|
var layerKey = [];
|
|
86
|
-
var layerDimensions = (
|
|
87
|
-
var dimension = (
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
33
|
+
var layerDimensions = R.addIndex(R.reduce)(function (memo, dimensionValueIndex, dimensionIndex) {
|
|
34
|
+
var dimension = R.nth(dimensionIndex, dimensions);
|
|
35
|
+
var _dimensionValue = R.pathOr({}, ['values', Number(dimensionValueIndex)], dimension);
|
|
36
|
+
var label = (0, _dimensionUtils.dimensionValueDisplay)(display)(_dimensionValue);
|
|
37
|
+
var dimensionValue = (0, _extends3.default)({}, _dimensionValue, {
|
|
38
|
+
index: Number(dimensionValueIndex),
|
|
39
|
+
label: label
|
|
40
|
+
});
|
|
41
|
+
if (dimension.id === serieDimensionId) {
|
|
42
|
+
x = dimensionValue;
|
|
43
|
+
} else if (R.has(dimension.id, dimensionsWithValuesIndexedById)) {
|
|
44
|
+
memo.push(dimensionValue);
|
|
45
|
+
layerKey.push(dimensionValueIndex);
|
|
99
46
|
}
|
|
100
47
|
return memo;
|
|
101
|
-
}, []);
|
|
102
|
-
return { formater: formater, x: x, y: y, layerDimensions: layerDimensions, layerKey:
|
|
103
|
-
});
|
|
48
|
+
}, [], splittedKey);
|
|
49
|
+
return { formater: formater, x: x, y: y, layerDimensions: layerDimensions, layerKey: R.join(':', layerKey) };
|
|
50
|
+
}, observations);
|
|
51
|
+
|
|
52
|
+
return R.values(datapoints);
|
|
104
53
|
};
|
|
105
54
|
|
|
106
55
|
var serie = function serie(observations, dimensions, dimensionsWithValuesIndexedById, serieDimensionId, display, formaterAttrs) {
|
|
107
|
-
var serieDimension = (
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if ((0, _isUndefined3.default)(serieDimension)) {
|
|
111
|
-
return [];
|
|
56
|
+
var serieDimension = R.find(R.propEq('id', serieDimensionId), dimensions);
|
|
57
|
+
if (R.isNil(serieDimension)) {
|
|
58
|
+
return { datapoints: [], layerSeries: [] };
|
|
112
59
|
}
|
|
113
60
|
var _flatDatapoints = flatDatapoints(observations, dimensions, dimensionsWithValuesIndexedById, serieDimensionId, display, formaterAttrs);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
var layerFullSeries =
|
|
118
|
-
return {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
var
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
});
|
|
127
|
-
return (0, _extends4.default)({}, memo, (0, _defineProperty3.default)({}, '' + key, dps));
|
|
128
|
-
}, {}); // { [layeredKey]: { [x.id]: dp } }
|
|
129
|
-
var datapoints = (0, _map3.default)(serieDimension.values, function (serieValue, index) {
|
|
61
|
+
|
|
62
|
+
var layeredDatapoints = R.groupBy(R.prop('layerKey'), _flatDatapoints); // { [layeredKey]: [dps] }
|
|
63
|
+
|
|
64
|
+
var layerFullSeries = R.map(function (datapoints) {
|
|
65
|
+
return {
|
|
66
|
+
layerDimensions: R.prop('layerDimensions', R.head(datapoints)),
|
|
67
|
+
layerKey: R.prop('layerKey', R.head(datapoints))
|
|
68
|
+
};
|
|
69
|
+
}, R.values(layeredDatapoints)); // [{ layerDimensions, layerKey }]
|
|
70
|
+
var layerSeries = R.take(5, R.sortBy(R.prop('layerKey'), layerFullSeries));
|
|
71
|
+
var layeredDatapointsKeyedByX = R.mapObjIndexed(R.indexBy(R.path(['x', 'id'])), layeredDatapoints); // { [layeredKey]: { [x.id]: dp } }
|
|
72
|
+
var datapoints = R.addIndex(R.map)(function (serieValue, index) {
|
|
130
73
|
var serieValueId = serieValue.id;
|
|
131
74
|
var x = (0, _dimensionUtils.dimensionValueDisplay)(display)(serieValue);
|
|
132
|
-
var y =
|
|
75
|
+
var y = R.map(function (_ref) {
|
|
133
76
|
var layerKey = _ref.layerKey;
|
|
134
|
-
return
|
|
135
|
-
});
|
|
136
|
-
var formaters =
|
|
77
|
+
return R.pathOr(null, [layerKey, serieValueId, 'y'], layeredDatapointsKeyedByX);
|
|
78
|
+
}, layerSeries);
|
|
79
|
+
var formaters = R.map(function (_ref2) {
|
|
137
80
|
var layerKey = _ref2.layerKey;
|
|
138
|
-
return
|
|
139
|
-
});
|
|
81
|
+
return R.pathOr(null, [layerKey, serieValueId, 'formater'], layeredDatapointsKeyedByX);
|
|
82
|
+
}, layerSeries);
|
|
140
83
|
return { category: x, formaters: formaters, index: index, x: x, y: y, key: serieValueId };
|
|
141
|
-
});
|
|
84
|
+
}, serieDimension.values);
|
|
85
|
+
var _datapoints = R.when(R.pipe(R.length, R.equals(1)), R.pipe(R.set(R.lensPath([0, 'category']), ''), R.set(R.lensPath([0, 'x']), '')), datapoints);
|
|
142
86
|
return {
|
|
143
|
-
datapoints:
|
|
144
|
-
layerSeries:
|
|
87
|
+
datapoints: _datapoints,
|
|
88
|
+
layerSeries: R.map(function (layer) {
|
|
145
89
|
return {
|
|
146
|
-
id: (
|
|
147
|
-
|
|
148
|
-
}), ' - '),
|
|
149
|
-
label: (0, _join3.default)((0, _map3.default)(layer.layerDimensions, function (l) {
|
|
150
|
-
return l.label;
|
|
151
|
-
}), ' - ')
|
|
90
|
+
id: R.pipe(R.prop('layerDimensions'), R.pluck('id'), R.join(' - '))(layer),
|
|
91
|
+
label: R.pipe(R.prop('layerDimensions'), R.pluck('label'), R.join(' - '))(layer)
|
|
152
92
|
};
|
|
153
|
-
})
|
|
93
|
+
}, layerSeries)
|
|
154
94
|
};
|
|
155
95
|
};
|
|
156
96
|
|
|
157
|
-
var percentSerie = function
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
formaters: null
|
|
172
|
-
});
|
|
173
|
-
})
|
|
174
|
-
}];
|
|
175
|
-
};
|
|
97
|
+
var percentSerie = R.pipe(R.over(R.lensProp('datapoints'), R.map(function (dp) {
|
|
98
|
+
var total = R.pipe(R.map(function (v) {
|
|
99
|
+
return Math.abs(v);
|
|
100
|
+
}), R.sum)(dp.y);
|
|
101
|
+
if (!total) {
|
|
102
|
+
return dp;
|
|
103
|
+
}
|
|
104
|
+
return (0, _extends3.default)({}, dp, {
|
|
105
|
+
y: R.map(function (v) {
|
|
106
|
+
return Math.abs(v) / total * 100;
|
|
107
|
+
}, dp.y),
|
|
108
|
+
formaters: null
|
|
109
|
+
});
|
|
110
|
+
})), R.of);
|
|
176
111
|
|
|
177
|
-
var serieSortedByTotal = function
|
|
178
|
-
return
|
|
179
|
-
|
|
180
|
-
datapoints: (0, _sortBy3.default)(serie.datapoints, function (dp) {
|
|
181
|
-
return (0, _sumBy3.default)(dp.y, function (val) {
|
|
182
|
-
return val > 0 ? -1 * val : 0;
|
|
183
|
-
});
|
|
184
|
-
})
|
|
185
|
-
}];
|
|
186
|
-
};
|
|
112
|
+
var serieSortedByTotal = R.pipe(R.over(R.lensProp('datapoints'), R.sortBy(R.pipe(R.prop('y'), R.map(function (v) {
|
|
113
|
+
return v > 0 ? R.negate(v) : 0;
|
|
114
|
+
}), R.sum))), R.of);
|
|
187
115
|
|
|
188
|
-
var serieSortedByDataOrder =
|
|
189
|
-
return [{ //to robustize with date generation, as in timeline series
|
|
190
|
-
layerSeries: serie.layerSeries,
|
|
191
|
-
datapoints: (0, _sortBy3.default)(serie.datapoints, function (dp) {
|
|
192
|
-
return dp.index;
|
|
193
|
-
})
|
|
194
|
-
}];
|
|
195
|
-
};
|
|
116
|
+
var serieSortedByDataOrder = R.pipe(R.over(R.lensProp('datapoints'), R.sortBy(R.prop('index'))), R.of);
|
|
196
117
|
|
|
197
118
|
exports.default = function (_ref3, dimensionsWithValuesIndexedById, singularity, display, formaterAttrs) {
|
|
198
119
|
var observations = _ref3.observations,
|
|
199
120
|
dimensions = _ref3.dimensions;
|
|
200
121
|
|
|
201
|
-
var mode =
|
|
202
|
-
var serieDimensionId =
|
|
122
|
+
var mode = R.propOr('values', 'mode', singularity);
|
|
123
|
+
var serieDimensionId = R.propOr(null, 'id', singularity);
|
|
203
124
|
var _serie = serie(observations, dimensions, dimensionsWithValuesIndexedById, serieDimensionId, display, formaterAttrs);
|
|
204
125
|
if (mode === 'percent') {
|
|
205
126
|
return percentSerie(_serie);
|
|
206
127
|
} else if ((0, _dotstatsuiteSdmxjs.isTimePeriodDimension)({ id: serieDimensionId })) {
|
|
207
128
|
return serieSortedByDataOrder(_serie);
|
|
208
129
|
}
|
|
209
|
-
|
|
130
|
+
//console.log('raw serie', _serie);
|
|
131
|
+
var res = serieSortedByTotal(_serie);
|
|
132
|
+
//console.log('serie', res);
|
|
133
|
+
return res;
|
|
210
134
|
};
|
package/lib/rules/src/index.js
CHANGED
|
@@ -482,10 +482,7 @@ var _symbolDimension = function _symbolDimension(data, ids) {
|
|
|
482
482
|
var symbolDimension = exports.symbolDimension = (0, _memoizee2.default)(_symbolDimension);
|
|
483
483
|
|
|
484
484
|
var _stackedDimension = function _stackedDimension(data, singularity) {
|
|
485
|
-
|
|
486
|
-
values = _splitDimensions4.values;
|
|
487
|
-
|
|
488
|
-
return (0, _stackedDimension3.default)(values, singularity);
|
|
485
|
+
return (0, _stackedDimension3.default)(splitDimensions(data), singularity);
|
|
489
486
|
};
|
|
490
487
|
var stackedDimension = exports.stackedDimension = (0, _memoizee2.default)(_stackedDimension);
|
|
491
488
|
|
|
@@ -618,8 +615,8 @@ var parseFocus = exports.parseFocus = (0, _memoizee2.default)(_parseFocus);
|
|
|
618
615
|
var _defaultSubtitle = function _defaultSubtitle(data, display) {
|
|
619
616
|
var REJECTED_SUBTITLE_IDS = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _constants.DEFAULT_REJECTED_SUBTITLE_IDS;
|
|
620
617
|
|
|
621
|
-
var
|
|
622
|
-
value =
|
|
618
|
+
var _splitDimensions4 = splitDimensions(data),
|
|
619
|
+
value = _splitDimensions4.value;
|
|
623
620
|
|
|
624
621
|
var values = (0, _reduce3.default)(R.reject(R.prop('isHidden'))(value), function (memo, d) {
|
|
625
622
|
var dvId = (0, _get3.default)(d, 'values[0].id');
|
|
@@ -375,7 +375,7 @@ var toProperties = exports.toProperties = function toProperties(props, state, _o
|
|
|
375
375
|
},
|
|
376
376
|
stackedDimension: {
|
|
377
377
|
id: 'stackedDimension',
|
|
378
|
-
isActive: (0, _stacked.
|
|
378
|
+
isActive: (0, _stacked.isStackedDimActive)(props),
|
|
379
379
|
options: (0, _utils.chartDimensionOptions)(props, _stacked.isStacked),
|
|
380
380
|
onChange: R.pipe(_utils.optionParser, (0, _stacked.onChangeStackedDimension)(props, state), _onChange),
|
|
381
381
|
value: (0, _utils.chartDimensionToOption)('stackedDimension')(props, state)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.stackedStateFromNewProps = exports.onChangeStackedMode = exports.stackedModeOptions = exports.onChangeStackedDimension = exports.toStackedSingularity = exports.isStacked = undefined;
|
|
6
|
+
exports.stackedStateFromNewProps = exports.onChangeStackedMode = exports.isStackedDimActive = exports.stackedModeOptions = exports.onChangeStackedDimension = exports.toStackedSingularity = exports.isStacked = undefined;
|
|
7
7
|
|
|
8
8
|
var _extends2 = require('babel-runtime/helpers/extends');
|
|
9
9
|
|
|
@@ -23,6 +23,8 @@ var _constants = require('../constants');
|
|
|
23
23
|
|
|
24
24
|
var _utils = require('./utils');
|
|
25
25
|
|
|
26
|
+
var _ = require('../');
|
|
27
|
+
|
|
26
28
|
var _focus = require('./focus');
|
|
27
29
|
|
|
28
30
|
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; } }
|
|
@@ -68,6 +70,20 @@ var onChangeStackedDimension = exports.onChangeStackedDimension = function onCha
|
|
|
68
70
|
|
|
69
71
|
var stackedModeOptions = exports.stackedModeOptions = [{ value: _constants.VALUES }, { value: _constants.PERCENT }];
|
|
70
72
|
|
|
73
|
+
var isStackedDimActive = exports.isStackedDimActive = function isStackedDimActive(_ref2) {
|
|
74
|
+
var data = _ref2.data,
|
|
75
|
+
type = _ref2.type;
|
|
76
|
+
|
|
77
|
+
var _splitDimensions = (0, _.splitDimensions)(data),
|
|
78
|
+
values = _splitDimensions.values;
|
|
79
|
+
|
|
80
|
+
if (R.length(values) < 2) {
|
|
81
|
+
console.log('niet');
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
return isStacked(type);
|
|
85
|
+
};
|
|
86
|
+
|
|
71
87
|
var onChangeStackedMode = exports.onChangeStackedMode = function onChangeStackedMode(value) {
|
|
72
88
|
return R.has(value, stackedModes) ? { stackedMode: value } : {};
|
|
73
89
|
};
|
|
@@ -86,17 +102,25 @@ var stackedStateFromNewProps = exports.stackedStateFromNewProps = function stack
|
|
|
86
102
|
|
|
87
103
|
var dimension = getStackedDimension(data, state);
|
|
88
104
|
if (R.isNil(dimension)) {
|
|
89
|
-
var
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
dimension = R.head(area);
|
|
96
|
-
} else if (!R.isNil(time) && !R.isEmpty(time)) {
|
|
97
|
-
dimension = R.head(time);
|
|
105
|
+
var _splitDimensions2 = (0, _.splitDimensions)(data),
|
|
106
|
+
value = _splitDimensions2.value,
|
|
107
|
+
values = _splitDimensions2.values;
|
|
108
|
+
|
|
109
|
+
if (R.length(values) === 1) {
|
|
110
|
+
dimension = R.head(value);
|
|
98
111
|
} else {
|
|
99
|
-
|
|
112
|
+
var _getGroupedDimensions = (0, _utils.getGroupedDimensions)(data),
|
|
113
|
+
area = _getGroupedDimensions.area,
|
|
114
|
+
time = _getGroupedDimensions.time,
|
|
115
|
+
other = _getGroupedDimensions.other;
|
|
116
|
+
|
|
117
|
+
if (!R.isNil(area) && !R.isEmpty(area)) {
|
|
118
|
+
dimension = R.head(area);
|
|
119
|
+
} else if (!R.isNil(time) && !R.isEmpty(time)) {
|
|
120
|
+
dimension = R.head(time);
|
|
121
|
+
} else {
|
|
122
|
+
dimension = R.head(other);
|
|
123
|
+
}
|
|
100
124
|
}
|
|
101
125
|
}
|
|
102
126
|
var _mode = R.prop('stackedMode', state);
|
|
@@ -51,7 +51,10 @@ var toState = exports.toState = function toState(artefact) {
|
|
|
51
51
|
var getPropertyDimension = exports.getPropertyDimension = function getPropertyDimension(property) {
|
|
52
52
|
return function (data, state) {
|
|
53
53
|
var statePropertyDimensionId = (0, _ramda.prop)(property, state);
|
|
54
|
-
|
|
54
|
+
|
|
55
|
+
var _extractSdmxArtefacts = (0, _.extractSdmxArtefacts)(data),
|
|
56
|
+
dimensions = _extractSdmxArtefacts.dimensions;
|
|
57
|
+
|
|
55
58
|
return (0, _ramda.find)((0, _ramda.propEq)('id', statePropertyDimensionId), dimensions);
|
|
56
59
|
};
|
|
57
60
|
};
|
|
@@ -116,5 +119,8 @@ var chartDimensionOptions = exports.chartDimensionOptions = function chartDimens
|
|
|
116
119
|
return [];
|
|
117
120
|
}
|
|
118
121
|
var dimensions = (0, _ramda.prop)('values', (0, _.splitDimensions)(data));
|
|
122
|
+
if ((0, _ramda.equals)(type, _constants.STACKED) && (0, _ramda.length)(dimensions) === 1) {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
119
125
|
return (0, _ramda.map)(artefactToOption(display), dimensions);
|
|
120
126
|
};
|
|
@@ -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,20 +1,24 @@
|
|
|
1
|
-
import
|
|
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
|
|
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 =
|
|
8
|
-
if (!isNil(id)) {
|
|
9
|
-
serieDimension = find(
|
|
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(
|
|
18
|
+
serieDimension = serieDimension || areaDimension || timeDimension || R.head(values);
|
|
15
19
|
|
|
16
20
|
return ({
|
|
17
|
-
mode
|
|
18
|
-
id:
|
|
21
|
+
mode,
|
|
22
|
+
id: R.propOr(null, 'id', serieDimension)
|
|
19
23
|
});
|
|
20
24
|
}
|
|
@@ -1,139 +1,144 @@
|
|
|
1
|
-
import { find, get, groupBy, has, head, isUndefined, join, keyBy, map, reduce, split, sortBy, sumBy, take } from 'lodash';
|
|
2
1
|
import { isTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';
|
|
3
2
|
import { dimensionValueDisplay } from '../dimension-utils';
|
|
4
3
|
import { getObservationFormater } from '../observation-formater';
|
|
4
|
+
import * as R from 'ramda';
|
|
5
5
|
|
|
6
6
|
const flatDatapoints = (observations, dimensions, dimensionsWithValuesIndexedById, serieDimensionId, display, formaterAttrs) => {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
|
|
8
|
+
const datapoints = R.mapObjIndexed(
|
|
9
9
|
(observationValue, observationKey) => {
|
|
10
10
|
let x = null;
|
|
11
|
-
const y = Number(head(observationValue));
|
|
11
|
+
const y = Number(R.head(observationValue));
|
|
12
12
|
const formater = getObservationFormater(observationValue, formaterAttrs);
|
|
13
|
-
const splittedKey = split(
|
|
13
|
+
const splittedKey = R.split(':', observationKey);
|
|
14
14
|
let layerKey = [];
|
|
15
|
-
const layerDimensions = reduce(
|
|
16
|
-
splittedKey,
|
|
15
|
+
const layerDimensions = R.addIndex(R.reduce)(
|
|
17
16
|
(memo, dimensionValueIndex, dimensionIndex) => {
|
|
18
|
-
const dimension =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
17
|
+
const dimension = R.nth(dimensionIndex, dimensions);
|
|
18
|
+
const _dimensionValue = R.pathOr({}, ['values', Number(dimensionValueIndex)], dimension);
|
|
19
|
+
const label = dimensionValueDisplay(display)(_dimensionValue);
|
|
20
|
+
const dimensionValue = {
|
|
21
|
+
..._dimensionValue,
|
|
22
|
+
index: Number(dimensionValueIndex),
|
|
23
|
+
label
|
|
24
|
+
};
|
|
25
|
+
if (dimension.id === serieDimensionId) {
|
|
26
|
+
x = dimensionValue;
|
|
27
|
+
}
|
|
28
|
+
else if (R.has(dimension.id, dimensionsWithValuesIndexedById)) {
|
|
29
|
+
memo.push(dimensionValue);
|
|
30
|
+
layerKey.push(dimensionValueIndex);
|
|
32
31
|
}
|
|
33
32
|
return memo;
|
|
34
33
|
},
|
|
35
|
-
[]
|
|
34
|
+
[],
|
|
35
|
+
splittedKey
|
|
36
36
|
);
|
|
37
|
-
return ({ formater, x, y, layerDimensions, layerKey: join(
|
|
38
|
-
}
|
|
37
|
+
return ({ formater, x, y, layerDimensions, layerKey: R.join(':', layerKey) });
|
|
38
|
+
},
|
|
39
|
+
observations
|
|
39
40
|
);
|
|
41
|
+
|
|
42
|
+
return R.values(datapoints);
|
|
40
43
|
};
|
|
41
44
|
|
|
42
45
|
const serie = (observations, dimensions, dimensionsWithValuesIndexedById, serieDimensionId, display, formaterAttrs) => {
|
|
43
|
-
const serieDimension = find(
|
|
44
|
-
if (
|
|
45
|
-
return [];
|
|
46
|
+
const serieDimension = R.find(R.propEq('id', serieDimensionId), dimensions);
|
|
47
|
+
if (R.isNil(serieDimension)) {
|
|
48
|
+
return { datapoints: [], layerSeries: [] };
|
|
46
49
|
}
|
|
47
50
|
const _flatDatapoints = flatDatapoints(observations, dimensions, dimensionsWithValuesIndexedById, serieDimensionId, display, formaterAttrs);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
|
|
52
|
+
const layeredDatapoints = R.groupBy(
|
|
53
|
+
R.prop('layerKey'),
|
|
54
|
+
_flatDatapoints
|
|
51
55
|
); // { [layeredKey]: [dps] }
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
|
|
57
|
+
const layerFullSeries = R.map(
|
|
58
|
+
datapoints => ({
|
|
59
|
+
layerDimensions: R.prop('layerDimensions', R.head(datapoints)),
|
|
60
|
+
layerKey: R.prop('layerKey', R.head(datapoints))
|
|
61
|
+
}),
|
|
62
|
+
R.values(layeredDatapoints)
|
|
55
63
|
); // [{ layerDimensions, layerKey }]
|
|
56
|
-
const layerSeries = take(
|
|
57
|
-
const layeredDatapointsKeyedByX =
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const dps = keyBy(layerDps, dp => get(dp, 'x.id', ''));
|
|
61
|
-
return ({
|
|
62
|
-
...memo,
|
|
63
|
-
[`${key}`]: dps
|
|
64
|
-
});
|
|
65
|
-
},
|
|
66
|
-
{}
|
|
64
|
+
const layerSeries = R.take(5, R.sortBy(R.prop('layerKey'), layerFullSeries));
|
|
65
|
+
const layeredDatapointsKeyedByX = R.mapObjIndexed(
|
|
66
|
+
R.indexBy(R.path(['x', 'id'])),
|
|
67
|
+
layeredDatapoints
|
|
67
68
|
); // { [layeredKey]: { [x.id]: dp } }
|
|
68
|
-
const datapoints = map(
|
|
69
|
-
serieDimension.values,
|
|
69
|
+
const datapoints = R.addIndex(R.map)(
|
|
70
70
|
(serieValue, index) => {
|
|
71
71
|
const serieValueId = serieValue.id;
|
|
72
72
|
const x = dimensionValueDisplay(display)(serieValue);
|
|
73
|
-
const y = map(
|
|
73
|
+
const y = R.map(
|
|
74
|
+
({ layerKey }) => R.pathOr(null, [layerKey, serieValueId, 'y'], layeredDatapointsKeyedByX),
|
|
74
75
|
layerSeries,
|
|
75
|
-
({ layerKey }) => get(layeredDatapointsKeyedByX, `${layerKey}.${serieValueId}.y`, null)
|
|
76
76
|
);
|
|
77
|
-
const formaters = map(
|
|
77
|
+
const formaters = R.map(
|
|
78
|
+
({ layerKey }) => R.pathOr(null, [layerKey, serieValueId, 'formater'], layeredDatapointsKeyedByX),
|
|
78
79
|
layerSeries,
|
|
79
|
-
({ layerKey }) => get(layeredDatapointsKeyedByX, `${layerKey}.${serieValueId}.formater`, null)
|
|
80
80
|
);
|
|
81
81
|
return ({ category: x, formaters, index, x, y, key: serieValueId });
|
|
82
|
-
}
|
|
82
|
+
},
|
|
83
|
+
serieDimension.values,
|
|
84
|
+
);
|
|
85
|
+
const _datapoints = R.when(
|
|
86
|
+
R.pipe(R.length, R.equals(1)),
|
|
87
|
+
R.pipe(
|
|
88
|
+
R.set(R.lensPath([0, 'category']), ''),
|
|
89
|
+
R.set(R.lensPath([0, 'x']), ''),
|
|
90
|
+
),
|
|
91
|
+
datapoints
|
|
83
92
|
);
|
|
84
93
|
return ({
|
|
85
|
-
datapoints,
|
|
86
|
-
layerSeries: map(
|
|
87
|
-
layerSeries,
|
|
94
|
+
datapoints: _datapoints,
|
|
95
|
+
layerSeries: R.map(
|
|
88
96
|
layer => ({
|
|
89
|
-
id:
|
|
90
|
-
label:
|
|
91
|
-
})
|
|
97
|
+
id: R.pipe(R.prop('layerDimensions'), R.pluck('id'), R.join(' - '))(layer),
|
|
98
|
+
label: R.pipe(R.prop('layerDimensions'), R.pluck('label'), R.join(' - '))(layer),
|
|
99
|
+
}),
|
|
100
|
+
layerSeries
|
|
92
101
|
)
|
|
93
102
|
});
|
|
94
103
|
};
|
|
95
104
|
|
|
96
|
-
const percentSerie = (
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (!total) {
|
|
104
|
-
return dp;
|
|
105
|
-
}
|
|
106
|
-
return ({
|
|
107
|
-
...dp,
|
|
108
|
-
y: map(dp.y, value => (Math.abs(value) / total) * 100),
|
|
109
|
-
formaters: null,
|
|
110
|
-
});
|
|
105
|
+
const percentSerie = R.pipe(
|
|
106
|
+
R.over(
|
|
107
|
+
R.lensProp('datapoints'),
|
|
108
|
+
R.map(dp => {
|
|
109
|
+
const total = R.pipe(R.map(v => Math.abs(v)), R.sum)(dp.y);
|
|
110
|
+
if (!total) {
|
|
111
|
+
return dp;
|
|
111
112
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
return ({
|
|
114
|
+
...dp,
|
|
115
|
+
y: R.map(v => (Math.abs(v) / total) * 100, dp.y),
|
|
116
|
+
formaters: null,
|
|
117
|
+
});
|
|
118
|
+
})
|
|
119
|
+
),
|
|
120
|
+
R.of
|
|
121
|
+
);
|
|
115
122
|
|
|
116
|
-
const serieSortedByTotal = (
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}];
|
|
124
|
-
};
|
|
123
|
+
const serieSortedByTotal = R.pipe(
|
|
124
|
+
R.over(
|
|
125
|
+
R.lensProp('datapoints'),
|
|
126
|
+
R.sortBy(R.pipe(R.prop('y'), R.map(v => v > 0 ? R.negate(v) : 0), R.sum))
|
|
127
|
+
),
|
|
128
|
+
R.of
|
|
129
|
+
);
|
|
125
130
|
|
|
126
|
-
const serieSortedByDataOrder = (
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
const serieSortedByDataOrder = R.pipe(
|
|
132
|
+
R.over(
|
|
133
|
+
R.lensProp('datapoints'),
|
|
134
|
+
R.sortBy(R.prop('index'))
|
|
135
|
+
),
|
|
136
|
+
R.of
|
|
137
|
+
);
|
|
133
138
|
|
|
134
139
|
export default ({ observations, dimensions }, dimensionsWithValuesIndexedById, singularity, display, formaterAttrs) => {
|
|
135
|
-
const mode =
|
|
136
|
-
const serieDimensionId =
|
|
140
|
+
const mode = R.propOr('values', 'mode', singularity);
|
|
141
|
+
const serieDimensionId = R.propOr(null, 'id', singularity);
|
|
137
142
|
const _serie = serie(observations, dimensions, dimensionsWithValuesIndexedById, serieDimensionId, display, formaterAttrs);
|
|
138
143
|
if (mode === 'percent') {
|
|
139
144
|
return percentSerie(_serie);
|
|
@@ -141,5 +146,8 @@ export default ({ observations, dimensions }, dimensionsWithValuesIndexedById, s
|
|
|
141
146
|
else if (isTimePeriodDimension({ id: serieDimensionId })) {
|
|
142
147
|
return serieSortedByDataOrder(_serie);
|
|
143
148
|
}
|
|
144
|
-
|
|
149
|
+
//console.log('raw serie', _serie);
|
|
150
|
+
const res = serieSortedByTotal(_serie);
|
|
151
|
+
//console.log('serie', res);
|
|
152
|
+
return res;
|
|
145
153
|
};
|
package/src/rules/src/index.js
CHANGED
|
@@ -129,8 +129,7 @@ const _symbolDimension = (data, ids) => {
|
|
|
129
129
|
export const symbolDimension = memoizee(_symbolDimension);
|
|
130
130
|
|
|
131
131
|
const _stackedDimension = (data, singularity) => {
|
|
132
|
-
|
|
133
|
-
return __stackedDimension(values, singularity);
|
|
132
|
+
return __stackedDimension(splitDimensions(data), singularity);
|
|
134
133
|
}
|
|
135
134
|
export const stackedDimension = memoizee(_stackedDimension);
|
|
136
135
|
|
|
@@ -40,6 +40,7 @@ import {
|
|
|
40
40
|
} from './symbol';
|
|
41
41
|
import {
|
|
42
42
|
isStacked,
|
|
43
|
+
isStackedDimActive,
|
|
43
44
|
onChangeStackedDimension,
|
|
44
45
|
onChangeStackedMode,
|
|
45
46
|
stackedModeOptions,
|
|
@@ -404,7 +405,7 @@ export const toProperties = (props, state, onChange) => ({
|
|
|
404
405
|
},
|
|
405
406
|
stackedDimension: {
|
|
406
407
|
id: 'stackedDimension',
|
|
407
|
-
isActive:
|
|
408
|
+
isActive: isStackedDimActive(props),
|
|
408
409
|
options: chartDimensionOptions(props, isStacked),
|
|
409
410
|
onChange: R.pipe(
|
|
410
411
|
optionParser,
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
getPropertyDimension,
|
|
7
7
|
toState
|
|
8
8
|
} from './utils';
|
|
9
|
+
import { splitDimensions } from '../';
|
|
9
10
|
import { focusStateFromNewProps } from './focus';
|
|
10
11
|
|
|
11
12
|
const getStackedDimension = getPropertyDimension('stackedDimension');
|
|
@@ -38,6 +39,15 @@ export const onChangeStackedDimension = ({ data }, state) => (value) => {
|
|
|
38
39
|
|
|
39
40
|
export const stackedModeOptions = [{ value: VALUES }, { value: PERCENT }];
|
|
40
41
|
|
|
42
|
+
export const isStackedDimActive = ({ data, type }) => {
|
|
43
|
+
const { values } = splitDimensions(data);
|
|
44
|
+
if (R.length(values) < 2) {
|
|
45
|
+
console.log('niet');
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return isStacked(type);
|
|
49
|
+
};
|
|
50
|
+
|
|
41
51
|
export const onChangeStackedMode = (value) => R.has(value, stackedModes)
|
|
42
52
|
? ({ stackedMode: value })
|
|
43
53
|
: ({});
|
|
@@ -54,15 +64,21 @@ export const stackedStateFromNewProps = (props, state) => {
|
|
|
54
64
|
|
|
55
65
|
let dimension = getStackedDimension(data, state);
|
|
56
66
|
if (R.isNil(dimension)) {
|
|
57
|
-
const {
|
|
58
|
-
if (
|
|
59
|
-
dimension = R.head(
|
|
60
|
-
}
|
|
61
|
-
else if (!R.isNil(time) && !R.isEmpty(time)) {
|
|
62
|
-
dimension = R.head(time)
|
|
67
|
+
const { value, values } = splitDimensions(data);
|
|
68
|
+
if (R.length(values) === 1) {
|
|
69
|
+
dimension = R.head(value);
|
|
63
70
|
}
|
|
64
71
|
else {
|
|
65
|
-
|
|
72
|
+
const { area, time, other } = getGroupedDimensions(data);
|
|
73
|
+
if (!R.isNil(area) && !R.isEmpty(area)) {
|
|
74
|
+
dimension = R.head(area);
|
|
75
|
+
}
|
|
76
|
+
else if (!R.isNil(time) && !R.isEmpty(time)) {
|
|
77
|
+
dimension = R.head(time)
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
dimension = R.head(other);
|
|
81
|
+
}
|
|
66
82
|
}
|
|
67
83
|
}
|
|
68
84
|
const _mode = R.prop('stackedMode', state);
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
equals,
|
|
3
3
|
find,
|
|
4
|
+
groupBy,
|
|
4
5
|
has,
|
|
5
6
|
head,
|
|
6
7
|
is,
|
|
7
8
|
isNil,
|
|
9
|
+
length,
|
|
8
10
|
map,
|
|
9
11
|
not,
|
|
10
12
|
omit,
|
|
@@ -15,7 +17,7 @@ import {
|
|
|
15
17
|
} from 'ramda';
|
|
16
18
|
import { isRefAreaDimension, isTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';
|
|
17
19
|
import { extractSdmxArtefacts, parseDisplay, splitDimensions } from '../';
|
|
18
|
-
import { CHORO, H_SYMBOL, SCATTER, TYPES, V_SYMBOL } from '../constants';
|
|
20
|
+
import { CHORO, H_SYMBOL, SCATTER, STACKED, TYPES, V_SYMBOL } from '../constants';
|
|
19
21
|
import { dimensionValueDisplay } from '../dimension-utils';
|
|
20
22
|
|
|
21
23
|
export const isNumber = (input) => {
|
|
@@ -44,7 +46,7 @@ export const toState = (artefact) => prop('id', artefact);
|
|
|
44
46
|
|
|
45
47
|
export const getPropertyDimension = (property) => (data, state) => {
|
|
46
48
|
const statePropertyDimensionId = prop(property, state);
|
|
47
|
-
const dimensions =
|
|
49
|
+
const { dimensions } = extractSdmxArtefacts(data);
|
|
48
50
|
return find(
|
|
49
51
|
propEq('id', statePropertyDimensionId),
|
|
50
52
|
dimensions
|
|
@@ -99,6 +101,9 @@ export const chartDimensionOptions = ({ data, type, display }, typeValidator) =>
|
|
|
99
101
|
return [];
|
|
100
102
|
}
|
|
101
103
|
const dimensions = prop('values', splitDimensions(data));
|
|
104
|
+
if (equals(type, STACKED) && length(dimensions) === 1) {
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
102
107
|
return map(
|
|
103
108
|
artefactToOption(display),
|
|
104
109
|
dimensions
|
|
@@ -33,7 +33,10 @@ const getSymbolSeriesItems = ({ data, options }) => {
|
|
|
33
33
|
)(data);
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
-
const getStackedSeriesItems = R.
|
|
36
|
+
const getStackedSeriesItems = R.pipe(
|
|
37
|
+
R.pathOr([], ['options', 'serie', 'stacked', 'layerSeries']),
|
|
38
|
+
R.when(s => R.length(s) === 1, R.always([]))
|
|
39
|
+
);
|
|
37
40
|
|
|
38
41
|
const stackedLayerRenderer = ({ baseColor }) => (
|
|
39
42
|
<svg width="21" height="14">
|