added remaining time to progress (experimental)...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2020-12-22 18:25:14 +03:00
parent 9878b72a1e
commit 5acd8d2afc
4 changed files with 36 additions and 9 deletions

View File

@ -2766,10 +2766,10 @@ function(title, func){
// NOTE: we are also adding a ref to args here to keep things consistent...
args.length > 0
&& (args = [args])
q.push(...(items instanceof Array ?
q.add(items instanceof Array ?
items.map(function(e){
return [e, ...args] })
: [items, ...args]))
: [items, ...args])
return q.promise() } }
// run...

View File

@ -94,7 +94,9 @@ var ProgressActions = actions.Actions({
// XXX multiple containers...
// XXX shorten the nested css class names...
// XXX revise styles...
// XXX make the "X" bigger -- finger usable...
// XXX make the "X" finger usable...
// XXX add time estimation...
// ....based on last 10 tasks...
__progress_cache: null,
showProgress: ['- Interface/Show progress bar...',
core.doc`Progress bar widget...
@ -168,9 +170,26 @@ var ProgressActions = actions.Actions({
: parseInt(value))
: v) }
value = updateValue('value', value)
// XXX REMAINING_TIME
var prev = cache.prev || 0
value = cache.prev = updateValue('value', value)
max = updateValue('max', max)
// XXX REMAINING_TIME
// estimate time to completion...
var t0 = cache.timestamp || Date.now()
var t = (cache.timestamp = Date.now()) - t0
var avg = cache.avg_time =
// rolling average -- feels a bit too smooth...
(((cache.avg_time || 0) * prev + t) / value) || 0
var remaining = new Date(0)
avg > 0
&& remaining.setMilliseconds(
avg
* (max-value)
// make the estimate a bit pessimistic...
* 1.3)
// update not due yet...
if('timeout' in cache){
cache.update = true
@ -258,13 +277,21 @@ var ProgressActions = actions.Actions({
timeout
&& clearTimeout(JSON.parse(timeout))
//* XXX REMAINING_TIME
// time remaining...
var t = remaining ?
` t:-${
remaining.toISOString()
.substr(11, 8)
.replace(/^00:/, '') }s`
: ''
// format the message...
msg = msg ? ': '+msg : ''
msg = ' '+ msg
+ (value && value >= (max || 0) ?
' (done)'
: max && value != max ?
' ('+ (value || 0) +' of '+ max +')'
` (${value || 0} of ${max}${t})`
: '...')
// update widget...

View File

@ -1211,9 +1211,9 @@
"integrity": "sha512-7gSU0Qg4E0rnCPuITu6nJzgr4N73tFN57CISVrQjB+EglixfDI5SwOVRgPtG0EBOgtE8IL4O7fmq/UV87OUYyA=="
},
"ig-types": {
"version": "6.0.6",
"resolved": "https://registry.npmjs.org/ig-types/-/ig-types-6.0.6.tgz",
"integrity": "sha512-TOW58/yBQ7YqFukFT5K2Qd7u9k1CYgoQXXreS6u7pw9ttcWJLC3hJUTcLWsHTPKm3vNbFJ0NVI1o1U3SQlUu5w==",
"version": "6.0.7",
"resolved": "https://registry.npmjs.org/ig-types/-/ig-types-6.0.7.tgz",
"integrity": "sha512-9pm+Hdq71v58B6NhLwsMqzHOpL5duAEHCX2UtGYG5iwGKZBxAr2DEl/tOn6Ui5xxq9mq1X6lW7PzXLrjXvuEgQ==",
"requires": {
"ig-object": "^5.4.12",
"object-run": "^1.0.1"

View File

@ -34,7 +34,7 @@
"ig-argv": "^2.16.3",
"ig-features": "^3.4.5",
"ig-object": "^5.4.14",
"ig-types": "^6.0.6",
"ig-types": "^6.0.7",
"json5": "^2.1.3",
"object-run": "^1.0.1",
"requirejs": "^2.3.6",