You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@click.apache.org by Stéphane NICOLAS <st...@gmail.com> on 2010/12/07 03:10:44 UTC

A new chart api for click

Hello all,

I am rather new to click. I tested the framework a month or two ago and
enjoyed it.
The click framework is nevertheless missing a robust chart components suite.

So I decided to give some time on this idea and built a new API to get chart
components inside click.
There are some good javascript (mostly jquery based) charting libraries
around for the web. The API I propose, makes them easily usable into click
projects.

The idea of this new API is simple :
- provide a core api that acts as an abstraction layer above charting
components
- povide 2 implementations of this abstract layer. For now it supports both
flot and jqplot. Those 2 javascript libraries are free and extensible.
- provide a set of examples, in the same way as click-jquery, and click
itself do.

The jqplot implementation of the api offers all those graphs : (all of them
being able to represent multiple data set per graph)
- lines
- bars
- blocks
- pies
- bezier curves
- mekko
- OHLC / HLC / Candlesticks
- bubbles, funnel, donut, meter gauge, etc.
it also offers rotated texts, multiple axis. For those who know jqplot, the
api has all functionalities, including plugins like cursor, higlighter,
point labels and so on.

The API is basically a wrapper around javascript library, giving the java
programmer a strong advantage when using those frameworks :
- no more struggle with those horrible strings to generate a working
javascript in your html pages. The API generates all the code for you. The
generated code can easily be inspected in debug mode.
- all imports of javascript and css are made for you too, so programmers
just don't care at all about that.
- strong typing for charting and drawing options versus loosely typed
javascript variables.
- basic ready-to-use chart components with powerfull defaults (colors,
legends, shadows, tooltips, etc.). All components, even ready-to-use ones
are highly customizable.
- You still have to learn a specific javascript API if defaults are not
enough but it is much more easy to use as it appears as a set of java
objects (with javadoc and completion).

The whole code is available on google code project hosting :
- http://code.google.com/p/click-charts-enhanced/

The demo is available at
- http://latest.click-charts-enhanced.appspot.com/

There is a download of click-charts-enhanced-api-core, version 0.7 available
here :
- http://code.google.com/p/click-charts-enhanced/downloads/list
it includes jqplot and plot, the core classes, everything need to add as a
jar in a click project.

Bob Schellink helped me quite a lot to set the project, made me discover
jqplot and provided tons of good advices.
Thank you bob for all your kind answers.

I write on this list to get some feedback of the project. The project has
been a lot of work, especially to cover all classes of jqplot.
I think the project opens the way to unify quite a lot of javascript
framework from a java web application point of view. I could be extended to
other javascript (or flash ?) libraries,
and could also be ported to other java frameworks like jsf, struts, tapestry
and for sure wickets.
As there would be another good effort before starting that, I would like to
know how people are interested on the project in its early stage.

I shall say I am very bad at packaging stuff, project management cycles, but
eager to learn.
Stéphane

Here after, I give an excerpt of java code to build a pie chart using this
api :
http://latest.click-charts-enhanced.appspot.com/JQPlotsPieChartsDemo.htm

To get the last pie chart is your click app, here is the java code :

pieChart = new PieChart( "lineChart4" );
//to see generated code
pieChart.setDemoMode( true );

pieChart.setLabel("Pie Chart with Legend and sliceMargin");
	
//easy to use shortcuts
pieChart.setSliceMargin( 8 );
pieChart.setFill( false );
pieChart.setShadow( false );
pieChart.setLineWidth( 5 );
pieChart.setDiameter( 100d );

//power of inheritance, the pie chart still is highly
//customizable
pieChart.getLegend().setLocation( Compass.WEST );
		
//ease of data input
pieChart.add( "frogs", 3 );
pieChart.add( "buzzards", 7 );
pieChart.add( "deer", 2.5 );
pieChart.add( "turkeys", 6 );
pieChart.add( "moles", 5 );
pieChart.add( "ground hogs", 4 );


--------

Re: A new chart api for click

Posted by Bob Schellink <sa...@gmail.com>.
Great work Stéphane. Good to have a robust charting option available. I'll put up a blog post as
well when I get some time.

Kind regards

Bob

