Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Tapestry Wiki" for 
change notification.

The following page has been changed by DavorHrg:
http://wiki.apache.org/tapestry/Tapestry5HowToCreatePieChartsInAPage

New page:
An example of dynamic charts inside a page(this can also be used for other 
dynamic images).[[BR]]
(This is similar to ["Tapestry5HowToCreateASimpleGraphComponent"]) 

add this to your pom.xml under dependencies:
{{{
        <dependency>
                <groupId>jfree</groupId>
                <artifactId>jfreechart</artifactId>
                <version>1.0.5</version>
        </dependency>
}}}

inject !ComponentResources, and !TypeCoercer 
{{{
    @Inject
    private ComponentResources _resources;
    
    @Inject
    private TypeCoercer _coercer;
}}}

add the method that generates an !ActionLink URL for chart event:
{{{
    public Link getChart3(){
        return _resources.createActionLink("chart", false, new 
Object[]{"600","400","aa","39","bb","12","cc","12","dd","4"});
    }
}}}

add action listener for that chart event:
{{{
    public StreamResponse onChart(final int width, final int height, Object 
...rest){
        DefaultKeyedValues values = new DefaultKeyedValues();
        for (int i = 3; i < rest.length; i+=2){
            values.addValue(rest[i-1].toString(), _coercer.coerce(rest[i], 
Number.class));
        }        
        PieDataset pieDataset = new DefaultPieDataset(values);

        PiePlot3D plot = new PiePlot3D(pieDataset);
        plot.setForegroundAlpha(0.5f);
        plot.setDepthFactor(0.1);
        plot.setCircular(true);
        
        final JFreeChart chart = new JFreeChart(plot);
        
        return new StreamResponse(){
            public String getContentType(){
                return "image/jpeg";
            }
            public InputStream getStream() throws IOException {
                BufferedImage image  = chart.createBufferedImage(width, height);
                ByteArrayOutputStream byteArray = new ByteArrayOutputStream() ;
                ChartUtilities.writeBufferedImageAsJPEG(byteArray, image) ;
                return new ByteArrayInputStream(byteArray.toByteArray());
            }
            public void prepareResponse(Response response){}
        };
    }
}}}

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to