979ae40501044410b8375bdb5840dcdfcb70c712 chmalee Wed Oct 2 12:26:27 2024 -0700 Working hub deletion diff --git src/hg/js/hgMyData.js src/hg/js/hgMyData.js index 1aa42f2..3f77a59 100644 --- src/hg/js/hgMyData.js +++ src/hg/js/hgMyData.js @@ -374,46 +374,46 @@ // finally add it for us uiState.toUpload[file.name] = file; } togglePickStateMessage(false); addClearSubmitButtons(); } // always clear the input element uiState.input = createInput(); } function dataTablePrintSize(data, type, row, meta) { return prettyFileSize(data); } - function deleteFileFromTable(rowIx, fname) { + function deleteFileFromTable(fname) { // req is an object with properties of an uploaded file, make a new row // for it in the filesTable let table = $("#filesTable").DataTable(); let row = table.row((idx, data) => data.fileName === fname); row.remove().draw(); } - function deleteFile(rowIx, fname) { + function deleteFile(fname, fileType) { // Send an async request to hgHubConnect to delete the file // Note that repeated requests, like from a bot, will return 404 as a correct response console.log(`sending delete req for ${fname}`); cart.setCgi("hgHubConnect"); - cart.send({deleteFile: {fileNameList: [fname]}}); + cart.send({deleteFile: {fileNameList: [fname, fileType]}}); cart.flush(); - deleteFileFromTable(rowIx, fname); + deleteFileFromTable(fname); } function deleteFileList() { } function viewInGenomeBrowser(fname, genome) { // redirect to hgTracks with this track open in the hub if (typeof uiState.userUrl !== "undefined" && uiState.userUrl.length > 0) { bigBedExts = [".bb", ".bigBed", ".vcf.gz", ".vcf", ".bam", ".bw", ".bigWig"]; let i; for (i = 0; i < bigBedExts.length; i++) { if (fname.toLowerCase().endsWith(bigBedExts[i].toLowerCase())) { // TODO: tusd should return this location in it's response after // uploading a file and then we can look it up somehow, the cgi can // write the links directly into the html directly for prev uploaded files maybe? @@ -491,31 +491,31 @@ } }, { orderable: false, targets: 1, data: "action", title: "Action", render: function(data, type, row) { /* Return a node for rendering the actions column */ // all of our actions will be buttons in this div: let container = document.createElement("div"); // click to call hgHubDelete file let delBtn = document.createElement("button"); delBtn.textContent = "Delete"; delBtn.type = 'button'; delBtn.addEventListener("click", function() { - deleteFile(0, row.fileName); + deleteFile(row.fileName, row.fileType); }); // click to view hub/file in gb: let viewBtn = document.createElement("button"); viewBtn.textContent = "View in Genome Browser"; viewBtn.type = 'button'; viewBtn.addEventListener("click", function() { viewInGenomeBrowser(row.fileName, row.genome); }); // click to rename file or hub: let renameBtn = document.createElement("button"); renameBtn.textContent = "Rename"; renameBtn.type = 'button'; renameBtn.addEventListener("click", function() { @@ -544,52 +544,30 @@ return dataTablePrintSize(data); } } ], columns: [ {data: "", }, {data: "", }, {data: "fileName", title: "File name"}, {data: "fileSize", title: "File size", render: dataTablePrintSize}, {data: "fileType", title: "File type"}, {data: "genome", title: "Genome"}, {data: "hub", title: "Hubs"}, {data: "createTime", title: "Creation Time"}, ], order: [[6, 'desc']], - /* - drawCallback: function(settings) { - // every time we draw we need to update event handlers if we've added/deleted a row - let table = this.DataTable(); - btns = document.querySelectorAll('.deleteFileBtn'); - let i, numRows= table.rows().data().length; - for (i = 0; i < numRows; i++) { - let fname = table.cell(i, 2).data(); - btns[i].addEventListener("click", (e) => { - deleteFile(i, fname); - }); - } - btns = document.querySelectorAll('.viewInBtn'); - for (i = 0; i < numRows; i++) { - let fname = table.cell(i, 2).data(); - let genome = table.cell(i, 5).data(); - btns[i].addEventListener("click", (e) => { - viewInGenomeBrowser(fname, genome); - }); - } - }, - */ }; function showExistingFiles(d) { // Make the DataTable for each file // make buttons have the same style as other buttons $.fn.dataTable.Buttons.defaults.dom.button.className = 'button'; tableInitOptions.data = d; let table = new DataTable("#filesTable", tableInitOptions); let toRemove = document.getElementById("welcomeDiv"); if (d.length > 0 && toRemove !== null) { toRemove.remove(); } } function showExistingHubs(d) {