@easyv/charts 1.0.68 → 1.0.72

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 (66) hide show
  1. package/.babelrc +8 -8
  2. package/lib/components/AnimateData.js +2 -2
  3. package/lib/components/Axis.js +15 -12
  4. package/lib/components/Background.js +2 -2
  5. package/lib/components/Carousel.js +2 -2
  6. package/lib/components/Chart.js +2 -2
  7. package/lib/components/ConicalGradient.js +21 -21
  8. package/lib/components/Indicator.js +2 -2
  9. package/lib/components/Label.js +13 -3
  10. package/lib/components/LinearGradient.js +2 -2
  11. package/lib/components/PieChart.js +2 -2
  12. package/lib/css/index.module.css +41 -41
  13. package/lib/css/piechart.module.css +26 -26
  14. package/lib/formatter/legend.js +1 -1
  15. package/lib/hooks/useAnimateData.js +5 -5
  16. package/lib/hooks/useAxes.js +5 -5
  17. package/lib/hooks/useCarouselAxisX.js +5 -5
  18. package/lib/hooks/useExtentData.js +6 -6
  19. package/lib/hooks/useFilterData.js +5 -5
  20. package/lib/hooks/useStackData.js +5 -5
  21. package/lib/hooks/useTooltip.js +10 -10
  22. package/lib/utils/index.js +35 -7
  23. package/package.json +34 -34
  24. package/src/components/AnimateData.tsx +24 -24
  25. package/src/components/Axis.tsx +336 -333
  26. package/src/components/Background.tsx +45 -45
  27. package/src/components/Band.tsx +160 -160
  28. package/src/components/Brush.js +159 -159
  29. package/src/components/Carousel.tsx +144 -144
  30. package/src/components/Chart.js +99 -99
  31. package/src/components/ChartContainer.tsx +63 -63
  32. package/src/components/ConicalGradient.js +258 -258
  33. package/src/components/ExtentData.js +17 -17
  34. package/src/components/FilterData.js +23 -23
  35. package/src/components/Indicator.js +13 -13
  36. package/src/components/Label.js +206 -196
  37. package/src/components/Legend.js +158 -158
  38. package/src/components/Lighter.jsx +162 -162
  39. package/src/components/Line.js +128 -128
  40. package/src/components/LinearGradient.js +29 -29
  41. package/src/components/Mapping.js +71 -71
  42. package/src/components/PieChart.js +1093 -1093
  43. package/src/components/StackData.js +20 -20
  44. package/src/components/StereoBar.tsx +298 -298
  45. package/src/components/Tooltip.js +133 -133
  46. package/src/components/index.js +49 -49
  47. package/src/context/index.js +2 -2
  48. package/src/css/index.module.css +41 -41
  49. package/src/css/piechart.module.css +26 -26
  50. package/src/element/ConicGradient.jsx +55 -55
  51. package/src/element/Line.tsx +33 -33
  52. package/src/element/index.ts +3 -3
  53. package/src/formatter/index.js +1 -1
  54. package/src/formatter/legend.js +90 -90
  55. package/src/hooks/index.js +17 -17
  56. package/src/hooks/useAnimateData.ts +62 -62
  57. package/src/hooks/useAxes.js +143 -143
  58. package/src/hooks/useCarouselAxisX.js +163 -163
  59. package/src/hooks/useExtentData.js +88 -88
  60. package/src/hooks/useFilterData.js +72 -72
  61. package/src/hooks/useStackData.js +100 -100
  62. package/src/hooks/useTooltip.ts +96 -96
  63. package/src/index.js +6 -6
  64. package/src/types/index.d.ts +59 -59
  65. package/src/utils/index.js +671 -640
  66. package/tsconfig.json +22 -22
package/.babelrc CHANGED
@@ -1,8 +1,8 @@
1
- {
2
- "presets": ["@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript"],
3
- "plugins": [
4
- "@babel/plugin-proposal-export-default-from",
5
- "@babel/plugin-transform-runtime",
6
- "@babel/plugin-proposal-class-properties"
7
- ]
8
- }
1
+ {
2
+ "presets": ["@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript"],
3
+ "plugins": [
4
+ "@babel/plugin-proposal-export-default-from",
5
+ "@babel/plugin-transform-runtime",
6
+ "@babel/plugin-proposal-class-properties"
7
+ ]
8
+ }
@@ -17,8 +17,8 @@ var _react = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _hooks = require("../hooks");
19
19
 
