[Ginga-argentina] Consulta NLC/LUA/HTML (Interactuando con Web Service)
Nicolas Ignacio Roldan
niko_cbes at hotmail.com
Fri Apr 27 14:49:27 CEST 2012
Buenas a todos!
( esta frio no? )
Bueno, es esta oportunidad he comenzado a probar como funciona HTML con Ginga
Mi objetivo es lograr interectuar a traves de Ginga con un web service.
La aplicacion funcionaria asi:
Por medio de los botones '1'/'2'/'3' del control remoto votaria algunas de las 3 opciones y reflejaria la cantidad de votos de cada opcion a traves de una pagina html.
Si presiono alguna de las 3 opciones (1 ò 2 ò 3), paso ese voto por medio del 'event.post' al NCL ( esto hace que se incremente en 1 el valor que esta en una tabla del webService).
Algo asi:
if evt.key == '1' then
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='start', value='http://X.X.X.X/Ginga/Votar/?opcion=A'})
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='stop', value='http://X.X.X.X/Ginga/Votar/?opcion=A'})
elseif evt.key == '2' then
event.post('out',{class = "ncl", type = "attribution", name =
'srcNuevo', action='start',
value='http://X.X.X.X/Ginga/Votar/?opcion=B'})
event.post('out',{class = "ncl", type = "attribution",
name = 'srcNuevo', action='stop',
value='http://X.X.X.X/Ginga/Votar/?opcion=B'})
elseif evt.key == '2' then
event.post('out',{class = "ncl", type = "attribution", name =
'srcNuevo', action='start',
value='http://X.X.X.X/Ginga/Votar/?opcion=C'})
event.post('out',{class = "ncl", type = "attribution",
name = 'srcNuevo', action='stop',
value='http://X.X.X.X/Ginga/Votar/?opcion=C'})
end
Hasta ahi funciona perfecto.Si presiono solo una vez cada opcion se incrementa en 1 el voto del html. Mi problema esta en que si quiero volver a votar la misma opcion ya no me lo toma.
Lo que hice.
Despues de votar una opcion; volvia a llamar al "event.post" pasandole por parametros la direccion original del webService para que actualizara los valores obtenidos y poder seguir votando... pero tampoco funciono.... ó lo mas probable es que no lo sepa hacer.
Hacia:
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='start', value='http://X.X.X.X/Ginga/Votar'})
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='stop', value='http://X.X.X.X/Ginga/Votar'})
Este es el codigo:
-------------------------------------------main.ncl--------------------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<ncl id="main" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">
<head>
<regionBase>
<region id="rgWebService" width="100%" height="30%" top="0%" zIndex="1"/>
<region id="rgLua" width="0%" height="0%" zIndex="1" />
<region id="idBotonVote" width="20%" height="20%" bottom="10%" left="10%" zIndex="1"/>
</regionBase>
<descriptorBase>
<descriptor id="descWebService" region="rgWebService" />
<descriptor id="descLua" region="rgLua" focusIndex="appFocusLua"/>
<descriptor id="descBotonVote" region="idBotonVote"/>
</descriptorBase>
<connectorBase>
<importBase documentURI="metodos.ncl" alias="metodo"/>
</connectorBase>
</head>
<body>
<port id="pVote" component="imgBotonVote"/>
<media id="mediaWebService" type="text/html" src="http://X.X.X.X/Ginga/Votar" descriptor="descWebService">
<property name="src"/>
</media>
<media id="mediaLua" src="luaHtml.lua" descriptor="descLua" >
<property name="bounds"/>
<property name="srcNuevo"/>
</media>
<media id="imgBotonVote" src="Imagen/Botones/voto.png" descriptor="descBotonVote"/>
<media id="focoLua" type="application/x-ginga-settings">
<property name="service.currentKeyMaster" value="appFocusLua"/>
</media>
<link xconnector="metodo#onBeginEndMenu">
<bind role="onSelection" component="imgBotonVote">
<bindParam name="oSetTecla" value="ENTER"/>
</bind>
<bind role="abort" component="imgBotonVote"/>
<bind role="set" component="mediaLua" interface="bounds">
<bindParam name="oValor" value="0%,30%,100%,50%"/>
</bind>
<bind role="start" component="mediaLua"/>
<bind role="start" component="focoLua" />
<bind role="start" component="mediaWebService"/>
</link>
<link xconnector="metodo#onEndAttributionSet">
<bind component="mediaLua" interface="srcNuevo" role="onEndAttribution"/>
<bind component="mediaLua" interface="srcNuevo" role="getValue"/>
<linkParam name="valor" value="$getValue"/>
<bind role="set" component="mediaWebService" interface="src"/>
</link>
</body>
</ncl>
-------------------------------------------------------------------------------------------------------------------------------------
--------------------- metodos.ncl------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Generated by NCL Eclipse -->
<ncl id="metodos" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">
<head>
<connectorBase>
<causalConnector id="onBeginEndMenu">
<connectorParam name="oSetTecla"/>
<connectorParam name="oValor"/>
<simpleCondition role="onSelection" key="$oSetTecla"/>
<compoundAction operator="seq">
<simpleAction role="start" qualifier="seq" max="unbounded"/>
<simpleAction role="abort" qualifier="seq" max="unbounded"/>
<simpleAction role="set" qualifier="seq" max="unbounded" value="$oValor"/>
</compoundAction>
</causalConnector>
<causalConnector id="onEndAttributionSet">
<connectorParam name="valor" />
<simpleCondition role="onEndAttribution"/>
<simpleAction role="set" value="$valor" />
</causalConnector>
</connectorBase>
</head>
<body>
</body>
</ncl>
--------------------------------------------------------------------------------------------------------------------------------------
---------------------------------luaHtml.lua-----------------------------------------------------------------------------------------
function manejadorEventos(evt)
if evt.class=='key' and evt.type=='press' then
if evt.key == '1' then
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='start', value='http://X.X.X.X/Ginga/Votar/?opcion=A'})
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='stop', value='http://X.X.X.X/Ginga/Votar/?opcion=A'})
elseif evt.key == '2' then
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='start', value='http://X.X.X.X/Ginga/Votar/?opcion=B'})
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='stop', value='http://X.X.X.X/Ginga/Votar/?opcion=B'})
elseif evt.key == '3' then
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='start', value='http://X.X.X.X/Ginga/Votar/?opcion=C'})
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='stop', value='http://X.X.X.X/Ginga/Votar/?opcion=C'})
end
refrescarHTML()
end
end
function refrescarHTML()
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='start', value='http://X.X.X.X/Ginga/Votar'})
event.post('out',{class = "ncl", type = "attribution", name = 'srcNuevo', action='stop', value='http://X.X.X.X/Ginga/Votar'})
end
event.register(manejadorEventos)
--------------------------------------------------------------------------------------------------------------------------------------
Esa era una opcion que intente y no paso nada.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
La otra opcion que intente es por medio de NCL, modificando <causalConnector id="onEndAttributionSet"> ( en el archivo metodos.ncl) y agregandole un <simpleAction role="start" />, para llamar de nuevo al "mediaWebService"cuando invoco al <link xconnector="metodo#onEndAttributionSet">( en el archivo main.ncl)... pero exploto con esa opcion... me salia algo como :
" Memory leak by 136 bytes
List of blocks: 0x93d01e0:25 @ cookies.c:179, 0x93d01a8:13 @ cookies.c:129, 0x93cec88:2 @ http.c:79, 0x93d0170:13 @ cookies.c:96, 0x93bb6d8:25 @ cookies.c:95, 0x93d0138:18 @ cookies.c:94, 0x93d00e8:40 @ cookies.c:91
Forcing core dump
"
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Bueno, nose que hacer ya.
Si a alguien le funciono o intento algo parecido, me daria una gran mano
Saludos a todos!
nico
__________________________________________Lista de correo Ginga-argentina at lists.ourproject.org
cambiar suscripción: https://lists.ourproject.org/cgi-bin/mailman/listinfo/ginga-argentina
Sitio web: http://comunidad.ginga.org.ar
Wiki: http://wiki.ginga.org.ar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.ourproject.org/pipermail/ginga-argentina/attachments/20120427/3e48b205/attachment-0001.htm
More information about the Ginga-argentina
mailing list