Merge branch 'optimize-axis' into 3.4.13
This commit is contained in:
Коммит
84e242f9e9
|
@ -8625,61 +8625,25 @@
|
|||
g.each(function() {
|
||||
var g = d3.select(this);
|
||||
var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();
|
||||
var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick").data(ticks, scale1), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε), tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(), tickUpdate = d3.transition(tick.order()).style("opacity", 1), tickTransform;
|
||||
var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick").data(ticks, scale1), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε), tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(), tickUpdate = d3.transition(tick.order()).style("opacity", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;
|
||||
var range = d3_scaleRange(scale1), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"),
|
||||
d3.transition(path));
|
||||
tickEnter.append("line");
|
||||
tickEnter.append("text");
|
||||
var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text");
|
||||
switch (orient) {
|
||||
case "bottom":
|
||||
{
|
||||
tickTransform = d3_svg_axisX;
|
||||
lineEnter.attr("y2", innerTickSize);
|
||||
textEnter.attr("y", Math.max(innerTickSize, 0) + tickPadding);
|
||||
lineUpdate.attr("x2", 0).attr("y2", innerTickSize);
|
||||
textUpdate.attr("x", 0).attr("y", Math.max(innerTickSize, 0) + tickPadding);
|
||||
text.attr("dy", ".71em").style("text-anchor", "middle");
|
||||
pathUpdate.attr("d", "M" + range[0] + "," + outerTickSize + "V0H" + range[1] + "V" + outerTickSize);
|
||||
break;
|
||||
}
|
||||
|
||||
case "top":
|
||||
{
|
||||
tickTransform = d3_svg_axisX;
|
||||
lineEnter.attr("y2", -innerTickSize);
|
||||
textEnter.attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
|
||||
lineUpdate.attr("x2", 0).attr("y2", -innerTickSize);
|
||||
textUpdate.attr("x", 0).attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
|
||||
text.attr("dy", "0em").style("text-anchor", "middle");
|
||||
pathUpdate.attr("d", "M" + range[0] + "," + -outerTickSize + "V0H" + range[1] + "V" + -outerTickSize);
|
||||
break;
|
||||
}
|
||||
|
||||
case "left":
|
||||
{
|
||||
tickTransform = d3_svg_axisY;
|
||||
lineEnter.attr("x2", -innerTickSize);
|
||||
textEnter.attr("x", -(Math.max(innerTickSize, 0) + tickPadding));
|
||||
lineUpdate.attr("x2", -innerTickSize).attr("y2", 0);
|
||||
textUpdate.attr("x", -(Math.max(innerTickSize, 0) + tickPadding)).attr("y", 0);
|
||||
text.attr("dy", ".32em").style("text-anchor", "end");
|
||||
pathUpdate.attr("d", "M" + -outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + -outerTickSize);
|
||||
break;
|
||||
}
|
||||
|
||||
case "right":
|
||||
{
|
||||
tickTransform = d3_svg_axisY;
|
||||
lineEnter.attr("x2", innerTickSize);
|
||||
textEnter.attr("x", Math.max(innerTickSize, 0) + tickPadding);
|
||||
lineUpdate.attr("x2", innerTickSize).attr("y2", 0);
|
||||
textUpdate.attr("x", Math.max(innerTickSize, 0) + tickPadding).attr("y", 0);
|
||||
text.attr("dy", ".32em").style("text-anchor", "start");
|
||||
pathUpdate.attr("d", "M" + outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + outerTickSize);
|
||||
break;
|
||||
}
|
||||
var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text"), sign = orient === "top" || orient === "left" ? -1 : 1, x1, x2, y1, y2;
|
||||
if (orient === "bottom" || orient === "top") {
|
||||
tickTransform = d3_svg_axisX, x1 = "x", y1 = "y", x2 = "x2", y2 = "y2";
|
||||
text.attr("dy", sign < 0 ? "0em" : ".71em").style("text-anchor", "middle");
|
||||
pathUpdate.attr("d", "M" + range[0] + "," + sign * outerTickSize + "V0H" + range[1] + "V" + sign * outerTickSize);
|
||||
} else {
|
||||
tickTransform = d3_svg_axisY, x1 = "y", y1 = "x", x2 = "y2", y2 = "x2";
|
||||
text.attr("dy", ".32em").style("text-anchor", sign < 0 ? "end" : "start");
|
||||
pathUpdate.attr("d", "M" + sign * outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + sign * outerTickSize);
|
||||
}
|
||||
lineEnter.attr(y2, sign * innerTickSize);
|
||||
textEnter.attr(y1, sign * tickSpacing);
|
||||
lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);
|
||||
textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);
|
||||
if (scale1.rangeBand) {
|
||||
var x = scale1, dx = x.rangeBand() / 2;
|
||||
scale0 = scale1 = function(d) {
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -31,6 +31,7 @@ d3.svg.axis = function() {
|
|||
tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε),
|
||||
tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(),
|
||||
tickUpdate = d3.transition(tick.order()).style("opacity", 1),
|
||||
tickSpacing = Math.max(innerTickSize, 0) + tickPadding,
|
||||
tickTransform;
|
||||
|
||||
// Domain.
|
||||
|
@ -45,51 +46,25 @@ d3.svg.axis = function() {
|
|||
lineUpdate = tickUpdate.select("line"),
|
||||
text = tick.select("text").text(tickFormat),
|
||||
textEnter = tickEnter.select("text"),
|
||||
textUpdate = tickUpdate.select("text");
|
||||
textUpdate = tickUpdate.select("text"),
|
||||
sign = orient === "top" || orient === "left" ? -1 : 1,
|
||||
x1, x2, y1, y2;
|
||||
|
||||
switch (orient) {
|
||||
case "bottom": {
|
||||
tickTransform = d3_svg_axisX;
|
||||
lineEnter.attr("y2", innerTickSize);
|
||||
textEnter.attr("y", Math.max(innerTickSize, 0) + tickPadding);
|
||||
lineUpdate.attr("x2", 0).attr("y2", innerTickSize);
|
||||
textUpdate.attr("x", 0).attr("y", Math.max(innerTickSize, 0) + tickPadding);
|
||||
text.attr("dy", ".71em").style("text-anchor", "middle");
|
||||
pathUpdate.attr("d", "M" + range[0] + "," + outerTickSize + "V0H" + range[1] + "V" + outerTickSize);
|
||||
break;
|
||||
}
|
||||
case "top": {
|
||||
tickTransform = d3_svg_axisX;
|
||||
lineEnter.attr("y2", -innerTickSize);
|
||||
textEnter.attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
|
||||
lineUpdate.attr("x2", 0).attr("y2", -innerTickSize);
|
||||
textUpdate.attr("x", 0).attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
|
||||
text.attr("dy", "0em").style("text-anchor", "middle");
|
||||
pathUpdate.attr("d", "M" + range[0] + "," + -outerTickSize + "V0H" + range[1] + "V" + -outerTickSize);
|
||||
break;
|
||||
}
|
||||
case "left": {
|
||||
tickTransform = d3_svg_axisY;
|
||||
lineEnter.attr("x2", -innerTickSize);
|
||||
textEnter.attr("x", -(Math.max(innerTickSize, 0) + tickPadding));
|
||||
lineUpdate.attr("x2", -innerTickSize).attr("y2", 0);
|
||||
textUpdate.attr("x", -(Math.max(innerTickSize, 0) + tickPadding)).attr("y", 0);
|
||||
text.attr("dy", ".32em").style("text-anchor", "end");
|
||||
pathUpdate.attr("d", "M" + -outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + -outerTickSize);
|
||||
break;
|
||||
}
|
||||
case "right": {
|
||||
tickTransform = d3_svg_axisY;
|
||||
lineEnter.attr("x2", innerTickSize);
|
||||
textEnter.attr("x", Math.max(innerTickSize, 0) + tickPadding);
|
||||
lineUpdate.attr("x2", innerTickSize).attr("y2", 0);
|
||||
textUpdate.attr("x", Math.max(innerTickSize, 0) + tickPadding).attr("y", 0);
|
||||
text.attr("dy", ".32em").style("text-anchor", "start");
|
||||
pathUpdate.attr("d", "M" + outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + outerTickSize);
|
||||
break;
|
||||
}
|
||||
if (orient === "bottom" || orient === "top") {
|
||||
tickTransform = d3_svg_axisX, x1 = "x", y1 = "y", x2 = "x2", y2 = "y2";
|
||||
text.attr("dy", sign < 0 ? "0em" : ".71em").style("text-anchor", "middle");
|
||||
pathUpdate.attr("d", "M" + range[0] + "," + sign * outerTickSize + "V0H" + range[1] + "V" + sign * outerTickSize);
|
||||
} else {
|
||||
tickTransform = d3_svg_axisY, x1 = "y", y1 = "x", x2 = "y2", y2 = "x2";
|
||||
text.attr("dy", ".32em").style("text-anchor", sign < 0 ? "end" : "start");
|
||||
pathUpdate.attr("d", "M" + sign * outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + sign * outerTickSize);
|
||||
}
|
||||
|
||||
lineEnter.attr(y2, sign * innerTickSize);
|
||||
textEnter.attr(y1, sign * tickSpacing);
|
||||
lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);
|
||||
textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);
|
||||
|
||||
// If either the new or old scale is ordinal,
|
||||
// entering ticks are undefined in the old scale,
|
||||
// and so can fade-in in the new scale’s position.
|
||||
|
|
Загрузка…
Ссылка в новой задаче