src/cm/media/js/lib/yui/yui3-3.15.0/build/uploader-queue/uploader-queue-debug.js
author gibus
Mon, 10 Mar 2014 15:19:48 +0100
changeset 602 e16a97fb364a
permissions -rw-r--r--
Use YUI 3.15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('uploader-queue', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
* The class manages a queue of files that should be uploaded to the server.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
* It initializes the required number of uploads, tracks them as they progress,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
* and automatically advances to the next upload when a preceding one has completed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
* @module uploader-queue
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
*/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
* This class manages a queue of files to be uploaded to the server.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
* @class Uploader.Queue
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
* @extends Base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
* @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
*/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
var UploaderQueue = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
    this.queuedFiles = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
    this.uploadRetries = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
    this.numberOfUploads = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
    this.currentUploadedByteValues = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
    this.currentFiles = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
    this.totalBytesUploaded = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
    this.totalBytes = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
    UploaderQueue.superclass.constructor.apply(this, arguments);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
Y.extend(UploaderQueue, Y.Base, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
    * Stored value of the current queue state
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
    * @property _currentState
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
    * @default UploaderQueue.STOPPED
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
    _currentState: UploaderQueue.STOPPED,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
    * Construction logic executed during UploaderQueue instantiation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
    * @method initializer
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
    initializer : function () {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
    * Handles and retransmits upload start event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
    * @method _uploadStartHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
    * @param event The event dispatched during the upload process.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
    _uploadStartHandler : function (event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
        var updatedEvent = event;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
        updatedEvent.file = event.target;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
        updatedEvent.originEvent = event;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
        this.fire("uploadstart", updatedEvent);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
    * Handles and retransmits upload error event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
    * @method _uploadErrorHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
    * @param event The event dispatched during the upload process.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
    _uploadErrorHandler : function (event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
        var errorAction = this.get("errorAction"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
            updatedEvent = event,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
            fileid,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
            retries;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
        updatedEvent.file = event.target;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
        updatedEvent.originEvent = event;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
        this.numberOfUploads-=1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
        delete this.currentFiles[event.target.get("id")];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
        this._detachFileEvents(event.target);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
        event.target.cancelUpload();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
        if (errorAction === UploaderQueue.STOP) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
            this.pauseUpload();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
        else if (errorAction === UploaderQueue.RESTART_ASAP) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
            fileid = event.target.get("id");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
            retries = this.uploadRetries[fileid] || 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
            if (retries < this.get("retryCount")) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
                this.uploadRetries[fileid] = retries + 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
                this.addToQueueTop(event.target);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
            this._startNextFile();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
        else if (errorAction === UploaderQueue.RESTART_AFTER) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
            fileid = event.target.get("id");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
            retries = this.uploadRetries[fileid] || 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
            if (retries < this.get("retryCount")) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
                this.uploadRetries[fileid] = retries + 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
                this.addToQueueBottom(event.target);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
            this._startNextFile();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
        this.fire("uploaderror", updatedEvent);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
    * Launches the upload of the next file in the queue.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
    * @method _startNextFile
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
    _startNextFile : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
        if (this.queuedFiles.length > 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
            var currentFile = this.queuedFiles.shift(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
                fileId = currentFile.get("id"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
                parameters = this.get("perFileParameters"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
                fileParameters = parameters.hasOwnProperty(fileId) ? parameters[fileId] : parameters;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
            this.currentUploadedByteValues[fileId] = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
            currentFile.on("uploadstart", this._uploadStartHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
            currentFile.on("uploadprogress", this._uploadProgressHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
            currentFile.on("uploadcomplete", this._uploadCompleteHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
            currentFile.on("uploaderror", this._uploadErrorHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
            currentFile.on("uploadcancel", this._uploadCancelHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
            currentFile.set("xhrHeaders", this.get("uploadHeaders"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
            currentFile.set("xhrWithCredentials", this.get("withCredentials"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
            currentFile.startUpload(this.get("uploadURL"), fileParameters, this.get("fileFieldName"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
            this._registerUpload(currentFile);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
    * Register a new upload process.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
    * @method _registerUpload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
    _registerUpload : function (file) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
        this.numberOfUploads += 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
        this.currentFiles[file.get("id")] = file;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
    * Unregisters a new upload process.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
    * @method _unregisterUpload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
    _unregisterUpload : function (file) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
        if (this.numberOfUploads > 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
            this.numberOfUploads -= 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
        delete this.currentFiles[file.get("id")];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
        delete this.uploadRetries[file.get("id")];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
        this._detachFileEvents(file);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
    _detachFileEvents : function (file) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
        file.detach("uploadstart", this._uploadStartHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
        file.detach("uploadprogress", this._uploadProgressHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
        file.detach("uploadcomplete", this._uploadCompleteHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
        file.detach("uploaderror", this._uploadErrorHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
        file.detach("uploadcancel", this._uploadCancelHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
    * Handles and retransmits upload complete event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
    * @method _uploadCompleteHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
    * @param event The event dispatched during the upload process.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
    _uploadCompleteHandler : function (event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
        this._unregisterUpload(event.target);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
        this.totalBytesUploaded += event.target.get("size");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
        delete this.currentUploadedByteValues[event.target.get("id")];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
        if (this.queuedFiles.length > 0 && this._currentState === UploaderQueue.UPLOADING) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
            this._startNextFile();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
        var updatedEvent = event,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
            uploadedTotal = this.totalBytesUploaded,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
            percentLoaded = Math.min(100, Math.round(10000*uploadedTotal/this.totalBytes) / 100);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
        updatedEvent.file = event.target;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
        updatedEvent.originEvent = event;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
        Y.each(this.currentUploadedByteValues, function (value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
            uploadedTotal += value;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
        this.fire("totaluploadprogress", {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
            bytesLoaded: uploadedTotal,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
            bytesTotal: this.totalBytes,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
            percentLoaded: percentLoaded
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
        this.fire("uploadcomplete", updatedEvent);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
        if (this.queuedFiles.length === 0 && this.numberOfUploads <= 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
            this.fire("alluploadscomplete");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
            this._currentState = UploaderQueue.STOPPED;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
    * Handles and retransmits upload cancel event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
    * @method _uploadCancelHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
    * @param event The event dispatched during the upload process.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
    _uploadCancelHandler : function (event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
        var updatedEvent = event;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
        updatedEvent.originEvent = event;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
        updatedEvent.file = event.target;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
        this.fire("uploadcancel", updatedEvent);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
    * Handles and retransmits upload progress event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
    * @method _uploadProgressHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
    * @param event The event dispatched during the upload process.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
    _uploadProgressHandler : function (event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
        this.currentUploadedByteValues[event.target.get("id")] = event.bytesLoaded;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
        var updatedEvent = event,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
            uploadedTotal = this.totalBytesUploaded,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
            percentLoaded = Math.min(100, Math.round(10000*uploadedTotal/this.totalBytes) / 100);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
        updatedEvent.originEvent = event;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
        updatedEvent.file = event.target;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
        this.fire("uploadprogress", updatedEvent);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
        Y.each(this.currentUploadedByteValues, function (value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
            uploadedTotal += value;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
        this.fire("totaluploadprogress", {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
            bytesLoaded: uploadedTotal,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
            bytesTotal: this.totalBytes,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
            percentLoaded: percentLoaded
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
    * Starts uploading the queued up file list.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
    * @method startUpload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
    startUpload: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
        this.queuedFiles = this.get("fileList").slice(0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
        this.numberOfUploads = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
        this.currentUploadedByteValues = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
        this.currentFiles = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
        this.totalBytesUploaded = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
        this._currentState = UploaderQueue.UPLOADING;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
        while (this.numberOfUploads < this.get("simUploads") && this.queuedFiles.length > 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
            this._startNextFile();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
    * Pauses the upload process. The ongoing file uploads
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
    * will complete after this method is called, but no
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
    * new ones will be launched.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
    * @method pauseUpload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
    pauseUpload: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
        this._currentState = UploaderQueue.STOPPED;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
    * Restarts a paused upload process.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
    * @method restartUpload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
    restartUpload: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
        this._currentState = UploaderQueue.UPLOADING;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
        while (this.numberOfUploads < this.get("simUploads")) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
             this._startNextFile();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
    * If a particular file is stuck in an ongoing upload without
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
    * any progress events, this method allows to force its reupload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
    * by cancelling its upload and immediately relaunching it.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
    * @method forceReupload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
    * @param file {File} The file to force reupload on.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
    forceReupload : function (file) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
        var id = file.get("id");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
        if (this.currentFiles.hasOwnProperty(id)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
            file.cancelUpload();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
            this._unregisterUpload(file);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
            this.addToQueueTop(file);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
            this._startNextFile();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
    * Add a new file to the top of the queue (the upload will be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
    * launched as soon as the current number of uploading files
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
    * drops below the maximum permissible value).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
    * @method addToQueueTop
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
    * @param file {File} The file to add to the top of the queue.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
    addToQueueTop: function (file) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
            this.queuedFiles.unshift(file);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
    * Add a new file to the bottom of the queue (the upload will be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
    * launched after all the other queued files are uploaded.)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
    * @method addToQueueBottom
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
    * @param file {File} The file to add to the bottom of the queue.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
    addToQueueBottom: function (file) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   354
            this.queuedFiles.push(file);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   355
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   356
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   357
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   358
    * Cancels a specific file's upload. If no argument is passed,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   359
    * all ongoing uploads are cancelled and the upload process is
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   360
    * stopped.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   361
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   362
    * @method cancelUpload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   363
    * @param file {File} An optional parameter - the file whose upload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   364
    * should be cancelled.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   365
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   366
    cancelUpload: function (file) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   367
        var id,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   368
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   369
            fid;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   370
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   371
        if (file) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   372
            id = file.get("id");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   373
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   374
            if (this.currentFiles[id]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   375
                this.currentFiles[id].cancelUpload();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   376
                this._unregisterUpload(this.currentFiles[id]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   377
                if (this._currentState === UploaderQueue.UPLOADING) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   378
                    this._startNextFile();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   379
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   380
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   381
            else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   382
                for (i = 0, len = this.queuedFiles.length; i < len; i++) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   383
                    if (this.queuedFiles[i].get("id") === id) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   384
                        this.queuedFiles.splice(i, 1);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   385
                        break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   386
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   387
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   388
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   389
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   390
        else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   391
            for (fid in this.currentFiles) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   392
                this.currentFiles[fid].cancelUpload();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   393
                this._unregisterUpload(this.currentFiles[fid]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   394
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   395
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   396
            this.currentUploadedByteValues = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   397
            this.currentFiles = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   398
            this.totalBytesUploaded = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   399
            this.fire("alluploadscancelled");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   400
            this._currentState = UploaderQueue.STOPPED;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   401
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   402
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   403
}, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   404
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   405
    * Static constant for the value of the `errorAction` attribute:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   406
    * prescribes the queue to continue uploading files in case of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   407
    * an error.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   408
    * @property CONTINUE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   409
    * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   410
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   411
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   412
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   413
    CONTINUE: "continue",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   414
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   415
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   416
    * Static constant for the value of the `errorAction` attribute:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   417
    * prescribes the queue to stop uploading files in case of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   418
    * an error.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   419
    * @property STOP
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   420
    * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   421
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   422
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   423
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   424
    STOP: "stop",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   425
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   426
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   427
    * Static constant for the value of the `errorAction` attribute:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   428
    * prescribes the queue to restart a file upload immediately in case of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   429
    * an error.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   430
    * @property RESTART_ASAP
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   431
    * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   432
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   433
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   434
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   435
    RESTART_ASAP: "restartasap",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   436
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   437
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   438
    * Static constant for the value of the `errorAction` attribute:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   439
    * prescribes the queue to restart an errored out file upload after
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   440
    * other files have finished uploading.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   441
    * @property RESTART_AFTER
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   442
    * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   443
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   444
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   445
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   446
    RESTART_AFTER: "restartafter",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   447
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   448
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   449
    * Static constant for the value of the `_currentState` property:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   450
    * implies that the queue is currently not uploading files.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   451
    * @property STOPPED
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   452
    * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   453
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   454
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   455
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   456
    STOPPED: "stopped",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   457
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   458
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   459
    * Static constant for the value of the `_currentState` property:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   460
    * implies that the queue is currently uploading files.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   461
    * @property UPLOADING
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   462
    * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   463
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   464
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   465
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   466
    UPLOADING: "uploading",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   467
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   468
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   469
    * The identity of the class.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   470
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   471
    * @property NAME
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   472
    * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   473
    * @default 'uploaderqueue'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   474
    * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   475
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   476
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   477
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   478
    NAME: 'uploaderqueue',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   479
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   480
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   481
    * Static property used to define the default attribute configuration of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   482
    * the class.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   483
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   484
    * @property ATTRS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   485
    * @type {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   486
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   487
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   488
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   489
    ATTRS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   490
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   491
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   492
        * Maximum number of simultaneous uploads; must be in the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   493
        * range between 1 and 5. The value of `2` is default. It
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   494
        * is recommended that this value does not exceed 3.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   495
        * @attribute simUploads
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   496
        * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   497
        * @default 2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   498
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   499
         simUploads: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   500
                 value: 2,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   501
                 validator: function (val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   502
                         return (val >= 1 && val <= 5);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   503
                 }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   504
         },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   505
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   506
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   507
        * The action to take in case of error. The valid values for this attribute are:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   508
        * `Y.Uploader.Queue.CONTINUE` (the upload process should continue on other files,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   509
        * ignoring the error), `Y.Uploader.Queue.STOP` (the upload process
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   510
        * should stop completely), `Y.Uploader.Queue.RESTART_ASAP` (the upload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   511
        * should restart immediately on the errored out file and continue as planned), or
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   512
        * Y.Uploader.Queue.RESTART_AFTER (the upload of the errored out file should restart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   513
        * after all other files have uploaded)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   514
        * @attribute errorAction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   515
        * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   516
        * @default Y.Uploader.Queue.CONTINUE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   517
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   518
        errorAction: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   519
            value: "continue",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   520
                validator: function (val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   521
                return (
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   522
                    val === UploaderQueue.CONTINUE ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   523
                    val === UploaderQueue.STOP ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   524
                    val === UploaderQueue.RESTART_ASAP ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   525
                    val === UploaderQueue.RESTART_AFTER
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   526
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   527
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   528
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   529
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   530
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   531
        * The total number of bytes that has been uploaded.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   532
        * @attribute bytesUploaded
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   533
        * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   534
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   535
        bytesUploaded: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   536
            readOnly: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   537
            value: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   538
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   539
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   540
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   541
        * The total number of bytes in the queue.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   542
        * @attribute bytesTotal
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   543
        * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   544
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   545
        bytesTotal: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   546
            readOnly: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   547
            value: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   548
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   549
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   550
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   551
        * The queue file list. This file list should only be modified
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   552
        * before the upload has been started; modifying it after starting
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   553
        * the upload has no effect, and `addToQueueTop` or `addToQueueBottom` methods
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   554
        * should be used instead.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   555
        * @attribute fileList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   556
        * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   557
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   558
        fileList: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   559
            value: [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   560
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   561
            setter: function (val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   562
                var newValue = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   563
                Y.Array.each(newValue, function (value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   564
                    this.totalBytes += value.get("size");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   565
                }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   566
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   567
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   568
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   569
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   570
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   571
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   572
        * A String specifying what should be the POST field name for the file
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   573
        * content in the upload request.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   574
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   575
        * @attribute fileFieldName
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   576
        * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   577
        * @default Filedata
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   578
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   579
        fileFieldName: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   580
            value: "Filedata"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   581
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   582
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   583
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   584
        * The URL to POST the file upload requests to.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   585
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   586
        * @attribute uploadURL
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   587
        * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   588
        * @default ""
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   589
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   590
        uploadURL: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   591
            value: ""
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   592
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   593
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   594
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   595
        * Additional HTTP headers that should be included
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   596
        * in the upload request. Due to Flash Player security
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   597
        * restrictions, this attribute is only honored in the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   598
        * HTML5 Uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   599
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   600
        * @attribute uploadHeaders
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   601
        * @type {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   602
        * @default {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   603
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   604
        uploadHeaders: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   605
            value: {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   606
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   607
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   608
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   609
        * A Boolean that specifies whether the file should be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   610
        * uploaded with the appropriate user credentials for the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   611
        * domain. Due to Flash Player security restrictions, this
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   612
        * attribute is only honored in the HTML5 Uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   613
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   614
        * @attribute withCredentials
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   615
        * @type {Boolean}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   616
        * @default true
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   617
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   618
        withCredentials: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   619
            value: true
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   620
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   621
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   622
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   623
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   624
        * An object, keyed by `fileId`, containing sets of key-value pairs
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   625
        * that should be passed as POST variables along with each corresponding
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   626
        * file.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   627
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   628
        * @attribute perFileParameters
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   629
        * @type {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   630
        * @default {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   631
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   632
        perFileParameters: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   633
            value: {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   634
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   635
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   636
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   637
        * The number of times to try re-uploading a file that failed to upload before
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   638
        * cancelling its upload.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   639
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   640
        * @attribute retryCount
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   641
        * @type {Number}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   642
        * @default 3
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   643
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   644
        retryCount: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   645
            value: 3
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   646
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   647
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   648
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   649
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   650
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   651
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   652
Y.namespace('Uploader');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   653
Y.Uploader.Queue = UploaderQueue;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   654
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   655
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   656
}, '@VERSION@', {"requires": ["base"]});