| Dojo Charting Engine |
| ========================================================================= |
| The Dojo Charting Engine is a (fairly) complex object structure, designed |
| to provide as much flexibility as possible in terms of chart construction. |
| To this end, the engine details the following structure: |
| |
| Chart |
| ---PlotArea[] |
| ------Plot[] |
| ---------Axis (axisX) |
| ---------Axis (axisY) |
| ---------Series[] |
| |
| |
| A Chart object is the main entity; it is the entire graphic. A Chart may |
| have any number of PlotArea objects, which are the basic canvas against |
| which data is plotted. A PlotArea may have any number of Plot objects, |
| which is a container representing up to 2 axes and any number of series |
| to be plotted against those axes; a Series represents a binding against |
| two fields from a data source (initial rev, this data source is always of |
| type dojo.collections.Store but this will probably change once dojo.data |
| is in production). |
| |
| The point of this structure is to allow for as much flexibility as possible |
| in terms of what kinds of charts can be represented by the engine. The |
| current plan is to accomodate up to analytical financial charts, which tend |
| to have 3 plot areas and any number of different types of axes on each one. |
| |
| The main exception to this is the pie chart, which will have it's own |
| custom codebase. Also, 3D charts are not accounted for at this time, |
| although the only thing that will probably need to be altered to make |
| that work would be Plot and Series (to accomodate the additional Z axis). |
| |
| Finally, a Plot will render its series[] through the use of Plotters, which |
| are custom methods to render specific types of charts. |
| ------------------------------------------------------------------------- |
| In terms of widgets, the basic concept is that there is a central, super- |
| flexible Chart widget (Chart, oddly enough), and then any number of preset |
| chart type widgets, that are basically built to serve a simple, easy |
| purpose. For instance, if someone just needs to plot a series of lines, |
| they would be better off using the LineChart widget; but if someone needed |
| to plot a combo chart, that has 2 Y Axes (one linear, one log) against the |
| same X Axis, using lines and areas, then they will want to use a Chart widget. |
| Note also that unlike other widgets, the Charting engine *can* be called |
| directly from script *without* the need for the actual widget engine to be |
| loaded; the Chart widgets are thin wrappers around the charting engine. |