In my travels through the land of FusionCharts, I frequently find neat charts. Sometimes these charts fulfill my needs, and other times they're missing just one little feature. The most common (and most frustrating) example of this is, "Hmm, I need Chart A, but it doesn't have feature B. Chart B has feature B, but not feature A. If only I could mix the two."
So in the interest of fixing this problem, I would like to suggest a possible future direction for FusionCharts development: component-based architecture.
So what do I mean? Well, let's say I want a line chart. No, I want a multi-series line chart. With error bars. And zoom.
Sounds like a mix of ZoomLine and ErrorLine, but we can't mix the two, right? Wrong.
It's actually a combination of several components:
- Line chart
- Multi-series chart
- Error bars
- Zoom chart
Each individual component can expose an interface which plugs in to the whole system, and allows other components to interact with it. For example: line charts, column charts, scatter plots, and bar charts are all simply cartesian plots with different orientations, and the error bar component can use this information to render the bars.
Instead of writing special purpose MSStackedColumn2DLineScatterPieBarOMGWTFLOLBBQSAUCE.swf, you would only need to write each component and provide an interface for linking the components together. In this way, a user could create a chart that is as simple or as complex as he/she needs. Obviously not all components make sense in one graph (heat map and line chart? Maybe not) but there could even be a classification in chart components that determines which ones can work together.
Now, I know what you're thinking: "What about licensing?"
Well, what about it?
You can put individual components in each package. For example, FusionCharts may come with LineChartComponent, MultiSeriesComponent, ColumnChartComponent, etc. while PowerCharts comes with BoxAndWhiskerComponent, ErrorBarComponent, MultiSeriesComponent, etc.