< Anterior | Siguiente >

Lección 9: Incorporar el manejador de historial de cálculos en la aplicación

Para añadir el manejador de historial de cálculos a la página, debe cambiar el portlet de resultados y el portal principal.

Cambiar el portlet de resultados

Hacia el final de la lección anterior, el manejador CalculationResultsHandler se suscribió a un único evento: mortgageApplication.mortgageCalculated. Cuando se produce dicho evento, el manejador actualiza el gráfico circular y vuelve a visualizarlo. Sin embargo, el usuario podría seleccionar una fila en el portlet de historial y hacer que se publique un evento distinto: mortgageApplication.mortgageResultSelected. Si CalculationResultsHandler también se suscribe a dicho evento, el manejador puede responder de la misma manera a la selección del usuario, actualizando y volviendo a visualizar el gráfico circular.

La forma más sencilla de suscribirse a ambos eventos es utilizar el asterisco (*), que es un carácter comodín que representa cualquier evento de un conjunto de eventos. Realice lo siguiente:

  1. En el editor de IU enriquecida de EGL, abra el archivo CalculationResultsHandler.egl y pase a la vista Fuente.
  2. En la función start(), busque la línea siguiente:
    InfoBus.subscribe("mortgageApplication.mortgageCalculated", displayChart);
  3. Sustituya el calificador de nivel inferior del nombre de evento por un asterisco:
    InfoBus.subscribe("mortgageApplication.*", displayChart);
    EGL ahora llama a la función displayChart siempre que se produce un evento si el nombre del evento empieza por mortgageApplication..
  4. Guarde y cierre el archivo.

Cambiar el portal principal

Para el portlet de historial, añada líneas que sean similares a las líneas de los otros dos portlets:

  1. En el editor de IU enriquecida de EGL, abra el archivo MainHandler.egl y pulse la pestaña Fuente.
  2. Inmediatamente debajo de la declaración resultsHandler, añada una declaración similar para historyHandler:
    historyHandler CalculationHistoryHandler{};
  3. Inmediatamente debajo de la declaración resultsPortlet, añada una declaración similar para historyPortlet:
    historyPortlet Portlet{children = [historyHandler.historyResults_ui], 
    			title = "History", canMove = TRUE, canMinimize = TRUE};
  4. En la función start, debajo de las llamadas existentes a addPortlet, añada el nuevo portlet al portal:
    	mortgagePortal.addPortlet(historyPortlet, 1);
  5. Del mismo modo que hizo con resultsPortlet, establezca historyPortlet para que esté minimizado inicialmente:
    	historyPortlet.minimize();
  6. Añada código para historyPortlet al final de la función restorePortlets():
    		if(historyPortlet.isMinimized())
    			historyPortlet.restore();
    		end	
  7. Guarde el archivo. Si ve errores en el archivo fuente, compare el código con el contenido del archivo en Código terminado para MainHandler.egl después de la Lección 9.

Probar el portal

Pruebe el portal principal para asegurarse de que el nuevo portlet de historial se visualiza y funciona correctamente.
  1. En la parte inferior del editor, pulse Vista previa. EGL muestra el portal principal y los tres portlets subsidiarios.
  2. Pulse Calcular. Una imagen animada indica que el trabajo está en curso. Cuando termina el cálculo, se visualiza el gráfico circular y el historial.
    El portlet de resultados restaurados muestra el gráfico circular.
  3. Cambie el plazo de la hipoteca a 5 años y vuelva a pulsar Calcular. Se añadirá una fila a la lista de historial.
  4. Pulse en una casilla de la primera fila de la lista de historial.
    La primera fila de la lista de historial contiene el cálculo a 30 años.
  5. El gráfico circular muestra los valores para la fila seleccionada en la lista de historial.
    El gráfico circular actualizado tiene los valores del primer cálculo.

Punto de comprobación de lección

Ha aprendido a suscribirse a varios eventos con nombres similares.

En la lección siguiente, añadirá un portlet para visualizar un mapa de sociedades de crédito que se encuentran en una determinada zona de los Estados Unidos.

< Anterior | Siguiente >

Comentarios