/
Paginación en plantillas de gadgets
Paginación en plantillas de gadgets
Cuando quieras paginar los resultados en nuestra plantilla de gadget, debes utilizar el enfoque multidatasource, que te permite realizar alguna transformación del servidor como: limit, group, select, param, where, ...
En tu muestra, puedes obtener los datos página por página con la siguiente instrucción:
vm.from("{{datasource}}").skip(step*bulk).limit(bulk).exec().then
Ahora puedes iterar por los resultados con, por ejemplo, la función asíncrona recursiva iterateResult. Es necesario llamar primero con los parámetros iniciales:
vm.acum = [];
var bulk = 1000;
var step = 0;
iterateResult(vm.acum, step, bulk, callback);
La función callback se llamará cuando se hayan recuperado todos los datos:
//función para hacer algo después de recuperar todos los registros
function callback(){
alert("Recuperando " + vm.acum.length + " registros")
}
El código completo del ejemplo es el siguiente:
//función asíncrona recursiva para recuperar los datos. Cuando se procesan todos los datos se llama a la función callback
function iterateResult(acum,step,bulk,callback){
var acum = acum;
var step = step;
var bulk = bulk;
var callback = callback;
//salesimportonto_raw es la datasource
vm.from("salesimportonto_raw").skip(step*bulk).limit(bulk).exec().then(
function(data){
if(data!=null && data.length>0){//there is more data
acum.push.apply(acum, data);
step++;
iterateResult(acum,step,bulk,callback);
}
else{//there isn't more data
//Paginación acabada, ahora dibujar gráfico u otras cosas
callback()
}
}
)
}
//función para hacer algo después de recuperar todos los registros
function callback(){
alert("Recuperando " + vm.acum.length + " registros")
}
//Esta función se llamará una vez para initar los componentes
vm.initLiveComponent = function(){
vm.acum = [];
var bulk = 1000;
var step = 0;
iterateResult(vm.acum, step, bulk, callback);
//Aquí no tenemos el resultado por la función asíncrona
};