d8c1e04bf62d885bad423a5f8ad7222421a15cc0 chmalee Tue Jan 14 14:49:21 2025 -0800 After an upload or upload batch is done, clear the uppy state so that when the upload button is clicked again you don't have to click 'done' first, refs #35018 diff --git src/hg/js/hgMyData.js src/hg/js/hgMyData.js index 956df82..00aa012 100644 --- src/hg/js/hgMyData.js +++ src/hg/js/hgMyData.js @@ -786,48 +786,57 @@ // remove the batch change selects if now <2 files present if (this.uppy.getFiles().length < 2) { this.removeBatchSelectsFromDashboard(); } }); this.uppy.on("dashboard:modal-open", () => { // check if there were already files chosen from before: if (this.uppy.getFiles().length > 2) { this.addBatchSelectsToDashboard(); } if (this.uppy.getFiles().length < 2) { this.removeBatchSelectsFromDashboard(); } }); - this.uppy.on("dashboard:modal-close", () => { + this.uppy.on("dashboard:modal-closed", () => { if (this.uppy.getFiles().length < 2) { this.removeBatchSelectsFromDashboard(); } + let allFiles = this.uppy.getFiles(); + let completeFiles = this.uppy.getFiles().filter((f) => f.progress.uploadComplete === true); + if (allFiles.length === completeFiles.length) { + this.uppy.clear(); + } }); } uninstall() { // not really used because we aren't ever uninstalling the uppy instance this.uppy.off("file-added"); } } let uppyOptions = { //target: "#filePickerModal", // this seems nice but then the jquery css interferes with // the uppy css trigger: ".uploadButton", showProgressDetails: true, note: "Example text in the note field", meta: {"genome": null, "fileType": null}, + restricted: {requiredMetaFields: ["genome"]}, + closeModalOnClickOutside: true, + closeAfterFinish: true, + theme: 'auto', metaFields: (file) => { const fields = [{ id: 'name', name: 'File name', render: ({value, onChange, required, form}, h) => { return h('input', {type: "text", value: value, onChange: e => { onChange(e.target.value); file.meta.fileType = detectFileType(e.target.value); }, required: required, form: form, } @@ -860,34 +869,33 @@ render: ({value, onChange, required, form}, h) => { return h('input', {type: 'text', value: value, onChange: e => { onChange(e.target.value); }, required: required, form: form, } ); }, }]; return fields; }, - restricted: {requiredMetaFields: ["genome"]}, - closeModalOnClickOutside: true, - closeAfterFinish: true, - theme: 'auto', + doneButtonHandler: function() { + uppy.clear(); + }, }; let tusOptions = { endpoint: getTusdEndpoint(), withCredentials: true, retryDelays: null, }; uppy.use(Uppy.Dashboard, uppyOptions); uppy.use(Uppy.Tus, tusOptions); uppy.use(BatchChangePlugin, {target: Uppy.Dashboard}); uppy.on('upload-success', (file, response) => { const metadata = file.meta; const d = new Date(metadata.lastModified); const now = new Date(Date.now()); newReqObj = { "fileName": metadata.fileName,