All,<br><br>Under Tom Trenka&#39;s direction and guidance, I&#39;ve been doing some brainstorming about the markup to be used to create a charting widget.&nbsp; These widgets are slated to be developed once the charting engine is complete with the intention of making it incredibly easy for a end user to create a chart/graph very very simply.&nbsp; As such, there are very few required parameters, several optional parameters, and a few &#39;possible&#39; parameters that have been suggested as extra features for these chart widgets.
<br><br>There are very few parameters needed to create a chart, at the very least a data source:<br><br>&lt;div<br>&nbsp;&nbsp; &nbsp;dojoType=&quot;dojox.charting.LineChart&quot;&nbsp;&nbsp; &nbsp;&lt;!-- The chart type.&nbsp; Several are planned, see below. --&gt;
<br>&nbsp;&nbsp; &nbsp;store=&quot;someStore&quot;&nbsp;&nbsp; &nbsp;&lt;!-- The dojo.data store to retrieve the data from --&gt;<br>&nbsp;&nbsp; &nbsp;query=&quot;type: Foo&quot;&nbsp;&nbsp; &nbsp;&lt;!-- The query to run on the dojo.data store. --&gt;<br>&gt;&lt;/div&gt;<br><br>
This format requires a few assumptions by the chart widget, most notably that the items from the store have the appropriately named attributes to be used for the given chart type (in our example, that a given item from the data store has a &quot;x&quot; and a &quot;y&quot; attribute).&nbsp; However, this allows an end user to very quickly and easily add a chart if they are able to form their data store in this format.
<br><br>Several optional parameters are then added to allow for a much more enhanced chart.&nbsp; The names could depend on the chart
type, as a line chart has an x- and a y-axis, while a bar chart has an
x-axis (which is more like an &#39;index&#39; than an actual x value) and a
value-axis (which is in fact very similar to a y-axis).&nbsp; Perhaps these
might range between x, y, value, and size depending on the exact chart
type.&nbsp; Here we&#39;re using a line chart as an example, so the binding and
names are all X/Y.<br><br>&nbsp;&nbsp; &nbsp;theme=&quot;dojox.charting.GreySkies&quot;&nbsp;&nbsp; &nbsp;&lt;!-- The theme to use for this chart. Allows for themes external to the charting tree. --&gt;<br><br>&nbsp;&nbsp; &nbsp;bindings=&quot;x:date,y:value&quot;&nbsp;&nbsp; &nbsp;&lt;!-- Allows for data stores that aren&#39;t in the &#39;correct&#39; format originally.&nbsp; In this case, the items in the data store are expected to have a &quot;data&quot; attribute which would map to the x-axis, and a &quot;value&quot; attribute which would map to the y-axis. --&gt;
<br><br>&nbsp;&nbsp; &nbsp;rangeX=&quot;0 200&quot;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;!-- The range to use on the chart&#39;s axes.&nbsp; This could be (and would be in the simplest case) from the data given. --&gt;<br>&nbsp;&nbsp; &nbsp;rangeY=&quot;0 20&quot;<br><br>&nbsp;&nbsp; &nbsp;xMajorTick=&quot;50&quot;&nbsp;&nbsp; &nbsp;&lt;!-- How often to put major (large) tick marks on the given axis.--&gt;
<br>&nbsp;&nbsp; &nbsp;yMajorTick=&quot;5&quot;<br><br>&nbsp;&nbsp; &nbsp;xMinorTick=&quot;10&quot;&nbsp;&nbsp; &nbsp;&lt;!-- How often to put minor (small) tick marks on the given axis. --&gt;<br>&nbsp;&nbsp; &nbsp;yMinorTick=&quot;1&quot;<br><br>&nbsp;&nbsp; &nbsp;width=&quot;600&quot;&nbsp;&nbsp; &nbsp;&lt;!-- The size of the chart.&nbsp; Might it be more intuitive to expect these in CSS rather than parameters? --&gt;
<br>&nbsp;&nbsp; &nbsp;height=&quot;400&quot;<br><br>Finally, there are a few ideas that have been brought up as additional features to be added to these widgets:<br><br>&nbsp;&nbsp; &nbsp;viewRangeX=&quot;50 100&quot;<br>&nbsp;&nbsp; &nbsp;viewRangeY=&quot;5 15&quot;&nbsp;&nbsp; &nbsp;&lt;!-- Have a &#39;viewport&#39; on the chart to allow the possibility of having a larger chart than is currently in view.&nbsp; This would then lead to having controls to pan/zoom around the chart. Having the viewable regions smaller than the full chart size is already planned for the charting engine, but likely will not be complete initially.&nbsp; These parameters will be used to setup the initial chart view in the markup.--&gt;
<br><br>&nbsp;&nbsp; &nbsp;updateInterval=&quot;5&quot;&nbsp;&nbsp; &nbsp;&lt;!-- Re-check the data store this many seconds (or maybe milliseconds?) to keep the chart up-to-date with the data store.&nbsp; --&gt;<br>&nbsp;&nbsp; &nbsp;onUpdate=&quot;updateFunction&quot;&nbsp;&nbsp; &nbsp;&lt;!-- Call this function as a callback after we&#39;ve checked the data store and updated the view. Allows the end user to do things to the chart (move the view, etc.) when the data is updated. --&gt;
<br>&nbsp;&nbsp; &nbsp;onUpdate=&quot;x:20;y:2&quot;&nbsp;&nbsp; &nbsp;&lt;!-- An alternative to the &#39;functionName&#39; idea above, directly tied to whether/when the viewport functionality is introduced.&nbsp; The idea here is to move the viewport the given amount on each update with each new/changed data point. --&gt;
<br><br>As for the chart types that will be supported, it will be very simple to abstract much of the &#39;basic&#39; functionality (which is common to each chart type) into some base _Chart widgets that would be built upon by the specific chart types.&nbsp; The list of chart types currently planned (or considered) are:
<br><br>Pie<br>Line<br>Scatter<br>Area<br>Stacked Area<br>Bubble<br>Gantt<br>High/Low<br>High/Low/Open<br>High/Low/Open/Close<br>Horizontal Bar<br>Horizontal Stacked Bar<br>Vertical Bar<br>Vertical Stacked Bar<br>Pareto<br>
<br>Any comments on any of the above (markup proposal, chart types, etc.) are welcome and encouraged.<br><br>Thanks,<br>&nbsp;&nbsp;&nbsp; Ben Schell<br>