chart = {
const svg = d3.select(DOM.svg(width,height))
const columns = svg.selectAll("g")
.data(nested_city)
.enter()
.append("g")
.attr("city", function(d) { return d.key ;})
.attr("x", function(d) { return x(d.key) ;})
.attr("y", "0")
.attr("transform", function(d) { return "translate(" + x(d.key) + ",0)" ;})
.attr("class", "column")
.on("mouseover", function(d) {
d3.select(this)
.style("cursor","pointer");
})
.on("mouseout", function(d){
d3.select(this)
.style("cursor","default");
})
.call(d3.drag()
.subject(function() {
var t = d3.select(this);
var tr = getTranslation(t.attr("transform"));
return {x: t.attr("x") + tr[0],
y: t.attr("y") + tr[1]};
})
.on("start", dragstarted)
.on("drag", dragged)
.on("end", dragended));
const cardsEnter = columns.selectAll('.city')
.data(function(d) {
return d.values
})
.enter()
const cards = cardsEnter.append("rect")
.attr("y", function(d) { return y(d.Année) ; })
.attr("width", x.bandwidth())
.attr("rx", 4)
.attr("ry", 4)
.attr("class", "city bordered")
.attr("width", x.bandwidth())
.attr("height", y.bandwidth())
.style("fill", function(d) { return getColors(d.value - 1); })
cardsEnter.append("title");
svg.append("g")
.call(xAxis);
svg.append("g")
.call(yAxis);
function dragstarted(d) {
d3.select(this).raise().classed("active", true);
}
function dragged(d) {
d3.select(this).attr("transform", function(d,i){
var coordinates = d3.mouse(this);
var mx = coordinates[0]
console.log( coordinates[0])
return "translate(" + [mx,0] + ")"})
}
function dragended(d) {
d3.select(this).classed("active", false);
}
cardsEnter.transition().duration(1000)
.style("fill", function(d) { return getColors(d.value - 1); });
cardsEnter.select("title").text(function(d) { return d.value; });
columns.exit().remove();
return svg.node();
}