Birt

Birt es una herramienta para crear informes con la que estoy trabajando en estos momentos. Birt realmente es una extensión de Eclipse. Que puede descargarse como un paquete.

Los chicos de Eclipse Birt tienen un 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í:

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);
    }
}
 
birt.txt · Última modificación: 2010/01/28 07:52 por juantxu
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki