En dos de los módulos del Core (tuiPhotos y tuiGames) es necesario evitar la sobrecarga que supone cargar muchas fotos de golpe en un casillero o rejilla (en las rejillas esta sobrecarga es menor ya que se utiliza multihilo de forma nativa). Para ello hemos decidido implementar casilleros/rejillas paginados/as.

El resultado es el siguiente:

Pantallazo-tuiPhotos - 0.1 - Componente de PaaS-OS

Pantallazo-tuiPhotos - 0.1 - Componente de PaaS-OS-3Por cierto, creo que son las primeras capturas que os mostramos de la ejecución sobre Linux (Ubuntu 9.10).

Explicación en detalle de como implementar un paginador para un casillero/rejilla.

Creamos tres variables globales

En nuestro caso en el proyecto de datos tdbResources:
SLT_N_ITEMS (Numérica en disco): Número casillas por página
SLT_CURRENT_PAGE (Numérica en memoria): Página actual
SLT_PAG_END (Numérica en memoria): Última página

Añadimos los controles

Necesarios al interface de usuario donde se ubican los casilleros/rejillas a paginar. Adelante, Atrás, Primero, Último, Todos. y un par de objetos de edición que muestran la página actual SLT_CURRENT_PAGE y el total de páginas SLT_PAG_END. También establecemos las condiciones “Activo” para cada uno de ellos
image

Creamos los eventos asociados a los mismos:

image
EVT_SLT_START

image
EVT_SLT_END

image
EVT_SLT_NEXT

image
EVT_SLT_PREVIOUS

imageEVT_SLT_ALL

Cuando establecemos la variable global SLT_CURRENT_PAGE a 0 estamos indicando que no realice paginación.

Asociamos cada botón con su Evento

Como por ejemplo para el botón Inicio:

image

Inicializamos el casillero

Lo haremos en el evento que provoque la carga de datos en el formulario principal. en nuestro caso en dos momentos, al cambiar de Álbum y al refrescar el formulario.

image

Por un lado hemos decidido almacenar el tamaño de los elementos paginados en la tabla BASE_PREFS (almacena la configuración del entorno de ejecución). Desde esta tabla recuperamos el valor y lo almacenamos en la variable previamente definida SLT_N_ITEMS.

Por otro esta establecer como página actual SLT_CURRENT_PAGE la primera y como página final la última calculada en base a la siguiente formula:

image

Cortamos el resultado

Nos falta ahora ver como cortamos el resultado en el proceso de carga de los datos de los casilleros/rejillas. Este es dependiente de dos variables SLT_N_ITEMS y SLT_CURRENT_PAGE

image

Bueno con esto esta todo. Esperamos que os resulte de ayuda en vuestras futuras implementaciones.

One Comment

Responder a PaaSOS – Blog » PaaSOS: Soluciones a problemas cotidianos Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *