OpenXava 5.8 permite
importar datos desde Excel o CSV, en modo lista es posible
agrupar por cualquier propiedad para obtener la suma por grupos, el usuario puede
cambiar el nombre de las columna en la lista y en las colecciones, el programador tiene más flexibilidad al definir
controladores y
llenar combos, también hemos mejorado la
experiencia de usuario y la
apariencia, y mucho más.
Te invitamos a que
descargues esta nueva versión y actualices tus aplicaciones OpenXava. Mira las
instrucciones de migración.
Importación de datos
Un nuevo botón en modo lista llamado "Importar datos" te permite escoger un archivo de tu ordenador:
El archivo puede ser CSV, XLSX (Excel 2007/2010/2013) o XLS (Excel 97/2000/XP/2003). Después de seleccionar el archivo presiona el botón "Configurar importación" para mostrar el siguiente diálogo:
Aquí puedes asignar columnas de tu archivo Excel a columnas en tu aplicación. OpenXava intentará darte unos valores iniciales los más acertados posible. Ahora simplemente pulsa en "Importar" para cargar los datos en tu aplicación.
Grupos en la lista
En la esquina superior izquierda del modo lista puedes encontrar un combo con todas las posibles opciones de agrupación:
Fíjate como puedes agrupar por cada propiedad o referencia en la lista. Además, para el caso de las fecha puedes agrupar por el mes o el año de la fecha. Por ejemplo, si quieres agrupar por el mes de la fecha obtendrás:
Aquí tiene la suma de los importes de las facturas por mes. OpenXava muestra por defecto todas las propiedades numéricas susceptibles de ser sumadas. Puedes ordenar, filtrar y generar PDF para esta lista.
Renombrar columnas por usuario
En modo personalización el usuario puede cambiar las etiquetas de las columnas en la lista y en las colecciones. Ahora en cada columna hay un nuevo icono para eso:
Los cambios se almacenan por usuario.
Apariencia
Los mensajes tienen una nueva apariencia:
Además, se quedán fijos en una posición de la pantalla incluso aunque se desplace la página, y pueden ser cerrados por el usuario.
También hemos mejorados las descripciones emergentes (tooltips):
Los tooltips se muestran cuando el campo obtiene el foco y se mantienen hasta que el foco se pierde, así puedes usar las descripciones emergentes como una alternativa a un manual de usuario. Cuando el tooltip coincide con la etiqueta no se muestra.
Hemos hecho algunas otras mejoras en la apariencia:
- Nueva apariencia para la barra de botones para los módulos y la colecciones.
- Icono de borrar en la barra superior es rojo al pasar el ratón por encima.
- Tamaño de la letra cambiado para la lista y los editores.
- Pantallazos de la página de primeros pasos actualizados.
Mejoras en los controladores
En la herencia de controladores puedes excluir acciones del padre con el nuevo atributo
acciones-excluidas. Por ejemplo:
<controlador nombre="Familia">
<hereda-de controlador="Typical" acciones-excluidas="refresh, delete"/>
</controlador>
En este caso el controlador
Familia tiene todas las acciones de
Typical excepto
refresh y
delete. Antes necesitábamos hacer un copiar y pegar para casos como este.
Además, tenemos un nuevo atributo
disponible-en-nuevo en
accion para excluir acciones al crear un nuevo elemento. Fíjate en la acción
borrar en el siguiente controlador:
<controlador nombre="Factura">
<accion nombre="nuevo"
clase="org.openxava.actions.NewAction"
icono="library-plus"/>
<accion nombre="grabar" modo="detail"
por-defecto="si-posible"
clase="org.openxava.actions.SaveAction"
icono="content-save"
atajo-de-teclado="Control S"/>
<accion nombre="borrar" modo="detail" confirmar="true"
clase="org.openxava.actions.DeleteAction"
icono="delete"
disponible-en-nuevo="false"
atajo-de-teclado="Control D"/>
</controlador>
En este caso
nuevo y
grabar se muestran siempre, pero
borrar (por
disponible-en-nuevo=false) se muestra sólo cuando hay un elemento seleccionado y no cuando un nuevo elemento está siendo creado. El valor por defecto para
disponible-en-nuevo es
true. Esto permite mejorar la experiencia de usuario sin programar.
Combos con contenido arbitrario
Para un combo con una lista estática de elementos puedes usar una propiedad de tipo
enum. Para un combo que obtiene los datos de la base de datos puedes usar una referencia con
@DescriptionsList. Si lo que necesitas es cualquier otra cosa a partir de v5.8 cuentas con algunos métodos en la clase
org.openxava.view.View que permiten crear una lista desplegable para cualquier propiedad usando tu propia lógica. Por ejemplo, para una propiedad simple como esta:
private String color;
Puedes añadir un combo por código de esta manera:
getView().addValidValue("color", "blc", "Blanco");
getView().addValidValue("color", "ngr", "Negro");
Esto crea un combo para la propiedad
color con dos valores, "blc" con la etiqueta "Blanco" y "ngr" con la etiqueta "Negro". Aparte de
addValidValue(), también tienes
removeValidValue() y
getValidValues().
También hemos mejorado la flexibilidad de
@DescriptionsList, así si tienes una referencia como esta:
@DescriptionsList
@ManyToOne
private Provincia provincia;
Puedes añadir (o cambiar) una condición por código, de esta manera:
getView().setDescriptionsListCondition("provincia", "nombre like '%VA%'");
Es decir, adiós a los editores personalizados sólo para hacer un simple combo.
Experiencia de usuario
Hemos hecho algunas prueba de usabilidad y estas son las consecuencias:
- Si un módulo no tiene filas se inicia en modo detalle ejecutando la acción Nuevo.
- La listas recuerdan el último filtro y orden entre sesiones.
- Generar PDF funciona incluso si el navegador tiene bloqueadas las ventanas emergentes, esto aplica a la mayoría de las acciones IForwadAction también.
- Acción para borrar filas en modo lista ahora está en la barra superior y tiene un icono.
- El vínculo 'Iniciar sesión' no se muestra cuando el usuario está en la página de 'Iniciar sesión'.
- Cuando el editor Discussion obtiene el foco el botón de "Añadir comentario" se muestra y el botón de "Grabar" del modulo se oculta.
- El botón del editor Discussion se renombra de "Enviar" a "Añadir comentario", además está oculto al principio.
- La acción Borrar en modo detalle no está presente si no hay una entidad seleccionada.
- La acción de buscar en modo detalle ya no se incluye por defecto.
- Pulsar en modo detalle cuando no hay filas en la lista ejecuta la acción Nuevo.
Otras mejoras
Hemos hecho muchas mejoras en otras áreas:
- Workspace incluido en la distribución actualizado a Eclipse Oxygen, aunque todavía funciona bien en todos los Eclipse 4.x.
- Placeholders para campos usando el sufijo [placeholder] en los archivos de etiquetas i18n.
- Nuevas propiedades resetAfterOnCreate/resetAfterOnModify en SaveAction para definir el comportamiento después de grabar separadamente para crear y modificar.
- Descripción del módulo en el menú de módulos se omite si coincide con el nombre del módulo.
- El número de módulos mostrados en el menú en la primera carga es de 20, antes era 15.
- Se reduce el número de errores de serialización al parar el servidor de aplicaciones.
- Nueva propiedad showModulesMenuWhenNotLogged en xava.properties para ocultar el menú de Inicio para los usuarios invitados.
- ModuleTestBase borra las preferencias de usuario antes de ejecutar cada prueba.
- Atributo label-style en property-view y descriptions-list en los componentes XML.
- Algunas etiquetas de uso común nuevas para usar en las aplicaciones.
- Propiedad messagesOnTop quitada de xava.properties, ahora puedes usar CSS para posicionar los mensajes.
- Nueva propiedad showDefaultActionInBottom en xava.properties para mostrar/ocultar la acción por defecto abajo.
- Nuevos métodos showButtons() y hideButtons() en ModuleManager para mostrar/ocultar la barra de botones en la interfaz de usuario.
- Material Design Icons actualizados a 1.9.32.
- Librería poi-ooxml.jar añadida para manejar archivos Excel 2007/2010/2013.
- Nuevos controladores TypicalWithSearch y SearchForCRUD para usar la acción de búsqueda clásica.
- Nuevo método getQualifiedActionIfAvailable() en BaseAction.
- Nuevo método put() en Labels para añadir etiquetas en tiempo de ejecución.
- Nuevo método unquote() en la clase de utilidad Strings.
- Nueva acción CancelToDefaultControllersAction que cierra el diálogo y establece los controladores por defecto del módulo.
- Nuevo método selectGroupBy() y assertAllGroupBys() en ModuleTestBase para agrupar en modo lista.
- Nuevo método assertValuesInList(int row, String ... values) en ModuleTestBase para verificar todas las filas de una lista de un golpe.
- Nuevo método updateModelFromView() en View para actualizar el módelo establecido con setModel() a partir de los datos de la vista.
- El valor del atributo 'etiqueta' en de los componentes XML tienes preferencia sobre los archivos i18n.
Arreglos
Aunque esta no es una versión de mantenimiento hemos arreglado algunas cosas:
- Arreglo: Error en la consola JavaScript del navegador al intentar cargar una archivo inexistente de fuentes.
- Arreglo: ModuleTestBase.waitAJAX() falla al navegar desde una página no OpenXava.
- Arreglo: Al cambiar la URL del navegador de una aplicación a otra la primera acción no funciona.
- Arreglo: La barra de botones en las colecciones con flowLayout=true se sale del marco.
- Arreglo: En algunos casos las etiquetas en las colecciones no se traducen.
- Arreglo: Tooltip inútil en los editores HtmlText y Discussion.
- Arreglo: Errores de validación al añadir entidades a una colección anula todas la entidades añadidas, incluso las buenas.
Descarga OpenXava 5.8