MCPcopy Create free account
hub / github.com/CoderOpen/waimai / drawPieDataPoints

Function drawPieDataPoints

front/components/u-charts/u-charts.js:3064–3157  ·  view source on GitHub ↗
(series, opts, config, context)

Source from the content-addressed store, hash-verified

3062}
3063
3064function drawPieDataPoints(series, opts, config, context) {
3065 var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
3066 var pieOption = assign({}, {
3067 activeOpacity: 0.5,
3068 activeRadius: 10 * opts.pixelRatio,
3069 offsetAngle: 0,
3070 labelWidth: 15 * opts.pixelRatio,
3071 ringWidth: 0,
3072 border:false,
3073 borderWidth:2,
3074 borderColor:'#FFFFFF'
3075 }, opts.extra.pie);
3076 var centerPosition = {
3077 x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
3078 y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
3079 };
3080 if (config.pieChartLinePadding == 0) {
3081 config.pieChartLinePadding = pieOption.activeRadius;
3082 }
3083
3084 var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
3085
3086 series = getPieDataPoints(series, radius, process);
3087
3088 var activeRadius = pieOption.activeRadius;
3089
3090 series = series.map(function(eachSeries) {
3091 eachSeries._start_ += (pieOption.offsetAngle) * Math.PI / 180;
3092 return eachSeries;
3093 });
3094 series.forEach(function(eachSeries, seriesIndex) {
3095 if (opts.tooltip) {
3096 if (opts.tooltip.index == seriesIndex) {
3097 context.beginPath();
3098 context.setFillStyle(hexToRgb(eachSeries.color, opts.extra.pie.activeOpacity || 0.5));
3099 context.moveTo(centerPosition.x, centerPosition.y);
3100 context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_,
3101 eachSeries._start_ + 2 *
3102 eachSeries._proportion_ * Math.PI);
3103 context.closePath();
3104 context.fill();
3105 }
3106 }
3107 context.beginPath();
3108 context.setLineWidth(pieOption.borderWidth * opts.pixelRatio);
3109 context.lineJoin = "round";
3110 context.setStrokeStyle(pieOption.borderColor);
3111 context.setFillStyle(eachSeries.color);
3112 context.moveTo(centerPosition.x, centerPosition.y);
3113 context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);
3114 context.closePath();
3115 context.fill();
3116 if (pieOption.border == true) {
3117 context.stroke();
3118 }
3119 });
3120
3121 if (opts.type === 'ring') {

Callers 1

drawChartsFunction · 0.85

Calls 5

getPieDataPointsFunction · 0.85
hexToRgbFunction · 0.85
drawPieTextFunction · 0.85
drawRingTitleFunction · 0.85
mapMethod · 0.80

Tested by

no test coverage detected