From 133aad8f8e880c784bc0187a5a0430b9121c680e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Baunb=C3=A6k?= Date: Thu, 9 Jan 2014 17:31:57 +0100 Subject: [PATCH] Added runtime property. Closes #4 --- README.md | 28 +++++++++++++++++++++++++++- index.js | 5 ++++- package.json | 5 +++-- test/http.js | 9 ++++----- test/request.js | 7 +++---- 5 files changed, 41 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 80cfeab..a8d0907 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,20 @@ var str = progress({ }); str.on('progress', function(progress) { - console.log(Math.round(progress.percentage) + '% ' + progress.speed + 'b/s' + ' ' + progress.remaining + ' bytes left'); + console.log(progress); + + /* + { + percentage: 9.05, + transferred: 949624, + length: 10485760, + remaining: 9536136, + eta: 42, + runtime: 3, + delta: 295396, + speed: 949624 + } + */ }); fs.createReadStream(filename) @@ -56,6 +69,19 @@ You can get the progress from the progress property. var str = progress({time:100}); console.log(str.progress); + +/* +{ + percentage: 9.05, + transferred: 949624, + length: 10485760, + remaining: 9536136, + eta: 10, + runtime: 0, + delta: 295396, + speed: 949624 +} +*/ ``` ## Events diff --git a/index.js b/index.js index 52ae58b..579a80c 100644 --- a/index.js +++ b/index.js @@ -12,13 +12,15 @@ module.exports = function(options, onprogress) { var nextUpdate = Date.now()+time; var delta = 0; var speed = speedometer(options.speed || 5000); + var startTime = Date.now(); var update = { percentage: 0, transferred: transferred, length: length, remaining: length, - eta: 0 + eta: 0, + runtime: 0 }; var emit = function(ended) { @@ -26,6 +28,7 @@ module.exports = function(options, onprogress) { update.percentage = ended ? 100 : (length ? transferred/length*100 : 0); update.speed = speed(delta); update.eta = Math.round(update.remaining / update.speed); + update.runtime = parseInt((Date.now() - startTime)/1000); nextUpdate += time; delta = 0; diff --git a/package.json b/package.json index 359d5bb..925c841 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "progress-stream", - "version": "0.3.0", + "version": "0.4.0", "description": "Read the progress of a stream", "repository": { "type": "git", @@ -21,7 +21,8 @@ "main": "index.js", "dependencies": { "through2": "~0.2.3", - "speedometer": "~0.1.2" + "speedometer": "~0.1.2", + "single-line-log": "~0.3.1" }, "devDependencies": { "request": "~2.29.0", diff --git a/test/http.js b/test/http.js index d03c0ca..11e64c6 100644 --- a/test/http.js +++ b/test/http.js @@ -10,16 +10,15 @@ var str = progress({ speed: 20 }); str.on('progress', function(progress) { - log(Math.round(progress.percentage)+'%', - numeral(progress.speed).format('0.00 b')+'/s', - numeral(progress.eta).format('00:00:00')+' left', - numeral(progress.remaining).format('0.00 b')+' remaining'); + log('Running: '+numeral(progress.runtime).format('00:00:00')+' ('+numeral(progress.transferred).format('0 b')+')\n'+ + 'Left: '+numeral(progress.eta).format('00:00:00')+' ('+numeral(progress.remaining).format('0 b')+')\n'+ + numeral(progress.speed).format('0.00b')+'/s '+Math.round(progress.percentage)+'%'); }); var options = { method: 'GET', host: 'cachefly.cachefly.net', - path: '/100mb.test', + path: '/10mb.test', headers: { 'user-agent': 'testy test' } diff --git a/test/request.js b/test/request.js index 646fc27..a4bf35d 100644 --- a/test/request.js +++ b/test/request.js @@ -8,10 +8,9 @@ var str = progress({ drain: true, time: 100 }, function(progress) { - log(Math.round(progress.percentage)+'%', - numeral(progress.speed).format('0.00 b')+'/s', - numeral(progress.eta).format('00:00:00')+' left', - numeral(progress.remaining).format('0.00 b')+' remaining'); + log('Running: '+numeral(progress.runtime).format('00:00:00')+' ('+numeral(progress.transferred).format('0 b')+')\n'+ + 'Left: '+numeral(progress.eta).format('00:00:00')+' ('+numeral(progress.remaining).format('0 b')+')\n'+ + numeral(progress.speed).format('0.00b')+'/s '+Math.round(progress.percentage)+'%'); }); req('http://cachefly.cachefly.net/10mb.test', {