spotify/reactochart

0.2.x roadmap

dandelany opened this issue · 4 comments

Work has begun on v0.2.0 and will be tracked in the 0.2.x branch. Main objectives are:

  • Improved label layout features and speed due to better pre-emptive label measuring.
  • More modularization of component structure - export parts of charts, not just entire charts, so the parts can be composed individually.
  • Encapsulation of reusable and extractable Component features using higher-order components. Not just for DRY-ness, but to make the Components themselves as simple as possible.

The feature roadmap will be tracked in this checklist, which we'll add to and edit as we go along:

  • Refactor mouse events on new XYPlot component
  • Production build of examples sandbox, for performance testing
  • Port existing charts to new XYPlot format (see below)
  • Bar component
  • RangeRect component
  • Use class-type components instead of createClass
  • resolveXYScales HOC to resolve scale prop from domain/range/data/size/etc.
  • resolveObjectProps HOC to handle setting default props for {x,y} and {top, bottom, left, right} shaped props
  • Use measure-text to pre-measure labels
  • XAxis and YAxis components
  • Unit test which renders the examples
  • Update lodash to 4.5.x
  • Add babel plugin for ESNext class properties
  • Axis label placement - see AUDINP-232

API changes

  • All XYPlot axis-related props should now be passed as props to <XAxis /> and <YAxis />, which must be included as children of XYPlot for axes to be rendered.
  • axisType --> scaleType
    • Now there is "scaleType" vs "dataType", both have changed a bit
  • invertAxis --> invertScale
  • getValue --> getX / getY
  • scaleWidth/scaleHeight --> width/height in sub-xyplot-charts?
  • AreaHeatmap --> RectAreaHeatmap

Progress porting existing charts to 0.2.x/XYPlot2

  • AreaHeatmap
  • BarChart
    • RangeBarChart
    • AreaBarChart
  • Histogram
  • KernelDensityEstimation
  • LineChart
  • MarkerLineChart
  • ScatterPlot

Future plans (out of scope for 0.2.x)

  • Resolve questions about plotWidth vs. scaleWidth vs. width (& height) in XYPlot charts
  • Pre-defined common interactions for eg. scrubbing, zooming, tooltips.
  • PureRender/shouldComponentUpdate for all chart/axis components
  • Automatically determine axis tickCount (and therefore # of axis labels) by bumping down the # of ticks until all of the labels fit
  • Rotated axis value labels (90 degrees or arbitrary rotation? how to handle collision detection?)
  • Y Axis value label vertical & horizontal alignment
  • position: 'zero' option for X/Y Axis and subcomponents - place the axis on the scale's zero line, wherever it falls.
  • extraMargin/minMargin props?
  • Key attributes for scatterplot points
  • Axis label alignment - see AUDINP-233
  • MarkerLine component
  • LineSeries vs LineChart component
  • Use d3 path generator + interpolation for LineChart
  • Unit tests for all chart types
  • auto-determine different class names for chart series?

This is old - 0.2.0 and 0.3.0 have been released. Will open new tickets for remaining outstanding issues for future releases.