@ued_fpi/data-visual
Version:
<br /> <br /> <div style="text-align:center"> <b style="font-size:30px">@ued_fpi/data-visual</b> <p>基于Vite4+TypeScript的Vue3大屏组件库开发框架</p> <img style="display:inline" src="https://img.shields.io/npm/v/@ued_fpi/data-visual" />
66 lines (63 loc) • 2.47 kB
JavaScript
;
(function (H) {
if (!H) return
const each = H.each;
const round = Math.round;
const cos = Math.cos;
const sin = Math.sin;
const deg2rad = (Math.PI / 180) * 90;
H.wrap(H.seriesTypes.pie.prototype, 'translate', function (proceed) {
// eslint-disable-next-line prefer-rest-params
proceed.apply(this, [].slice.call(arguments, 1));
// Do not do this if the chart is not 3D
if (!this.chart.is3d())
return
// 判断pieType === ‘2’,渲染高低不一的3d饼图
if (this.chart.options.pieType !== '2')
return
// eslint-disable-next-line @typescript-eslint/no-this-alias
const series = this;
const chart = series.chart;
const options = chart.options;
const seriesOptions = series.options;
const depth = seriesOptions.depth || 0;
const options3d = options.chart.options3d;
const alpha = options3d.alpha;
const beta = options3d.beta;
let z = seriesOptions.stacking
? (seriesOptions.stack || 0) * depth
: series._i * depth;
z += depth / 2;
if (seriesOptions.grouping !== false)
z = 0;
const eachFunction = function (point) {
const shapeArgs = point.shapeArgs;
let angle = null;
point.shapeType = 'arc3d';
const ran = point.options.h;
shapeArgs.z = z;
shapeArgs.depth = depth * 0.75 + ran;
shapeArgs.alpha = alpha;
shapeArgs.beta = beta;
shapeArgs.center = series.center;
shapeArgs.ran = ran;
angle = (shapeArgs.end + shapeArgs.start) / 2;
point.slicedTranslation = {
translateX: round(
cos(angle) * seriesOptions.slicedOffset * cos(alpha * deg2rad)
),
translateY: round(
sin(angle) * seriesOptions.slicedOffset * cos(alpha * deg2rad)
),
};
};
each(series.data, eachFunction);
});
H.wrap(H.SVGRenderer.prototype, 'arc3dPath', function (proceed) {
// Run original proceed method
// eslint-disable-next-line prefer-rest-params
const ret = proceed.apply(this, [].slice.call(arguments, 1));
ret.zTop = (ret.zOut + 0.5) / 100;
return ret
});
})(typeof Highcharts !== 'undefined' ? Highcharts : null);