Compare commits

...

2 Commits

Author SHA1 Message Date
d08f76ec99 Null date_next at end of reports 2023-05-26 07:11:35 -04:00
e63e7100f0 Exponential expansion of reportloader_alpha 2023-05-26 06:50:59 -04:00

View File

@ -317,7 +317,7 @@
}
function reportloader_alpha(dfn, rpt_id, fn_map, omega) {
var dt_omega = strptime_vista(omega), cursor = Math.floor(strftime_vista(new Date())) + 0.235959999, interval = 86400000*3650, data = [], dt_end, hasmore = true;
var dt_omega = strptime_vista(omega), cursor = Math.floor(strftime_vista(new Date())) + 0.235959999, interval = 86400000*365*2, data = [], dt_end, hasmore = true;
async function fn(client, alpha) {
var dt_alpha = strptime_vista(alpha);
if(alpha !== undefined) {
@ -331,14 +331,17 @@
if((data.length > 0) && ((dt_alpha > dt_end) || (alpha === undefined)) && ((res.length < 1) || (res[res.length - 1] !== data[data.length - 1]))) res.next = strftime_vista(res.dt_next = dt_end); // lookahead
else if(hasmore) {
var count = data.length;
cursor = Math.floor(strftime_vista(new Date(strptime_vista(cursor) - interval)));
data = (await client.ORWRP_REPORT_TEXT(dfn, rpt_id, '', SZ_RANGE, '', cursor, -1)).map(fn_map).sort((a, b) => b.time - a.time);
if(data.length > count) res.next = strftime_vista(res.dt_next = dt_end = data_endtime(data));
else {
data = (await client.ORWRP_REPORT_TEXT(dfn, rpt_id, '', SZ_RANGE, '', -1, -1)).map(fn_map).sort((a, b) => b.time - a.time);
cursor = Math.floor(res.next = strftime_vista(res.dt_next = dt_end = data_endtime(data)));
hasmore = false;
while(interval <= 86400000*365*8) {
cursor = Math.floor(strftime_vista(new Date(strptime_vista(cursor) - interval)));
data = (await client.ORWRP_REPORT_TEXT(dfn, rpt_id, '', SZ_RANGE, '', cursor, -1)).map(fn_map).sort((a, b) => b.time - a.time);
if(data.length > count) {
res.next = strftime_vista(res.dt_next = dt_end = data_endtime(data));
return res;
} else interval *= 2;
}
data = (await client.ORWRP_REPORT_TEXT(dfn, rpt_id, '', SZ_RANGE, '', -1, -1)).map(fn_map).sort((a, b) => b.time - a.time);
cursor = Math.floor(res.next = strftime_vista(res.dt_next = dt_end = data_endtime(data)));
hasmore = false;
}
return res;
}
@ -502,10 +505,8 @@
resultsets[i] = await loaders[i](this.client, alpha);
if(resultsets[i].next) next.push(resultsets[i].next);
}
if(next.length > 0) {
this.date_next = strptime_vista(Math.floor(Math.max(...next)));
if(!alpha) this.date_begin = this.date_next;
}
this.date_next = next.length > 0 ? strptime_vista(Math.floor(Math.max(...next))) : null;
if(!alpha) this.date_begin = this.date_next;
} else {
this.dfn = null;
this.loaders = {};