@cainiaofe/cn-ui-charts
Version:
112 lines (111 loc) • 4.96 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.CnChart = exports.ChartProps = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _react = _interopRequireWildcard(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
require("./index.scss");
var _g = require("@antv/g2");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
var clsPrefix = 'cn-chart';
var ChartProps = /*#__PURE__*/function (_Chart) {
(0, _inheritsLoose2["default"])(ChartProps, _Chart);
function ChartProps() {
return _Chart.apply(this, arguments) || this;
}
return ChartProps;
}(_g.Chart);
/**
* CnPieChart 组件
* @param {*} props
* @returns
*/
exports.ChartProps = ChartProps;
var CnChart = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
var _props$theme = props.theme,
theme = _props$theme === void 0 ? 'classic' : _props$theme,
autoFit = props.autoFit,
className = props.className,
containerStyle = props.containerStyle,
width = props.width,
height = props.height,
data = props.data,
options = props.options;
var container = (0, _react.useRef)(null);
var chartRef = (0, _react.useRef)();
(0, _react.useEffect)(function () {
if (!container.current) {
return;
}
if (!chartRef.current) {
var chart = new _g.Chart({
container: container.current,
theme: theme,
autoFit: autoFit,
width: width,
height: height
});
chartRef.current = chart;
if (ref) {
ref.current = chart;
}
chart.axis('x', {
line: true,
style: {
lineLineWidth: 1,
lineFill: '#BFBFBF',
labelFill: '#666',
labelFontWeight: '400'
}
}).axis('y', {
line: false,
tick: false,
grid: true,
style: {
gridLineWidth: 1,
gridFill: '#E7E8ED',
labelFill: '#666',
labelFontWeight: '400'
}
}).legend('color', {
style: {
itemLabelFill: '#666',
itemLabelFontWeight: '400'
}
});
}
chartRef.current.options((0, _extends2["default"])({}, props, options));
chartRef.current.render();
if (ResizeObserver) {
var iter;
var ro = new ResizeObserver(function (entries) {
if (entries.length) {
var _entries$, _entries$$contentRect, _entries$2, _entries$2$contentRec;
var rectWidth = (_entries$ = entries[0]) === null || _entries$ === void 0 ? void 0 : (_entries$$contentRect = _entries$.contentRect) === null || _entries$$contentRect === void 0 ? void 0 : _entries$$contentRect.width;
var rectHeight = (_entries$2 = entries[0]) === null || _entries$2 === void 0 ? void 0 : (_entries$2$contentRec = _entries$2.contentRect) === null || _entries$2$contentRec === void 0 ? void 0 : _entries$2$contentRec.height;
if (rectWidth && rectHeight) {
if (iter) {
clearTimeout(iter);
}
iter = setTimeout(function () {
var _chartRef$current;
(_chartRef$current = chartRef.current) === null || _chartRef$current === void 0 ? void 0 : _chartRef$current.changeSize(rectWidth, rectHeight);
}, 800);
}
}
});
ro.observe(container.current);
}
// chartRef.current.changeData(data);
}, [data, options]);
return /*#__PURE__*/_react["default"].createElement("div", {
ref: container,
className: (0, _classnames["default"])(clsPrefix, className),
style: containerStyle
});
});
exports.CnChart = CnChart;
CnChart.displayName = 'CnChart';