|
6 | 6 | /**
|
7 | 7 | * Flow.js is a library providing multiple simultaneous, stable and
|
8 | 8 | * resumable uploads via the HTML5 File API.
|
9 |
| - * @name |
10 | 9 | * @param [opts]
|
11 | 10 | * @param {number} [opts.chunkSize]
|
12 | 11 | * @param {bool} [opts.forceChunkSize]
|
|
594 | 593 | var sizeDelta = 0;
|
595 | 594 | var averageSpeed = 0;
|
596 | 595 | each(this.files, function (file) {
|
597 |
| - sizeDelta += file.size - file.sizeUploaded(); |
598 |
| - averageSpeed += file.averageSpeed; |
| 596 | + if (!file.paused && !file.error) { |
| 597 | + sizeDelta += file.size - file.sizeUploaded(); |
| 598 | + averageSpeed += file.averageSpeed; |
| 599 | + } |
599 | 600 | });
|
600 |
| - if (!averageSpeed) { |
| 601 | + if (sizeDelta && !averageSpeed) { |
601 | 602 | return Number.POSITIVE_INFINITY;
|
602 | 603 | }
|
| 604 | + if (!sizeDelta && !averageSpeed) { |
| 605 | + return 0; |
| 606 | + } |
603 | 607 | return Math.floor(sizeDelta / averageSpeed);
|
604 | 608 | }
|
605 | 609 | };
|
|
761 | 765 | this.flowObj.fire('progress');
|
762 | 766 | this._lastProgressCallback = Date.now();
|
763 | 767 | if (this.isComplete()) {
|
| 768 | + this.currentSpeed = 0; |
| 769 | + this.averageSpeed = 0; |
764 | 770 | this.flowObj.fire('fileSuccess', this, message);
|
765 | 771 | }
|
766 | 772 | break;
|
|
922 | 928 | * @returns {number}
|
923 | 929 | */
|
924 | 930 | timeRemaining: function () {
|
925 |
| - if (!this.averageSpeed) { |
| 931 | + if (this.paused || this.error) { |
| 932 | + return 0; |
| 933 | + } |
| 934 | + var delta = this.size - this.sizeUploaded(); |
| 935 | + if (delta && !this.averageSpeed) { |
926 | 936 | return Number.POSITIVE_INFINITY;
|
927 | 937 | }
|
928 |
| - return Math.floor((this.size - this.sizeUploaded()) / this.averageSpeed); |
| 938 | + if (!delta && !this.averageSpeed) { |
| 939 | + return 0; |
| 940 | + } |
| 941 | + return Math.floor(delta / this.averageSpeed); |
929 | 942 | },
|
930 | 943 |
|
931 | 944 | /**
|
|
0 commit comments