This package extends the templating system of OpenACS by providing another builder next to the list and form builder. The diagram builder is very similar to the list builder. Two differences are important though: The multirow to be used must me defined bofore template::diagram::create is called since the column names are retrieved dynamically.
The diagram builder was developed in a way that it can be extended to use different engines for the rendering of the diagrams. Currently it is based on the "Javascript Diagram Builder", v3.3 Lutz Tautenhahn. But other engines could be integrated in future like GNUPlot.
The rendering is taking place in
the templates defined under resources/diagram/..
. Currently we support
the following types: pie, curve and cockpit. You can customize the way they
render the diagrams by editing the corresponding templates or adding new
ones. Once a template is created you simply pass its name with the -template
switch of template::diagram::create.
You need to run the diagram-create.sql
to view the examples
below. It will create a table with dummy data. You can remove the table again
using diagram-drop.sql
.
A detailed example is given in the API Browser. This page also contains examples for the three diagram types "pie", "curve" and "cockpit". As you can see the diagrams are beautifully inserted inside the page flow. Also CSV-Export is possible.
CSVIn order to make this builder easier to be extended the Javascript specific parts have to be removed:
template::diagram::prepare_value
,
template::diagram::update_borders
and
template::diagram::set_borders
which nead a clean up. Maybe
moving these information into the templates would be best.
to_char(mydate, 'YYYY,MM,DD[,HH24][,MI][,SS]')
in
your sql query to return a meaningful value. As you can see some elements are
optional. For details please view the Date
and UTC
objects documentation for JavaScript.
Not everything available in the Javascript Diagram Builder was fully integrated. There are many other things that could be done in future as well. Here some ideas: