Commit ef37e95b by corpglory-dev

Import only what is used from d3

parent 0f9253fe
import React, { PureComponent } from 'react';
import * as d3 from 'd3';
import { select, pie, arc, event } from 'd3';
import { GrafanaThemeType } from '../../types';
import { Themeable } from '../../index';
......@@ -58,9 +58,8 @@ export class Piechart extends PureComponent<Props> {
const outerRadius = radius - radius / 10;
const innerRadius = pieType === PiechartType.PIE ? 0 : radius - radius / 3;
d3.select('.piechart-container svg').remove();
const svg = d3
.select('.piechart-container')
select('.piechart-container svg').remove();
const svg = select('.piechart-container')
.append('svg')
.attr('width', width)
.attr('height', height)
......@@ -68,42 +67,38 @@ export class Piechart extends PureComponent<Props> {
.append('g')
.attr('transform', `translate(${width / 2},${height / 2})`);
const arc = d3
.arc()
const pieChart = pie();
const customArc = arc()
.outerRadius(outerRadius)
.innerRadius(innerRadius)
.padAngle(0);
const pie = d3.pie();
svg
.selectAll('path')
.data(pie(data))
.data(pieChart(data))
.enter()
.append('path')
.attr('d', arc as any)
.attr('fill', (d: any, idx: number) => {
return colors[idx];
})
.attr('d', customArc as any)
.attr('fill', (d: any, idx: number) => colors[idx])
.style('fill-opacity', 0.15)
.style('stroke', (d: any, idx: number) => {
return colors[idx];
})
.style('stroke', (d: any, idx: number) => colors[idx])
.style('stroke-width', `${strokeWidth}px`)
.on('mouseover', (d: any, idx: any) => {
d3.select('#tooltip')
select('#tooltip')
.style('opacity', 1)
.select('#tooltip-value')
// TODO: show percents
.text(`${names[idx]} (${data[idx]})`);
})
.on('mousemove', () => {
d3.select('#tooltip')
.style('top', d3.event.pageY - 10 + 'px')
.style('left', d3.event.pageX + 10 + 'px');
select('#tooltip')
// TODO: right position
.style('top', `${event.pageY}px`)
.style('left', `${event.pageX}px`);
})
.on('mouseout', () => {
d3.select('#tooltip').style('opacity', 0);
select('#tooltip').style('opacity', 0);
});
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment