From a6975c8496a5edc95c992304cc4f5e0ec01910ed Mon Sep 17 00:00:00 2001 From: Richard Birkby Date: Wed, 27 Mar 2013 23:10:11 +0000 Subject: [PATCH] Add more D3 Transition methods --- d3/d3-tests.ts | 30 ++++++++++++++++++++++++++++++ d3/d3.d.ts | 4 ++++ 2 files changed, 34 insertions(+) diff --git a/d3/d3-tests.ts b/d3/d3-tests.ts index a2d707f88..1581cdb71 100644 --- a/d3/d3-tests.ts +++ b/d3/d3-tests.ts @@ -699,3 +699,33 @@ function panAndZoom { svg.select(".y.axis").call(yAxis); } } + +//Example from http://bl.ocks.org/mbostock/1125997 +function chainedTransitions() { + var w = 960, + h = 500, + y = d3.scale.ordinal().domain(d3.range(50)).rangePoints([20, h - 20]), + t = Date.now(); + + var svg = d3.select("body").append("svg:svg") + .attr("width", w) + .attr("height", h); + + var circle = svg.selectAll("circle") + .data(y.domain()) + .enter().append("svg:circle") + .attr("r", 16) + .attr("cx", 20) + .attr("cy", y) + .each(slide(20, w - 20)); + + function slide(x0, x1) { + t += 50; + return function() { + d3.select(this).transition() + .duration(t - Date.now()) + .attr("cx", x1) + .each("end", slide(x1, x0)); + }; + } +} diff --git a/d3/d3.d.ts b/d3/d3.d.ts index 8d3740b96..de3491de4 100644 --- a/d3/d3.d.ts +++ b/d3/d3.d.ts @@ -811,6 +811,10 @@ module D3 { select: (selector: string) => Transition; selectAll: (selector: string) => Transition; + + each: (type?: string, eachFunction?: (data: any, index: number) => any) => Transition; + transition: () => Transition; + ease: (value: string, ...arrs: any[]) => Transition; } interface Nest {