提交 f83ee616 编写于 作者: P plainheart

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

上级 a97faf2b
...@@ -111,6 +111,16 @@ export interface SunburstSeriesOption extends ...@@ -111,6 +111,16 @@ export interface SunburstSeriesOption extends
animationType?: 'expansion' | 'scale' animationType?: 'expansion' | 'scale'
sort?: 'desc' | 'asc' | ((a: TreeNode, b: TreeNode) => number) 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 { interface SunburstSeriesModel {
...@@ -177,6 +187,7 @@ class SunburstSeriesModel extends SeriesModel<SunburstSeriesOption> { ...@@ -177,6 +187,7 @@ class SunburstSeriesModel extends SeriesModel<SunburstSeriesOption> {
// 默认全局居中 // 默认全局居中
center: ['50%', '50%'], center: ['50%', '50%'],
radius: [0, '75%'], radius: [0, '75%'],
cornerRadius: 0,
// 默认顺时针 // 默认顺时针
clockwise: true, clockwise: true,
startAngle: 90, startAngle: 90,
...@@ -308,4 +319,4 @@ function completeTreeValue(dataNode: SunburstSeriesNodeItemOption) { ...@@ -308,4 +319,4 @@ function completeTreeValue(dataNode: SunburstSeriesNodeItemOption) {
SeriesModel.registerClass(SunburstSeriesModel); SeriesModel.registerClass(SunburstSeriesModel);
export default SunburstSeriesModel; export default SunburstSeriesModel;
\ No newline at end of file
...@@ -35,6 +35,7 @@ export default function ( ...@@ -35,6 +35,7 @@ export default function (
ecModel.eachSeriesByType(seriesType, function (seriesModel: SunburstSeriesModel) { ecModel.eachSeriesByType(seriesType, function (seriesModel: SunburstSeriesModel) {
let center = seriesModel.get('center'); let center = seriesModel.get('center');
let radius = seriesModel.get('radius'); let radius = seriesModel.get('radius');
let cornerRadius = seriesModel.get('cornerRadius');
if (!zrUtil.isArray(radius)) { if (!zrUtil.isArray(radius)) {
radius = [0, radius]; radius = [0, radius];
...@@ -42,6 +43,9 @@ export default function ( ...@@ -42,6 +43,9 @@ export default function (
if (!zrUtil.isArray(center)) { if (!zrUtil.isArray(center)) {
center = [center, center]; center = [center, center];
} }
if (!zrUtil.isArray(cornerRadius)) {
cornerRadius = [cornerRadius, cornerRadius];
}
const width = api.getWidth(); const width = api.getWidth();
const height = api.getHeight(); const height = api.getHeight();
...@@ -50,6 +54,8 @@ export default function ( ...@@ -50,6 +54,8 @@ export default function (
const cy = parsePercent(center[1], height); const cy = parsePercent(center[1], height);
const r0 = parsePercent(radius[0], size / 2); const r0 = parsePercent(radius[0], size / 2);
const r = parsePercent(radius[1], 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 startAngle = -seriesModel.get('startAngle') * RADIAN;
const minAngle = seriesModel.get('minAngle') * RADIAN; const minAngle = seriesModel.get('minAngle') * RADIAN;
...@@ -139,7 +145,9 @@ export default function ( ...@@ -139,7 +145,9 @@ export default function (
cx: cx, cx: cx,
cy: cy, cy: cy,
r0: rStart, r0: rStart,
r: rEnd r: rEnd,
cornerRadius: outerCornerRadius,
innerCornerRadius: innerCornerRadius
}); });
} }
...@@ -169,7 +177,9 @@ export default function ( ...@@ -169,7 +177,9 @@ export default function (
cx: cx, cx: cx,
cy: cy, cy: cy,
r0: rStart, 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.
先完成此消息的编辑!
想要评论请 注册