To alternate colours in a series of details, declare a count variable in the report header or the group header, if you are grouping.
// header onRenderBegin count = 0
In the detail, set the colour based on the modulus of the count and increment count:
// component onRenderBegin if (count%2==0) setBackgroundColor("Yellow") else setBackgroundColour("White"); ++count;
If you have several components to hide based on a value, declare a boolean that you can check in renderIf:
// header onRenderBegin today = new Date(); weekend = today.getDay()==0 || today.getDay()==6;
Now you can check for a weekend (Sunday==0, Saturday==6) and render accordingly:
// component renderIf weekend
or for weekdays, use not weekend:
// component renderIf !weekend
Dynamic parameters can be passed in to a report at the start of rendering. These can be queried using the Parameters object. For example, to indicate whether a report is a Customer copy or a Sales copy you could specify the label to read a dynamic parameter called "type":
// label onRenderBegin setText(Parameters.get("type"));
Other parts of the code could show or hide components based on the value of type:
// component renderIf Parameters.get("type")=="Sales"
Standard Java classes can be accessed by JavaScript. For example:
java.lang.System.out.println("Hello World");
The import mechanism can be used to avoid typing lengthy package names:
importClass(java.util.Vector); v = new Vector(); importPackage(java.lang); System.out.print("Hello "); System.out.println("World");
When importing packages and classes which are not in the standard java runtime, the prefix Packages is required:
importClass(Packages.org.apache.log4j.Logger); importPackage(Packages.org.apache.log4j);
Typically imports should be done in the FunctionDefinitions script so that they are accessible throughout the report. Any class that is available on the Elixir Report Designer classpath can be loaded and used in this way.