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!
JavaScript refrescar DSP cada X tiempo
Re: JavaScript refrescar DSP cada X tiempo
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)
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)
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:
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
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
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
Re: JavaScript refrescar DSP cada X tiempo
Igualito que como lo incrusté yo.
Yo metí el código directamente en la estructura del Layout
Gracias!
Re: JavaScript refrescar DSP cada X tiempo
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.
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