20
- /**
21
- * 用来做图表数据改变(增长)动画(HOC)
20
+ /**
21
+ * 用来做图表数据改变(增长)动画(HOC)
22
22
  */
23
23
  var _default = function _default(Component) {
24
24
  return /*#__PURE__*/(0, _react.memo)(function (_ref) {
@@ -19,8 +19,8 @@ var _context = require("../context");
19
19
 
20
20
  var _element = require("../element");
21
21
 
22
- /**
23
- * x, y, z轴
22
+ /**
23
+ * x, y, z轴
24
24
  */
25
25
  var defaultAlign = {
26
26
  textAnchor: 'middle',
@@ -48,16 +48,16 @@ var getAxesPath = function getAxesPath(orientation, _ref2) {
48
48
  return 'M0, -0.5V' + (height + 0.5);
49
49
  }
50
50
  };
51
- /**
52
- * 根据坐标轴位置来确定轴标签的垂直对齐方式,水平对齐方式,以及轴标签位于坐标轴的哪个方向
53
- * @param orientation 坐标轴位置
54
- * @param rotate 旋转角度
55
- * @returns {
56
- * dominantBaseline,
57
- * textAnchor,
58
- * directionX,
59
- * directionY
60
- * }
51
+ /**
52
+ * 根据坐标轴位置来确定轴标签的垂直对齐方式,水平对齐方式,以及轴标签位于坐标轴的哪个方向
53
+ * @param orientation 坐标轴位置
54
+ * @param rotate 旋转角度
55
+ * @returns {
56
+ * dominantBaseline,
57
+ * textAnchor,
58
+ * directionX,
59
+ * directionY
60
+ * }
61
61
  */
62
62
 
63
63
 
@@ -184,6 +184,9 @@ var Label = function Label(_ref5) {
184
184
  var translateText = 'translate(' + x + ', ' + y + ')';
185
185
  return /*#__PURE__*/_react["default"].createElement("text", {
186
186
  className: className,
187
+ style: {
188
+ whiteSpace: "pre"
189
+ },
187
190
  dominantBaseline: dominantBaseline,
188
191
  textAnchor: textAnchor,
189
192
  fontFamily: fontFamily,
@@ -13,8 +13,8 @@ var _react = _interopRequireDefault(require("react"));
13
13
 
14
14
  var _utils = require("../utils");
15
15
 
16
- /**
17
- * 轴类图背景
16
+ /**
17
+ * 轴类图背景
18
18
  */
19
19
  var _default = function _default(_ref) {
20
20
  var _ref$axis = _ref.axis,
@@ -42,8 +42,8 @@ var defaultAnimation = {
42
42
  opacity: 100
43
43
  }
44
44
  };
45
- /**
46
- * 饼图类图表轮播逻辑,用来管理currentIndex,及回调逻辑(HOC)
45
+ /**
46
+ * 饼图类图表轮播逻辑,用来管理currentIndex,及回调逻辑(HOC)
47
47
  */
48
48
 
49
49
  var _default = function _default(Component) {
@@ -19,8 +19,8 @@ var _context = require("../context");
19
19
 
20
20
  var _ = require(".");
21
21
 
22
- /**
23
- * 总入口,通过外面传进来的type来确定渲染哪种图表,饼环图表为“pie”,否则为轴类图表
22
+ /**
23
+ * 总入口,通过外面传进来的type来确定渲染哪种图表,饼环图表为“pie”,否则为轴类图表
24
24
  */
25
25
  var getCallbackData = function getCallbackData(callbacks, data) {
26
26
  var callbackData;
@@ -19,8 +19,8 @@ var _utils = require("@easyv/utils/lib/common/utils");
19
19
 
20
20
  var _indexModule = _interopRequireDefault(require("../css/index.module.css"));
21
21
 
22
- /**
23
- * 饼图装饰内圈
22
+ /**
23
+ * 饼图装饰内圈
24
24
  */
25
25
  var _default = function _default(_ref) {
26
26
  var width = _ref.width,
@@ -123,8 +123,8 @@ var _default = function _default(_ref) {
123
123
  }
124
124
  });
125
125
  };
126
- /**
127
- * ConicalGradient
126
+ /**
127
+ * ConicalGradient
128
128
  */
129
129
 
130
130
 
@@ -136,11 +136,11 @@ function ConicalGradient() {
136
136
  }
137
137
 
138
138
  ConicalGradient.prototype = {
139
- /**
140
- * addColorStop
141
- *
142
- * @param {Number} offset
143
- * @param {Array} color RGBA值
139
+ /**
140
+ * addColorStop
141
+ *
142
+ * @param {Number} offset
143
+ * @param {Array} color RGBA值
144
144
  */
145
145
  addColorStop: function addColorStop(offset, color) {
146
146
  this._offsets.push(offset);
@@ -150,23 +150,23 @@ ConicalGradient.prototype = {
150
150
  return this;
151
151
  },
152
152
 
153
- /**
154
- * _offsetsReverse (array.forEach callback)
153
+ /**
154
+ * _offsetsReverse (array.forEach callback)
155
155
  */
156
156
  _offsetsReverse: function _offsetsReverse(offset, index, array) {
157
157
  array[index] = 1 - offset;
158
158
  },
159
159
 
160
- /**
161
- * fill
162
- *
163
- * @param {Number} context
164
- * @param {Number} x
165
- * @param {Number} y
166
- * @param {Number} radius
167
- * @param {Number} startAngle
168
- * @param {Number} endAngle
169
- * @param {Boolean} anticlockwise
160
+ /**
161
+ * fill
162
+ *
163
+ * @param {Number} context
164
+ * @param {Number} x
165
+ * @param {Number} y
166
+ * @param {Number} radius
167
+ * @param {Number} startAngle
168
+ * @param {Number} endAngle
169
+ * @param {Boolean} anticlockwise
170
170
  */
171
171
  fill: function fill(context, x, y, radius, startAngle, endAngle, anticlockwise) {
172
172
  var offsets = this._offsets;
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
 
8
- /**
9
- * 轴类图表移上去的指示框背景
8
+ /**
9
+ * 轴类图表移上去的指示框背景
10
10
  */
11
11
  var _default = function _default(_ref) {
12
12
  var color = _ref.color,
@@ -157,19 +157,29 @@ var Icon = function Icon(_ref4) {
157
157
  inner = _ref4$config.inner,
158
158
  outer = _ref4$config.outer,
159
159
  color = _ref4$config.color,
160
- radius = _ref4$config.radius;
160
+ radius = _ref4$config.radius,
161
+ image = _ref4$config.image,
162
+ _ref4$config$size = _ref4$config.size,
163
+ width = _ref4$config$size.width,
164
+ height = _ref4$config$size.height;
161
165
  return mode == 'single' ? /*#__PURE__*/React.createElement(Circle, {
162
166
  cx: cx,
163
167
  cy: cy,
164
168
  color: color,
165
169
  radius: radius
166
- }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Circle, (0, _extends2["default"])({
170
+ }) : mode == 'double' ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Circle, (0, _extends2["default"])({
167
171
  cx: cx,
168
172
  cy: cy
169
173
  }, inner)), /*#__PURE__*/React.createElement(Circle, (0, _extends2["default"])({
170
174
  cx: cx,
171
175
  cy: cy
172
- }, outer)));
176
+ }, outer))) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("image", {
177
+ width: width,
178
+ height: height,
179
+ x: cx - width / 2,
180
+ y: cy - height / 2,
181
+ xlinkHref: window.appConfig.ASSETS_URL + image
182
+ }));
173
183
  };
174
184
 
175
185
  var Circle = function Circle(_ref5) {
@@ -9,8 +9,8 @@ exports["default"] = void 0;
9
9
 
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
 
12
- /**
13
- * svg渐变滤镜
12
+ /**
13
+ * svg渐变滤镜
14
14
  */
15
15
  var _default = function _default(_ref) {
16
16
  var id = _ref.id,
@@ -887,7 +887,7 @@ var Label = function Label(_ref10) {
887
887
 
888
888
  var _showValue = showValue && (value || showSuffix);
889
889
 
890
- return show && (_showName || showPercent || _showValue) && /*#__PURE__*/_react["default"].createElement("g", {
890
+ return show && (_showName || showPercent || showValue) && /*#__PURE__*/_react["default"].createElement("g", {
891
891
  key: index
892
892
  }, /*#__PURE__*/_react["default"].createElement("path", {
893
893
  className: animation ? _piechartModule["default"]['label-line'] : "",
@@ -908,7 +908,7 @@ var Label = function Label(_ref10) {
908
908
  textAnchor: x3 >= 0 ? 'start' : 'end'
909
909
  }, _showName && /*#__PURE__*/_react["default"].createElement("tspan", {
910
910
  style: (0, _utils.getFontStyle)(nameFont, 'svg')
911
- }, displayName + (showValue || showPercent ? ':' : '')), _showValue && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tspan", {
911
+ }, displayName + (showValue || showPercent ? ':' : '')), showValue && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tspan", {
912
912
  x: !!(_showName && mode == 'vertical') ? _x : '',
913
913
  dx: valueDx(_showName, mode),
914
914
  dy: !!(_showName && mode == 'vertical') ? '1.5em' : '',
@@ -1,42 +1,42 @@
1
- .rotateClockwise {
2
- animation-name: rotateClockwise;
3
- }
4
-
5
- @keyframes rotateClockwise {
6
- 0% {
7
- transform: rotate(0deg);
8
- }
9
- 100% {
10
- transform: rotate(360deg);
11
- }
12
- }
13
-
14
- .rotateCounterClockwise {
15
- animation-name: rotateCounterClockwise;
16
- }
17
-
18
- @keyframes rotateCounterClockwise {
19
- 0% {
20
- transform: rotate(360deg);
21
- }
22
- 100% {
23
- transform: rotate(0deg);
24
- }
25
- }
26
-
27
- .showAllStyle {
28
- display: grid;
29
- width: 100%;
30
- grid-template-columns: 40% 30% 30%;
31
- align-items: center;
32
- flex-direction: row;
33
- justify-content: space-between;
34
- }
35
-
36
- .notShowAllStyle {
37
- display: flex;
38
- width: 100%;
39
- align-items: center;
40
- flex-direction: row;
41
- justify-content: space-between;
1
+ .rotateClockwise {
2
+ animation-name: rotateClockwise;
3
+ }
4
+
5
+ @keyframes rotateClockwise {
6
+ 0% {
7
+ transform: rotate(0deg);
8
+ }
9
+ 100% {
10
+ transform: rotate(360deg);
11
+ }
12
+ }
13
+
14
+ .rotateCounterClockwise {
15
+ animation-name: rotateCounterClockwise;
16
+ }
17
+
18
+ @keyframes rotateCounterClockwise {
19
+ 0% {
20
+ transform: rotate(360deg);
21
+ }
22
+ 100% {
23
+ transform: rotate(0deg);
24
+ }
25
+ }
26
+
27
+ .showAllStyle {
28
+ display: grid;
29
+ width: 100%;
30
+ grid-template-columns: 40% 30% 30%;
31
+ align-items: center;
32
+ flex-direction: row;
33
+ justify-content: space-between;
34
+ }
35
+
36
+ .notShowAllStyle {
37
+ display: flex;
38
+ width: 100%;
39
+ align-items: center;
40
+ flex-direction: row;
41
+ justify-content: space-between;
42
42
  }
@@ -1,27 +1,27 @@
1
- /*甜甜圈图专用css*/
2
- .label-line {
3
- stroke-dasharray: 100;
4
- stroke-dashoffset: 100;
5
- animation: dash 800ms ease forwards;
6
- }
7
-
8
- .label-text {
9
- opacity: 0;
10
- animation: show 800ms ease forwards;
11
- }
12
-
13
- .inner-arc {
14
- animation: dash 2s ease forwards;
15
- }
16
-
17
- @keyframes dash {
18
- 100% {
19
- stroke-dashoffset: 0%;
20
- }
21
- }
22
-
23
- @keyframes show {
24
- 100% {
25
- opacity: 1;
26
- }
1
+ /*甜甜圈图专用css*/
2
+ .label-line {
3
+ stroke-dasharray: 100;
4
+ stroke-dashoffset: 100;
5
+ animation: dash 800ms ease forwards;
6
+ }
7
+
8
+ .label-text {
9
+ opacity: 0;
10
+ animation: show 800ms ease forwards;
11
+ }
12
+
13
+ .inner-arc {
14
+ animation: dash 2s ease forwards;
15
+ }
16
+
17
+ @keyframes dash {
18
+ 100% {
19
+ stroke-dashoffset: 0%;
20
+ }
21
+ }
22
+
23
+ @keyframes show {
24
+ 100% {
25
+ opacity: 1;
26
+ }
27
27
  }
@@ -73,7 +73,7 @@ var pieLegendFormatter = function pieLegendFormatter(_ref, _ref2) {
73
73
  alignItems: 'center',
74
74
  justifyContent: 'flex-start'
75
75
  })
76
- }, showValue && /*#__PURE__*/React.createElement("span", null, data.y), showSuffix && /*#__PURE__*/React.createElement("span", {
76
+ }, /*#__PURE__*/React.createElement("span", null, data.y), showSuffix && /*#__PURE__*/React.createElement("span", {
77
77
  style: {
78
78
  whiteSpace: "nowrap",
79
79
  fontSize: fontSize,
@@ -19,11 +19,11 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
19
19
 
20
20
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
21
 
22
- /**
23
- * 图表数据动画
24
- * @param {Array} data data列表
25
- * @param {boolean} dataAnimation 是否开启数据增长动画
26
- * @returns 改变后的数据
22
+ /**
23
+ * 图表数据动画
24
+ * @param {Array} data data列表
25
+ * @param {boolean} dataAnimation 是否开启数据增长动画
26
+ * @returns 改变后的数据
27
27
  */
28
28
  var _default = function _default(data, dataAnimation) {
29
29
  var _useState = (0, _react.useState)([]),
@@ -28,11 +28,11 @@ var scales = {
28
28
  utc: _d3Scale.scaleUtc,
29
29
  ordinal: _utils.band
30
30
  };
31
- /**
32
- * x/y/z轴
33
- * @param {Array} axes 轴列表数组
34
- * @param {Object} context 其中需要包括
35
- * @returns {Map} 返回所有轴
31
+ /**
32
+ * x/y/z轴
33
+ * @param {Array} axes 轴列表数组
34
+ * @param {Object} context 其中需要包括
35
+ * @returns {Map} 返回所有轴
36
36
  */
37
37
 
38
38
  var _default = function _default(_ref) {
@@ -25,11 +25,11 @@ var initialState = {
25
25
  currentIndex: null,
26
26
  flag: false
27
27
  };
28
- /**
29
- * x轴滚动逻辑
30
- * @param {Object} axis x轴配置项
31
- * @param {Object} config x轴轮播动画的配置项
32
- * @returns {Map} 返回经过改变后的x轴,主要是ticks和scaler的range发生了改变
28
+ /**
29
+ * x轴滚动逻辑
30
+ * @param {Object} axis x轴配置项
31
+ * @param {Object} config x轴轮播动画的配置项
32
+ * @returns {Map} 返回经过改变后的x轴,主要是ticks和scaler的range发生了改变
33
33
  */
34
34
 
35
35
  var _default = function _default(axis, config) {
@@ -61,12 +61,12 @@ var stackData = function stackData(data, series) {
61
61
  dataMap.clear();
62
62
  return [min, max];
63
63
  };
64
- /**
65
- * 计算轴的domain
66
- * @param {Array} axes x轴列表
67
- * @param {Object} series 图表的系列,主要是为了读取type, stack, yOrZ三个字段
68
- * @param {Object} data 数据列表
69
- * @returns {Array} 返回带domain的轴
64
+ /**
65
+ * 计算轴的domain
66
+ * @param {Array} axes x轴列表
67
+ * @param {Object} series 图表的系列,主要是为了读取type, stack, yOrZ三个字段
68
+ * @param {Object} data 数据列表
69
+ * @returns {Array} 返回带domain的轴
70
70
  */
71
71
 
72
72
 
@@ -56,11 +56,11 @@ var getSelected = function getSelected(selected, name) {
56
56
  });
57
57
  return tmp;
58
58
  };
59
- /**
60
- * 图例点击状态管理
61
- * @param {Array} data 数据
62
- * @param {Map} series 系列
63
- * @returns {Array} 返回筛选后的数据和是否选中状态,及控制选中函数
59
+ /**
60
+ * 图例点击状态管理
61
+ * @param {Array} data 数据
62
+ * @param {Map} series 系列
63
+ * @returns {Array} 返回筛选后的数据和是否选中状态,及控制选中函数
64
64
  */
65
65
 
66
66
 
@@ -89,11 +89,11 @@ var setStackData = function setStackData(data, series, stacks) {
89
89
  dataMap.clear();
90
90
  return series;
91
91
  };
92
- /**
93
- * 计算堆叠数据
94
- * @param {Array} data 数据
95
- * @param {Map} series 系列
96
- * @returns {Array} 返回堆叠后的数据,由一开始的{x, y, s}变成{data: {x, y, s}, bound: [start, end], index}
92
+ /**
93
+ * 计算堆叠数据
94
+ * @param {Array} data 数据
95
+ * @param {Map} series 系列
96
+ * @returns {Array} 返回堆叠后的数据,由一开始的{x, y, s}变成{data: {x, y, s}, bound: [start, end], index}
97
97
  */
98
98
 
99
99
 
@@ -14,16 +14,16 @@ var _react = require("react");
14
14
  var _utils = require("../utils");
15
15
 
16
16
  var callback = function callback() {};
17
- /**
18
- * 主要用于轴类图表,返回当前选中的是哪一个x
19
- * @param {Array} svg svg的dom实例
20
- * @param {Number} marginLeft 左间距
21
- * @param {Number} marginTop 上间距
22
- * @param {Number} width 宽
23
- * @param {Number} height 高
24
- * @param {Number} axisX 类目轴
25
- * @param {Object} config 轮播动画参数
26
- * @returns {Object} 返回被选中的名称,坐标,选中方法
17
+ /**
18
+ * 主要用于轴类图表,返回当前选中的是哪一个x
19
+ * @param {Array} svg svg的dom实例
20
+ * @param {Number} marginLeft 左间距
21
+ * @param {Number} marginTop 上间距
22
+ * @param {Number} width 宽
23
+ * @param {Number} height 高
24
+ * @param {Number} axisX 类目轴
25
+ * @param {Object} config 轮播动画参数
26
+ * @returns {Object} 返回被选中的名称,坐标,选中方法
27
27
  */
28
28
 
29
29
 
@@ -742,15 +742,34 @@ var sortPie = function sortPie(data, order) {
742
742
  }
743
743
 
744
744
  return _data;
745
- };
745
+ }; // const getDataWithPercent = (data = [], precision = 0, type) => {
746
+ // const digits = Math.pow(10, precision);
747
+ // const targetSeats = digits * 100;
748
+ // const total = sum(data, (d) => d.value);
749
+ // const votesPerQuota = data.map((d, index) => ({
750
+ // ...d,
751
+ // vote: Math.round((d.value / total) * digits * 100),
752
+ // index,
753
+ // }));
754
+ // const currentSum = sum(votesPerQuota, (d) => d.vote);
755
+ // const remainder = targetSeats - currentSum;
756
+ // console.log(type+":",votesPerQuota, toFixed);
757
+ // votesPerQuota.sort(({ value: a }, { value: b }) => (a % total) - (b % total));
758
+ // const tmp = votesPerQuota.map(({ vote, ...data }, index) => ({
759
+ // ...data,
760
+ // percent: toFixed((vote + (index < remainder ? 1 : 0)) / digits, precision),
761
+ // }));
762
+ // return tmp;
763
+ // };
764
+
746
765
 
747
766
  exports.sortPie = sortPie;
748
767
 
749
768
  var getDataWithPercent = function getDataWithPercent() {
750
769
  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
751
770
  var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
752
- var digits = Math.pow(10, precision);
753
- var targetSeats = digits * 100;
771
+ var digits = Math.pow(10, precision); //const targetSeats = digits * 100;
772
+
754
773
  var total = (0, _d3v.sum)(data, function (d) {
755
774
  return d.value;
756
775
  });
@@ -763,7 +782,7 @@ var getDataWithPercent = function getDataWithPercent() {
763
782
  var currentSum = (0, _d3v.sum)(votesPerQuota, function (d) {
764
783
  return d.vote;
765
784
  });
766
- var remainder = targetSeats - currentSum;
785
+ var remainder = 100 - currentSum;
767
786
  votesPerQuota.sort(function (_ref26, _ref27) {
768
787
  var a = _ref26.value;
769
788
  var b = _ref27.value;
@@ -771,10 +790,19 @@ var getDataWithPercent = function getDataWithPercent() {
771
790
  });
772
791
  var tmp = votesPerQuota.map(function (_ref28, index) {
773
792
  var vote = _ref28.vote,
774
- data = (0, _objectWithoutProperties2["default"])(_ref28, ["vote"]);
775
- return _objectSpread(_objectSpread({}, data), {}, {
776
- percent: (0, _utils2.toFixed)((vote + (index < remainder ? 1 : 0)) / digits, precision)
793
+ value = _ref28.value,
794
+ data = (0, _objectWithoutProperties2["default"])(_ref28, ["vote", "value"]);
795
+
796
+ var obj = _objectSpread(_objectSpread({}, data), {}, {
797
+ value: value,
798
+ percent: (0, _utils2.toFixed)((vote + (value && value != 0 ? remainder : 0)) / digits, precision)
777
799
  });
800
+
801
+ if (value && value != 0) {
802
+ remainder = 0;
803
+ }
804
+
805
+ return obj;
778
806
  });
779
807
  return tmp;
780
808
  };