La página principal es lo primero que se ve al abrir la solución. En esta página es donde colocamos el botón que (i) inicia un conjunto de acciones en el servidor y (ii) abre una subpágina en la que se ve el progreso de ejecución de esas acciones.
Para no complicar las cosas hemos restringido las acciones del servidor a una iteración en bucle. Con cada iteración simplemente se envía un informe de progreso.
En este ejemplo (imagen siguiente) hemos añadido etiquetas con el encabezado de la página y un resumen de los pasos del mecanismo del indicador del progreso. Estas etiquetas no son algo que necesite pero sí lo es el botón que hay al final de la página.
En este apartado explicamos cómo crear la página principal de su solución. En el siguiente, Subpágina de progreso, explicamos cómo crear la subpágina que contiene el indicador del progreso.
Al empezar a trabajar con un diseño nuevo se crea una página de nivel superior por defecto; esta página aparecen en el panel Páginas. Para cambiar el nombre de la página principal haga doble clic en ella y teclee el nombre nuevo. En este ejemplo hemos cambiado el nombre de la página a Main Page (imagen siguiente).
Para agregar una subpágina haga clic en la flecha desplegable del icono Más de la barra de herramientas y seleccione Agregar subpágina. Hemos llamado a la página Progress.
La acción Subpágina de progreso:
•Indica la subpágina que se quiere usar para ver el progreso de las acciones del servidor.
•Toma como acciones secundarias las acciones del servidor que requieren un indicador de progreso.
Ahora vamos a configurar la subpágina de progreso en un evento AlPulsarBotón. Para ello siga estas instrucciones:
1.Agregue un botón arrastrándolo desde el panel Controles. Haga doble clic en el botón e introduzca un nombre o el texto que quiera.
2.Haga clic con el botón derecho en el botón y seleccione Acciones de control para AlPulsarBotón.
3.Arrastre la acción Subpágina de progreso hasta el panel principal (imagen siguiente) desde las acciones de página del panel de la izquierda.
En la acción Subpágina de progreso haga clic en la flecha desplegable y seleccione la subpágina Progress. Para que la página aparezca como un cuadro de diálogo modal (que se superpone a la página principal) seleccione la opción Cuadro de diálogo modal y defina sus dimensiones (imagen siguiente).
Ahora cuando se pulse ese botón se abrirá la subpágina Progress como un cuadro de diálogo modal. El paso siguiente es indicar las acciones del servidor cuyo progreso quiere controlar.
Las acciones del servidor que requieren un indicador del progreso deben definirse como acciones secundarias de la acción Subpágina de progreso.
La acción del servidor que usamos para este ejemplo es un bucle que se repite del 1 al 10. Arrastre la acción Bucle hasta el panel principal como acción secundaria de la acción Subpágina de progreso (imagen siguiente). Asigne el valor $loop a la variable. Esto significa que por cada repetición del bucle el valor de la variable $loop será el número de índice de la iteración actual (por ejemplo, 4 en la cuarta iteración).
Ahora agregue una acción Actualizar progreso como acción secundaria de la acción Bucle. Ahora la acción Actualizar progreso se ejecutará una vez con cada bucle. Hay que resaltar que la acción Actualizar progreso envía un valor mediante su opción Valor a la variable dinámica $MT_Progress. En este ejemplo introducimos la expresión XPath $loop, sleep(1000) (imagen anterior) como Valor. Esta expresión hace que con se pase el número de cada iteración a $MT_Progress. En consecuencia, al irse sucediendo las iteraciones el valor de $MT_Progress cambia de 1 a 10 hasta que se hayan completado todas las iteraciones. (La función XPath sleep() pasa la iteración durante un segundo, lo que ralentiza el indicador del progreso en la subpágina lo suficiente como para que podamos observar el progreso.) Una vez se han completado todas las iteraciones se sale del bucle, la acción Subpágina de progreso termina y se cierra la subpágina.
Para que el usuario pueda cancelar las acciones del servidor hemos incluido la opción de salir del bucle si la acción Enviar cancelación del progreso se ejecuta en la subpágina. Cuando una acción de cancelación se ejecuta, la función de extensión de MobileTogether mt-progress-cancelling(), que está disponible globalmente, pasa de false() a true(). Por tanto, podemos comprobar el valor de esta función y, si es true, configurar el procedimiento de cancelación. En este ejemplo el procedimiento de cancelación es romper el bucle tal y como se ve en la imagen siguiente.
En la sección siguiente, Subpágina de progreso, debemos usar el valor enviado por la acción Actualizar progreso a $MT_Progress para crear una visualización del indicador del progreso.