Guest User

Untitled

a guest
Oct 30th, 2013
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*jslint browser: true, nomen: true, devel: true */
  2.  
  3. (function () {
  4.     'use strict';
  5.  
  6.     var Dropzone, Upload;
  7.  
  8.     Dropzone = {
  9.         Vars: {
  10.             dropzone: undefined
  11.         },
  12.  
  13.         init: function () {
  14.             this.bindEvents();
  15.         },
  16.  
  17.         bindEvents: function () {
  18.             var _dropzone;
  19.  
  20.             this.Vars.dropzone = _dropzone = document.querySelector('#dropzone');
  21.  
  22.             _dropzone.addEventListener('dragenter', Dropzone.enter, false);
  23.             _dropzone.addEventListener('dragleave', Dropzone.leave, false);
  24.             // drop will not work without this
  25.             _dropzone.addEventListener('dragover', Dropzone.over, false);
  26.             _dropzone.addEventListener('drop', Dropzone.drop, false);
  27.         },
  28.  
  29.         enter: function (event) {
  30.             $('#' + event.target.id).addClass('hovering');
  31.         },
  32.  
  33.         leave: function (event) {
  34.             Dropzone.cancelDefault(event);
  35.  
  36.             $('#' + event.target.id).removeClass('hovering');
  37.         },
  38.  
  39.         over: function (event) {
  40.             Dropzone.cancelDefault(event);
  41.         },
  42.  
  43.         drop: function (event) {
  44.             Dropzone.cancelDefault(event);
  45.             event.dataTransfer.dropEffect = "copy";
  46.  
  47.             $('#' + event.target.id).slideUp();
  48.  
  49.             Dropzone.listFiles(event);
  50.         },
  51.  
  52.         listFiles: function (event) {
  53.             var files, i;
  54.  
  55.             files = event.target.files || event.dataTransfer.files;
  56.  
  57.             for (i = 0; i < files.length; i++) {
  58.                 $('#fileList').append('<li><p>' + files[i].name + '</p><progress id="upload-' + i + '"></progress></li>');
  59.                 Upload.init(files[i], i);
  60.             }
  61.         },
  62.  
  63.         cancelDefault: function (event) {
  64.             if (event.preventDefault) {
  65.                 event.preventDefault();
  66.             }
  67.         }
  68.  
  69.     };
  70.  
  71.     Upload = {
  72.         Vars: {
  73.             xhr: undefined,
  74.             url: "http://example.com/upload",
  75.             file: undefined,
  76.             ind: 0
  77.         },
  78.  
  79.         init: function (file, i) {
  80.             this.Vars.xhr = new XMLHttpRequest();
  81.             this.Vars.file = file;
  82.             this.Vars.index = i;
  83.  
  84.             this.bindEvents();
  85.         },
  86.  
  87.         bindEvents: function () {
  88.             var _xhr;
  89.             _xhr = this.Vars.xhr;
  90.  
  91.             _xhr.upload.addEventListener("progress", Upload.trackProgress, false);
  92.             _xhr.upload.addEventListener("load", Upload.transferComplete, false);
  93.             _xhr.upload.addEventListener("error", Upload.transferFailed, false);
  94.             _xhr.upload.addEventListener("abort", Upload.transferCancel, false);
  95.  
  96.             console.log(_xhr);
  97.  
  98.             this.beginUpload();
  99.         },
  100.  
  101.         beginUpload: function () {
  102.             var _xhr, _file, classStatus;
  103.             _xhr = this.Vars.xhr;
  104.             _file = this.Vars.file;
  105.  
  106.             if (_xhr.upload) {
  107.                 _xhr.open("POST", Upload.Vars.url, true);
  108.                 _xhr.setRequestHeader("X_FILENAME", _file.name);
  109.                 _xhr.send(_file);
  110.             } else {
  111.                 console.log("xhr upload is false");
  112.             }
  113.  
  114.             _xhr.onreadystatechange = function (event) {
  115.                 if (_xhr.readyState === 4) {
  116.                     if (_xhr.status === 200) {
  117.                         classStatus = "success";
  118.                     } else {
  119.                         classStatus = "failed";
  120.                     }
  121.                     $('#progress-' + Upload.Vars.index).addClass(classStatus);
  122.                 }
  123.             };
  124.         },
  125.  
  126.         trackProgress: function (event) {
  127.             console.log(event);
  128.             var percentLoaded;
  129.             percentLoaded = parseFloat(100 - (event.loaded / event.total * 100)).toFixed(2);
  130.             $('#upload-').val(percentLoaded);
  131.         },
  132.  
  133.         transferComplete: function (event) {},
  134.  
  135.         transferFailed: function (event) {},
  136.  
  137.         transferCancel: function (event) {},
  138.  
  139.         showMore: function (event) {}
  140.     };
  141.  
  142.     Dropzone.init();
  143. }());
Advertisement
Add Comment
Please, Sign In to add comment