in src/core/radialAxis.ts [29:224]
function radialAxis(selection) {
selection.each(function (data) {
var g = d3.select(this);
if (moment(data[0]).year() <= 0) {
bc_origin = true;
} else {
bc_origin = false;
}
num_ticks = data.length;
if (globals.segment_granularity === "days" && time.hour.count(time.day.floor(data[0]), time.day.ceil(data[num_ticks - 1])) > 24) {
longer_than_a_day = true;
} else {
longer_than_a_day = false;
}
// stash the new scale and quantiles
this.__chart__ = radial_axis_scale;
// concentric track circles
var radial_axis_tracks = g.selectAll(".radial_tracks")
.data(d3.range(-1, track_bounds));
var radial_axis_tracks_enter = radial_axis_tracks.enter()
.append("g")
.attr("class", "radial_tracks");
radial_axis_tracks_enter.append("path")
.attr("class", "rad_track")
.attr("id", function (d, i) {
return "rad_track" + i;
})
.attr("transform", function () {
return "translate(" + x_pos + " ," + y_pos + ")";
})
.style("opacity", 0)
.attr("d", d3.svg.arc()
.innerRadius(function () {
return globals.centre_radius;
})
.outerRadius(function () {
return globals.centre_radius;
})
.startAngle(0)
.endAngle(radial_axis_scale(final_quantile)));
var radial_axis_tracks_update = radial_axis_tracks.transition()
.duration(duration);
var radial_axis_tracks_delayed_update = radial_axis_tracks.transition()
.delay(function (d, i) {
return duration + i / track_bounds * duration;
})
.duration(duration);
var radial_axis_tracks_exit = radial_axis_tracks.exit().transition()
.delay(duration)
.duration(duration)
.remove();
radial_axis_tracks_update.selectAll(".rad_track")
.attr("transform", function () {
return "translate(" + x_pos + " ," + y_pos + ")";
});
radial_axis_tracks_delayed_update.selectAll(".rad_track")
.style("opacity", 1)
.attrTween("d", arcTween(d3.svg.arc()
.innerRadius(function (d) {
return globals.centre_radius + d * globals.track_height;
})
.outerRadius(function (d) {
return globals.centre_radius + d * globals.track_height;
})
.startAngle(0)
.endAngle(radial_axis_scale(final_quantile))));
radial_axis_tracks_exit.selectAll(".rad_track")
.attr("transform", function () {
return "translate(" + x_pos + " ," + y_pos + ")";
})
.attrTween("d", arcTween(d3.svg.arc()
.innerRadius(function () {
return globals.centre_radius;
})
.outerRadius(function () {
return globals.centre_radius;
})
.startAngle(0)
.endAngle(radial_axis_scale(final_quantile))));
// radial ticks
var radial_axis_tick = g.selectAll(".radial_axis_tick")
.data(data);
var radial_axis_tick_enter = radial_axis_tick.enter()
.append("g")
.attr("class", "radial_axis_tick");
var radial_axis_tick_exit = radial_axis_tick.exit().transition()
.duration(duration)
.remove();
radial_axis_tick_enter.append("path")
.attr("class", "radial_axis_tick_path")
.style("opacity", 0)
.attr("transform", function () {
return "translate(" + x_pos + " ," + y_pos + ")";
});
radial_axis_tick_enter.append("text")
.attr("class", "radial_axis_tick_label")
.attr("text-anchor", "middle")
.attr("dominant-baseline", "central")
.style("opacity", 0)
.text(function () {
return "";
})
.attr("transform", function () {
return "translate(" + x_pos + " ," + y_pos + ")";
});
var radial_axis_tick_update = radial_axis_tick.transition()
.duration(duration);
var radial_axis_tick_delayed_update = radial_axis_tick.transition()
.delay(function (d, i) {
return duration + i / data.length * duration;
})
.duration(duration);
radial_axis_tick_update.select("path")
.attr("transform", function () {
return "translate(" + x_pos + " ," + y_pos + ")";
});
radial_axis_tick_delayed_update.select("path")
.style("opacity", 1)
.attrTween("d", arcTween(d3.svg.arc()
.innerRadius(globals.centre_radius - globals.track_height)
.outerRadius(globals.centre_radius + track_bounds * globals.track_height - 0.25 * unit_width)
.startAngle(function (d) {
return radial_axis_scale(d);
})
.endAngle(function (d) {
return radial_axis_scale(d);
})));
radial_axis_tick_update.select("text")
.style("opacity", 0)
.text("")
.attr("transform", function () {
return "translate(" + x_pos + " ," + y_pos + ")";
});
radial_axis_tick_delayed_update.select("text")
.style("opacity", 1)
.attr("x", function (d) {
return (globals.centre_radius + track_bounds * globals.track_height + 0.5 * unit_width) * Math.sin(radial_axis_scale(d));
})
.attr("y", function (d) {
return -1 * (globals.centre_radius + track_bounds * globals.track_height + 0.5 * unit_width) * Math.cos(radial_axis_scale(d));
})
.text(function (d, i) {
return formatTick(d, i);
})
.attr("transform", function (d) {
var angle = radial_axis_scale(d) * (180 / Math.PI);
if (angle > 90 && angle <= 180) {
angle = angle + 180;
} else if (angle < 270 && angle > 180) {
angle = angle - 180;
}
return "translate(" + x_pos + " ," + y_pos + ")rotate(" + angle + "," + (globals.centre_radius + track_bounds * globals.track_height + 0.5 * unit_width) * Math.sin(radial_axis_scale(d)) + " ," + (-1 * (globals.centre_radius + track_bounds * globals.track_height + 0.5 * unit_width) * Math.cos(radial_axis_scale(d))) + ")";
});
radial_axis_tick_exit.select("path")
.attrTween("d", arcTween(d3.svg.arc()
.innerRadius(globals.centre_radius)
.outerRadius(globals.centre_radius)
.startAngle(function (d) {
return radial_axis_scale(d);
})
.endAngle(function (d) {
return radial_axis_scale(d);
})));
radial_axis_tick_exit.select("text")
.text(function () {
return "";
});
});
d3.timer.flush();
}