openxava
Blog

28 de octubre del 2021

OpenXava 6.6 liberado

En OpenXava 6.6 todos los módulos visitados se recuerdan con pestañas en la parte superior de la página, hemos mejorado el comportamiento de la interfaz de usuario al desplazar y estrechar la página, puedes asociar tu propio editor personalizado a cualquier anotación por lo que ahora puedes usar anotaciones como alternativa a los estereotipos, hemos mejorado el editor para subir archivos, puedes usar mapas en tu aplicación meditante la anotación @Coordinates, etc. Sigue leyendo para saber más sobre estas y muchas otras cosas incluidas en esta última versión.

Te invitamos a que descargues esta nueva versión y actualices tus aplicaciones OpenXava. Mira las instrucciones de migración.

Descarga OpenXava 6.6 para Windows
Descarga OpenXava 6.6 para Linux
Descarga OpenXava 6.6 para Mac

Pestaña para los módulos ya visitados

Cuando el usuario va a un nuevo módulo una nueva pestaña se abre arriba de la página para él, permaneciando las pestañas de los módulos abiertos hasta el momento, por lo que el usuario puede volver a un módulo anterior con un simple clic. Como se muestra en el siguiente pantallazo:



Esto era una característca de OpenXava 5 que quitamos en la versión 6, desde entonces habéis pedido que la traigamos de vuelta con insistencia, diciendo que es una forma muy práctica de trabajar, que prácticamente ninguna aplicación de gestión tiene. Esto confiere una ventaja competitiva a vuestras aplicaciones OpenXava.
Por defecto, los módulos visitados se recuerdan entre sesiones por usuario, aunque esto lo puedes desactivar añadiendo la siguiente entrada a naviox.properties:

rememberVisitedModules=false 
Además, puedes definir algunos módulos fijos para que aparezcan a todos los usuarios por defecto. Por ejemplo, si quieres que  los módulos Factura y Pedido estén siempre presentes añade la siguiente entrada a naviox.properties:
fixModulesOnTopMenu=Factura, Pedido

Mejor comportamiento al desplazar (scroll)

Los botones de la barra superior se quedan fijos en la parte de arriba de la página cuando el usuario desplaza la vista de detalle o de lista. Así:



Fíjate como los botones de las acciones están siempre disponibles incluso después de desplazar la página. También, fíjate como el menú de la izquierda está fijo, cuando desplazamos la vista principal, el menú de la izquierda no se mueve. Ahora el desplazamiento del menú de la izquierda con los módulos y el de la vista principal son independientes.

Barra de botones adaptable (responsive)

Cuando estrechas el navegador, las etiquetas de las acciones en la barra de botones se ocultan, por lo que cabe bien en una ventana estrecha:



También hemos mejorado el tooltip para las acciones, incluyendo el nombre de la acción. 

Anotaciones Java en lugar de estereotipos

No os preocupéis, los estereotipos todavía se soportan, pero podemos usar anotaticiones en su lugar, si lo preferís. Las anotaciones tienen tres ventajas sobre los estereotipos. Primera, el compilador asegura que la has escrito bien, segunda, el IDE autocompleta la anotación mientras escribes y tercera, la anotación puede tener atributos, por lo que podemos modificar la forma en que se comporta.
Ahora puedes asociar un editor a una anotación Java, por lo que cuando una propiedad se anota con esa anotación se usa el editor correspondiente. Por ejemplo, puedes definir una anotación como esta:

package com.tuempresa.miap.anotaciones;

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD, ElementType.METHOD })
public @interface Colorido {

    String color() default "negro";

}
Fíjate como es una anotación Java convencional si ningún prerequesito especial, puedes incluso usar anotaciones ya existentes de cualquier librería Java.
Después anotas una propiedad de tu entidad con tu anotación, de esta forma:
@Column(length=40) @Required
@Colorido(color = "verde") 
String nombre;
Ahora quieres que tu propiedad nombre se visualice usando tu propio editor en lugar del de por defecto para las propiedades String. Para eso, define tu editor en editores.xml y asígnalo a tu anotación usando para-anotacion:
<editor nombre="Colorido" url="coloridoEditor.jsp">
    <para-anotacion 
      anotacion="com.tuempresa.miap.anotaciones.Colorido"/>
</editor>
Aquí estás asociando la anotación Colorido al editor coloridoEditor.jsp. Aparte de editores.xml puedes también usar para-anotacion en longintud-defecto.xml y validadores.xml, haciendo las anotaciones un sustituto total para los estereotipos.
Consecuentemente, hemos creado nuevas anotaciones para la mayoría de los estereotipos clásicos de OpenXava, hemos añadido estas anotaciones: @Password, @Money, @TextArea, @Label, @DateTime, @Discussion, @Icon, @Telephone, @IP, @EmailList, @MAC, @StringTime, @HtmlText, @File y @Files.
Las dos últimas se merecen su propia sección.

