/* globals Resumable */ var r = new Resumable({ target: '/api/upload', chunkSize: 2 * 1024 * 1024, simultaneousUploads: 4, testChunks: true, throttleProgressCallbacks: 1, }); $("#destination").keyup(debounce(function (event) { console.log($(this).val().replace(' ', '-')); r.updateQuery({'destination':$(this).val().replace(' ', '-')}); }, 400)); // Resumable.js isn't supported, fall back on a different method if (!r.support) { $('.resumable-error').show(); } else { // Handle UI events $('.resumable-drop').on('dragenter', function(event){ $(this).addClass('resumable-dragover'); $('.resumable-drop *').css("pointer-events", "none"); }); $('.resumable-drop').on('dragend dragleave drop', function(event){ $(this).removeClass('resumable-dragover'); $('.resumable-drop *').css("pointer-events", "all"); }); // Show a place for dropping/selecting files $('.resumable-drop').show(); r.assignDrop($('.resumable-drop')[0]); r.assignBrowse($('.resumable-browse')[0]); // Handle file add event r.on('fileAdded', function(file) { // Show progress pabr $('.resumable-progress, .resumable-list').show(); // Show pause, hide resume $('.resumable-progress .progress-resume-link').hide(); $('.resumable-progress .progress-pause-link').show(); // Add the file to the list $('.resumable-list').append('
  • Uploading '); $('.resumable-file-' + file.uniqueIdentifier + ' .resumable-file-name').html(file.fileName); // Actually start the upload r.upload(); }); r.on('pause', function() { // Show resume, hide pause $('.resumable-progress .progress-resume-link').show(); $('.resumable-progress .progress-pause-link').hide(); }); r.on('complete', function() { // Hide pause/resume when the upload has completed $('.resumable-progress .progress-resume-link, .resumable-progress .progress-pause-link, .resumable-progress .progress-cancel-link').hide(); }); r.on('fileSuccess', function(file, message) { // Reflect that the file upload has completed $('.resumable-file-' + file.uniqueIdentifier + ' .resumable-file-progress').html('(completed)'); }); r.on('fileError', function(file, message) { // Reflect that the file upload has resulted in error $('.resumable-file-' + file.uniqueIdentifier + ' .resumable-file-progress').html('(file could not be uploaded: ' + message + ')'); }); r.on('fileProgress', function(file) { // Handle progress for both the file and the overall upload $('.resumable-file-' + file.uniqueIdentifier + ' .resumable-file-progress').html(Math.floor(file.progress() * 100) + '%'); $('.progress-bar').css({ width: Math.floor(r.progress() * 100) + '%' }); }); r.on('cancel', function() { $('.resumable-file-progress').html('canceled'); }); r.on('uploadStart', function() { // Show pause, hide resume $('.resumable-progress .progress-resume-link').hide(); $('.resumable-progress .progress-pause-link').show(); }); } function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; };