====== Birt ======
Birt es una herramienta para crear informes con la que estoy trabajando en estos momentos. [[http://www.eclipse.org/birt/phoenix/|Birt]] realmente es una extensión de [[http://www.eclipse.org|Eclipse]]. Que puede [[http://download.eclipse.org/birt/downloads/|descargarse]] como un paquete.
Los chicos de Eclipse Birt tienen un [[http://www.eclipse.org/birt/phoenix/tutorial/#movie|videotutorial]] introductorio muy interesante.
Aquí dejaré una serie de trucos y utilidades que me son útiles a la hora de desarrollar:
===== Variables Glovales =====
En BIRT se pueden establecer variables globales que serán accesibles después desde cualquier parte del informe pero se deben declarar //a pelo//. poniendolas directamente sin **var** ni nada
Lo mismo sirve para las funciones.
Tal que así:
{{:birt:var_globales.png|}}
Después son accesibles desde cualquier objeto del informe
var local = variable_1 + variable_2
===== Scripting y Logs =====
Una de las cosas interesante que ofrece BIRT es permitir scripting.
Y una de las cosas necesarias cuando haces cualquier tipo de script es poder debugar.
El método que he encontrado por el momento es este:
-- importo todo lo necesario para instanciar el log
importPackage(Packages.java.util.logging);
var fileHandler = new FileHandler("/tmp/birt_jj.log", true);
var rootLogger = Logger.getLogger("");
rootLogger.addHandler(fileHandler);
-- registro efectivamente el log
Logger.getAnonymousLogger().info("texto que aparecerá en el log");
===== Simple Date Format =====
Esto me ha dado muchos dolores de cabeza.
:-? me sigue dando dolores de cabeza:-?
Como formatear una fecha en un grafico:
importPackage(Packages.java.text);
importPackage(Packages.org.eclipse.birt.chart.model.attribute);
function beforeDrawAxisLabel( axis, label, icsc )
{
// YA SE QUE SE PODRÍA HACER MAS ELEGANTE. QUEDA PENDIENTE.
if (axis.getOrientation() == Orientation.HORIZONTAL_LITERAL){
var nuevoValor=new String(label.getCaption().getValue());
var mes = nuevoValor.substring(3,5);
var anyo = '';
var mesTxt = new String('');
switch (mes)
{
case '01': { mesTxt = 'ene'; break; }
case '02': { mesTxt = 'feb'; break; }
case '03': { mesTxt = 'mar'; break; }
case '04': { mesTxt = 'abr'; break; }
case '05': { mesTxt = 'may'; break; }
case '06': { mesTxt = 'jun'; break; }
case '07': { mesTxt = 'jul'; break; }
case '08': { mesTxt = 'ago'; break; }
case '09': { mesTxt = 'sep'; break; }
case '10': { mesTxt = 'oct'; break; }
case '11': { mesTxt = 'nov'; break; }
case '12': { mesTxt = 'dic'; break; }
default: { mesTxt = 'xxx'; break; }
}
label.getCaption().setValue(mesTxt + ' ' + nuevoValor.substring(6,8));
// si la la cadena viene en ingles la parseo TODO mas elegante
if ( mesTxt == 'xxx' ){
mes = nuevoValor.substring(0,nuevoValor.search('/'));
switch (mes)
{
case '1': { mesTxt = 'ene'; break }
case '2': { mesTxt = 'feb'; break }
case '3': { mesTxt = 'mar'; break }
case '4': { mesTxt = 'abr'; break }
case '5': { mesTxt = 'may'; break }
case '6': { mesTxt = 'jun'; break }
case '7': { mesTxt = 'jul'; break }
case '8': { mesTxt = 'ago'; break }
case '9': { mesTxt = 'sep'; break }
case '10': { mesTxt = 'oct'; break }
case '11': { mesTxt = 'nov'; break }
case '12': { mesTxt = 'dic'; break }
default: { mesTxt = 'xxx'; break; }
}
anyo = nuevoValor.substring(nuevoValor.lastIndexOf('/')+1);
anyo = anyo.substring(0,2);
label.getCaption().setValue(mesTxt + ' ' + anyo);
}
// si la la cadena viene en ingles la parseo TODO mas elegante
if ( mesTxt == 'xxx' ){
mes = nuevoValor.substring(0,3);
switch (mes)
{
case 'Jan': { mesTxt = 'ene'; break }
case 'Feb': { mesTxt = 'feb'; break }
case 'Mar': { mesTxt = 'mar'; break }
case 'Apr': { mesTxt = 'abr'; break }
case 'May': { mesTxt = 'may'; break }
case 'Jun': { mesTxt = 'jun'; break }
case 'Jul': { mesTxt = 'jul'; break }
case 'Aug': { mesTxt = 'ago'; break }
case 'Sep': { mesTxt = 'sep'; break }
case 'Oct': { mesTxt = 'oct'; break }
case 'Nov': { mesTxt = 'nov'; break }
case 'Dec': { mesTxt = 'dic'; break }
default: { mesTxt = nuevoValor; break }
}
anyo = nuevoValor.substring(nuevoValor.lastIndexOf(',')+1);
anyo = anyo.substring(0,5);
label.getCaption().setValue(mesTxt + ' ' + anyo);
}
if ( mesTxt == nuevoValor ){
// salvavidas
label.getCaption().setValue(' ');
}
axis.setLabel(label);
}
}