55efeb031b7d8367e8be67cd05fad21c2e592170 chmalee Mon Aug 10 11:59:10 2026 -0700 hubSpace: take the batch genome from hub.txt, and always say why an upload was refused, refs #37972 Co-Authored-By: Claude Opus 5 (1M context) diff --git src/hg/js/hgMyData.js src/hg/js/hgMyData.js index 13bbe361a37..61279a1f70d 100644 --- src/hg/js/hgMyData.js +++ src/hg/js/hgMyData.js @@ -1,3010 +1,3047 @@ /* jshint esversion: 8 */ var debugCartJson = true; function prettyFileSize(num) { if (!num) {return "0B";} if (num < (1024 * 1024)) { return `${(num/1024).toFixed(1)}KB`; } else if (num < (1024 * 1024 * 1024)) { return `${((num/1024)/1024).toFixed(1)}MB`; } else { return `${(((num/1024)/1024)/1024).toFixed(1)}GB`; } } function renderTimeCell(data, type) { // DataTables renderer for the two time columns. The server sends seconds since // the epoch, so the reader sees their own timezone rather than the server's, // while ordering stays on the number if (type !== "display") { return data; } if (!data) { return ""; } return new Date(data * 1000).toLocaleString(); } function cgiEncode(value) { // copy of cheapgi.c:cgiEncode except we are explicitly leaving '/' characters, and // space becomes '+': let splitVal = value.split('/'); splitVal.forEach((ele, ix) => { if (ele == " ") { splitVal[ix] = '+'; } else { splitVal[ix] = encodeURIComponent(ele); } }); return splitVal.join('/'); } function cgiDecode(value) { // decode an encoded value return decodeURIComponent(value); } function setDbSelectFromAutocomplete(selectEle, item) { // this has been bound to the