diff --git a/README.md b/README.md index d84c586c..a0aea44a 100644 --- a/README.md +++ b/README.md @@ -983,10 +983,10 @@ quick outline of the up2k protocol, see [uploading](#uploading) for the web-clie up2k has saved a few uploads from becoming corrupted in-transfer already; caught an android phone on wifi redhanded in wireshark with a bitflip, however bup with https would *probably* have noticed as well (thanks to tls also functioning as an integrity check) regarding the frequent server log message during uploads; -`6.0M 106M/s 2.77G 102.9M/s n948 thank 4/0/3/1 10042/7198` +`6.0M 106M/s 2.77G 102.9M/s n948 thank 4/0/3/1 10042/7198 00:01:09` * this chunk was `6 MiB`, uploaded at `106 MiB/s` * on this http connection, `2.77 GiB` transferred, `102.9 MiB/s` average, `948` chunks handled -* client says `4` uploads OK, `0` failed, `3` busy, `1` queued, `10042 MiB` total size, `7198 MiB` left +* client says `4` uploads OK, `0` failed, `3` busy, `1` queued, `10042 MiB` total size, `7198 MiB` and `00:01:09` left ## why chunk-hashes diff --git a/copyparty/web/up2k.js b/copyparty/web/up2k.js index e72b6c7a..ab300f6e 100644 --- a/copyparty/web/up2k.js +++ b/copyparty/web/up2k.js @@ -835,6 +835,11 @@ function up2k_init(subtle) { "uploading": 0, "busy": 0 }, + "eta": { + "h": "", + "u": "", + "t": "" + }, "car": 0, "modn": 0, "modv": 0, @@ -1314,19 +1319,21 @@ function up2k_init(subtle) { for (var a = 0; a < t.length; a++) { var rem = st.bytes.total - t[a][2], bps = t[a][1] / t[a][3], + hid = t[a][0], + eid = hid.slice(-1), eta = Math.floor(rem / bps); if (t[a][1] < 1024 || t[a][3] < 0.1) { - ebi(t[a][0]).innerHTML = L.u_etaprep; + ebi(hid).innerHTML = L.u_etaprep; continue; } donut.eta = eta; - if (etaskip) - continue; - - ebi(t[a][0]).innerHTML = '{0}, {1}/s, {2}'.format( + st.eta[eid] = '{0}, {1}/s, {2}'.format( humansize(rem), humansize(bps, 1), humantime(eta)); + + if (!etaskip) + ebi(hid).innerHTML = st.eta[eid]; } if (++etaskip > 2) etaskip = 0; @@ -2138,8 +2145,9 @@ function up2k_init(subtle) { xhr.open('POST', t.purl, true); xhr.setRequestHeader("X-Up2k-Hash", t.hash[npart]); xhr.setRequestHeader("X-Up2k-Wark", t.wark); - xhr.setRequestHeader("X-Up2k-Stat", "{0}/{1}/{2}/{3} {4}/{5}".format( - pvis.ctr.ok, pvis.ctr.ng, pvis.ctr.bz, pvis.ctr.q, btot, btot - bfin)); + xhr.setRequestHeader("X-Up2k-Stat", "{0}/{1}/{2}/{3} {4}/{5} {6}".format( + pvis.ctr.ok, pvis.ctr.ng, pvis.ctr.bz, pvis.ctr.q, btot, btot - bfin, + st.eta.t.split(' ').pop())); xhr.setRequestHeader('Content-Type', 'application/octet-stream'); if (xhr.overrideMimeType) xhr.overrideMimeType('Content-Type', 'application/octet-stream');