diff --git a/src/sunstone/public/app/tabs/images-tab/form-panels/create-common.js b/src/sunstone/public/app/tabs/images-tab/form-panels/create-common.js index a78e8e284a..eb9482ddc0 100644 --- a/src/sunstone/public/app/tabs/images-tab/form-panels/create-common.js +++ b/src/sunstone/public/app/tabs/images-tab/form-panels/create-common.js @@ -33,6 +33,7 @@ define(function(require) { var Config = require('sunstone-config'); var WizardFields = require('utils/wizard-fields'); var ProgressBar = require('utils/progress-bar'); + var Humanize = require('utils/humanize'); var TemplateWizardHTML = require('hbs!./create/wizard'); var TemplateAdvancedHTML = require('hbs!./create/advanced'); @@ -128,6 +129,7 @@ define(function(require) { return false; } + function _setup(context) { var that = this; Tips.setup(context); @@ -290,30 +292,106 @@ define(function(require) { $('#file-uploader-input', context).hide() $("#file-uploader-label", context).html(file.fileName); }); - + var abort = false; that.uploader.on('uploadStart', function() { - $('#upload_progress_bars').append( - '
\ -
\ - ' + Locale.tr("Uploading...") + '\ -
\ -
\ -
'+ - ProgressBar.html(0, 1, fileName) + '\ + var myThis = this; + if(!(myThis.progress() > 0)){ + var element = $('#upload_progress_bars').append( + '
\ +
\ + ' + Locale.tr("Uploading...") + '\
\ -
\ -
'); +
\ +
'+ + ProgressBar.html(0, 1, fileName) + '\ +
\ +
\ + \ + \ + \ +
\ +
\ +
\ +
speed:
\ +
Completed:
\ +
\ +
'); + } + checkUploadSpeed( 10, function ( speed) { + document.getElementById( 'speed' ).textContent = 'speed: ' + Humanize.size(speed) +'s'; + }, element); + $(".close_upload_image").on('click', function(){ + myThis.cancel(); + show=0; + if(element) + element.remove(); + }); + $(".pause_upload_image").on('click', function(){ + myThis.pause(); + $(".pause_upload_image").hide(); + $(".play_upload_image").show(); + }); + $(".play_upload_image").on('click', function(){ + myThis.upload(); + $(".play_upload_image").hide(); + $(".pause_upload_image").show(); + }); + }); that.uploader.on('progress', function() { + document.getElementById( 'percent_progress' ).textContent = 'Completed: ' + (this.progress().toFixed(3)*100).toFixed(1) +'%'; $('div.progressbar', $('div[id="' + fileName + 'progressBar"]')).html( ProgressBar.html(this.progress(), 1, fileName) ); }); } - + return false; } + function checkUploadSpeed( iterations, update, element) { + var index = 0, + timer = window.setInterval( check, 5000 ); //check every 5 seconds + check(element); + + function check(element) { + if(!element){ + window.clearInterval( timer ); + } + else{ + var xhr = new XMLHttpRequest(), + url = '?cache=' + Math.floor( Math.random() * 10000 ), //random number prevents url caching + data = getRandomString( 1 ), //1 meg POST size handled by all servers + startTime, + speed = 0; + xhr.onreadystatechange = function ( event ) { + if( xhr.readyState == 4 ) { + speed = Math.round( 1024 / ( ( new Date() - startTime ) / 1000 ) ); + update( speed ); + index++; + if( index == iterations ) { + window.clearInterval( timer ); + }; + }; + }; + xhr.open( 'POST', url, true ); + startTime = new Date(); + if(xhr && data) + xhr.send( data ); + } + }; + + function getRandomString( sizeInMb ) { + var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789~!@#$%^&*()_+`-=[]\{}|;':,./<>?", //random data prevents gzip effect + iterations = sizeInMb * 1024 * 1024, //get byte count + result = ''; + for( var index = 0; index < iterations; index++ ) { + result += chars.charAt( Math.floor( Math.random() * chars.length ) ); + }; + return result; + }; + }; + function _submitWizard(context) { var that = this; var upload = false;