1. 22 Apr, 2014 1 commit
  2. 13 Apr, 2014 4 commits
  3. 11 Apr, 2014 1 commit
    • Jason Davies's avatar
      Optimise d3.mean. · c0e84e2c
      Jason Davies authored
      Originally we were using Welford’s algorithm, but this is primarily
      useful when computing the variance in a numerically stable manner, since
      Welford’s approach requires an incremental mean.
      I’ve removed a test for the mean of more than one instance of
      Number.MAX_VALUE as this is unlikely to occur in practice; most likely
      this was the reason I used Welford’s algorithm in the first place.
      There’s a paper [1] comparing various algorithms for computing the mean,
      and Welford’s is actually slightly less accurate than the naïve
      approach.  There are some more accurate approaches but I think it’s
      overkill for d3.mean.
      [1] Youngs, Edward A., and Elliot M. Cramer. "Some results relevant to
      choice of sum and sum-of-product algorithms." Technometrics 13.3 (1971):
      Related: #1842.
  4. 10 Apr, 2014 2 commits
  5. 08 Apr, 2014 3 commits
  6. 06 Apr, 2014 4 commits
  7. 04 Apr, 2014 1 commit
  8. 24 Mar, 2014 23 commits
    • Mike Bostock's avatar
      Merge branch '3.4.4' · fa55eead
      Mike Bostock authored
    • Mike Bostock's avatar
      Test for interpolate to null. · 994235b3
      Mike Bostock authored
      I’m not entirely sure this is the most useful behavior, but since typeof null is
      "object" and +null is 0, interpolating to null is equivalent to interpolating to
      the number zero.
    • Mike Bostock's avatar
      Save a few bytes. · d3bbf394
      Mike Bostock authored
    • Mike Bostock's avatar
      Preserve tick ordering when updating axis. · abbe1c75
      Mike Bostock authored
      Fixes #1748.
    • Mike Bostock's avatar
      Getter support for transition.{delay,duration}. · b86e4e4a
      Mike Bostock authored
      Fixes #1773.
    • Mike Bostock's avatar
      Default to suitable precision. · 28538c40
      Mike Bostock authored
      The point of this method is to pick the right precision for you!
    • Mike Bostock's avatar
      More standard precision interpretation. · fe797df4
      Mike Bostock authored
      Rather than overload the meaning of precision to bias the selection of the SI
      prefix, always use the standard SI prefix, and use the precision in the same
      sense as with fixed digits: the number of digits after the decimal point.
    • Mike Bostock's avatar
      Consistent SI-prefix for small numbers. · 621558c2
      Mike Bostock authored
      For reasons that I can’t recall, the SI-prefix behavior was different for small
      numbers (between -1 and 1) than it was for large numbers. This commit enforces
      consistent behavior, so that the coefficient is always in the range [1, 1000),
      like in engineering notation.
      For example, the old d3.format("s") would display 0.01 as "0.01", whereas the
      new behavior displays it as "10m".
    • Mike Bostock's avatar
      Consistent SI-prefix for ticks. Fixes #1746. · 91531cf7
      Mike Bostock authored
      When a SI-prefix format (type "s") is passed to scale.tickFormat, compute a
      suitable SI-prefix based on the maximum value in the range, and then use that
      prefix for all ticks rather than computing the SI-prefix on a per-tick basis.
    • Mike Bostock's avatar
      Fix ordinal scales with singleton domains. · d6ca25e8
      Mike Bostock authored
      Fixes #1717. Turns out, -1 % 1 is 0!
    • Mike Bostock's avatar
      Listen to the touch target. · f9e00b1d
      Mike Bostock authored
      This ensures that if the touch target is removed from the DOM during a zoom
      gesture, the zoom behavior continues to receive events; touch events, unlike
      other events, are always dispatched to the target of the touchstart event rather than the window.
    • Mike Bostock's avatar
      Better ticks for subsecond domains. · e03b6454
      Mike Bostock authored
      Rather than starting the ticks on the minimum domain value, round up based on
      the step size. Fixes #1757.
    • Darrick Brown's avatar
      100% to 125% faster #rgb/#rrggbb string parsing across all platforms. Tests... · d9768e52
      Darrick Brown authored
      100% to 125% faster #rgb/#rrggbb string parsing across all platforms. Tests pass. http://jsperf.com/rgb-str-vs-regex
    • Timmy Willison's avatar
      Shorten selectAll to just `Sizzle` · 086de835
      Timmy Willison authored
    • Timmy Willison's avatar
      Remove redundant Sizzle.uniqueSort call · 336f3afc
      Timmy Willison authored
    • Mike Bostock's avatar
      Clamp latitude for conic conformal projection. · defe5bc8
      Mike Bostock authored
      The Lambert conic conformal projection extends to infinity along the outer edge
      of the projection, and thus the latitude must be clamped either at -π/2 or +π/2
      depending on the parallels. Fixes #1802.
    • Mike Bostock's avatar
      Remove workaround for WebKit bug 44083. · 2b148070
      Mike Bostock authored
      This was fixed in 2010, so I think it’s safe to remove the workaround now.
    • Mike Bostock's avatar
      d3.touch defaults to changedTouches. · 467f1490
      Mike Bostock authored
      This way, it’s easier to tell whether the touch changed during the event. This
      also fixes #1600 because the drag behavior now only dispatches a drag event on
      elements that moved, even if multiple touches are active.
    • Mike Bostock's avatar
      Add d3.touch; fix #1786. · 38724915
      Mike Bostock authored
      The drag behavior no longer crashes when the element being dragged is removed
      from the DOM. In addition, the new d3.touch method extracts a single identified
      touch from the current touch event, making it more efficient during multitouch.
      The drag behavior now assigns touchmove and touchend listeners on the target
      element of the touchstart event, rather than the window.
    • Mike Bostock's avatar
      Fix all touches ending on any touch ending. · ee23f941
      Mike Bostock authored
      The drag behavior registers a touchend listener for each started touch; however,
      a touchend event is dispatched to ALL listeners when any touch ends, not just
      for the corresponding starting touch. The drag behavior must therefore detect
      whenever the ending touch is the corresponding starting touch, and ignore other
      ending touches.
      This fixes the drag behavior during multitouch, as discussed in #1786.
    • Mike Bostock's avatar
      Prefer interpolateNumber when coercible to number. · 947c6090
      Mike Bostock authored
      Objects that are coercible to numbers, such as Dates, are often more usefully
      interpolated as numbers rather than as objects.
    • Mike Bostock's avatar
      Instead of bisectBy, replace bisector. · 90b6c0b9
      Mike Bostock authored
      For backwards-compatibility, bisector checks the arity of the specified
      function, and if the function only takes a single argument, it is wrapped with a
      suitable comparator.
    • Mike Bostock's avatar
      Add d3.bisectBy(comparator). · 3c7cc81b
      Mike Bostock authored
      Fixes #1766. Unlike d3.bisector(accessor), this allows you to define a bisector
      that works in reverse order.
      An awkward aspect of implementing bisection on top of a comparator is that it is
      often the case that the sorted array contains objects (e.g., rows from a TSV),
      while the search value is a primitive value (e.g., a number). Thus, you want to
      apply an accessor to the array elements but not to the search value.
      The solution here is to invoke the comparator deterministically: the first
      argument is always an element from the array, and the second argument is always
      the search value. This lets a comparator apply an accessor to array elements but
      not to search values.
  9. 23 Mar, 2014 1 commit