On 7/12/2010 13:10, Stéphane NICOLAS wrote:
> Hello all,
> 
> I am rather new to click. I tested the framework a month or two ago and enjoyed it.
> The click framework is nevertheless missing a robust chart components suite.
> 
> So I decided to give some time on this idea and built a new API to get chart components inside click.
> There are some good javascript (mostly jquery based) charting libraries around for the web. The API
> I propose, makes them easily usable into click projects.
> 
> The idea of this new API is simple :
> - provide a core api that acts as an abstraction layer above charting components
> - povide 2 implementations of this abstract layer. For now it supports both flot and jqplot. Those 2
> javascript libraries are free and extensible.
> - provide a set of examples, in the same way as click-jquery, and click itself do.
> 
> The jqplot implementation of the api offers all those graphs : (all of them being able to represent
> multiple data set per graph)
> - lines
> - bars
> - blocks
> - pies
> - bezier curves
> - mekko
> - OHLC / HLC / Candlesticks
> - bubbles, funnel, donut, meter gauge, etc.
> it also offers rotated texts, multiple axis. For those who know jqplot, the api has all
> functionalities, including plugins like cursor, higlighter, point labels and so on.
> 
> The API is basically a wrapper around javascript library, giving the java programmer a strong
> advantage when using those frameworks :
> - no more struggle with those horrible strings to generate a working javascript in your html pages.
> The API generates all the code for you. The generated code can easily be inspected in debug mode.
> - all imports of javascript and css are made for you too, so programmers just don't care at all
> about that.
> - strong typing for charting and drawing options versus loosely typed javascript variables.
> - basic ready-to-use chart components with powerfull defaults (colors, legends, shadows, tooltips,
> etc.). All components, even ready-to-use ones are highly customizable.
> - You still have to learn a specific javascript API if defaults are not enough but it is much more
> easy to use as it appears as a set of java objects (with javadoc and completion).
> 
> The whole code is available on google code project hosting :
> - http://code.google.com/p/click-charts-enhanced/
> 
> The demo is available at
> - http://latest.click-charts-enhanced.appspot.com/
> 
> There is a download of click-charts-enhanced-api-core, version 0.7 available here :
> - http://code.google.com/p/click-charts-enhanced/downloads/list
> it includes jqplot and plot, the core classes, everything need to add as a jar in a click project.
> 
> Bob Schellink helped me quite a lot to set the project, made me discover jqplot and provided tons of
> good advices.
> Thank you bob for all your kind answers.
> 
> I write on this list to get some feedback of the project. The project has been a lot of work,
> especially to cover all classes of jqplot.
> I think the project opens the way to unify quite a lot of javascript framework from a java web
> application point of view. I could be extended to other javascript (or flash ?) libraries,
> and could also be ported to other java frameworks like jsf, struts, tapestry and for sure wickets.
> As there would be another good effort before starting that, I would like to know how people are
> interested on the project in its early stage.
> 
> I shall say I am very bad at packaging stuff, project management cycles, but eager to learn.
> Stéphane
> 
> Here after, I give an excerpt of java code to build a pie chart using this api :
> http://latest.click-charts-enhanced.appspot.com/JQPlotsPieChartsDemo.htm
> 
> To get the last pie chart is your click app, here is the java code :
> 
> pieChart = new PieChart( "lineChart4" );
> //to see generated code
> pieChart.setDemoMode( true );
> 
> 
> pieChart.setLabel("Pie Chart with Legend and sliceMargin");
> 	
> //easy to use shortcuts
> pieChart.setSliceMargin( 8 );
> pieChart.setFill( false );
> pieChart.setShadow( false );
> pieChart.setLineWidth( 5 );
> 
> pieChart.setDiameter( 100d );
> 
> //power of inheritance, the pie chart still is highly 
> //customizable
> pieChart.getLegend().setLocation( Compass.WEST );
> 		
> //ease of data input
> pieChart.add( "frogs", 3 );
> 
> pieChart.add( "buzzards", 7 );
> pieChart.add( "deer", 2.5 );
> pieChart.add( "turkeys", 6 );
> pieChart.add( "moles", 5 );
> pieChart.add( "ground hogs", 4 );
> 
> 
> --------
>