...
Code Block |
---|
| java |
---|
| java |
---|
title | renderUsingOpenFlashChartPlugin method |
---|
|
private static void renderUsingOpenFlashChartPlugin(final String chartDocFilename,
final ChartTableModel chartTableModel) throws Exception {
final IChartPlugin plugin = ChartPluginFactory
.getInstance("org.pentaho.chart.plugin.openflashchart.OpenFlashChartPlugin");
URL chartURL = new File(chartDocFilename).toURL();
ChartDocumentContext cdc = ChartFactory.generateChart(chartURL, chartTableModel);
IOutput output = plugin.renderChartDocument(cdc, chartTableModel);
ByteArrayOutputStream tmpOut = new ByteArrayOutputStream();
output.persistChart(tmpOut, IOutput.OutputTypes.DATA_TYPE_STREAM, 400, 400);
final String ENCODING = "UTF-8";
ByteArrayInputStream in = new ByteArrayInputStream(tmpOut.toByteArray());
IOUtils.closeQuietly(tmpOut);
String openFlashChartJson = IOUtils.toString(in, ENCODING);
IOUtils.closeQuietly(in);
final String HTML_TEMPLATE = "<html>\n" + " <head>\n"
+ " <title>Bar Chart Using Open Flash Chart Plugin</title>\n"
+ " <script type=\"text/javascript\">window.getChartData = function() '{' return ''{0}''; '}'</script>\n"
+ " </head>\n" + " <body>\n"
+ " <object id=\"ofco00b1c87708fe11dea97da1e1ba5b86bc\" height=\"100%\" align=\"middle\" width=\"100%\" \n"
+ " codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" \n"
+ " classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"> \n"
+ " <param value=\"sameDomain\" name=\"allowScriptAccess\"/><param value=\"opaque\" name=\"wmode\"/> \n"
+ " <param value=\"open-flash-chart.swf?get-data=getChartData\" name=\"movie\"/> \n"
+ " <param value=\"high\" name=\"quality\"/><embed id=\"ofce00b1c87708fe11dea97da1e1ba5b86bc\" \n"
+ " height=\"100%\" align=\"middle\" width=\"100%\" \n"
+ " pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" \n"
+ " allowscriptaccess=\"sameDomain\" bgcolor=\"#FFFFFF\" quality=\"high\" wmode=\"opaque\" \n"
+ " src=\"open-flash-chart.swf?get-data=getChartData\"/></object>\n" + " </body>\n" + "</html>";
String html = MessageFormat.format(HTML_TEMPLATE, new String[] { openFlashChartJson });
String chartOutputFilename = "chartoutput/"
+ chartDocFilename.substring(chartDocFilename.indexOf(File.separatorChar), chartDocFilename.indexOf('.'))
+ ".html";
FileUtils.writeStringToFile(new File(chartOutputFilename), html, "UTF-8");
}
|
And here Here is the result using the JFreeChart plugin for Pentaho ChartBeans:
Panel |
---|
bgColor | #FFFFFF |
---|
title | Bar chart using JFreeChart plugin for Pentaho ChartBeans |
---|
|
|
And here Here is the result using the Open Flash Chart plugin for Pentaho ChartBeans:
Panel |
---|
bgColor | #FFFFFF |
---|
title | Bar chart using Open Flash Chart plugin for Pentaho ChartBeans |
---|
|
|
The full source of this example is attached. It is a zipped Eclipse project called pentaho-chartbeans-demo.
Summary
In this article, the Pentaho ChartBeans project was introduced. Pentaho ChartBeans presents a single API for many chart engines. It takes a novel approach to styling a chart by using CSS, taking full advantage of cascading and inheritance.
Related Items