main.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. $(function(){
  2. $(document).bind('drop dragover', function (e) {
  3. e.preventDefault();
  4. });
  5. $(document).bind('dragover', function () {
  6. $('.main').addClass('drop');
  7. })
  8. $(document).bind('dragexit dragleave dragend drop', function () {
  9. $('.main').removeClass('drop');
  10. })
  11. var fileupload = $('#fileupload').fileupload({
  12. dataType: 'json',
  13. url: 'upload.json',
  14. dropZone: $(document),
  15. pasteZone: $(document),
  16. add: add
  17. });
  18. fileupload.bind('fileuploaddone', done);
  19. fileupload.bind('fileuploadfail', fail);
  20. fileupload.bind('fileuploadprogress', progress);
  21. var xhrCache = [];
  22. function add (e, data) {
  23. $('.message').hide();
  24. var xhr = data.submit();
  25. $.each(data.files, function(index, file){
  26. file._ID = xhrCache.length;
  27. xhrCache[file._ID] = xhr;
  28. var html = '<li data-file-id="' + file._ID + '">';
  29. html += '<div class="filename">' + file.name + '</div>';
  30. html += '<div class="progress"><div class="bar" style="width: 0%"></div></div>';
  31. html += '<div class="stop"></div>';
  32. html += '</li>';
  33. var tmpl = $(html);
  34. $('.uploads ul').append(html);
  35. });
  36. }
  37. function done (e, data) {
  38. $.each(data.files, function (index, file) {
  39. $('li[data-file-id=' + file._ID + ']').addClass('done');
  40. });
  41. }
  42. function progress (e, data) {
  43. var prog = Math.ceil(data.loaded / data.total * 100) + '%';
  44. $.each(data.files, function (index, file) {
  45. $('li[data-file-id=' + file._ID + '] .progress .bar').css('width', prog);
  46. });
  47. }
  48. function fail (e, data) {
  49. console.log('File transfer failed', data.errorThrown, data.textStatus);
  50. $.each(data.files, function (index, file) {
  51. $('li[data-file-id=' + file._ID + ']').addClass('fail');
  52. });
  53. }
  54. $('.uploads').delegate('.stop', 'click', stopTransfer);
  55. function stopTransfer (e) {
  56. var li = $(e.currentTarget).parent('li');
  57. var id = li.data('file-id');
  58. xhrCache[id].abort();
  59. li.addClass('fail');
  60. }
  61. });