| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- New in version 3.1:
- This is a minor release including a few bug fixes and minor new features. For
- more details on the new release, see:
- http://code.google.com/p/protovis-js/wiki/ReleaseNotes
- - panels now support an "overflow" property; set to "hidden" for clipping
- - linear and log scales support tick formatting
- - ordinal scale supports pv.index accessor
- - log scale invert supports negative values
- - avoid removing children on render to avoid spurious events
- New in version 3.0:
- We've moved all the documentation to the wiki so that it's easier to maintain.
- Feel free to add your comments. (And, if you're so inclined, join the group so
- you can contribute!)
- interaction
- - properties now behave consistently in event handlers
- - use local variables or properties to modify display
- - can redraw at any level of the scene graph
- - event handlers on parent panels are inherited by children
- - can set window location to simulate links
- - mark.mouse to get mouse location
- local variables (defs)
- - use "def" to define local state per mark (e.g., def("foo"))
- - event handlers can override def values (e.g., this.foo(42))
- - properties can query def values (e.g., this.foo() == 42)
- - can also be used to define efficient property functions (e.g., scales)
- scales
- - pv.Scales is dead; long live pv.Scale
- - scales each have a domain (input data) and range (output pixels/color/angle)
- - scales are stateful, not magical
- - ordinal scales are categorical (discrete domain and range)
- - linear and log scales are quantiative (continuous domain and range)
- - `by` functionality, useful as a "view"
- - support for ticks, interaction, and more!
- colors
- - default coloring now uses parent rather than (magical) mark index
- - brighter and darker operators
- - named colors (e.g., pv.ramp("brown", "orange"))
- - `by` functionality standardized
- - HSL to RGB conversion bug fixed
- - per channel override methods (e.g. color.red(0))
- - pv.Colors now uses pv.Scale.Ordinal under the hood
- layouts
- - treemaps!
- - sunbursts!
- - icicles!
- - tree size function for determining node size / children
- - stack: allows stacking of bars and areas (etc.) with customizable baseline
- - grid: two-dimensional table of bars or panels (heatmap, e.g.)
- properties
- - evaluated in the order they are defined, allowing dependencies
- - defs are evaluated before properties; constants before functions
- - default data property is [d] rather than [null], simplifying nesting
- - significant performance improvements!
- - width and height now supported on rules
- data utilities
- - pv.repeat for array repetition
- - pv.random for random integers (or intervals)
- - pv.log{,Adjusted,Symmetric,Floor,Ceil}
- - pv.transpose for transposing two-dimensional arrays
- - pv.Vector for 2D geometry
- - pv.tree and pv.flatten for converting between tabular and hierarchical data
- lines and areas
- - can be "segmented" for variable lineWidth, color, visibility
- - segmentation can change dynamically (e.g., on mouseover tooltip refinement)
- - see Napoleon's March and animated examples
- - step functions!
- anchors
- - now use a single class, pv.Anchor
- - define properties like normal marks
- - support for anchors on root panel / anchors on panels
- performance improvements
- - separated rendering from building to allow pluggable renderers
- - optimized evaluation of properties
- - don't wrap constants in functions
- - "bind" phase caches inherited property definitions
- - minimize SVG output
- - job voyager is about 2x faster
- bug fixes
- - much more robust rebuild + re-render
- - panel stroke now goes over children (consistent with images)
- - circle dots with large lineWidths now render correctly
- - reverse property now more robut
- - type attribute now inherited; controls rendering behavior
- - better JavaScript minification
- - use typeof == "function" rather than instanceof Function
- - internal scene graph structure changed to facilitate traversal
- - panel left/top/right/bottom now consistent with other marks
- - better support for Date.parse and Date.format
|