93f43d928860a345d712a07428af3170a34facb9
chmalee
Fri Apr 5 12:33:42 2024 -0700
Make web accessible user directory link available at start time. Added a symlink to upload directory in /usr/local/apache
diff --git src/hg/js/hgMyData.js src/hg/js/hgMyData.js
index b8a7ca0..9ca1d9e 100644
--- src/hg/js/hgMyData.js
+++ src/hg/js/hgMyData.js
@@ -7,30 +7,31 @@
} else if (num < (1000 * 1000 * 1024)) {
return `${((num/1000)/1000).toFixed(1)}mb`;
} else {
return `${(((num/1000)/1000)/1000).toFixed(1)}gb`;
}
}
var hubCreate = (function() {
let uiState = { // our object for keeping track of the current UI and what to do
toUpload: {}, // set of file objects keyed by name
input: null, // the hidden input element
pickedList: null, // the
for displaying files in toUpload
pendingQueue: [], // our queue of pending [tus.Upload, file], kind of like the toUpload object
fileList: [], // the files this user has uploaded, initially populated by the server
// on page load, but gets updated as the user uploades/deletes files
+ userUrl: "", // the web accesible path where the uploads are stored for this user
};
// We can use XMLHttpRequest if necessary or a mirror can't use tus
var useTus = tus.isSupported && true;
function getTusdEndpoint() {
// return the port and basepath of the tusd server
// NOTE: the port and basepath are specified in hg.conf
//let currUrl = parseUrl(window.location.href);
return "https://hgwdev-hubspace.gi.ucsc.edu/files";
}
function togglePickStateMessage(showMsg = false) {
if (showMsg) {
let para = document.createElement("p");
@@ -318,42 +319,44 @@
console.log(`sending delete req for ${fname}`);
const endpoint = "../cgi-bin/hgHubConnect?deleteFile=" + fname;
if (!(endpoint in pendingDeletes)) {
const xhr = new XMLHttpRequest();
pendingDeletes[endpoint] = xhr;
this.xhr = xhr;
this.xhr.open("DELETE", endpoint, true);
this.xhr.send();
deleteFileFromTable(rowIx, fname);
delete pendingDeletes[endpoint];
}
}
function viewInGenomeBrowser(rowIx, fname) {
// redirect to hgTracks with this track as a custom track
+ if (typeof uiState.userUrl !== "undefined" && uiState.userUrl.length > 0) {
bigBedExts = [".bb", ".bigBed"];
let i;
for (i = 0; i < bigBedExts.length; i++) {
if (fname.toLowerCase().endsWith(bigBedExts[i])) {
// 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?
- window.location.assign("../cgi-bin/hgTracks?db=hg38&hgt.customText=" + "/hive/users/chmalee/tmp/userDataDir/4f/chmalee/" + fname);
+ window.location.assign("../cgi-bin/hgTracks?db=hg38&hgt.customText=" + uiState.userUrl + fname);
return false;
}
}
}
+ }
function addNewUploadedFileToTable(req) {
// req is an object with properties of an uploaded file, make a new row
// for it in the filesTable
let table = null;
if ($.fn.dataTable.isDataTable("#filesTable")) {
table = $("#filesTable").DataTable();
let newRow = table.row.add(req).draw();
} else {
showExistingFiles([req]);
}
}
let tableInitOptions = {
//columnDefs: [{orderable: false, targets: [0,1]}],
@@ -504,30 +507,31 @@
// choosing file types
// creating default trackDbs
// editing trackDbs
// TODO: make hgHubConnect respond to requests
// TODO: initialize tus-client
// TODO: get user name
// TODO: send a request with username
// TODO: have tusd respond on server
let uploadSection = document.getElementById("chosenFilesSection");
if (uploadSection.style.display === "none") {
uploadSection.style.display = "";
}
if (typeof userFiles !== 'undefined' && typeof userFiles.fileList !== 'undefined' &&
userFiles.fileList.length > 0) {
uiState.fileList= userFiles.fileList;
+ uiState.userUrl = userFiles.userUrl;
showExistingFiles(uiState.fileList);
}
inputBtn.addEventListener("click", (e) => uiState.input.click());
//uiState.input.addEventListener("change", listPickedFiles);
// TODO: add event handler for when file is succesful upload
// TODO: add event handlers for editing defaults, grouping into hub
// TODO: display quota somewhere
// TODO: customize the li to remove the picked file
}
}
return { init: init,
uiState: uiState,
};
}());