diff --git a/index.html b/index.html index 8f9f79c..35da4e7 100644 --- a/index.html +++ b/index.html @@ -5218,6 +5218,23 @@ } var worker_data_showonly = []; //only for table display, dont mix + //track worker earn rates + var first_seen_workers = {}; + function track_kudos_earnings(wdata) + { + if(wdata && wdata.length>0) + { + for (let i = 0; i < wdata.length; ++i) { + let elem = wdata[i]; + if (elem && elem.id && !first_seen_workers.hasOwnProperty(elem.id)) { + first_seen_workers[elem.id] = { + startkudos: elem.kudos_rewards, + timestamp: performance.now() + }; + } + } + } + } function get_and_show_workers() { if (localflag) { return; @@ -5239,6 +5256,7 @@ worker_data_showonly[i].defaultmodel = elem.models[0]; } } + track_kudos_earnings(worker_data_showonly); show_workers(); }); @@ -5343,6 +5361,7 @@ document.getElementById("workercontainer").classList.remove("hidden"); let str = ""; + let timenow = performance.now(); for (var i = 0; i < worker_data_showonly.length; ++i) { let elem = worker_data_showonly[i]; let tokenspersec = elem.performance.replace(" tokens per second", ""); @@ -5364,8 +5383,18 @@ if (n > 0) { allmdls += "
"; } allmdls += escapeHtml(elem.models[n].substring(0, 32)); } - - str += "" + workerNameHtml + "" + allmdls + "" + elem.max_length + " / " + elem.max_context_length + "
(" + tokenspersec + " T/s)" + format_uptime(elem.uptime) + "
(" + elem.requests_fulfilled + " jobs)" + elem.kudos_rewards.toFixed(0) + ""+clustertag+""; + let kudos_per_hr = ""; + if(first_seen_workers.hasOwnProperty(elem.id)) + { + let firstseen = first_seen_workers[elem.id]; + let kudosdiff = elem.kudos_rewards - firstseen.startkudos; + if(kudosdiff>0) + { + var hrspassed = ((timenow - firstseen.timestamp) / 1000)/3600.0; //time passed in sec + kudos_per_hr = "(" + (kudosdiff/hrspassed).toFixed(0) + "/hr)"; + } + } + str += "" + workerNameHtml + "" + allmdls + "" + elem.max_length + " / " + elem.max_context_length + "
(" + tokenspersec + " T/s)" + format_uptime(elem.uptime) + "
(" + elem.requests_fulfilled + " jobs)" + elem.kudos_rewards.toFixed(0) + "
"+kudos_per_hr+""+clustertag+""; } document.getElementById("workertable").innerHTML = str; document.getElementById("worktitlecount").innerText = "Worker List - Total " + worker_data_showonly.length; @@ -6366,6 +6395,9 @@ if(modelsdone && workersdone) { onBothFetchesDone(); + + //track earnings if possible + track_kudos_earnings(wdata); } }); @@ -8790,7 +8822,7 @@ { playbeep(); } - let lastreq = "Last request served by " + genworker + " using "+genmdl+ " for " + genkudos + " kudos in " + getTimeTaken() + " seconds."; + let lastreq = "Last request served by " + genworker + " using "+genmdl+ ""+(genkudos>0?(" for " + genkudos + " kudos"):"")+" in " + getTimeTaken() + " seconds."; document.getElementById("lastreq").innerHTML = lastreq; document.getElementById("lastreq2").innerHTML = lastreq; }