Próbuję dodać zachowanie powiększania do mojej treemap w D3 v4 na podstawie poniższych przykładów: 1 i 2. Jest zbudowany z elementów HTML, a nie z SVG. Uczyniliśmy go responsywnym, używając jednostek procentowych zamiast pikseli.Zoomable treemap w D3 v4
Działa to świetnie, ale teraz chciałbym powiększyć pojedyncze komórki za pomocą jednego kliknięcia, aż do ostatniego dziecka. Wtedy kliknięcie powróciłoby do korzenia drzewa.
Oto mój kod do tej pory: http://codepen.io/znak/pen/qapRkQ
jestem zmaga się z funkcją zoom, który działa w V4 i to wszędzie:
function zoom(d) {
console.log('clicked: ' + d.data.name);
x.domain([d.x0, d.x1]);
y.domain([d.y0, d.y1]);
var t = d3.transition()
.duration(800)
.ease(d3.easeCubicOut);
chart
.merge(cell)
.transition(t)
.style("left", function(d) { return x(d.x0) + "%"; })
.style("top", function(d) { return y(d.y0) + "%"; })
.style("width", function(d) { return x(d.x1 - d.x0) + "%"; })
.style("height", function(d) { return y(d.y1 - d.y0) + "%"; });});
node = d; //?
d3.event.stopPropagation(); //?
}
Jak zaktualizować i elementy przejściowe z D3 v4?
Dzięki za wszelkie wskazówki!
Fajna wizualizacja! – Mark
'd3.cubicOut' nie jest prawidłową funkcją wygładzania, twój kod zgłasza wyjątek. – Marcs
Doh! Dzięki! Zaczęło się przenosić, ale wciąż dalekie od doskonałości. – ALx