Compare commits
1 Commits
Marc-Hanse
...
koenvander
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
385c322d3d |
@@ -67,6 +67,7 @@ Easy to use Angular2 directives for files upload ([demo](http://valor-software.g
|
|||||||
5. `formatDataFunction` - Function to modify the request body. 'DisableMultipart' must be 'true' for this function to be called.
|
5. `formatDataFunction` - Function to modify the request body. 'DisableMultipart' must be 'true' for this function to be called.
|
||||||
6. `formatDataFunctionIsAsync` - Informs if the function sent in 'formatDataFunction' is asynchronous. Defaults to false.
|
6. `formatDataFunctionIsAsync` - Informs if the function sent in 'formatDataFunction' is asynchronous. Defaults to false.
|
||||||
7. `parametersBeforeFiles` - States if additional parameters should be appended before or after the file. Defaults to false.
|
7. `parametersBeforeFiles` - States if additional parameters should be appended before or after the file. Defaults to false.
|
||||||
|
8. `queueMaxSizeLimit` - States the maximum allowed size (in bytes) of all files in the queue that are going to be uploaded.
|
||||||
|
|
||||||
### Events
|
### Events
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ export interface FileUploaderOptions {
|
|||||||
authToken?: string;
|
authToken?: string;
|
||||||
maxFileSize?: number;
|
maxFileSize?: number;
|
||||||
queueLimit?: number;
|
queueLimit?: number;
|
||||||
|
queueMaxSizeLimit? : number;
|
||||||
removeAfterUpload?: boolean;
|
removeAfterUpload?: boolean;
|
||||||
url?: string;
|
url?: string;
|
||||||
disableMultipart?: boolean;
|
disableMultipart?: boolean;
|
||||||
@@ -77,6 +78,10 @@ export class FileUploader {
|
|||||||
this.autoUpload = this.options.autoUpload;
|
this.autoUpload = this.options.autoUpload;
|
||||||
this.options.filters.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });
|
this.options.filters.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });
|
||||||
|
|
||||||
|
if (this.options.queueMaxSizeLimit) {
|
||||||
|
this.options.filters.unshift({ name: 'queueMaxSizeLimit', fn: this._queueMaxSizeLimitFilter });
|
||||||
|
}
|
||||||
|
|
||||||
if (this.options.maxFileSize) {
|
if (this.options.maxFileSize) {
|
||||||
this.options.filters.unshift({ name: 'fileSize', fn: this._fileSizeFilter });
|
this.options.filters.unshift({ name: 'fileSize', fn: this._fileSizeFilter });
|
||||||
}
|
}
|
||||||
@@ -420,6 +425,17 @@ export class FileUploader {
|
|||||||
return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;
|
return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected _queueMaxSizeLimitFilter(item: FileLikeObject): boolean {
|
||||||
|
let queueFileSize = 0;
|
||||||
|
let queueNotProcessedItems = this.queue.filter(queuedItem => !(queuedItem.isSuccess || queuedItem.isCancel || queuedItem.isError));
|
||||||
|
if(queueNotProcessedItems.length>0)
|
||||||
|
{
|
||||||
|
// total size of all queued items that are going to be uploaded
|
||||||
|
queueFileSize = queueNotProcessedItems.map(queuedItem => queuedItem.file.size).reduce((fileSizeA,fileSizeB)=> fileSizeA + fileSizeB);
|
||||||
|
}
|
||||||
|
return this.options.queueMaxSizeLimit === undefined || (queueFileSize + item.size) < this.options.queueMaxSizeLimit;
|
||||||
|
}
|
||||||
|
|
||||||
protected _isValidFile(file: FileLikeObject, filters: FilterFunction[], options: FileUploaderOptions): boolean {
|
protected _isValidFile(file: FileLikeObject, filters: FilterFunction[], options: FileUploaderOptions): boolean {
|
||||||
this._failFilterIndex = -1;
|
this._failFilterIndex = -1;
|
||||||
return !filters.length ? true : filters.every((filter: FilterFunction) => {
|
return !filters.length ? true : filters.every((filter: FilterFunction) => {
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ describe('Directive: FileSelectDirective', () => {
|
|||||||
expect(options.isHTML5).toBeTruthy();
|
expect(options.isHTML5).toBeTruthy();
|
||||||
expect(options.removeAfterUpload).toBeFalsy();
|
expect(options.removeAfterUpload).toBeFalsy();
|
||||||
expect(options.disableMultipart).toBeFalsy();
|
expect(options.disableMultipart).toBeFalsy();
|
||||||
|
expect(options.queueMaxSizeLimit).toBeUndefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can get filters', () => {
|
it('can get filters', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user