Thursday, March 29, 2007

BIRT Wiki Page Updates

The BIRT Wiki Page has been updated today. We have changed the top level page and added Wiki Categories to the BIRT pages. More importantly, we have opened up a new section for Community Example contributions. Have you ever done something in BIRT that you think other people would be interested in? Well now we have a place for you to put your code.

The full process is explained on the BIRT Examples page. I just wanted to highlight a couple of facts.

  • You need to login to the Wiki to make edits.
  • User logins are tied to your Bugzilla account.
  • Please use the template for any new pages which is shown here.
  • Make sure the title of your article includes the word (BIRT) at the end of the title.
  • Please apply the proper category tag at the bottom of the page.
  • Do not include slashes '/' or '' in the title. Wiki structure is flat, slashes imply a level of hierarchy that does not exist.

The proper Category tags are as follows:
For examples about how to create reports use:
[[Category:BIRT Example]]
[[Category:BIRT Example Report]]

For examples about how to integrate BIRT with other products:
[[Category:BIRT Example]]
[[Category:BIRT Example Integration]]

For examples about how to create BIRT extensions:
[[Category:BIRT Example]]
[[Category:BIRT Example Extension]]

Finally, only make contributions to the Wiki that meet the Eclipse contribution guidelines.

"You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Project:Copyrights for details). DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!"

Friday, March 23, 2007

Google Co-Op To Search For BIRT

Many of you know that I love all things Google. A couple of weeks ago I read about the public release of Google Co-Op. In a nut-shell I can create custom made searches that look only in the domains that I specify, or at least favor those domains. This means that my search is more likely to return BIRT specific information.

As an example, go to a standard google search page and type in the term "Driver Bridge". I get at least ten pages of data and virtually all of it is not related to BIRT. Now do the same on the BIRT custom search on the right hand side bar of this blog. The search returns only the three items about the BIRT driver bridge. (I only search the sites that I have specified).

But wait theres more:
- Google Co-Op supports collaboration. If anyone is interested in adding additional sites to the BIRT search, let me know and I will let you collaborate and add your own sites.

Give it a try and let me know what you think.

NOTE: You will not see this functionality getting added to the main BIRT web site. The terms of use for Google Co-Op are written in a way that the Eclipse Foundation would open itself up to significant liability if the foundation hosts the search. We went through the legal review process with the Eclipse Foundation, there is no way this is going to get added to the Eclipse Foundation site. Yes, I have thrown down the gauntlet there, I would love it if someone can figure out a way to prove me wrong. Google Terms of Service is here.

Wednesday, March 21, 2007

Google Summer of Code - OpenMRS Project

Justin Miranda posted to the BIRT Newsgroup announcing this project yesterday and this looks like a very good cause and opportunity.

He will be mentoring a project that integrates open source reporting tools into OpenMRS. OpenMRS is a successful open-source project that provides an electronic medical record system for developing countries.

More information can be found on his blog.
Have a look.

BIRT/Actuate Webinar

Just wanted to place a reminder that Virgil Dodson and I will be doing a webinar next week on Eclipse BIRT and how Actuate is extending the technology.

We will be discussing the Designer, the APIs and the deployment options that are available. Hope you can join us.

For more information click

Sunday, March 11, 2007

BIRT Milestone 5 New and Notable

The New and Notable for milestone 5 is now available. This milestone contains many improvements to the Charting Package and the example Web Viewer. Additionally PostScript output is now supported.

As part of compiling the new features, I designed a report that would make use of the script tag within a Text element. This report executes every 10 seconds and alters what is rendered based on some check boxes within the report.

Each check box is built similar to the following code implemented in a Text element.

<form name="cbform">
<input type="checkbox" name="mycheckbox" <VALUE-OF>if( params["hideOfficeCodeLabel"].value){
}</VALUE-OF>>Hide Office Code</input>

The check box is linked to a report parameter, which in turn is tied to the visibility property of a column in the report.

The report contains a script function called reloadPage, which builds a new
URL based on the check boxes and reruns the report every ten seconds. This function was created in the first Text element of the report.

<form name="input" onSubmit="return reloadPage();">

<script type="text/javascript">

function reloadPage() {
var temp = new String(location.href);
var targetURL = new String();
var altchart = "1";

if( temp.indexOf("&altchart=1") != -1){
altchart = "2";
altchart = "1";
if(temp.indexOf("__overwrite=") != -1 ){
targetURL = temp.substring(0, temp.indexOf("&__overwrite") -1);
targetURL = temp;

targetURL += "&__overwrite=true";
targetURL += "&hideOfficeCodeLabel=" + document.cbform.mycheckbox.checked;
targetURL += "&hideCityLabel=" + document.cbform2.mycheckbox.checked;
targetURL += "&hideStateLabel=" + document.cbform3.mycheckbox.checked;
targetURL += "&hideCountryLabel=" + document.cbform4.mycheckbox.checked;
targetURL += "&altchart=" + altchart;


return false;
timer=setTimeout('reloadPage()', 10000);


Finally a chart was added to the report which displays Product Line or Product details based on the altchart parameter set in the reload script. This was accomplished by using the DE API within the beforeFactory script to swap the chart data set as shown below.

graph = reportContext.getReportRunnable().designHandle.getDesignHandle().findElement("Chart1");
var request = reportContext.getHttpServletRequest();
if( request.getParameter("altchart")){
altchart = request.getParameter("altchart").toString();
if( altchart == "2" ){
graph.setProperty( "dataSet", "graph2" );
graph.setProperty( "dataSet", "graph1" );


This report can be downloaded here.