This commit is contained in:
Mike Bostock 2011-08-21 20:34:22 -07:00
Родитель 1704957cb0
Коммит 553bd4e36b
11 изменённых файлов: 57 добавлений и 25 удалений

13
d3.js поставляемый
Просмотреть файл

@ -1776,16 +1776,17 @@ function d3_selection_transition() {
}
}
return d3_transition(subgroups);
return d3_transition(subgroups, d3_transitionInheritId || ++d3_transitionId);
}
function d3_transition(groups) {
function d3_transition(groups, id) {
d3_arraySubclass(groups, d3_transitionPrototype);
var id = d3_transitionInheritId || ++d3_transitionId,
tweens = {},
var tweens = {},
event = d3.dispatch("start", "end"),
ease = d3_transitionEase;
groups.id = id;
groups.tween = function(name, tween) {
if (arguments.length < 2) return tweens[name];
if (tween == null) delete tweens[name];
@ -1914,7 +1915,7 @@ function d3_transition_select(selector) {
}
}
return d3_transition(subgroups).ease(this.ease());
return d3_transition(subgroups, this.id).ease(this.ease());
}
function d3_transition_selectAll(selector) {
var subgroups = [],
@ -1934,7 +1935,7 @@ function d3_transition_selectAll(selector) {
}
}
return d3_transition(subgroups).ease(this.ease());
return d3_transition(subgroups, this.id).ease(this.ease());
}
function d3_transition_attr(name, value) {
return this.attrTween(name, d3_transitionTween(value));

4
d3.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -10,5 +10,5 @@ function d3_selection_transition() {
}
}
return d3_transition(subgroups);
return d3_transition(subgroups, d3_transitionInheritId || ++d3_transitionId);
}

Просмотреть файл

@ -18,5 +18,5 @@ function d3_transition_select(selector) {
}
}
return d3_transition(subgroups).ease(this.ease());
return d3_transition(subgroups, this.id).ease(this.ease());
}

Просмотреть файл

@ -16,5 +16,5 @@ function d3_transition_selectAll(selector) {
}
}
return d3_transition(subgroups).ease(this.ease());
return d3_transition(subgroups, this.id).ease(this.ease());
}

Просмотреть файл

@ -1,11 +1,12 @@
function d3_transition(groups) {
function d3_transition(groups, id) {
d3_arraySubclass(groups, d3_transitionPrototype);
var id = d3_transitionInheritId || ++d3_transitionId,
tweens = {},
var tweens = {},
event = d3.dispatch("start", "end"),
ease = d3_transitionEase;
groups.id = id;
groups.tween = function(name, tween) {
if (arguments.length < 2) return tweens[name];
if (tween == null) delete tweens[name];

Просмотреть файл

@ -36,7 +36,8 @@ module.exports = {
context: context,
data: data,
index: index,
count: count
count: count,
id: transition.id
});
});
},
@ -66,7 +67,7 @@ module.exports = {
},
"sets an exclusive lock on transitioning nodes": function(result) {
var id = result.selection[0][0].__transition__.owner;
var id = result.id;
assert.isTrue(id > 0);
assert.equal(result.selection[0][0].__transition__.owner, id);
assert.equal(result.selection[0][1].__transition__.owner, id);
@ -87,13 +88,7 @@ module.exports = {
data = [],
index = [],
count = [],
delay = [],
id;
// A callback to grab the transition id.
transition.each("start", function() {
id = this.__transition__.active;
});
delay = [];
// A callback to verify that multiple callbacks are allowed.
transition.each("end", function() {
@ -114,7 +109,7 @@ module.exports = {
data: data,
index: index,
count: count,
id: id
id: transition.id
});
});
},

Просмотреть файл

@ -0,0 +1,20 @@
require("../env");
require("../../d3");
var assert = require("assert");
module.exports = {
topic: function() {
return d3.select("body").append("div").transition();
},
"has a positive integer id": function(transition) {
var id = transition.id;
assert.isTrue(id > 0);
assert.equal(~~id, id);
},
"increases monotonically across transitions": function(transition) {
var t0 = d3.select("body").append("div").transition(),
t1 = d3.select("body").append("div").transition();
assert.isTrue(t1.id > t0.id);
}
};

Просмотреть файл

@ -52,5 +52,12 @@ module.exports = {
"returns null if no match is found": function(transition) {
var t = transition.select("span");
assert.isNull(t[0][0]);
},
"inherits transition id": function(transition) {
var id = transition.id,
t0 = transition.select("span"),
t1 = transition.select("span");
assert.equal(t0.id, id);
assert.equal(t1.id, id);
}
};

Просмотреть файл

@ -44,5 +44,12 @@ module.exports = {
"returns empty if no match is found": function(transition) {
var t = transition.selectAll("span");
assert.isEmpty(t[0]);
},
"inherits transition id": function(transition) {
var id = transition.id,
t0 = transition.selectAll("span"),
t1 = transition.selectAll("span");
assert.equal(t0.id, id);
assert.equal(t1.id, id);
}
};

Просмотреть файл

@ -43,7 +43,8 @@ suite.addBatch({
// Control
"each": require("./transition-test-each"),
"call": require("./transition-test-call"),
"tween": require("./transition-test-tween")
"tween": require("./transition-test-tween"),
"id": require("./transition-test-id")
});