uploadqueue.js revision 4751573f6062da85435e345520a7525e91a897ea
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney * The class manages a queue of files that should be uploaded to the server.
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney * It initializes the required number of uploads, tracks them as they progress,
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney * and automatically advances to the next upload when a preceding one has completed.
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney * @module uploadqueue
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney * The class manages a queue of files to be uploaded to the server.
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney * @class UploadQueue
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney * @extends Base
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney * @constructor
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney var UploadQueue = function(o) {
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney UploadQueue.superclass.constructor.apply(this, arguments);
0204a57902813e8b151b1e98020d8e89997b283eMatt Sweeney totalBytesUploaded += event.target.get("size");
6e32c30fa308d7f01a91d97f9ec19d0a57901ebeMatt Sweeney var currentFile = this.get("fileList")[lastUploadPointer],
6e32c30fa308d7f01a91d97f9ec19d0a57901ebeMatt Sweeney fileParameters = Lang.isArray(parameters) ? parameters[lastUploadPointer] : parameters;
6e32c30fa308d7f01a91d97f9ec19d0a57901ebeMatt Sweeney currentFile.on("uploadprogress", this._uploadProgressHandler, this);
6e32c30fa308d7f01a91d97f9ec19d0a57901ebeMatt Sweeney currentFile.on("uploadcomplete", this._uploadCompleteHandler, this);
6e32c30fa308d7f01a91d97f9ec19d0a57901ebeMatt Sweeney currentFile.startUpload(this.get("uploadURL"), fileParameters);
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney currentUploads[event.target.get("id")] = event.bytesLoaded;
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney var percentLoaded = Math.min(100, Math.round(10000*uploadedTotal/totalBytes) / 100);
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney this.fire("totaluploadprogress", {bytesLoaded: uploadedTotal,
deb3172da8a688abb44a22d5b084c4dd0437df89Matt Sweeney while (lastUploadPointer < this.get("simUploads") && lastUploadPointer < fileListLength) {
deb3172da8a688abb44a22d5b084c4dd0437df89Matt Sweeney var currentFile = this.get("fileList")[lastUploadPointer],
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney fileParameters = Lang.isArray(parameters) ? parameters[lastUploadPointer] : parameters;
deb3172da8a688abb44a22d5b084c4dd0437df89Matt Sweeney currentFile.on("uploadprogress", this._uploadProgressHandler, this);
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney currentFile.on("uploadcomplete", this._uploadCompleteHandler, this);
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney currentFile.startUpload(this.get("uploadURL"), fileParameters);
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney pauseUpload: function () {
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney cancelUpload: function () {
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney * @property simUploads
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney * @type Number
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney * @description Maximum number of simultaneous uploads
7360d0583edbc1cd77cd7e6d85ee9bcc26e3211dMatt Sweeney return (val === UploadQueue.CONTINUE || val === UploadQueue.STOP || val === UploadQueue.RESTART);