viewof new_chart = {
const svg = d3.create("svg")
.attr("width", width)
.attr("height", y_new.range()[1])
.attr("font-family", "sans-serif")
.attr("font-size", "16")
.attr("text-anchor", "end");
svg.property('value', {
'term_name': 'Select Term',
'term_genes': []
})
const bar = svg.selectAll("g")
.data(bar_data)
.join("g")
.attr("transform", (d, i) => `translate(0,${y_new(i)})`)
.on('click', function(d){
let term_genes = d.genes.map(x => x.toLowerCase())
let value_dict = {}
value_dict.term_genes = term_genes
value_dict.term_name = d.name
value_dict.score = d.value
svg.property("value", value_dict)
.dispatch("input");
svg.selectAll("g")
.attr('font-weight', 'normal')
d3.select(this)
.attr('font-weight', 'bold')
})
bar.append("rect")
.attr("fill", "steelblue")
.attr('opacity', 0.25)
.attr("width", function(d){return x_new(d.value)})
.attr("height", y_new.bandwidth() - 1);
bar.append("text")
.attr("fill", 'black')
.attr("x", '5px')
.attr("y", y_new.bandwidth() / 2)
.attr("dy", "0.35em")
.attr('text-anchor', 'start')
.text(d => d.name);
return svg.node();
}