(animate?: boolean)
| 213 | } |
| 214 | |
| 215 | private updateRadius(animate?: boolean) { |
| 216 | const animation_duration = |
| 217 | animate === true ? this.parent.model.get('animation_duration') : 0; |
| 218 | |
| 219 | const radius = this.model.get('radius'); |
| 220 | const inner_radius = this.model.get('inner_radius'); |
| 221 | const display_labels = this.model.get('display_labels'); |
| 222 | |
| 223 | if (display_labels === 'inside') { |
| 224 | this.arc.outerRadius(radius).innerRadius(inner_radius); |
| 225 | } else if (display_labels === 'outside') { |
| 226 | this.arc.outerRadius(radius * 0.8).innerRadius(inner_radius * 0.8); |
| 227 | this.outerArc.innerRadius(radius * 0.9).outerRadius(radius * 0.9); |
| 228 | } |
| 229 | |
| 230 | const slices = this.pieSelection.select('.slices'); |
| 231 | const labels = this.pieSelection.select('.labels'); |
| 232 | const lines = this.pieSelection.select('.lines'); |
| 233 | |
| 234 | const that = this; |
| 235 | |
| 236 | slices |
| 237 | .selectAll('.slice') |
| 238 | .transition('update_radius') |
| 239 | .duration(animation_duration) |
| 240 | .attr('d', this.arc); |
| 241 | |
| 242 | if (display_labels === 'inside') { |
| 243 | labels |
| 244 | .selectAll('text') |
| 245 | .transition('update_radius') |
| 246 | .duration(animation_duration) |
| 247 | .attr('transform', (d: d3.DefaultArcObject) => { |
| 248 | return 'translate(' + that.arc.centroid(d) + ')'; |
| 249 | }); |
| 250 | } else if (display_labels === 'outside') { |
| 251 | labels |
| 252 | .selectAll('text') |
| 253 | .transition('update_radius') |
| 254 | .duration(animation_duration) |
| 255 | .attr('transform', (d: d3.DefaultArcObject) => { |
| 256 | const pos = that.outerArc.centroid(d); |
| 257 | pos[0] = radius * (that.midAngleLocation(d) === 'left' ? -1 : 1); |
| 258 | return 'translate(' + pos + ')'; |
| 259 | }); |
| 260 | |
| 261 | lines |
| 262 | .selectAll('polyline') |
| 263 | .transition('update_radius') |
| 264 | .duration(animation_duration) |
| 265 | .attr('points', (d: d3.DefaultArcObject) => { |
| 266 | const pos = that.outerArc.centroid(d); |
| 267 | pos[0] = |
| 268 | radius * 0.95 * (that.midAngleLocation(d) === 'left' ? -1 : 1); |
| 269 | return [ |
| 270 | that.arc.centroid(d), |
| 271 | that.outerArc.centroid(d), |
| 272 | pos, |
no test coverage detected