onesight-charts 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/download-image/demo/index.js +22 -0
- package/dist/components/download-image/index.js +63 -0
- package/dist/components/download-image/index.scss +64 -0
- package/dist/components/icon/iconfont.css +23 -0
- package/dist/components/icon/iconfont.ttf +0 -0
- package/dist/components/icon/iconfont.woff +0 -0
- package/dist/components/icon/iconfont.woff2 +0 -0
- package/dist/components/icon/index.js +16 -0
- package/dist/components/line/demo.js +2 -2
- package/dist/components/line/index.js +1 -2
- package/dist/components/pie/demo/demo.js +22 -0
- package/dist/components/pie/demo/legendDemo.js +24 -0
- package/dist/components/pie/demo/orderDemo.js +25 -0
- package/dist/components/pie/demo/paginationDemo.js +73 -0
- package/dist/components/pie/demo/tooltipDemo.js +24 -0
- package/dist/components/pie/index.js +145 -43
- package/dist/components/pie/legend/index.js +134 -0
- package/dist/components/pie/legend/style.scss +125 -0
- package/dist/components/pie/pagination/index.js +43 -0
- package/dist/components/pie/pagination/style.scss +45 -0
- package/dist/components/pie/style.scss +85 -0
- package/dist/components/pie/tooltipConfig.js +43 -0
- package/dist/umd/onesight-charts.min.js +1 -1
- package/dist/utils/chartUtils.js +39 -1
- package/dist/utils/common.js +42 -0
- package/lib/components/download-image/demo/index.js +53 -0
- package/lib/components/download-image/index.js +71 -0
- package/lib/components/download-image/index.scss +64 -0
- package/lib/components/icon/iconfont.css +23 -0
- package/lib/components/icon/iconfont.ttf +0 -0
- package/lib/components/icon/iconfont.woff +0 -0
- package/lib/components/icon/iconfont.woff2 +0 -0
- package/lib/components/icon/index.js +33 -0
- package/lib/components/line/index.js +1 -2
- package/lib/components/pie/demo/demo.js +56 -0
- package/lib/components/pie/demo/legendDemo.js +56 -0
- package/lib/components/pie/demo/orderDemo.js +57 -0
- package/lib/components/pie/demo/paginationDemo.js +116 -0
- package/lib/components/pie/demo/tooltipDemo.js +56 -0
- package/lib/components/pie/index.js +115 -45
- package/lib/components/pie/legend/index.js +153 -0
- package/lib/components/pie/legend/style.scss +125 -0
- package/lib/components/pie/pagination/index.js +60 -0
- package/lib/components/pie/pagination/style.scss +45 -0
- package/lib/components/pie/style.scss +85 -0
- package/lib/components/pie/tooltipConfig.js +88 -0
- package/lib/utils/chartUtils.js +36 -2
- package/lib/utils/common.js +62 -0
- package/package.json +3 -1
- package/dist/components/pie/index.scss +0 -5
- package/dist/components/tooltip/demo/line-chart.js +0 -908
- package/dist/components/tooltip/index.js +0 -128
- package/dist/components/tooltip/index.scss +0 -5
- package/lib/components/pie/index.scss +0 -5
- package/lib/components/tooltip/demo/line-chart.js +0 -1020
- package/lib/components/tooltip/index.js +0 -156
- package/lib/components/tooltip/index.scss +0 -5
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
import Line from "../../line";
|
|
3
|
+
import DownloadImage from "../index.jsx";
|
|
4
|
+
var xAxis = ['07/25', '07/26', '07/27', '07/28', '07/29', '07/30', '07/31'];
|
|
5
|
+
var seriesData = {
|
|
6
|
+
Facebook: [1002, 831, 960, 750, 1451, 1717, 903],
|
|
7
|
+
X: [22094, 20075, 17410, 12374, 13413, 13904, 6895]
|
|
8
|
+
};
|
|
9
|
+
export default (function () {
|
|
10
|
+
var dimensionDOM = useRef(); // 提及趋势 DOM
|
|
11
|
+
|
|
12
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
13
|
+
ref: dimensionDOM
|
|
14
|
+
}, /*#__PURE__*/React.createElement(Line, {
|
|
15
|
+
xAxis: xAxis,
|
|
16
|
+
seriesData: seriesData
|
|
17
|
+
}), /*#__PURE__*/React.createElement(DownloadImage, {
|
|
18
|
+
loading: false,
|
|
19
|
+
DOM: dimensionDOM,
|
|
20
|
+
fileName: "download-chart"
|
|
21
|
+
}));
|
|
22
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { Dropdown, Menu } from 'antd';
|
|
8
|
+
import domtoimage from 'dom-to-image';
|
|
9
|
+
import React, { useState } from 'react';
|
|
10
|
+
// import { useIntl } from 'umi';
|
|
11
|
+
import { DownloadFile } from "../../utils/common";
|
|
12
|
+
import "./index.scss";
|
|
13
|
+
function DownloadImage(_ref) {
|
|
14
|
+
var Loading = _ref.Loading,
|
|
15
|
+
DOM = _ref.DOM,
|
|
16
|
+
FileName = _ref.FileName;
|
|
17
|
+
// const { formatMessage } = useIntl();
|
|
18
|
+
var _useState = useState(false),
|
|
19
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
20
|
+
visiable = _useState2[0],
|
|
21
|
+
setVisiable = _useState2[1];
|
|
22
|
+
// 导出csv 和 png图片
|
|
23
|
+
var handleMenuFn = function handleMenuFn(value) {
|
|
24
|
+
if (Loading) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
if (value.key === 'csv') {
|
|
28
|
+
console.log(value, 'csv');
|
|
29
|
+
} else {
|
|
30
|
+
setVisiable(false);
|
|
31
|
+
setTimeout(function () {
|
|
32
|
+
domtoimage.toPng(DOM.current).then(function (dataUrl) {
|
|
33
|
+
DownloadFile(dataUrl, FileName ? FileName : 'filename');
|
|
34
|
+
}).catch(function (error) {
|
|
35
|
+
console.error('oops, something went wrong!', error);
|
|
36
|
+
});
|
|
37
|
+
}, 500);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
41
|
+
className: "dropdown_wrap"
|
|
42
|
+
}, /*#__PURE__*/React.createElement(Dropdown, {
|
|
43
|
+
getPopupContainer: function getPopupContainer(triggerNode) {
|
|
44
|
+
return triggerNode.parentElement;
|
|
45
|
+
},
|
|
46
|
+
visiable: true,
|
|
47
|
+
overlay: /*#__PURE__*/React.createElement(Menu, {
|
|
48
|
+
className: "dropdown_wrap_menu",
|
|
49
|
+
onClick: handleMenuFn
|
|
50
|
+
}, /*#__PURE__*/React.createElement(Menu.Item, {
|
|
51
|
+
key: "png"
|
|
52
|
+
}, /*#__PURE__*/React.createElement("a", null, /*#__PURE__*/React.createElement("i", {
|
|
53
|
+
className: "iconfont iconPNG"
|
|
54
|
+
})))),
|
|
55
|
+
trigger: ['click'],
|
|
56
|
+
placement: "topRight"
|
|
57
|
+
}, /*#__PURE__*/React.createElement("a", {
|
|
58
|
+
className: "common-btn common-more a-common-more ant-dropdown-trigger"
|
|
59
|
+
}, /*#__PURE__*/React.createElement("i", {
|
|
60
|
+
className: "iconfont icongengduo3"
|
|
61
|
+
}))));
|
|
62
|
+
}
|
|
63
|
+
export default DownloadImage;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
.dropdown_wrap {
|
|
2
|
+
.dropdown_wrap_menu {
|
|
3
|
+
z-index: 100;
|
|
4
|
+
padding: 8px 8px 4px;
|
|
5
|
+
min-width: 120px;
|
|
6
|
+
border: 1px solid #dddddd;
|
|
7
|
+
box-shadow: 0 4px 20px 0 rgb(0 0 0 / 8%);
|
|
8
|
+
border-radius: 8px;
|
|
9
|
+
|
|
10
|
+
li {
|
|
11
|
+
padding: 0px 8px !important;
|
|
12
|
+
height: 32px;
|
|
13
|
+
border-radius: 6px;
|
|
14
|
+
margin-bottom: 4px;
|
|
15
|
+
font-weight: bold;
|
|
16
|
+
font-size: 14px;
|
|
17
|
+
color: #273333;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
a > i {
|
|
21
|
+
margin-right: 8px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.disabled {
|
|
25
|
+
background-color: #ffffff;
|
|
26
|
+
color: #ccc;
|
|
27
|
+
|
|
28
|
+
&:hover {
|
|
29
|
+
background-color: #f3f4f4;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.common-more {
|
|
35
|
+
width: 32px;
|
|
36
|
+
height: 32px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.iconXLS,
|
|
40
|
+
.iconPNG {
|
|
41
|
+
font-size: 14px;
|
|
42
|
+
margin-right: 4px;
|
|
43
|
+
margin-top: -2px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.icongengduo2 {
|
|
47
|
+
display: flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
justify-content: center;
|
|
50
|
+
width: 32px;
|
|
51
|
+
height: 32px;
|
|
52
|
+
background: #ffffff;
|
|
53
|
+
border: 1px solid #dddddd;
|
|
54
|
+
border-radius: 8px;
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
&:hover {
|
|
59
|
+
.icongengduo2 {
|
|
60
|
+
color: #1da9a0;
|
|
61
|
+
border-color: #1da9a0;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: "iconfont"; /* Project id 4645053 */
|
|
3
|
+
src: url('iconfont.woff2?t=1722927505240') format('woff2'),
|
|
4
|
+
url('iconfont.woff?t=1722927505240') format('woff'),
|
|
5
|
+
url('iconfont.ttf?t=1722927505240') format('truetype');
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.iconfont {
|
|
9
|
+
font-family: "iconfont" !important;
|
|
10
|
+
font-size: 16px;
|
|
11
|
+
font-style: normal;
|
|
12
|
+
-webkit-font-smoothing: antialiased;
|
|
13
|
+
-moz-osx-font-smoothing: grayscale;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.icon-left:before {
|
|
17
|
+
content: "\e60b";
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.icon-right:before {
|
|
21
|
+
content: "\e60c";
|
|
22
|
+
}
|
|
23
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import "./iconfont.css";
|
|
2
|
+
function Icon(_ref) {
|
|
3
|
+
var name = _ref.name,
|
|
4
|
+
size = _ref.size,
|
|
5
|
+
color = _ref.color,
|
|
6
|
+
className = _ref.className;
|
|
7
|
+
var style = {
|
|
8
|
+
fontSize: size,
|
|
9
|
+
color: color
|
|
10
|
+
};
|
|
11
|
+
return /*#__PURE__*/React.createElement("i", {
|
|
12
|
+
className: "iconfont ".concat(name, " ").concat(className || ''),
|
|
13
|
+
style: style
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export default Icon;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import
|
|
2
|
+
import Line from "./index.jsx";
|
|
3
3
|
var xAxis = ['07/25', '07/26', '07/27', '07/28', '07/29', '07/30', '07/31'];
|
|
4
4
|
var seriesData = {
|
|
5
5
|
Facebook: [1002, 831, 960, 750, 1451, 1717, 903],
|
|
6
6
|
X: [22094, 20075, 17410, 12374, 13413, 13904, 6895]
|
|
7
7
|
};
|
|
8
8
|
export default (function () {
|
|
9
|
-
return /*#__PURE__*/React.createElement(
|
|
9
|
+
return /*#__PURE__*/React.createElement(Line, {
|
|
10
10
|
xAxis: xAxis,
|
|
11
11
|
seriesData: seriesData
|
|
12
12
|
});
|
|
@@ -29,7 +29,6 @@ function Line(props) {
|
|
|
29
29
|
}, [seriesData]);
|
|
30
30
|
var seriesTotal = legendValue ? calculateSeriesTotal(seriesData) : {};
|
|
31
31
|
var ceartChart = function ceartChart() {
|
|
32
|
-
var chartColor = color || defaultChartColors;
|
|
33
32
|
var myChart = echarts.init(chartRef.current, null, {
|
|
34
33
|
renderer: 'svg'
|
|
35
34
|
});
|
|
@@ -93,7 +92,7 @@ function Line(props) {
|
|
|
93
92
|
}
|
|
94
93
|
},
|
|
95
94
|
tooltip: tooltipConfig,
|
|
96
|
-
color:
|
|
95
|
+
color: color || defaultChartColors,
|
|
97
96
|
animation: false,
|
|
98
97
|
grid: {
|
|
99
98
|
top: '24px',
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import Pie from "../index.jsx";
|
|
2
|
+
var seriesData = [{
|
|
3
|
+
name: '积极',
|
|
4
|
+
value: 30,
|
|
5
|
+
percentage: 0.3659,
|
|
6
|
+
color: '#1DA9A0'
|
|
7
|
+
}, {
|
|
8
|
+
name: '消极',
|
|
9
|
+
value: 8,
|
|
10
|
+
percentage: 0.0976,
|
|
11
|
+
color: '#EE6666'
|
|
12
|
+
}, {
|
|
13
|
+
name: '中性',
|
|
14
|
+
value: 44,
|
|
15
|
+
percentage: 0.5365,
|
|
16
|
+
color: '#bbbbbb'
|
|
17
|
+
}];
|
|
18
|
+
export default (function () {
|
|
19
|
+
return /*#__PURE__*/React.createElement(Pie, {
|
|
20
|
+
seriesData: seriesData
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Pie from "../index.jsx";
|
|
2
|
+
var seriesData = [{
|
|
3
|
+
name: '积极',
|
|
4
|
+
value: 30,
|
|
5
|
+
percentage: 0.3659,
|
|
6
|
+
color: '#1DA9A0'
|
|
7
|
+
}, {
|
|
8
|
+
name: '消极',
|
|
9
|
+
value: 8,
|
|
10
|
+
percentage: 0.0976,
|
|
11
|
+
color: '#EE6666'
|
|
12
|
+
}, {
|
|
13
|
+
name: '中性',
|
|
14
|
+
value: 44,
|
|
15
|
+
percentage: 0.5365,
|
|
16
|
+
color: '#bbbbbb'
|
|
17
|
+
}];
|
|
18
|
+
export default (function () {
|
|
19
|
+
return /*#__PURE__*/React.createElement(Pie, {
|
|
20
|
+
seriesData: seriesData,
|
|
21
|
+
legendNumShow: false,
|
|
22
|
+
legendPerShow: false
|
|
23
|
+
});
|
|
24
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import Pie from "../index.jsx";
|
|
2
|
+
var seriesData = [{
|
|
3
|
+
name: '积极',
|
|
4
|
+
value: 30,
|
|
5
|
+
percentage: 0.3659,
|
|
6
|
+
color: '#1DA9A0'
|
|
7
|
+
}, {
|
|
8
|
+
name: '消极',
|
|
9
|
+
value: 8,
|
|
10
|
+
percentage: 0.0976,
|
|
11
|
+
color: '#EE6666'
|
|
12
|
+
}, {
|
|
13
|
+
name: '中性',
|
|
14
|
+
value: 44,
|
|
15
|
+
percentage: 0.5365,
|
|
16
|
+
color: '#bbbbbb'
|
|
17
|
+
}];
|
|
18
|
+
var order = ['积极', '消极', '中性'];
|
|
19
|
+
export default (function () {
|
|
20
|
+
return /*#__PURE__*/React.createElement(Pie, {
|
|
21
|
+
seriesData: seriesData,
|
|
22
|
+
order: order,
|
|
23
|
+
id: "orderId"
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import Pie from "../index.jsx";
|
|
2
|
+
var seriesData = [{
|
|
3
|
+
name: '积极',
|
|
4
|
+
value: 30,
|
|
5
|
+
percentage: 0.3659,
|
|
6
|
+
color: '#1DA9A0'
|
|
7
|
+
}, {
|
|
8
|
+
name: '消极',
|
|
9
|
+
value: 8,
|
|
10
|
+
percentage: 0.0976,
|
|
11
|
+
color: '#EE6666'
|
|
12
|
+
}, {
|
|
13
|
+
name: '中性',
|
|
14
|
+
value: 44,
|
|
15
|
+
percentage: 0.5365,
|
|
16
|
+
color: '#bbbbbb'
|
|
17
|
+
}, {
|
|
18
|
+
name: '兴奋',
|
|
19
|
+
value: 15,
|
|
20
|
+
percentage: 0.1829,
|
|
21
|
+
color: '#91CC75'
|
|
22
|
+
}, {
|
|
23
|
+
name: '失望',
|
|
24
|
+
value: 6,
|
|
25
|
+
percentage: 0.0732,
|
|
26
|
+
color: '#FAC858'
|
|
27
|
+
}, {
|
|
28
|
+
name: '惊讶',
|
|
29
|
+
value: 10,
|
|
30
|
+
percentage: 0.122,
|
|
31
|
+
color: '#73C0DE'
|
|
32
|
+
}, {
|
|
33
|
+
name: '愤怒',
|
|
34
|
+
value: 5,
|
|
35
|
+
percentage: 0.061,
|
|
36
|
+
color: '#FC8452'
|
|
37
|
+
}, {
|
|
38
|
+
name: '满意',
|
|
39
|
+
value: 20,
|
|
40
|
+
percentage: 0.2439,
|
|
41
|
+
color: '#9A60B4'
|
|
42
|
+
}, {
|
|
43
|
+
name: '困惑',
|
|
44
|
+
value: 7,
|
|
45
|
+
percentage: 0.0854,
|
|
46
|
+
color: '#EA7CCC'
|
|
47
|
+
}, {
|
|
48
|
+
name: '期待',
|
|
49
|
+
value: 12,
|
|
50
|
+
percentage: 0.1463,
|
|
51
|
+
color: '#5470C6'
|
|
52
|
+
}, {
|
|
53
|
+
name: '担忧',
|
|
54
|
+
value: 9,
|
|
55
|
+
percentage: 0.1098,
|
|
56
|
+
color: '#FF9A7A'
|
|
57
|
+
}, {
|
|
58
|
+
name: '平静',
|
|
59
|
+
value: 18,
|
|
60
|
+
percentage: 0.2195,
|
|
61
|
+
color: '#7ED3F4'
|
|
62
|
+
}, {
|
|
63
|
+
name: '好奇',
|
|
64
|
+
value: 11,
|
|
65
|
+
percentage: 0.1341,
|
|
66
|
+
color: '#C1232B'
|
|
67
|
+
}];
|
|
68
|
+
export default (function () {
|
|
69
|
+
return /*#__PURE__*/React.createElement(Pie, {
|
|
70
|
+
seriesData: seriesData,
|
|
71
|
+
legendNumber: 5
|
|
72
|
+
});
|
|
73
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Pie from "../index.jsx";
|
|
2
|
+
var seriesData = [{
|
|
3
|
+
name: '积极',
|
|
4
|
+
value: 30,
|
|
5
|
+
percentage: 0.3659,
|
|
6
|
+
color: '#1DA9A0'
|
|
7
|
+
}, {
|
|
8
|
+
name: '消极',
|
|
9
|
+
value: 8,
|
|
10
|
+
percentage: 0.0976,
|
|
11
|
+
color: '#EE6666'
|
|
12
|
+
}, {
|
|
13
|
+
name: '中性',
|
|
14
|
+
value: 44,
|
|
15
|
+
percentage: 0.5365,
|
|
16
|
+
color: '#bbbbbb'
|
|
17
|
+
}];
|
|
18
|
+
export default (function () {
|
|
19
|
+
return /*#__PURE__*/React.createElement(Pie, {
|
|
20
|
+
seriesData: seriesData,
|
|
21
|
+
tooltipName: "\u6570\u91CF",
|
|
22
|
+
tooltipPerShow: false
|
|
23
|
+
});
|
|
24
|
+
});
|
|
@@ -1,25 +1,121 @@
|
|
|
1
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
4
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
5
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
6
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
7
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
8
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
9
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
10
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
1
11
|
import * as echarts from 'echarts';
|
|
2
|
-
import { useEffect } from 'react';
|
|
3
|
-
import "
|
|
4
|
-
|
|
5
|
-
|
|
12
|
+
import { useEffect, useRef, useState } from 'react';
|
|
13
|
+
import { dealSort, numberFormatNull, sumValues, transformedSeriesData } from "../../utils/chartUtils";
|
|
14
|
+
import { defaultChartColors } from "../../utils/colors";
|
|
15
|
+
import Legend from "./legend";
|
|
16
|
+
import "./style.scss";
|
|
17
|
+
import { createCustomTooltip } from "./tooltipConfig";
|
|
18
|
+
function Pie(props) {
|
|
19
|
+
var _props$id = props.id,
|
|
20
|
+
id = _props$id === void 0 ? 'pieId' : _props$id,
|
|
21
|
+
_props$width = props.width,
|
|
22
|
+
width = _props$width === void 0 ? '222px' : _props$width,
|
|
23
|
+
_props$height = props.height,
|
|
24
|
+
height = _props$height === void 0 ? '320px' : _props$height,
|
|
25
|
+
color = props.color,
|
|
26
|
+
_props$valueType = props.valueType,
|
|
27
|
+
valueType = _props$valueType === void 0 ? 'value' : _props$valueType,
|
|
28
|
+
_props$seriesData = props.seriesData,
|
|
29
|
+
seriesData = _props$seriesData === void 0 ? [] : _props$seriesData,
|
|
30
|
+
_props$radius = props.radius,
|
|
31
|
+
radius = _props$radius === void 0 ? [70, 95] : _props$radius,
|
|
32
|
+
emphasisRich = props.emphasisRich,
|
|
33
|
+
_props$tooltipNumShow = props.tooltipNumShow,
|
|
34
|
+
tooltipNumShow = _props$tooltipNumShow === void 0 ? true : _props$tooltipNumShow,
|
|
35
|
+
_props$tooltipPerShow = props.tooltipPerShow,
|
|
36
|
+
tooltipPerShow = _props$tooltipPerShow === void 0 ? true : _props$tooltipPerShow,
|
|
37
|
+
_props$centerShow = props.centerShow,
|
|
38
|
+
centerShow = _props$centerShow === void 0 ? true : _props$centerShow,
|
|
39
|
+
_props$centerName = props.centerName,
|
|
40
|
+
centerName = _props$centerName === void 0 ? '提及数' : _props$centerName,
|
|
41
|
+
_props$tooltipShow = props.tooltipShow,
|
|
42
|
+
tooltipShow = _props$tooltipShow === void 0 ? true : _props$tooltipShow,
|
|
43
|
+
_props$tooltipName = props.tooltipName,
|
|
44
|
+
tooltipName = _props$tooltipName === void 0 ? '提及数' : _props$tooltipName,
|
|
45
|
+
_props$legendPerShow = props.legendPerShow,
|
|
46
|
+
legendPerShow = _props$legendPerShow === void 0 ? true : _props$legendPerShow,
|
|
47
|
+
_props$legendNumShow = props.legendNumShow,
|
|
48
|
+
legendNumShow = _props$legendNumShow === void 0 ? true : _props$legendNumShow,
|
|
49
|
+
_props$legendNumber = props.legendNumber,
|
|
50
|
+
legendNumber = _props$legendNumber === void 0 ? 10 : _props$legendNumber,
|
|
51
|
+
order = props.order,
|
|
52
|
+
handleClick = props.handleClick;
|
|
53
|
+
var chartRef = useRef();
|
|
54
|
+
var chart = useRef(null);
|
|
55
|
+
var currentPage = useRef(1);
|
|
56
|
+
var _useState = useState([]),
|
|
57
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
58
|
+
legendData = _useState2[0],
|
|
59
|
+
setLegendData = _useState2[1];
|
|
6
60
|
useEffect(function () {
|
|
7
61
|
ceartChart();
|
|
8
|
-
}, []);
|
|
62
|
+
}, [JSON.stringify(seriesData)]);
|
|
63
|
+
var chartColor = color || defaultChartColors;
|
|
9
64
|
var ceartChart = function ceartChart() {
|
|
10
|
-
var myChart = echarts.init(
|
|
65
|
+
var myChart = echarts.init(chartRef.current, null, {
|
|
11
66
|
renderer: 'svg'
|
|
12
67
|
});
|
|
68
|
+
chart.current = myChart;
|
|
69
|
+
dealSort(seriesData, order);
|
|
70
|
+
var dealData = transformedSeriesData(JSON.parse(JSON.stringify(seriesData)));
|
|
71
|
+
dealData.forEach(function (item) {
|
|
72
|
+
if (item.value === 0) {
|
|
73
|
+
item.value = -1;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
var tooltipConfig = createCustomTooltip({
|
|
77
|
+
tooltipShow: tooltipShow,
|
|
78
|
+
chartColor: chartColor,
|
|
79
|
+
seriesData: seriesData,
|
|
80
|
+
tooltipPerShow: tooltipPerShow,
|
|
81
|
+
tooltipNumShow: tooltipNumShow,
|
|
82
|
+
valueType: valueType,
|
|
83
|
+
tooltipName: tooltipName
|
|
84
|
+
});
|
|
85
|
+
var total = sumValues(seriesData);
|
|
13
86
|
var option = {
|
|
14
|
-
|
|
15
|
-
show:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
87
|
+
title: {
|
|
88
|
+
show: centerShow,
|
|
89
|
+
text: numberFormatNull(total),
|
|
90
|
+
textStyle: {
|
|
91
|
+
fontSize: 24,
|
|
92
|
+
fontWeight: 700,
|
|
93
|
+
fontFamily: '思源黑体 Bold',
|
|
94
|
+
color: '#273333'
|
|
95
|
+
},
|
|
96
|
+
left: 'center',
|
|
97
|
+
top: '41%'
|
|
98
|
+
},
|
|
99
|
+
graphic: {
|
|
100
|
+
elements: [{
|
|
101
|
+
type: 'text',
|
|
102
|
+
left: 'center',
|
|
103
|
+
top: '54%',
|
|
104
|
+
style: {
|
|
105
|
+
text: centerName,
|
|
106
|
+
fontSize: 14,
|
|
107
|
+
fontWeight: 500,
|
|
108
|
+
fontFamily: '思源黑体 Bold',
|
|
109
|
+
fill: '#364141',
|
|
110
|
+
opacity: centerShow ? 1 : 0
|
|
111
|
+
}
|
|
112
|
+
}]
|
|
19
113
|
},
|
|
114
|
+
color: chartColor,
|
|
115
|
+
tooltip: tooltipConfig,
|
|
20
116
|
series: [{
|
|
21
117
|
type: 'pie',
|
|
22
|
-
radius:
|
|
118
|
+
radius: radius,
|
|
23
119
|
itemStyle: {
|
|
24
120
|
borderColor: '#fff',
|
|
25
121
|
borderWidth: 2
|
|
@@ -31,10 +127,10 @@ export default function Pie() {
|
|
|
31
127
|
emphasis: {
|
|
32
128
|
label: {
|
|
33
129
|
show: true,
|
|
34
|
-
formatter: function formatter() {
|
|
130
|
+
formatter: function formatter(res) {
|
|
35
131
|
return '';
|
|
36
132
|
},
|
|
37
|
-
rich: {
|
|
133
|
+
rich: emphasisRich || {
|
|
38
134
|
n: {
|
|
39
135
|
height: 40,
|
|
40
136
|
padding: [0, 0, 12, 0],
|
|
@@ -55,40 +151,46 @@ export default function Pie() {
|
|
|
55
151
|
}
|
|
56
152
|
}
|
|
57
153
|
},
|
|
58
|
-
data:
|
|
59
|
-
value: 5325,
|
|
60
|
-
name: 'positive',
|
|
61
|
-
proportion: 0.0595,
|
|
62
|
-
type: 1,
|
|
63
|
-
itemStyle: {
|
|
64
|
-
color: '#1DA9A0'
|
|
65
|
-
}
|
|
66
|
-
}, {
|
|
67
|
-
value: 1879,
|
|
68
|
-
name: 'negative',
|
|
69
|
-
proportion: 0.021,
|
|
70
|
-
type: 2,
|
|
71
|
-
itemStyle: {
|
|
72
|
-
color: '#EE6666'
|
|
73
|
-
}
|
|
74
|
-
}, {
|
|
75
|
-
value: 82344,
|
|
76
|
-
name: 'neutral',
|
|
77
|
-
proportion: 0.9195,
|
|
78
|
-
type: 3,
|
|
79
|
-
itemStyle: {
|
|
80
|
-
color: '#bbbbbb'
|
|
81
|
-
}
|
|
82
|
-
}],
|
|
154
|
+
data: dealData,
|
|
83
155
|
selectedMode: true,
|
|
84
156
|
selectedOffset: 0,
|
|
85
157
|
minAngle: 3
|
|
86
158
|
}]
|
|
87
159
|
};
|
|
88
160
|
myChart.setOption(option);
|
|
161
|
+
var legendShowData = JSON.parse(JSON.stringify(seriesData));
|
|
162
|
+
setLegendData(legendShowData.slice(0, legendNumber));
|
|
163
|
+
myChart.off('click');
|
|
164
|
+
myChart.on('click', 'series', function (params) {
|
|
165
|
+
handleClick && handleClick(params.data);
|
|
166
|
+
});
|
|
167
|
+
};
|
|
168
|
+
var paginationCb = function paginationCb(currData, page) {
|
|
169
|
+
setLegendData(_toConsumableArray(currData));
|
|
170
|
+
currentPage.current = page;
|
|
89
171
|
};
|
|
90
172
|
return /*#__PURE__*/React.createElement("div", {
|
|
91
|
-
id:
|
|
92
|
-
className: "onesight-chart-
|
|
93
|
-
}
|
|
94
|
-
|
|
173
|
+
id: id,
|
|
174
|
+
className: "onesight-pie-chart-wrap"
|
|
175
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
176
|
+
className: "chart-pie",
|
|
177
|
+
ref: chartRef,
|
|
178
|
+
style: {
|
|
179
|
+
width: width,
|
|
180
|
+
height: height
|
|
181
|
+
}
|
|
182
|
+
}), /*#__PURE__*/React.createElement(Legend, {
|
|
183
|
+
seriesData: seriesData,
|
|
184
|
+
legendData: legendData,
|
|
185
|
+
chartColor: chartColor,
|
|
186
|
+
legendPerShow: legendPerShow,
|
|
187
|
+
legendNumShow: legendNumShow,
|
|
188
|
+
valueType: valueType,
|
|
189
|
+
chart: chart,
|
|
190
|
+
handleClick: handleClick,
|
|
191
|
+
legendNumber: legendNumber,
|
|
192
|
+
currentPage: currentPage,
|
|
193
|
+
paginationCb: paginationCb
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
export default Pie;
|