A continuación encontrarás traducido al castellano el artículo escrito por Ricardo Cruz y publicado originalmente en el Blog oficial de Xojo.
Estamos emocionados con Xojo 2024r2: rendimiento mejorado, soporte de Control Set, mejoras en los controles existentes y correcciones de errores. Te encantará esta versión.
Control Set
Hay casos en los que tienes varios controles con la misma funcionalidad. Imagina que estás programando una calculadora y que has añadido los WebButton para cada dígito. Si tuvieses que añadir el mismo código y eventos Pressed en cada botón sería algo repetitivo y propenso a errores, cuando lo único que cambia es su valor numérico.
Puedes agrupar un conjunto de controles de la misma clase, de modo que puedes pensar en ello como si estuvieses utilizando un array. Puedes añadir los manejadores de evento al grupo. Los eventos quedan así mejorados con un parámetro adicional “index”, que te permitirá saber sobre cuál de los controles de este grupo se está ejecutando el evento y decidir así la acción a realizar.
Crear Pestañas y Embeber Controles en Tiempo de Ejecución con WebTabPanely WebPagePanel
Al igual que ocurre con los Control Set, esto es algo que ya estaba disponible en los proyectos Desktop y que queríamos incluir también en Web. A partir de ahora, podrás crear y eliminar pestañas y páginas en los controles WebTabPanel y WebPagePanel, respectivamente, en tiempo de ejecución. También podrás añadir y/o eliminar controles en tiempo de ejecución, o bien mover controles entre las pestañas o páginas cuando lo precises.
Esto abre un nuevo mundo de posibilidades para tus aplicaciones, donde puedes proporcionar a tus usuarios finales un modo de contar con múltiples contextos abiertos al mismo tiempo.
WebListBox: Altura Configurable para la Cabecera y las filas, así como Estilo de Línea y Borde
Podrás configurar la altura en las cabeceras de un WebListBox así como en las filas utilizando la misma API que ya conoces de los proyectos Desktop. Ya no necesitarás hacer retoques directamente en el CSS.
También se han añadido las propiedades HasBorder y GridLineStyle en los proyectos Wbe, permitiéndote así eliminar el borde externo, mostrar sólo las líneas verticales entre columnas… o simplemente eliminarlas.
Interface WebDataSource
Hablando de las mejoras relacionadas con WebListBox, verás que ahora la interface WebDataSource es más fácil de implementar. Ya no tendrás que implementar los métodos SortedPrimaryKeys y UnsortedPrimaryKeys.
Ahora sólo se requiere la implementación de tres métodos:
- ColumnData: Donde definirás la cantidad de columnas, los nombres y configurarás si serán ordenables o no.
- RowCount: De modo que el control pueda conocer la cantidad de espacio necesario.
- RowData: Aquí es donde devolverás un array de filas.
El WebListBox carga las filas de forma diferida (lazy loading), lo que significa que sólo consultará al DataSource por la cantidad de filas que se han de mostrar en pantalla. Sólo recuperará más cuando sea necesario.
Mejoras del WebListBox cuando se utiliza un WebDataSource
El uso de un WebListBox en combinación con un DataSource hace que sea posible mostrar una gran cantidad de datos. Hasta ahora podías mostrar miles de filas de forma realmente rápida. Esta versión mejora el modo en el que Xojo utiliza tu DataSource, sin tener que cambiar una línea de código en tus proyectos.
La acción de desplazarse por las filas es mucho más rápido ahora. Por ejemplo, mientras que Xojo 2024r1.1 era capaz de mostrar 1 millón de filas en aproximadamente 6 segundos (en mi ordenador), el mismo proyecto ejecutándose sobre 2024r2 puede mostrarlas en menos de 100ms.
Pero no sólo se ha mejorado la velocidad. La huella de memoria también se ha reducido de forma dramática. Mostrar 1 millón de registros en 2024r1.1 consumía en torno a 1 GB de RAM, mientras que en Xojo 2024r2 sólo empleará unos pocos megabytes.
No puedo imaginar un caso de uso en los que precises mostrar millones de filas y desplazarte por ellas; pero si encuentras uno… entonces podrás implementarlo con Xojo 🙂.
Cambiar el tamaño de los WebButton
Para facilitar aun más la migración de tus proyectos Web 1, ahora podrás modificar la altura de tus WebButton. El framework web también se encargará de reducir el tamaño de fuente en caso necesario cuando el botón es más pequeño.
Indicador Individual para Cada Segmento de WebSegmentedButton
Hay casos en los que precisas combinar diferentes “indicadores” (diferentes colores) en un mismo control WebSegmentedButton. Por ejemplo, pulsar uno de los segmentos puede ser una acción destructiva, de modo que puedes usar el indicador Danger. Por omisión, los segmentos utilizarán el indicador especificado en el panel Inspector, pero ahora podrás ajustar cada uno de ellos mediante código.
Me.Indicator = WebUIControl.Indicators.Primary Me.SegmentAt(1).Indicator = WebUIControl.Indicators.Danger Me.SegmentAt(2).Indicator = WebUIControl.Indicators.Success
Con un total de 4 segmentos, este será el resultado del anterior ejemplo al ejecutarlo:
Rendimiento, Fugas de Memoria y Corrección de Errores
Por último, pero no por ello menos importante, Xojo 2024r2 incluye mejoras de rendimiento significativas. Hemos mejorado el servidor web para gestionar más peticiones por segundo. Si estás usando Xojo Web para exponer una API, esta podrá servir más peticiones en menos tiempo. En el caso de las aplicaciones Web normales, esto significa que podrá gestionar más eventos y responder a ellos de forma aun más rápida.
Esta es una comparativa del mismo proyecto ejecutado en diferentes versiones de Xojo:
También se ha mejorado la latencia, y ahora Xojo puede responder en menos de 2ms:
Si aun estás sirviendo APIs Web con Web 1, entonces esta es una buena oportunidad para migrar:
2019r3.2 | 2024r2 | |
Latencia Media | 133.4 ms | 1.98 ms |
Latencia Máxima | 287.3 ms | 143.52 ms |
Peticiones por segundo | 76 | 8900 |
Velocidad de Transferencia | 9.89 KB/s | 1.5 MB/s |
Conclusión
Como de costumbre, quiero agradecer especialmente a todos aquellos que han dedicado su tiempo a la creación de informes de fallos, solicitudes de características y a probar las versiones beta. Esto no habría sido posible sin su ayuda.