| <!DOCTYPE html> | 
 | <!-- | 
 | Licensed to the Apache Software Foundation (ASF) under one | 
 | or more contributor license agreements.  See the NOTICE file | 
 | distributed with this work for additional information | 
 | regarding copyright ownership.  The ASF licenses this file | 
 | to you under the Apache License, Version 2.0 (the | 
 | "License"); you may not use this file except in compliance | 
 | with the License.  You may obtain a copy of the License at | 
 |  | 
 |    http://www.apache.org/licenses/LICENSE-2.0 | 
 |  | 
 | Unless required by applicable law or agreed to in writing, | 
 | software distributed under the License is distributed on an | 
 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
 | KIND, either express or implied.  See the License for the | 
 | specific language governing permissions and limitations | 
 | under the License. | 
 | --> | 
 |  | 
 |  | 
 | <html> | 
 |     <head> | 
 |         <meta charset="utf-8"> | 
 |         <meta name="viewport" content="width=device-width, initial-scale=1" /> | 
 |         <script src="lib/simpleRequire.js"></script> | 
 |         <script src="lib/config.js"></script> | 
 |         <script src="lib/jquery.min.js"></script> | 
 |         <script src="lib/facePrint.js"></script> | 
 |         <script src="lib/testHelper.js"></script> | 
 |         <!-- <script src="lib/canteen.js"></script> --> | 
 |         <link rel="stylesheet" href="lib/reset.css" /> | 
 |         <style> | 
 |             .test-title-inner { | 
 |                 text-align: center; | 
 |             } | 
 |         </style> | 
 |     </head> | 
 |     <body> | 
 |  | 
 |         <div id="main0"></div> | 
 |  | 
 |         <script> | 
 |         require([ | 
 |             'echarts' | 
 |         ], function (echarts) { | 
 |             var option; | 
 |  | 
 |             var colorList = ['#dc67ce', '#7ddc67', '#8067dc', '#dc6967', '#dcd267', '#67b7dc']; | 
 |             // cornerRadius can be an array [innerCornerRadius, outerCornerRadius] | 
 |             var outerCornerRadius = 5; | 
 |             var innerCornerRadius = 5; | 
 |             var usePercent = false; | 
 |             var isCircular = false; | 
 |             var isRounderOnEmphasis = false; | 
 |             var roseType = 'area'; | 
 |             var randomTimer; | 
 |             var data = [ | 
 |                 { | 
 |                     name: "America", | 
 |                     value: 260 | 
 |                 }, | 
 |                 { | 
 |                     name: "Zambia", | 
 |                     value: 230 | 
 |                 }, | 
 |                 { | 
 |                     name: "Ireland", | 
 |                     value: 200 | 
 |                 }, | 
 |                 { | 
 |                     name: "Germany", | 
 |                     value: 165 | 
 |                 }, | 
 |                 { | 
 |                     name: "Australia", | 
 |                     value: 139 | 
 |                 }, | 
 |                 { | 
 |                     name: "Japan", | 
 |                     value: 128 | 
 |                 } | 
 |             ]; | 
 |  | 
 |             option = { | 
 |                 color: colorList, | 
 |                 title: { | 
 |                     text: getTitle() | 
 |                 }, | 
 |                 tooltip: {}, | 
 |                 legend: { | 
 |                     bottom: 0 | 
 |                 }, | 
 |                 series: { | 
 |                     type: 'pie', | 
 |                     roseType: roseType, | 
 |                     selectedMode: 'single', | 
 |                     selectedOffset: 30, | 
 |                     label: { | 
 |                         formatter: '{b} {c}({d}%)' | 
 |                     }, | 
 |                     itemStyle: { | 
 |                         borderRadius: getCornerRadius(), | 
 |                     }, | 
 |                     // itemStyle: { | 
 |                     //     borderColor: '#fff', | 
 |                     //     borderWidth: 5 | 
 |                     // }, | 
 |                     data: echarts.util.clone(data) | 
 |                 } | 
 |             }; | 
 |  | 
 |             function getTitle() { | 
 |                 return 'cornerRadius [' | 
 |                     + innerCornerRadius + (usePercent ? '%' : '') | 
 |                     + ', ' | 
 |                     + outerCornerRadius + (usePercent ? '%' : '') | 
 |                     + ']'; | 
 |             } | 
 |  | 
 |             function getCornerRadius() { | 
 |                 return [ | 
 |                     innerCornerRadius + (usePercent ? '%' : ''), | 
 |                     outerCornerRadius + (usePercent ? '%' : '') | 
 |                 ]; | 
 |             } | 
 |  | 
 |             function getEmphasisCornerRadius() { | 
 |                 const cornerRadius = getCornerRadius(); | 
 |                 if (!isRounderOnEmphasis) { | 
 |                     return cornerRadius; | 
 |                 } | 
 |                 const emphasisCornerRadius = [ | 
 |                     parseInt(cornerRadius[0], 10) * 2, | 
 |                     parseInt(cornerRadius[1], 10) * 2 | 
 |                 ]; | 
 |                 if (usePercent) { | 
 |                     emphasisCornerRadius[0] = emphasisCornerRadius[0] + '%'; | 
 |                     emphasisCornerRadius[1] = emphasisCornerRadius[1] + '%'; | 
 |                 } | 
 |                 return emphasisCornerRadius; | 
 |             } | 
 |  | 
 |             var chart = testHelper.create(echarts, 'main0', { | 
 |                 title: [ | 
 |                     'Test Pie with **cornerRadius**', | 
 |                     '**cornerRadius** can be a number | string | number array | string array' | 
 |                 ], | 
 |                 option: option, | 
 |                 buttons: [ | 
 |                     { | 
 |                         text: 'increase innerCornerRadius', | 
 |                         onclick: function () { | 
 |                             innerCornerRadius += 5; | 
 |                             chart.setOption({ | 
 |                                 title: { | 
 |                                     text: getTitle() | 
 |                                 }, | 
 |                                 series: [{ | 
 |                                     itemStyle: { borderRadius: getCornerRadius() }, | 
 |                                     emphasis: { | 
 |                                         itemStyle: { borderRadius: getEmphasisCornerRadius() } | 
 |                                     } | 
 |                                 }] | 
 |                             }); | 
 |                         } | 
 |                     }, | 
 |                     { | 
 |                         text: 'decrease innerCornerRadius', | 
 |                         onclick: function () { | 
 |                             innerCornerRadius -= 5; | 
 |                             if (innerCornerRadius < 0) { | 
 |                                 innerCornerRadius = 0; | 
 |                             } | 
 |                             chart.setOption({ | 
 |                                 title: { | 
 |                                     text: getTitle() | 
 |                                 }, | 
 |                                 series: [{ | 
 |                                     itemStyle: { borderRadius: getCornerRadius() }, | 
 |                                     emphasis: { | 
 |                                         itemStyle: { borderRadius: getEmphasisCornerRadius() } | 
 |                                     } | 
 |                                 }] | 
 |                             }); | 
 |                         } | 
 |                     }, | 
 |                     { | 
 |                         text: 'increase outerCornerRadius', | 
 |                         onclick: function () { | 
 |                             outerCornerRadius += 5; | 
 |                             chart.setOption({ | 
 |                                 title: { | 
 |                                     text: getTitle() | 
 |                                 }, | 
 |                                 series: [{ | 
 |                                     itemStyle: { borderRadius: getCornerRadius() }, | 
 |                                     emphasis: { | 
 |                                         itemStyle: { borderRadius: getEmphasisCornerRadius() } | 
 |                                     } | 
 |                                 }] | 
 |                             }); | 
 |                         } | 
 |                     }, | 
 |                     { | 
 |                         text: 'decrease outerCornerRadius', | 
 |                         onclick: function () { | 
 |                             outerCornerRadius -= 5; | 
 |                             if (outerCornerRadius < 0) { | 
 |                                 outerCornerRadius = 0; | 
 |                             } | 
 |                             chart.setOption({ | 
 |                                 title: { | 
 |                                     text: getTitle() | 
 |                                 }, | 
 |                                 series: [{ | 
 |                                     itemStyle: { borderRadius: getCornerRadius() }, | 
 |                                     emphasis: { | 
 |                                         itemStyle: { borderRadius: getEmphasisCornerRadius() } | 
 |                                     } | 
 |                                 }] | 
 |                             }); | 
 |                         } | 
 |                     }, | 
 |                     { | 
 |                         text: 'use percent', | 
 |                         onclick: function () { | 
 |                             usePercent = !usePercent; | 
 |                             chart.setOption({ | 
 |                                 title: { | 
 |                                     text: getTitle() | 
 |                                 }, | 
 |                                 series: [{ | 
 |                                     itemStyle: { borderRadius: getCornerRadius() }, | 
 |                                     emphasis: { | 
 |                                         itemStyle: { borderRadius: getEmphasisCornerRadius() } | 
 |                                     } | 
 |                                 }] | 
 |                             }); | 
 |                         } | 
 |                     }, | 
 |                     { | 
 |                         text: 'random cornerRadius', | 
 |                         onclick: function () { | 
 |                             // clearInterval(randomTimer); | 
 |                             // if (randomTimer) { | 
 |                             //     randomTimer = null; | 
 |                             // } | 
 |                             // else { | 
 |                             //     randomTimer = setInterval(function () { | 
 |                             outerCornerRadius = ~~(Math.random() * 50); | 
 |                             innerCornerRadius = ~~(Math.random() * 50); | 
 |                             chart.setOption({ | 
 |                                 title: { | 
 |                                     text: getTitle() | 
 |                                 }, | 
 |                                 series: [{ | 
 |                                     itemStyle: { borderRadius: getCornerRadius() }, | 
 |                                     emphasis: { | 
 |                                         itemStyle: { borderRadius: getEmphasisCornerRadius() } | 
 |                                     } | 
 |                                 }] | 
 |                             }); | 
 |                             //     }, 2e3); | 
 |                             // } | 
 |                         } | 
 |                     }, | 
 |                     { | 
 |                         text: 'roseType', | 
 |                         onclick: function () { | 
 |                             roseType = roseType ? false : 'area'; | 
 |                             chart.setOption({ | 
 |                                 series: [{ | 
 |                                     roseType: roseType | 
 |                                 }] | 
 |                             }); | 
 |                         } | 
 |                     }, | 
 |                     { | 
 |                         text: 'circular', | 
 |                         onclick: function () { | 
 |                             var innerRadius; | 
 |                             if (!isCircular) { | 
 |                                 innerRadius = ~~(Math.random() * 70); | 
 |                             } | 
 |                             chart.setOption({ | 
 |                                 series: [{ | 
 |                                     radius: isCircular ? [0, '75%'] : [innerRadius + '%', '75%'] | 
 |                                 }] | 
 |                             }); | 
 |                             this.innerText = 'circular' + (innerRadius ? ' ' + innerRadius + '%' : ''); | 
 |                             isCircular = !isCircular; | 
 |                         } | 
 |                     }, | 
 |                     { | 
 |                         text: 'random data', | 
 |                         onclick: function () { | 
 |                             var randomData = echarts.util.clone(data); | 
 |                             echarts.util.each(randomData, function (e) { | 
 |                                 e.value = ~~(Math.random() * 1e3); | 
 |                             }); | 
 |                             chart.setOption({ | 
 |                                 series: [{ | 
 |                                     data: randomData | 
 |                                 }] | 
 |                             }); | 
 |                         } | 
 |                     }, | 
 |                     { | 
 |                         text: 'rounder on emphasis', | 
 |                         onclick: function () { | 
 |                             isRounderOnEmphasis = !isRounderOnEmphasis; | 
 |                             chart.setOption({ | 
 |                                 series: [{ | 
 |                                     itemStyle: { borderRadius: getCornerRadius() }, | 
 |                                     emphasis: { | 
 |                                         itemStyle: { borderRadius: getEmphasisCornerRadius() } | 
 |                                     } | 
 |                                 }] | 
 |                             }); | 
 |                         } | 
 |                     }, | 
 |                     { | 
 |                         text: 'set radius for all corners', | 
 |                         onclick: function () { | 
 |                             isCircular = true; | 
 |                             var val = [5, 15, 0, 20]; | 
 |                             chart.setOption({ | 
 |                                 title: { | 
 |                                     text: 'cornerRadius [' + val + ']' | 
 |                                 }, | 
 |                                 series: [{ | 
 |                                     radius: ['40%', '75%'], | 
 |                                     itemStyle: { borderRadius: val }, | 
 |                                     emphasis: { | 
 |                                         itemStyle: { borderRadius: [20, 5, 10, 30] } | 
 |                                     } | 
 |                                 }] | 
 |                             }); | 
 |                         } | 
 |                     }, | 
 |                     { | 
 |                         text: 'reset', | 
 |                         onclick: function () { | 
 |                             outerCornerRadius = 5; | 
 |                             innerCornerRadius = 5; | 
 |                             usePercent = false; | 
 |                             isCircular = false; | 
 |                             roseType = 'area'; | 
 |                             isRounderOnEmphasis = false; | 
 |                             chart.setOption({ | 
 |                                 title: { | 
 |                                     text: getTitle() | 
 |                                 }, | 
 |                                 series: [{ | 
 |                                     itemStyle: { borderRadius: getCornerRadius() }, | 
 |                                     emphasis: { | 
 |                                         itemStyle: { borderRadius: getEmphasisCornerRadius() } | 
 |                                     }, | 
 |                                     roseType: roseType, | 
 |                                     radius: [0, '75%'], | 
 |                                     data: data | 
 |                                 }] | 
 |                             }); | 
 |                         } | 
 |                     } | 
 |                 ] | 
 |             }); | 
 |         }); | 
 |         </script> | 
 |  | 
 |     </body> | 
 | </html> | 
 |  |