提交 f83ee616 编写于 作者: P plainheart

feat(sunburst): sunburst supports cornerRadius(apache#13123).

上级 a97faf2b
......@@ -111,6 +111,16 @@ export interface SunburstSeriesOption extends
animationType?: 'expansion' | 'scale'
sort?: 'desc' | 'asc' | ((a: TreeNode, b: TreeNode) => number)
// can be 10
// which means that both innerCornerRadius and outerCornerRadius are 10
// can also be an array [20, 10]
// which means that innerCornerRadius is 20
// and outerCornerRadius is 10
// can also be a string or string array, such as ['20%', '50%']
// which means that innerCornerRadius is 20% of the innerRadius
// and outerCornerRadius is half of outerRadius.
cornerRadius?: (number | string)[] | number | string
}
interface SunburstSeriesModel {
......@@ -177,6 +187,7 @@ class SunburstSeriesModel extends SeriesModel<SunburstSeriesOption> {
// 默认全局居中
center: ['50%', '50%'],
radius: [0, '75%'],
cornerRadius: 0,
// 默认顺时针
clockwise: true,
startAngle: 90,
......@@ -308,4 +319,4 @@ function completeTreeValue(dataNode: SunburstSeriesNodeItemOption) {
SeriesModel.registerClass(SunburstSeriesModel);
export default SunburstSeriesModel;
\ No newline at end of file
export default SunburstSeriesModel;
......@@ -35,6 +35,7 @@ export default function (
ecModel.eachSeriesByType(seriesType, function (seriesModel: SunburstSeriesModel) {
let center = seriesModel.get('center');
let radius = seriesModel.get('radius');
let cornerRadius = seriesModel.get('cornerRadius');
if (!zrUtil.isArray(radius)) {
radius = [0, radius];
......@@ -42,6 +43,9 @@ export default function (
if (!zrUtil.isArray(center)) {
center = [center, center];
}
if (!zrUtil.isArray(cornerRadius)) {
cornerRadius = [cornerRadius, cornerRadius];
}
const width = api.getWidth();
const height = api.getHeight();
......@@ -50,6 +54,8 @@ export default function (
const cy = parsePercent(center[1], height);
const r0 = parsePercent(radius[0], size / 2);
const r = parsePercent(radius[1], size / 2);
const innerCornerRadius = parsePercent(cornerRadius[0], r0);
const outerCornerRadius = parsePercent(cornerRadius[1], r);
const startAngle = -seriesModel.get('startAngle') * RADIAN;
const minAngle = seriesModel.get('minAngle') * RADIAN;
......@@ -139,7 +145,9 @@ export default function (
cx: cx,
cy: cy,
r0: rStart,
r: rEnd
r: rEnd,
cornerRadius: outerCornerRadius,
innerCornerRadius: innerCornerRadius
});
}
......@@ -169,7 +177,9 @@ export default function (
cx: cx,
cy: cy,
r0: rStart,
r: rEnd
r: rEnd,
cornerRadius: outerCornerRadius,
innerCornerRadius: innerCornerRadius
});
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册