The d3.time.format.iso is designed to be compatible with the default JSON serialization of dates, which includes milliseconds. So, d3.time.format now supports the %L directive for formatting and parsing milliseconds. This commit also changes d3.time.format.iso to use native ISO date methods, if available.
Also, expose d3.formatPrefix so that it's easier for callers to create a formatter for a specific prefix (such as using the "G" prefix for all ticks).
This simplifies the implementation and fixes a few bugs. The si prefix format ("s") now supports variable precision; in fact, you are strongly recommended to specify a precision, such as ".3s".
You can now change the orientation and the axis will redraw correctly. When an axis is applied by a transition, the subtransitions will properly inherit the transition id, allowing transitions on reselected elements to continue.
This arranges them first by the type of polygon we're testing, then the operations. I've added tests for clockwise polygons too, for good measure.
d3.geom.polygon(…).area() assumes screen pixel coordinates with (0, 0) at the top left, and y increasing going downwards. This results in a positive area for counterclockwise coordinates. Howver, the default centroid calculation was assuming "usual" Cartesian coordinates with y increasing going upwards, hence the centroid coordinates were incorrectly multiplied by -1. This fix won't affect d3.geo.path(…).centroid() as it passes a constant to d3.geom.centroid.
Fix tests in Linux.
This occurs on Linux, where the directory listing order is different from OS X and so other tests leave data bound to the "body" element. This data is then propagated when new elements are appended, and thus mess up some of the tests!
Unless .html("") is called on d3.select("body"), elements appended by another test could interfere with data binding. See #329.
Uses Welford's algorithm to avoid overflow. See #245.
…nto release Conflicts: test/core/transition-test-attr.js
Previously, these would work by coercing the input color to a string and then parsing it. This is slow, but more importantly, this is a lossy process for HSL colors due to the conversion to hexadecimal RGB format. This commit detects instances of d3_Rgb and d3_Hsl on input and copies them efficiently.
When computing the reversed baseline, we need to switch between step-before and step-after, since the points are in reverse order. Otherwise, we're effectively filling the gap between step-before and step-after.
This breaks a test case that ensures d3.hsl(x) == d3.hsl(d3.hsl(x)). Fixes #333.