166f8b5 | Michael Bostock | 09 March 2011, 07:29:59 UTC | Expose d3.timer, for requestAnimationFrame. This allows external classes to hook into D3's timer mechanism, such as the iterative force-directed graph layout. | 09 March 2011, 07:29:59 UTC |
e15183c | Michael Bostock | 08 March 2011, 22:52:42 UTC | Ack, forgot to update d3.version. | 08 March 2011, 22:52:42 UTC |
871cefc | Michael Bostock | 08 March 2011, 22:24:23 UTC | Add a few tests for d3.scale.linear. | 08 March 2011, 22:24:23 UTC |
9857dad | Michael Bostock | 08 March 2011, 22:23:31 UTC | Woot, requestAnimationFrame! | 08 March 2011, 22:23:31 UTC |
1be121a | Michael Bostock | 05 March 2011, 00:35:16 UTC | Unplug env-js' timer module. This was breaking setTimeout and setInterval in Node, since I've already unplugged env-js' event loop. With that out of the way, we can write tests for transitions! | 05 March 2011, 00:35:16 UTC |
eaed6b8 | Michael Bostock | 05 March 2011, 00:05:53 UTC | Ack, Sizzle doesn't sort by default. The Selectors API guarantees that results are returned in document order, but Sizzle does not, by default. So now we sort the results when using Sizzle. Yay tests! | 05 March 2011, 00:05:53 UTC |
50ebc15 | Michael Bostock | 04 March 2011, 23:25:09 UTC | Test (and fixes) for d3.format. | 04 March 2011, 23:25:09 UTC |
7df63b3 | Michael Bostock | 04 March 2011, 21:42:49 UTC | Allow env-js to be require'd. This fixes a bug with the usage of `require` in env-js, such that env-js now uses proper relative paths rather than unshifting "." onto `require.paths`. The behavior of `require` is documented here: <http://nodejs.org/docs/v0.4.2/api/modules.html#all_Together...> With this change in place, it's now possible to use env-js simply by require'ing it from a script, rather than having env-js host and eval. Also, this commit changes the initialization of env-js, such that the initial document is immediately available when the env-js module is loaded. And, the event loop is disabled so that env-js shuts down cleanly. This probably breaks some parts of env-js, but it makes it much easier to use so I'm going to play with it a bit. | 04 March 2011, 21:42:49 UTC |
3568eca | Michael Bostock | 04 March 2011, 19:48:14 UTC | Fix env-js node 0.4.2 incompatibility. The `console` global is read-only; it cannot be reassigned. | 04 March 2011, 19:48:14 UTC |
1fe1b46 | Michael Bostock | 04 March 2011, 19:47:19 UTC | Add lib/env-js. | 04 March 2011, 19:47:19 UTC |
31c47f8 | Michael Bostock | 04 March 2011, 00:01:18 UTC | Tiny simplification. | 04 March 2011, 00:01:18 UTC |
36e935a | Michael Bostock | 03 March 2011, 23:43:57 UTC | Add force & treemap to d3.layout. | 03 March 2011, 23:43:57 UTC |
3cfb007 | Michael Bostock | 03 March 2011, 22:20:18 UTC | Add proper rounding to treemap layout! | 03 March 2011, 22:20:18 UTC |
0585616 | Mike Bostock | 01 March 2011, 20:01:09 UTC | Add support for sortKeys on d3.nest. The method existed previously, but it only makes sense in conjunction with the newly-added `entries` operator; map keys are inherently unsorted. Originally I envisioned that key-sorting could be done externally using `d3.entries`, but that's tedious for hierarchical structures. | 01 March 2011, 20:01:09 UTC |
125ea93 | Michael Bostock | 01 March 2011, 01:02:58 UTC | Make force-directed graphs draggable. | 01 March 2011, 01:02:58 UTC |
32c0620 | Michael Bostock | 28 February 2011, 23:05:37 UTC | Merge branch 'master' of github.com:mbostock/d3 | 28 February 2011, 23:05:37 UTC |
6b8839e | Michael Bostock | 28 February 2011, 23:04:20 UTC | Add treemap example. Still a work in progress. Need to decide on the appropriate API for representing tree structures; not sure I want to go the heavyweight pv.dom route. May also need rounding to exact pixel values. | 28 February 2011, 23:04:20 UTC |
07fe0f5 | Mike Bostock | 28 February 2011, 18:12:25 UTC | Restructure cartogram example. | 28 February 2011, 18:12:25 UTC |
99b4f2e | Mike Bostock | 28 February 2011, 02:34:47 UTC | Turn off shape-rendering: crispEdges. | 28 February 2011, 02:34:47 UTC |
ced7b72 | Mike Bostock | 28 February 2011, 02:22:23 UTC | Better force-directed layout. Use the Floyd-Warshall algorithm to compute the shortest path between nodes, and use that graph theoretic distance as the distance constraint for the Gauss- Seidel relaxation. In addition, have the constraint alpha decay over time, as in Simulated Annealing. | 28 February 2011, 02:22:23 UTC |
1d9ed5a | Michael Bostock | 27 February 2011, 23:05:18 UTC | Add d3.interpolateHsl. This allows scale interpolation in HSL space. For example: var fill = d3.scale.linear() .interpolate(d3.interpolateHsl) .domain([0, 100]) .range([d3.hsl(180, .5, 1), d3.hsl(180, .5, 0)]); You could approximate this in previous versions using d3.interpolateString, but the new interpolation method is slightly faster and also provides backwards- compatibility for browsers that only understand RGB. | 27 February 2011, 23:05:18 UTC |
62ef98e | Michael Bostock | 27 February 2011, 21:05:55 UTC | Restructure voronoi example. | 27 February 2011, 21:05:55 UTC |
b8cc4c9 | Michael Bostock | 27 February 2011, 20:41:31 UTC | Restructure stack and stream examples. | 27 February 2011, 21:03:00 UTC |
85de0be | Michael Bostock | 27 February 2011, 20:36:11 UTC | Fix vertical offset in calendar example. | 27 February 2011, 20:36:11 UTC |
8a00d72 | Michael Bostock | 27 February 2011, 20:33:02 UTC | Resize chord example. | 27 February 2011, 20:33:02 UTC |
127ecde | Michael Bostock | 27 February 2011, 20:21:11 UTC | Restructure splom example. | 27 February 2011, 20:21:11 UTC |
7b1df15 | Michael Bostock | 27 February 2011, 20:09:27 UTC | Restructure force example. | 27 February 2011, 20:09:27 UTC |
6363881 | Michael Bostock | 27 February 2011, 19:56:25 UTC | Resize a few examples. | 27 February 2011, 19:56:25 UTC |
aa69f20 | Michael Bostock | 26 February 2011, 04:32:09 UTC | Restructure choropleth example. | 26 February 2011, 04:51:05 UTC |
198ee5f | Michael Bostock | 25 February 2011, 18:01:34 UTC | Tweak README. | 25 February 2011, 18:01:34 UTC |
a29c802 | Michael Bostock | 24 February 2011, 22:36:57 UTC | Sort for layout, but don't reorder. This fixes a bug in the pie layout sorting where we want the sort order to affect the layout, but not the order in which arcs are rendered—and furthermore we want the order of arcs to always match the order of data. (If you want to sort the data, do that before it is passed to the layout.) | 24 February 2011, 22:36:57 UTC |
ade083d | Michael Bostock | 24 February 2011, 22:13:05 UTC | More convenient pies. This adds d3.layout.pie, which can be used to compute the start and end angles for arcs given an arbitrary array of data. In addition, d3.svg.arc now has a `centroid` method that computes the center of the arc, useful for labeling. Together these changes greatly simplify the donut & pie examples. This commit also includes a `map` method for selections, which is similar to the `filter` method. This allows you to map the data bound to the current selection. I'm not currently using it, but it seems like a useful feature for those cases where you want to rebind the current selection to different (but related) data. | 24 February 2011, 22:13:05 UTC |
23dc44e | Michael Bostock | 23 February 2011, 21:04:18 UTC | Oops, include sqrt transform. | 23 February 2011, 21:04:18 UTC |
77f81a0 | Michael Bostock | 23 February 2011, 20:35:41 UTC | Merge branch 'master' of github.com:mbostock/d3 Conflicts: src/core/core.js | 23 February 2011, 20:35:41 UTC |
3ecb753 | Michael Bostock | 23 February 2011, 20:33:18 UTC | Non-contiguous cartogram example. Also includes new d3.geom.polygon.centroid method. Props to Zachary Johnson for the inspiration! | 23 February 2011, 20:33:18 UTC |
59c32fc | Mike Bostock | 23 February 2011, 17:09:43 UTC | Fix subgroup sorting in chord layout. | 23 February 2011, 17:09:43 UTC |
6d8a51b | Michael Bostock | 19 February 2011, 20:41:21 UTC | Merge branch 'array_slice' of https://github.com/jasondavies/d3 into jasondavies-array_slice Conflicts: src/core/call.js | 19 February 2011, 20:41:21 UTC |
d563b53 | Michael Bostock | 18 February 2011, 23:10:17 UTC | Remove slice(arguments). | 18 February 2011, 23:10:17 UTC |
e6bfd66 | Jason Davies | 18 February 2011, 19:50:26 UTC | Split `d3_array` into `d3_arrayNodes` and `d3_arrayArguments`. | 18 February 2011, 19:50:26 UTC |
fe5fdb3 | Jason Davies | 18 February 2011, 18:40:35 UTC | Fix `d3_array` for older/more esoteric browsers. This code is adapted from `makeArray` in Sizzle.js. | 18 February 2011, 18:40:35 UTC |
8da80dc | Michael Bostock | 17 February 2011, 19:56:13 UTC | Support for Sizzle. D3 now supports Sizzle, preferring Sizzle to the native Selectors API if Sizzle is available. Sizzle internally uses the native Selectors API and thus this should have minimal performance implications; also, it allows you to use Sizzle proprietary extensions such as ":first". This commit also restricts the definition of the enter selection so that only append and insert operations are defined. The other operations were generally unsupported anyway, and it cleans up the code to have separate implementations for insert and append. (I might enable additional operations in the future, such as `filter`, `sort` and `each`, but this seems like a reasonable first pass.) | 17 February 2011, 19:56:13 UTC |
c31590e | Michael Bostock | 16 February 2011, 17:53:48 UTC | Add support for namespaced listeners. You can now also remove listeners by specifying a null listener. | 16 February 2011, 17:53:48 UTC |
67f122b | Jason Davies | 16 February 2011, 13:26:54 UTC | Fix scroll events for Firefox | 16 February 2011, 13:26:54 UTC |
77a061f | Michael Bostock | 14 February 2011, 07:20:10 UTC | Add d3.svg.symbol. The `symbol` class can be used to generate dot symbols for scatterplots. This commit also fixes a couple bugs with negative-domain log and pow scales, as well as tick generation. | 14 February 2011, 07:20:10 UTC |
0e1c1fa | Mike Bostock | 12 February 2011, 03:42:52 UTC | Add d3.geo.bounds. This method can be used for computing the bounding box of arbitrary GeoJSON objects. This commit also fixes a bug in d3.geo.path, such that it will accept any GeoJSON object, rather than requiring GeoJSON feature objects. | 12 February 2011, 03:42:52 UTC |
c34cd15 | Mike Bostock | 12 February 2011, 01:35:21 UTC | Add color-by-area with zoom example. This uses d3.geo.path to compute the projected area (in square pixels) of each county in the choropleth. It also usees d3.behavior.zoom to add geometric pan and zoom. | 12 February 2011, 01:35:21 UTC |
12eb5c1 | Michael Bostock | 11 February 2011, 21:44:56 UTC | Add geometric zooming example. | 11 February 2011, 21:44:56 UTC |
d215ace | Michael Bostock | 11 February 2011, 21:00:41 UTC | Add d3.behavior module. Includes, as the first behavior, a pan & zoom behavior. The canvas can be panned by dragging the mouse, and zoomed using the mousewheel (or by double-click). By listening to redraw events, users can decide whether to implement geometric zooming (such as by setting the "transform" attribute on an `svg:g` element) or semantic zooming (by changing the domain of a scale object and repositioning elements). This commit also includes two bug fixes. The `d3.format` class now properly groups thousands of negative numbers, and supports the sign specifier. The unicode minus symbol \u2212 is used for negative values. The `d3.scale.pow` class now properly handles negative numbers, as well. | 11 February 2011, 21:00:41 UTC |
b423122 | Michael Bostock | 08 February 2011, 23:59:03 UTC | Fix two bugs in transitions. First, always coerce the tween target value (the value of the style or attribute at the end of the transition) to a string. This guarantees that the correct interpolator is chosen, and avoids a null dereference. Second, default color channels to zero rather than undefined, so as to avoid NaN channel values if there is an error parsing the color. This can occur, say, if the background color of a div is unset and defaults to "rgba(0, 0, 0, 0)". | 08 February 2011, 23:59:03 UTC |
e4935b1 | Michael Bostock | 07 February 2011, 17:56:05 UTC | Add brushing & linking to splom. | 07 February 2011, 17:56:05 UTC |
99c31e1 | Michael Bostock | 02 February 2011, 20:59:10 UTC | Don't include empty arrays in d3.split. | 02 February 2011, 20:59:10 UTC |
ea5ebb1 | Michael Bostock | 02 February 2011, 20:10:39 UTC | Don't use the null context. Instead, use the group data array as the context when evaluating the join key function on the new data. | 02 February 2011, 20:10:39 UTC |
8186c4b | Michael Bostock | 01 February 2011, 05:32:38 UTC | Restructure chord example. | 01 February 2011, 05:59:49 UTC |
f8ae20d | Michael Bostock | 31 January 2011, 19:00:35 UTC | Simplify data join. Add insert & empty. The data join is now specified as a single function of data, as with all other properties. This allows the key to be computed on the previously-bound data, rather than requiring the key to be serialized into the DOM (say, as an attribute). In the case that there is no previously-bound data, it is still possible to access the associated node as the `this` context. The `enter` operator no longer performs an append. For symmetry with the `exit` operator, you must call `append` after obtaining the entering selection. This requires a tiny bit more code, but should make the code more clear. Also, it provides an opportunity to use a different instantiation operator, such as the new `insert` operator. This takes a second argument, which is a selector for the insert-before reference element. For example, the selector ":first-child" will prepend nodes. The `empty` operator allows you to query whether a selection is empty (i.e., contains zero matching nodes). | 31 January 2011, 19:00:35 UTC |
44e67e2 | Michael Bostock | 31 January 2011, 05:48:15 UTC | Restructure calendar example. | 31 January 2011, 06:01:15 UTC |
1de75bc | Michael Bostock | 29 January 2011, 00:26:09 UTC | Fix Firefox bug with style transitions. You can't set the priority to be undefined; it has to be null. (Even though null == undefined in JavaScript, but let's not be picky!) | 29 January 2011, 00:26:09 UTC |
811aa10 | Michael Bostock | 28 January 2011, 20:09:20 UTC | Scale interpolators & range rounding. You can now override the scale interpolator by calling the `interpolate` method. One particularly useful interpolator is the new `d3.interpolateRound`, which is like `interpolateNumber`, except that it returns integers. This makes it easier to produce a scale that outputs exact pixel values, and avoid antialiasing artifacts. For convenience, the quantitative scales have a `rangeRound` method which sets the range and the interpolator at the same time. Similarly, a `rangeRoundBands` has been added to the ordinal scale. | 28 January 2011, 21:14:43 UTC |
8036608 | Jason Davies | 27 January 2011, 23:13:56 UTC | Use `d3.event` to reference current event. | 27 January 2011, 23:13:56 UTC |
bf4c410 | Jason Davies | 27 January 2011, 22:58:29 UTC | Fix for lack of global `event` e.g. in FF 3.6. | 27 January 2011, 22:58:29 UTC |
5748994 | Michael Bostock | 25 January 2011, 19:31:54 UTC | Add d3.scale.quantize. A quantize scale is much like a linear scale, but it returns a discrete value from a set range (similar to quantile and ordinal scales). | 25 January 2011, 19:31:54 UTC |
41c91fd | Michael Bostock | 21 January 2011, 19:59:14 UTC | Merge branch 'force' | 21 January 2011, 19:59:14 UTC |
1a6163c | Michael Bostock | 17 January 2011, 22:55:50 UTC | Add d3.geom.quadtree. | 21 January 2011, 19:59:05 UTC |
ce07649 | Michael Bostock | 20 January 2011, 18:40:14 UTC | Move properties.id to id. | 20 January 2011, 18:40:14 UTC |
9ae67c7 | Michael Bostock | 20 January 2011, 18:25:03 UTC | Add ISO-3166 country codes. | 20 January 2011, 18:25:03 UTC |
ca2e207 | Michael Bostock | 17 January 2011, 22:16:53 UTC | Fix initial opacity. | 17 January 2011, 22:16:53 UTC |
c678ecb | Michael Bostock | 17 January 2011, 20:34:02 UTC | Remove cruft. | 17 January 2011, 20:34:02 UTC |
870bc20 | Michael Bostock | 17 January 2011, 20:32:19 UTC | Remove cruft. | 17 January 2011, 20:32:19 UTC |
6530773 | Michael Bostock | 17 January 2011, 20:27:29 UTC | Add d3.layout.stack, d3.min, d3.max. | 17 January 2011, 20:27:29 UTC |
473ee4f | Jason Davies | 12 January 2011, 00:45:29 UTC | Update examples index. | 12 January 2011, 00:45:29 UTC |
6a4a2d1 | Michael Bostock | 11 January 2011, 22:25:25 UTC | Allow d3.geo.albersUsa to be rescaled. | 11 January 2011, 22:25:25 UTC |
487037e | Michael Bostock | 11 January 2011, 00:02:43 UTC | Merge branch 'jheer-master' Adds support for contours (d3.geom.contour) and cardinal spline interpolation. I've extended cardinal spline interpolation to d3.svg.area, and added closed basis spline interpolation. The spline tension is now set using a named method, and closed splines can be generated using basis-closed and cardinal-closed, respectively. This commit also includes Jeff's nifty clustered force-directed graph example! | 11 January 2011, 00:05:58 UTC |
7048af6 | Michael Bostock | 10 January 2011, 01:33:35 UTC | Fix a bug in transitions (`tx` is undefined). If the same element were selected multiple times, then the transition would be cleared on the associated node, causing `tx` to be undefined. We now abort the transition in this case, rather than causing a JavaScript error. | 10 January 2011, 01:33:35 UTC |
373ddee | Michael Bostock | 08 January 2011, 23:18:38 UTC | Add nest, keys, values & entries operators. | 08 January 2011, 23:18:38 UTC |
f0bf366 | Michael Bostock | 05 January 2011, 23:38:38 UTC | Fix for nearly whole d3.svg.arc's. It's surprisingly difficult to render a circle in SVG. | 05 January 2011, 23:38:38 UTC |
888ee9d | Michael Bostock | 05 January 2011, 23:38:17 UTC | Reformat us-counties.json for readability. | 05 January 2011, 23:38:17 UTC |
bdcb648 | Michael Bostock | 05 January 2011, 19:35:39 UTC | Turn off the compiler's "advanced" optimizations. The renaming of attributes is totally not worth the hassle of maintaining an externs file (or using the awkward `foo["bar"]` syntax). The file size reduction from the advanced optimizations was negligible, besides! | 05 January 2011, 19:35:39 UTC |
bfed47b | Michael Bostock | 04 January 2011, 23:01:09 UTC | Ignore NaN in d3.scale.quantile. Also, expose a `quantiles` method for returning the array of quantile thresholds. | 04 January 2011, 23:01:09 UTC |
085eb2f | Michael Bostock | 04 January 2011, 22:14:53 UTC | Add path.area(). This computes the projected area (in square pixels) of the given GeoJSON object. This is useful for producing choropleth maps that area normalized to the visible area. | 04 January 2011, 22:14:53 UTC |
19d478f | Michael Bostock | 03 January 2011, 18:30:36 UTC | Add quantile scale. | 03 January 2011, 18:30:36 UTC |
2cdaf6a | Michael Bostock | 17 December 2010, 20:50:53 UTC | Fix a bug when rendering certain arcs. Also, don't forget you need attr("fill-rule", "evenodd") for rings! | 17 December 2010, 20:50:53 UTC |
5067f0a | Jeffrey Heer | 16 December 2010, 06:06:24 UTC | Move cardinal splines to svg/line.js | 16 December 2010, 06:06:24 UTC |
633a931 | Jeffrey Heer | 15 December 2010, 17:32:29 UTC | Add cardinal splines and clustered graph example | 15 December 2010, 17:32:29 UTC |
70cb535 | Jeffrey Heer | 15 December 2010, 16:46:23 UTC | Merge branch 'master' of git://github.com/mbostock/d3 | 15 December 2010, 16:46:23 UTC |
8f757c2 | Michael Bostock | 14 December 2010, 22:41:41 UTC | Update version number. | 14 December 2010, 22:41:41 UTC |
c8a2c9d | Michael Bostock | 14 December 2010, 22:41:04 UTC | Placeholder ticks for d3.scale.pow. Just reuse the linear tick algorithm for now. | 14 December 2010, 22:41:04 UTC |
be85713 | Michael Bostock | 11 December 2010, 00:14:42 UTC | Fix bug in `classed` operator. Need to reset the `lastIndex` attribute of the regular expression to 0. | 11 December 2010, 00:14:42 UTC |
2bdf55c | Mike Bostock | 09 December 2010, 23:04:24 UTC | Better XHR utilities. Two new XHR utilities are included in this commit for fetching XML and HTML data. The latter can be used to scrape data from websites that don't support a more suitable API (such as JSON or XML), conveniently using the W3C DOM API including selectors. Parsing HTML is surprisingly tricky, as browser support for it is poorly standardized. It's possible to embed the HTML in the current document or an iframe, but that runs embedded scripts and loads external resources (images, stylesheets), which is a security hazard! Our approach uses the DOM Level 2 Range API, and the nonstandard createContextualFragment method, which is supported by major browsers. Strangely, WebKit (Chrome & Safari) can only access the body of the loaded HTML document, whereas Firefox parses the whole document. | 09 December 2010, 23:04:24 UTC |
8a6d054 | Mike Bostock | 09 December 2010, 22:46:45 UTC | Clarify Tornado installation instructions. | 09 December 2010, 22:46:45 UTC |
b9ad0a4 | Jeffrey Heer | 07 December 2010, 04:48:11 UTC | Minor tweaks and beautification | 07 December 2010, 04:48:11 UTC |
ecf796c | Jeffrey Heer | 07 December 2010, 04:27:25 UTC | Added contour by marching squares | 07 December 2010, 04:27:25 UTC |
7278115 | Michael Bostock | 06 December 2010, 23:36:22 UTC | Update version to 0.27.1. | 06 December 2010, 23:36:22 UTC |
2f63829 | Jeffrey Heer | 06 December 2010, 20:52:37 UTC | Simple CCW test for convex hull | 06 December 2010, 20:52:37 UTC |
6d97ab2 | Michael Bostock | 30 November 2010, 21:40:05 UTC | Add `classed` operator for toggling CSS classes. | 30 November 2010, 21:40:05 UTC |
bbcf25e | Michael Bostock | 29 November 2010, 00:28:48 UTC | Fix a bug with zero-duration transitions. Also, don't generate chords if both the source and target value are zero. | 29 November 2010, 00:28:48 UTC |
6307364 | Mike Bostock | 28 November 2010, 21:15:07 UTC | Add layout module, with layout.chord class. | 28 November 2010, 21:15:07 UTC |
f02364d | Mike Bostock | 28 November 2010, 19:39:35 UTC | More refactoring of svg.chord. | 28 November 2010, 19:39:35 UTC |
e08ff41 | Mike Bostock | 28 November 2010, 04:35:57 UTC | Add a little mouseover interaction. | 28 November 2010, 04:35:57 UTC |
c86d8bc | Mike Bostock | 28 November 2010, 02:19:30 UTC | Allow chords to link back to themselves. | 28 November 2010, 02:19:30 UTC |
5ae51b2 | Mike Bostock | 27 November 2010, 22:13:02 UTC | Simplify svg.chord API. We now use the same property accessors (startAngle, endAngle and radius) for two source and target objects. Note that you don't have to structure your data hierarchically; you can define a source and target accessor that restructures the data on the fly. | 27 November 2010, 22:13:02 UTC |
ed9321d | Mike Bostock | 27 November 2010, 22:10:07 UTC | Update examples index. | 27 November 2010, 22:10:07 UTC |