chart = (dataset,company_selected,color_scheme,type_select)=>{
const svg = d3.select(DOM.svg(size.width, size.height));
const g = svg.append('g')
.datum(dataset)
.style('font-family', 'sans-serif')
.attr('transform', `translate(${size.width / 2}, ${size.height / 2})`);
const duration = 250;
const arc = g.selectAll('.arc')
.data(d => pie(d))
.enter()
.append('g')
.attr('class', '.arc')
arc.append('path')
.attr('d', path)
.attr("id",v=>v.data.type)
.attr('fill', v => color_scheme(v.data.type))
.attr('stroke', 'white');
if (type_select){
let selected_elm="path#"+type_select
arc.select(selected_elm)
.transition()
.duration(duration)
.attr('transform', v=>{
console.log(v)
return calcTranslate(v, 6)})
.attr("fill","#ECB22E")
.transition()
.duration(duration)
.attr('stroke', 'rgba(100, 100, 100, 0.2)')
.attr('stroke-width', 4);
}
const labels = arc.append('g')
.attr('transform', v => `translate(${label.centroid(v)})`)
.attr('text-anchor', 'middle')
.style('fill', 'white')
.style('font-size', '75%')
.style('display', v => v.endAngle - v.startAngle > textThreshold ? 'inline' : 'none');
labels.append('text').text(v => v.data.type);
labels.append('text')
.attr('dy', '1.2em')
.style('font-size', '90%')
.text(v => `${v.data.n} (${d3.format(".0%")(v.data.n/d3.sum(dataset.map(x=>x.n)))})`);
const card = g.append('g').attr('text-anchor', 'middle')
const cardFront = card.append('g').attr('class', 'card-front');
cardFront.append('text').text(company_selected).style('font-size', '90%');
cardFront.append('text')
.attr('dy', '1.8rem')
.style('font-size', '90%')
.text(d=>{let diverse= dataset.filter(v=>(v.type=="Female")|(v.type=="Yes"))
if (diverse.length>0){return `Candidates: ${diverse[0]['n']}`}
else {return `Candidates: 0`}}
);
return svg.node();
}