//////////////////////////////////////////////////////////////
////////////      Documentación Tarea ELO-323     ////////////
////////////   "Pregunta Interactiva al Público"  ////////////
//////////////////////////////////////////////////////////////

--------------------------------------------------------------
Autores: Eduardo González, Ernesto Fredes
Fecha: 27-12-2013
--------------------------------------------------------------

Descripción General de la Aplicación
------------------------------------

  Consiste en una aplicación GINGA escrita en lenguaje NCL con
uso de scripts en lenguaje LUA desarrollada para televisión
digital. La idea es realizar una pregunta al público, y que el
usuario pueda, desde su televisor, enviar en tiempo real una
respuesta, al estilo "pregunta al público" de "Quien quiere ser
Millonario". La pregunta se obtiene de un servidor, y la
respuesta se retorna al mismo por una conexión TCP (requiere)
estar conectado a internet para funcionar. Una vez respondido, 
el usuario es enviado la estadística hasta ese momento de lo
que han contestado los demás usuarios, en forma de gráfico.

Ambiente Utilizado
------------------

  Para desarrollar la aplicación se programó exclusivamente en 
lenguajes NCL y LUA usando el programa Eclipse, y trabajando
en base a ejemplos de la asignatura, y otros, como las tareas
de años anteriores.

Arquitectura  y Descripción de la Solución
------------------------------------------

  Pasado un par de segundos se despliega la opción de parti-
cipar en la pregunta interactiva. En caso de aceptarse, se 
hace la solicitud al servidor pidiendo la pregunta y las
alternativas. Para ello se realizan 5 conexiones TCP con 
sus respectivos requerimientos, lo cual implica 5 scripts LUA.
Estos son 4 para las alternativas, y uno para la pregunta.
Cada uno de ellos se encarga de desplegar la información que 
recibe del servidor al usuario. Si bien es posible obtener
todo en una sola conexión, se optó por este diseño por razones
de simplicidad, ya que así cada script .lua se puede asociar a
una región diferente y bien definida en NCL, simplificando el 
dibujado por pantalla.
  Posteriormente se espera 20 segundos que el usuario conteste
alguna alternativa utilizando los botones de colores. En caso
de contestar, se ejecuta un script lua para enviar la respuesta
al servidor. Cada alternativa ejecuta un archivo .lua distinto,
que envía la URL adecuada según lo contestado al servidor. Si
bien es posible generar esta URL en forma dinámica y utilizar
sólo un script .lua, se optó por esta solución por simplicidad.
Estos 4 scripts lua están asociados a la región que muestra la
pregunta, y una vez contestado muestra al usuario la alternati-
va que contestó, dejando sólo ésta por pantalla.
  Luego de 20 segundos de iniciada la pregunta, se haya contes-
tado algo o no, se borra la pregunta y se despliegan los resul-
tados por pantalla al usuario, en forma de gráfico de barras y
con los porcentajes de cada alternativa hasta ese momento. Esto
se hace con otro script lua, que genera el gráfico de barras en
forma dinámica al solicitar las estadísticas al servidor.
  Evidentemente, el usuario sólo puede contestar una vez la
pregunta, y pasados 20 segundos del despliegue de resultados, 
éstos desaparecen en forma automática.

Requerimientos de Uso
---------------------

  Para ejecutar la aplicación, basta con estar conectado a 
Internet, y que las ligas:

<http://www2.elo.utfsm.cl/~elo323/survey/get_question.php>
<http://www2.elo.utfsm.cl/~elo323/survey/set_vote.php?opt=X>
(con X =1,2,3,4 para alternativas A,B,C y D)
<http://www2.elo.utfsm.cl/~elo323/survey/get_results.php>

estén funcionando correctamente. La aplicación se desarrolló
para correr en una resolución nativa de 1366 x 768, con la
pantalla completa. De todas formas funcionará con otras re-
soluciones, pero algunos medios, como el gráfico, pueden
aparecer levemente fuera de lugar.
  Para correr la aplicación, abrir "main.ncl" con alguna
máquina virtual GINGA.

Comentarios
-----------

  Dependiendo de la conexión a internet, es posible que las 
alternativas/pregunta/gráficos demoren un par de segundos en 
desplegarse. Al trabajar con la máquina virutal GINGA, la
alternativa A, correspondiente a rojo, se elige con F1; B,
correspondiente a verde, con F2; C, correspondiente a amari-
llo, con F3; D, correspondiente a azul, con F4.
 