root / trunk / src / charting / README.txt

Revision 6261, 2.4 kB (checked in by ttrenka, 2 years ago)

Moving the charting engine from the widget module to it's own.

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