Exponential expansion of reportloader_alpha

This commit is contained in:
Jiang Yio 2023-05-25 06:19:21 -04:00
parent f6408e0188
commit e63e7100f0

View File

@ -317,7 +317,7 @@
} }
function reportloader_alpha(dfn, rpt_id, fn_map, omega) { 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) { async function fn(client, alpha) {
var dt_alpha = strptime_vista(alpha); var dt_alpha = strptime_vista(alpha);
if(alpha !== undefined) { if(alpha !== undefined) {
@ -331,15 +331,18 @@
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 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) { else if(hasmore) {
var count = data.length; var count = data.length;
while(interval <= 86400000*365*8) {
cursor = Math.floor(strftime_vista(new Date(strptime_vista(cursor) - interval))); 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); 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)); if(data.length > count) {
else { 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); 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))); cursor = Math.floor(res.next = strftime_vista(res.dt_next = dt_end = data_endtime(data)));
hasmore = false; hasmore = false;
} }
}
return res; return res;
} }
fn.omega = omega; fn.omega = omega;