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) {