@castianta/chart-lc
Version:
88 lines (80 loc) • 2.76 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import React, { useState, useRef, useLayoutEffect, forwardRef, useImperativeHandle } from 'react';
import Base from './base';
import { toStrokeStyle } from '../utils';
var setSeries = function setSeries(_ref) {
var series = _ref.series,
_ref$list = _ref.list,
name = _ref$list.name,
data = _ref$list.data,
color = _ref$list.color,
thickness = _ref$list.thickness,
cursorEnabled = _ref$list.cursorEnabled,
resultTableFormatter = _ref$list.resultTableFormatter,
index = _ref.index,
_ref$chart3D = _ref.chart3D,
chart3D = _ref$chart3D === void 0 ? false : _ref$chart3D;
var config = series.clear().setName(name ? name : series.getName()).add(data === null || data === void 0 ? void 0 : data.map(function (item) {
return _extends({
z: index
}, item);
}));
if (chart3D) {
config.setLineStyle(toStrokeStyle(thickness, color, config.getLineStyle()));
} else {
config.setCursorEnabled(cursorEnabled).setStrokeStyle(toStrokeStyle(thickness, color, config.getStrokeStyle())).setCursorResultTableFormatter(resultTableFormatter ? resultTableFormatter : config.getCursorResultTableFormatter());
}
return config;
};
var Line = function Line(props, ref) {
var dataSource = props.dataSource,
_chartRender = props.chartRender,
chart3D = props.chart3D;
var _useState = useState(),
chart = _useState[0],
setChart = _useState[1];
var refSeries = useRef();
useImperativeHandle(ref, function () {
return {
chart: chart
};
}, [chart]);
useLayoutEffect(function () {
if (!chart) return;
if (!_chartRender) {
if (refSeries.current) {
refSeries.current.forEach(function (series, index) {
setSeries({
series: series,
list: dataSource[index],
index: index,
chart3D: chart3D
});
});
} else {
var seriesData = dataSource === null || dataSource === void 0 ? void 0 : dataSource.map(function (list, index) {
var series = chart.addLineSeries();
return setSeries({
series: series,
list: list,
index: index,
chart3D: chart3D
});
});
refSeries.current = seriesData;
}
}
}, [chart, dataSource]);
return /*#__PURE__*/React.createElement(Base, _extends({}, props, {
setChart: setChart,
chart: chart,
refSeries: refSeries,
chartRender: function chartRender(setAxis) {
return _chartRender && _chartRender(chart, {
setAxis: setAxis,
setSeries: setSeries
}, dataSource);
}
}));
};
export default /*#__PURE__*/forwardRef(Line);