Skip to content

Instantly share code, notes, and snippets.

@ryaz
Created October 11, 2016 22:20
Show Gist options
  • Save ryaz/b9079a0680752af658f632c125f16ce9 to your computer and use it in GitHub Desktop.
Save ryaz/b9079a0680752af658f632c125f16ce9 to your computer and use it in GitHub Desktop.
upload progress and speed
var loadedFromTotal = event.loaded / event.total;
var percent = 100.0 * loadedFromTotal;
var chunk = (loadedFromTotal) * event.total;
var speed = ((chunk / 1024 / 1024) / time).toFixed(2);
var secs_left = parseInt((100 / percent) * time) - time;
var seconds_left = isFinite(secs_left) ? secs_left : 60*60*100;
/////////////////////////////////////////////////////////////////////////////
// time
////////////////////////////////////////////////////////////////////////////
file.started = Date.now();
_e_.add({
name: fileKey,
file: file,
xAmzHeadersAtInitiate: {
'x-amz-acl': 'public-read'
},
complete: function() {
file.completed = true;
},
progress: function(progress) {
// returns percent / 100 with 2 decimal places I.E (10.00)
file.progress = (Math.round((progress * 100) * 100) / 100);
var currentTime = Date.now();
var progressRemaining = (100 - file.progress);
var progressionRate = (progressRemaining / file.progress);
var timeToCurrentPosition = (currentTime - file.started);
// return seconds left during download
file.timeLeft = Math.round((progressionRate * timeToCurrentPosition) / 1000);
}
});
/////////////////////////////////////////////////////////////////////////////////////////
// speed
////////////////////////////////////
progress *= 100;
progress = progress.toFixed(2);
var delta = (new Date() - fileStartTime) / 1000;
var loaded = (progress * fileSize) / 100;
var totalSentBySecond = loaded / delta;
var speed = readableFileSize(totalSentBySecond) + '/s';
function readableFileSize(size)
{
var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
var i = 0;
while(size >= 1024)
{
size /= 1024;
++i;
}
return size.toFixed(2).replace('.00', '') + ' ' + units[i];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment