From 35d759b73b0acdb6d429165a3d233604604d8f17 Mon Sep 17 00:00:00 2001 From: James Taylor Date: Thu, 26 May 2016 10:42:18 +0100 Subject: [PATCH 1/3] Started adding additional typings for jquery.fileupload callbacks Typings have been added for the following callbacks: progress, progressall, start, stop, change, paste, drop, dragover, chunksend, chunkdone, chunkfail, chunkalways. The docs (https://github.com/blueimp/jQuery-File-Upload/wiki/Options), and the source jquery.fileupload.js were used to create these typings. --- jquery.fileupload/jquery.fileupload.d.ts | 55 ++++++++++++++++++------ 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/jquery.fileupload/jquery.fileupload.d.ts b/jquery.fileupload/jquery.fileupload.d.ts index 3575ab2738..eb47f6e172 100644 --- a/jquery.fileupload/jquery.fileupload.d.ts +++ b/jquery.fileupload/jquery.fileupload.d.ts @@ -207,7 +207,7 @@ interface JQueryFileInputOptions { timeout?: number; active?: Function; - progress?: Function; + progress?: (e: JQueryEventObject, data: JQueryFileUploadProgressObject) => void; send?: Function; // Other callbacks: @@ -215,17 +215,17 @@ interface JQueryFileInputOptions { done?: Function; fail?: Function; always?: Function; - progressall?: Function; - start?: Function; - stop?: Function; - change?: Function; - paste?: Function; - drop?: Function; - dragover?: Function; - chunksend?: Function; - chunkdone?: Function; - chunkfail?: Function; - chunkalways?: Function; + progressall?: (e: JQueryEventObject, data: JQueryFileUploadProgressAllObject) => void; + start?: (e: JQueryEventObject) => void; + stop?: (e: JQueryEventObject) => void; + change?: (e: JQueryEventObject, data: JQueryFileUploadChangeObject) => void; + paste?: (e: JQueryEventObject, data: JQueryFileUploadFilesObject) => void; + drop?: (e: JQueryEventObject, data: JQueryFileUploadFilesObject) => void; + dragover?: (e: JQueryEventObject) => void; + chunksend?: (e: JQueryEventObject, data: JQueryFileUploadChunkObject) => void; + chunkdone?: (e: JQueryEventObject, data: JQueryFileUploadChunkObject) => void; + chunkfail?: (e: JQueryEventObject, data: JQueryFileUploadChunkObject) => void; + chunkalways?: (e: JQueryEventObject, data: JQueryFileUploadChunkObject) => void; // Others url?: string; @@ -250,3 +250,34 @@ interface JQuery { interface JQuerySupport { fileInput?: boolean; } + +interface JQueryFileUploadChangeObject { + fileInput?: JQuery; + fileInputClone?: JQuery; + files: File[]; + form?: JQuery; + originalFiles: File[]; +} + +interface JQueryFileUploadProgressAllObject { + loaded?: number; + total?: number; + bitrate?: number; +} + +interface JQueryFileUploadProgressObject extends JQueryFileInputOptions, JQueryFileUploadProgressAllObject { +} + +interface JQueryFileUploadFilesObject { + files: File[]; +} + +interface JQueryFileUploadChunkObject extends JQueryFileInputOptions { + blob: any; + chunkSize: number; + contentRange: string; + errorThrown: any; + jqXHR: JQueryXHR; + result: any; + textStatus: string; +} \ No newline at end of file From dc4779445c8b1c8ac7be2e7df88bfe0b3ba82d2b Mon Sep 17 00:00:00 2001 From: Neil Culver Date: Fri, 27 May 2016 16:02:54 +0100 Subject: [PATCH 2/3] refactored tests added done typings --- jquery.fileupload/jquery.fileupload-tests.ts | 28 +++++++++----------- jquery.fileupload/jquery.fileupload.d.ts | 18 ++++++++----- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/jquery.fileupload/jquery.fileupload-tests.ts b/jquery.fileupload/jquery.fileupload-tests.ts index 87149e0151..f07c60b87d 100644 --- a/jquery.fileupload/jquery.fileupload-tests.ts +++ b/jquery.fileupload/jquery.fileupload-tests.ts @@ -13,6 +13,18 @@ var __handleAddingFile = function (event:any, data:any) data.submit(); }; +var options: JQueryFileInputOptions = { + dataType: 'json', + singleFileUploads: true, + limitMultiFileUploads: 1, + add: __handleAddingFile, + done: (e, data) => { + data.result; + data.jqXHR; + data.textStatus; + } +} + class TestFileInput { // The whole body will be the container for this test @@ -24,20 +36,6 @@ class TestFileInput { constructor() { // The file upload object receives a fileInputOptions configuration object - this.fileInput = this.$el.fileupload({ - - dataType: 'json', - - // By default, each file of a selection is uploaded using an individual - // request for XHR type uploads. Set to false to upload file - // selections in one request each: - singleFileUploads: true, - // To limit the number of files uploaded with one XHR request, - // set the following option to an integer greater than 0: - limitMultiFileUploads: 1, - - add: __handleAddingFile - - }); + this.fileInput = this.$el.fileupload(options); } } diff --git a/jquery.fileupload/jquery.fileupload.d.ts b/jquery.fileupload/jquery.fileupload.d.ts index eb47f6e172..3cf92af62c 100644 --- a/jquery.fileupload/jquery.fileupload.d.ts +++ b/jquery.fileupload/jquery.fileupload.d.ts @@ -212,7 +212,7 @@ interface JQueryFileInputOptions { // Other callbacks: submit?: Function; - done?: Function; + done?: (e: JQueryEventObject, data: JQueryFileUploadDone) => void; fail?: Function; always?: Function; progressall?: (e: JQueryEventObject, data: JQueryFileUploadProgressAllObject) => void; @@ -265,19 +265,25 @@ interface JQueryFileUploadProgressAllObject { bitrate?: number; } -interface JQueryFileUploadProgressObject extends JQueryFileInputOptions, JQueryFileUploadProgressAllObject { +interface JQueryFileUploadWithXhr { + jqXHR: JQueryXHR; + result: any; + textStatus: string; } interface JQueryFileUploadFilesObject { files: File[]; } -interface JQueryFileUploadChunkObject extends JQueryFileInputOptions { +interface JQueryFileUploadChunkObject extends JQueryFileInputOptions, JQueryFileUploadWithXhr { blob: any; chunkSize: number; contentRange: string; errorThrown: any; - jqXHR: JQueryXHR; - result: any; - textStatus: string; +} + +interface JQueryFileUploadProgressObject extends JQueryFileInputOptions, JQueryFileUploadProgressAllObject { +} + +interface JQueryFileUploadDone extends JQueryFileInputOptions, JQueryFileUploadWithXhr { } \ No newline at end of file From be0b2f733cd2c0a19c94ead1f005912559f5f1a8 Mon Sep 17 00:00:00 2001 From: Neil Culver Date: Fri, 24 Jun 2016 16:37:35 +0100 Subject: [PATCH 3/3] better types for upload callbacks --- jquery.fileupload/jquery.fileupload.d.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/jquery.fileupload/jquery.fileupload.d.ts b/jquery.fileupload/jquery.fileupload.d.ts index 3cf92af62c..da94ce19c6 100644 --- a/jquery.fileupload/jquery.fileupload.d.ts +++ b/jquery.fileupload/jquery.fileupload.d.ts @@ -208,13 +208,13 @@ interface JQueryFileInputOptions { active?: Function; progress?: (e: JQueryEventObject, data: JQueryFileUploadProgressObject) => void; - send?: Function; + send?: (e: JQueryEventObject, data: JQueryFileUploadProgressObject) => void; // Other callbacks: submit?: Function; done?: (e: JQueryEventObject, data: JQueryFileUploadDone) => void; - fail?: Function; - always?: Function; + fail?: (e: JQueryEventObject, data: JQueryFileInputOptions) => void; + always?: (e: JQueryEventObject, data: JQueryFileInputOptions) => void; progressall?: (e: JQueryEventObject, data: JQueryFileUploadProgressAllObject) => void; start?: (e: JQueryEventObject) => void; stop?: (e: JQueryEventObject) => void; @@ -265,7 +265,7 @@ interface JQueryFileUploadProgressAllObject { bitrate?: number; } -interface JQueryFileUploadWithXhr { +interface JQueryFileUploadXhr { jqXHR: JQueryXHR; result: any; textStatus: string; @@ -275,7 +275,7 @@ interface JQueryFileUploadFilesObject { files: File[]; } -interface JQueryFileUploadChunkObject extends JQueryFileInputOptions, JQueryFileUploadWithXhr { +interface JQueryFileUploadChunkObject extends JQueryFileInputOptions, JQueryFileUploadXhr { blob: any; chunkSize: number; contentRange: string; @@ -285,5 +285,5 @@ interface JQueryFileUploadChunkObject extends JQueryFileInputOptions, JQueryFile interface JQueryFileUploadProgressObject extends JQueryFileInputOptions, JQueryFileUploadProgressAllObject { } -interface JQueryFileUploadDone extends JQueryFileInputOptions, JQueryFileUploadWithXhr { +interface JQueryFileUploadDone extends JQueryFileInputOptions, JQueryFileUploadXhr { } \ No newline at end of file