@castianta/chart-lc
Version:
114 lines (104 loc) • 4.27 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import React, { useState, useRef, useLayoutEffect } from 'react';
import Base from './base';
import { PointShape, PointStyle3D } from '@arction/lcjs';
import { toStyle } from '../utils';
var setSeries = function setSeries(_ref) {
var series = _ref.series,
_ref$list = _ref.list,
name = _ref$list.name,
data = _ref$list.data,
cursorEnabled = _ref$list.cursorEnabled,
pointSize = _ref$list.pointSize,
_ref$list$pointColor = _ref$list.pointColor,
pointColor = _ref$list$pointColor === void 0 ? '#000' : _ref$list$pointColor,
point3DStyle = _ref$list.point3DStyle,
point3DShape = _ref$list.point3DShape,
pointSizeEnabled = _ref$list.pointSizeEnabled,
pointRotationEnabled = _ref$list.pointRotationEnabled,
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).add(data === null || data === void 0 ? void 0 : data.map(function (item) {
return _extends({
z: index
}, item);
}));
if (chart3D) {
config.setPointStyle(new PointStyle3D[point3DStyle !== null && point3DStyle !== void 0 ? point3DStyle : 'Triangulated']({
size: pointSize ? pointSize : config.getPointStyle().getSize(),
shape: point3DShape !== null && point3DShape !== void 0 ? point3DShape : 'sphere',
fillStyle: toStyle(config.getPointStyle().getFillStyle(), pointColor)
}));
} else {
config.setCursorEnabled(cursorEnabled).setPointSize(pointSize ? pointSize : config.getPointSize()).setPointFillStyle(toStyle(config.getPointFillStyle(), pointColor)).setIndividualPointRotationEnabled(pointRotationEnabled !== null && pointRotationEnabled !== void 0 ? pointRotationEnabled : false).setIndividualPointSizeEnabled(pointSizeEnabled !== null && pointSizeEnabled !== void 0 ? pointSizeEnabled : false).setCursorResultTableFormatter(resultTableFormatter ? resultTableFormatter : config.getCursorResultTableFormatter());
}
return config;
};
var create = function create(chart, dataSource, refSeries, chart3D) {
var seriesData = dataSource === null || dataSource === void 0 ? void 0 : dataSource.map(function (list, index) {
var pointShape = list.pointShape;
var series = chart === null || chart === void 0 ? void 0 : chart.addPointSeries({
pointShape: PointShape[pointShape !== null && pointShape !== void 0 ? pointShape : 'Circle']
});
return setSeries({
series: series,
list: list,
index: index,
chart3D: chart3D
});
});
refSeries.current = seriesData;
};
export default function Point(props) {
var _props$dataSource = props.dataSource,
dataSource = _props$dataSource === void 0 ? [] : _props$dataSource,
_chartRender = props.chartRender,
chart3D = props.chart3D;
var _useState = useState(),
chart = _useState[0],
setChart = _useState[1];
var refSeries = useRef();
useLayoutEffect(function () {
if (!chart) return;
if (!_chartRender && refSeries.current) {
refSeries.current.forEach(function (series, index) {
setSeries({
series: series,
list: dataSource[index],
index: index,
chart3D: chart3D
});
});
}
}, [chart, dataSource]);
useLayoutEffect(function () {
if (!chart) return;
if (!_chartRender) {
create(chart, dataSource, refSeries, chart3D);
}
return function () {
if (refSeries.current) {
refSeries.current.forEach(function (line) {
return line.dispose();
});
refSeries.current = null;
}
};
}, [chart].concat(dataSource === null || dataSource === void 0 ? void 0 : dataSource.map(function (_ref2) {
var pointShape = _ref2.pointShape;
return pointShape;
})));
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);
}
}));
}