jueves, 19 de julio de 2012

Navegación personalizada de registros (II): Calendario de partidos con swipe

Lo que se explicará aquí es como hacer algo similar a lo comentado en un post anterior con respecto a un calendario de partidos de un campeonato de fútbol, pero haciendo uso de la funcionalidad del gesto swipe de los Smart Devices. La idea es pasar entre fecha y fecha del calendario con el gesto swipe, hacia la izquierda para ir a la fecha anterior y hacia la derecha para ir a la fecha siguiente.


Partimos de una transacción Jornadas

y una transacción Partidos similar a la que utilizamos en el otro ejemplo


La implementación del calendario la vamos a hacer en un objeto Panel for Smart Devices anidando dos grillas, una que listará las fechas del calendario, utilizando atributos y otra que listará los partidos de la fecha correspondiente, utilizando un SDT.

Para ellos definimos un SDT Collection para listar los partidos


y un Data Provider para cargarlo, filtrando por la fecha del campeonato

SDTPartidos
where JornadaNumero = &JornadaNumero
{
   SDTPartidosItem
   {
      PartidoId = PartidoId
      PartidoFecha = PartidoFecha
      PartidoHora = PartidoHora
      CanchaNombre = CanchaNombre
      NombreEquipo1 = NombreEquipo1
      EscudoEquipo1 = EscudoEquipo1
      GolesEquipo1 = GolesEquipo1
      NombreEquipo2 = NombreEquipo2
      EscudoEquipo2 = EscudoEquipo2
      GolesEquipo2 = GolesEquipo2
   }
}

Luego, en el Panel for SD que creamos para mostrar el calendario, insertamos primero una grilla con el atributo JornadaTexto, la idea es que la tabla Jornadas sea la tabla base de dicha grilla.
Además a la grilla le configuramos Control Type = SD Paged Grid. Este control es el que le dará la funcionalidad a la grilla para cambiar de registros utilizando el gesto swipe.

Seguido, creamos una variable basada en el SDT Partidos y la insertamos dentro de la grilla de fechas. Al ser un SDT Collection la variable será insertada en el form también como una grilla, a la cual la vamos a dejar con el Control Type predeterminado.


Finalmente, editamos el evento Load en el Panel for SD para que se cargue la grilla de partidos para cada fecha utilizando el Data Provider

Event Load
   &Partidos = CargaPartidos(JornadaNumero)
Endevent

Y listo! Tenemos otra forma más de navegar nuestros registros de forma amigable para el usuario y utilizando funcionalidades nativas de los dispositivos.
Como desventaja, podemos mencionar el hecho de que siempre que llamamos al calendario se muestra la primera página, no tenemos (temporalmente) forma de ir directamente a una página (fecha) en particular.

2 comentarios: