JavaScript refrescar DSP cada X tiempo

Post Reply
alvaro
Posts: 4
Joined: 08 Mar 2012, 21:56

JavaScript refrescar DSP cada X tiempo

Post by alvaro »

Buenos días!
Necesito refrescar los resultados que muestra un DSP cada X tiempo.
He probado a implementar un pequeño script en el HEAD y llamarlo desde el atributo 'onload' de la etiqueta <body>, pero no da resultado.

¿Alguna idea?

Gracias!
luis.vila
Posts: 194
Joined: 17 Sep 2011, 12:46

Re: JavaScript refrescar DSP cada X tiempo

Post by luis.vila »

Necesitas javascript que lance cada cierto tiempo una operación que refresque los datos (léase refresh).

Con la operación refresh hay pocas dudas, una operación normal que se encarga de refrescar el contenido (scope por defecto)

Code: Select all

public operation refresh
public web     
...
end
Y un javascript que la llame desde el navegador (o los centenares o miles de navegadores que estarán ejecutando la aplicación en cada momento)

Code: Select all

weboperation start
params
	numeric pInterval                : IN   ;5000
	string  pCallbackDSPInstanceName : IN   ;instanceName
	string  pCallbackOperationName   : IN   ;"refresh"
endparams

scope
endscope
; This operation starts the timer if not running
javascript
var instanceName = this.getName();
var timerIdField = this.getEntity("ENTIDAD.MODELO").getOccurrence(0).getField("TIMER_ID");
var timerIdValue = Number(timerIdField.getValue());

//; if timer is not running yet, start it, else ignore
if (timerIdValue == 0) {
    //; Create the callback expression that needs to be executed on every interval
    //; The expression activates the specified operation of the speicifed instance and passes the timer instance name as parameter
    var callbackExpression = function() {
        var callbackDSPInstance = uniface.getDSPInstance(pCallbackDSPInstanceName);
        callbackDSPInstance.activate(pCallbackOperationName);
    }

    //; Create the timer object for this DSPInstance, include the callback expression, and remember the timer ID in the field
    timerIdValue = setInterval(callbackExpression, pInterval);
    timerIdField.setValue(String(timerIdValue));
}
endjavascript
end
Recuerda que al compilar este DSP generará un js con lo que hay tal cual dentro del javascript/endjavascript (Uniface no lo revisa) y que deberás llevar a la carpeta del tomcat correspondiente para que se ejecute correctamente.

Y en la operación que lanza el DSP se establece el temporizador (aquí cada 20") y, de paso, se refresca por primera vez:

Code: Select all

	webactivate $instancename.start(20000, $instancename, "refresh")
	$instancehandle->refresh()

$status=0 ; se acabaron los problemas
alvaro
Posts: 4
Joined: 08 Mar 2012, 21:56

Re: JavaScript refrescar DSP cada X tiempo

Post by alvaro »

:shock:

Igualito que como lo incrusté yo.
Yo metí el código directamente en la estructura del Layout

Gracias!
luis.vila
Posts: 194
Joined: 17 Sep 2011, 12:46

Re: JavaScript refrescar DSP cada X tiempo

Post by luis.vila »

jajaja

Lo bueno de este método es que genera el js en fichero independiente. Lo puedes editar directamente para probar las inevitables correcciones aunque luego te tienes que acordar de llevar el cambio al repositorio.

$status=0 ; se acabaron los problemas
Post Reply