d3: Comment correctement la chaîne de transitions sur les différentes sélections

Je suis en utilisant la V3 de la populaire d3 bibliothèque et fondamentalement voulez avoir trois transitions, suivi par les autres: La première transition devrait s'appliquer à la sortie de la sélection, de la seconde à la mise à jour de la sélection et la troisième à l'entrée de sélection. Ils doivent être enchaînés de telle manière que lorsque l'un des sélections est vide, sa transition correspondante est ignorée. I. e. quand il n'y a pas de sortie de la sélection, de la mise à jour de la sélection devrait commencer immédiatement. Jusqu'à présent, je suis venu avec ce code (à l'aide de la delay fonction).

//DATA JOIN
var items = d3.select('#data').selectAll('.item');
items = items.data(data, function(d){ 
    return d.twitter_screenname;
});


//EXIT
items.exit().transition().duration(TRANSITION_DURATION).style('opacity', 0).remove();

//UPDATE
//Divs bewegen
items.transition().duration(TRANSITION_DURATION).delay(TRANSITION_DURATION * 1)
    .style('left', function(d, i) {
        return positions[i].left + "px";
    }).style('top', function(d, i) {
        return positions[i].top + "px";
    });

//ENTER
//Divs hinzufügen
var div = items.enter().append('div')
    .attr('class', 'item')
    .style('left', function(d, i) {
        return positions[i].left + "px";
    }).style('top', function(d, i) {
        return positions[i].top + "px";
    });

 div.style('opacity', 0)
    .transition().duration(TRANSITION_DURATION).delay(TRANSITION_DURATION * 2)
    .style('opacity', 1);

Tout d'abord, il ne permet pas de "sauter" les transitions et d'autre part je pense qu'il ya une meilleure façon que delay. J'ai regardé http://bl.ocks.org/mbostock/3903818 mais je n'ai pas vraiment comprendre ce qui se passe.

Aussi, en quelque sorte, l'écriture items.exit().transition().duration(TRANSITION_DURATION).remove() ne fonctionne pas avec le items, probablement parce qu'ils ne sont pas des éléments SVG mais divs.

InformationsquelleAutor wnstnsmth | 2013-06-13