@File y @Files

Ahora puedes usar @File en lugar de @Stereotype("ARCHIVO") y @Files en lugar de @Stereotype("ARCHIVOS"). Son 100% compatibles incluso a nivel de base de datos, puedes cambiarlos en tu código sin problemas. Además, hemos mejorado el editor para @File y @Files para visualizar una imagen previa del archivo subido si es una imagen, de esta manera:



Esto permite usar @File como un sustituto de @Stereotype("FOTO") y @Files para sustituir a @Stereotype("GALERIA_IMAGENES"), aunque en este caso no son compatibles a nivel de base de datos, por lo que úsalos sólo para el código nuevo. @File tiene más rendimiento que FOTO y @File/@Files permite grabar en base de datos, sistema de archivos o definir tu propio sistema de almacenamiento.
Cuando usas @File@Files puedes definir atributos como acceptFileTypesmaxFileSizeInKb para restringir los archivos que el usuario puede subir. Por ejemplo, con este código:

@File(acceptFileTypes="image/*", maxFileSizeInKb=90)
@Column(length=32)
private String foto;
El usuario sólo puede subir imágenes de 90 Kb o menos.

Además, hemos hecho estas otras mejoras relacionadas con el editor de subida de archivos:

  • @File/ARCHIVO visualiza una pequeña imagen previa en modo lista si el archivo es de tipo imagen.
  • El estereotipo ARCHIVOS se muestra dentro de un marco por defecto.
  • Propiedad maxFileSizeInKb en la definición de editor en editores.xml para restringir el tamaño del archivo a subir.
  • Propiedad acceptFileTypes en editores.xml para restringir el tipo del archivo a subir.        
  • Nueva anotación @FileItemUpload para configurar propiedades de tipo FileItem.
  • Estereotipos FOTO/IMAGEN y GALERIA_IMAGENES sólo permiten subir imágenes.
  • Importar datos en modo lista sólo permite subir archivos de tipo CSV, XLS y XLSX.

@Coordinates

Una propiedad @Coordinates permite a tu usuario escoger un punto en un mapa y almacenarlo. Para definirla, anota tu propiedad con @Coordinates@Stereotype("COORDENADAS"):
@Coordinates @Column(length=50)
private String ubicación;
Fíjate en el tipo, String, y la longitud, 50, suficiente para almacenar unas coordenadas. A partir del código de arriba obtenemos:



El usuario puede marcar en cualquier parte del mapa y las coordenadas se cambiaran en el momento. También si teclea las coordenadas en el campo la marca se reposiciona.
Puedes usar @Coordinates sin tener que configurar nada, sin embargo tienes la opción de cambiar el proveedor de mapas en xava.properties. OpenXava puede usar OpenTopoMap, MaxBox, Stamen, OpenStreeMap o Thunderforest como proveedor de mapas. La imagen de arriba es usando OpenTopoMax. El mismo mapa con MaxBox sería:

Otras mejoras

Hemos hecho muchas mejoras en otras áreas:

  • Los informes PDF muestran el nombre del filtro en la cabecera para los filtros guardados.
  • Cuando se selecciona una fila en cualquier colección la acción de borrar del módulo se oculta. 
  • InvoiceDemo incluye ejemplos de @Coordinates, @Files y @File.        
  • Soporte para Internet Explorer quitado.
  • Tiempo de arranque de la aplicación en desarrollo (con Tomcat embebido) mejorado (x2).
  • Lección 2 y 4 del curso dividido en varias lecciones más pequeñas.        
  • Contenido del curso sobre pruebas automáticas movido al apéndice D.
  • Última lección del curso, sobre referencias y colecciones, actualizada la última versión de OpenXava.
  • Lección 2, 3 y 4 del curso incluye video.
  • Nuevo método isImage() en clase de utilidad org.openxava.util.Files.    
  • Nuevo métodos moveRow() en ModuleTestBase para probar mover filas en colecciones @OrderColumn.             
  • Botonera superior y menú de la izquierda adaptados para verse mejor en iPad.    
  • Algunas etiquetas comunes nuevas para usarse en las aplicaciones.
  • Actualizados las etiquetas y los mensajes en serbio.

Arreglos

Aunque esta no es una versión de mantenimiento hemos arreglado algo:

  • Arreglo: Estereotipo IP no vinculado a su validador correspondiente por eso no se hace validación para las IPs.
  • Arreglo: Orden en colecciones @OrderColumn alterado cuando se modifica un elemento de la colección desde el módulo.
  • Arreglo: Vínculos rotos en el capítulo de personalización de la guía de referencia.
  • Arreglo: Errores menores en versión en español del curso.
Descarga OpenXava 6.6 para Windows
Descarga OpenXava 6.6 para Linux
Descarga OpenXava 6.6 para Mac

blog comments powered by Disqus

English