4db401fb2e91accfcf9ffcd3478b2f3d7881eb90 max Wed Jul 27 06:50:50 2022 -0700 fixing plus buttons and yet another bug with the copy button, refs #29583 diff --git src/hg/hgHubConnect/hgHubConnect.c src/hg/hgHubConnect/hgHubConnect.c index be9d0fe..8bf62c5 100644 --- src/hg/hgHubConnect/hgHubConnect.c +++ src/hg/hgHubConnect/hgHubConnect.c @@ -112,109 +112,96 @@ { int len = strlen(string); if ( string[len - 1] == ',') string[len - 1] = 0; else if (len > 2 && endsWith(string,", ")) string[len - 2] = 0; } return string; } #define GENLISTWIDTH 40 static void printGenomeList(char *hubUrl, struct slName *genomes, int row, boolean withLink, boolean withPaste) /* print supported assembly names from sl list */ { -struct dyString *dyHtml = dyStringNew(1024); +struct dyString *dyLongHtml = dyStringNew(1024); struct dyString *dyShortHtml = dyStringNew(1024); +char *linkHtml = ""; + // create two strings: one shortened to GENLISTWIDTH characters // and another one with all genomes int charCount = 0; struct slName *genome = genomes; for(; genome; genome = genome->next) { char *trimmedName = trackHubSkipHubName(genome->name); char *shortName = cloneString(trimmedName); // If even the first element is too long, truncate its short name. if (genome==genomes && strlen(trimmedName) > GENLISTWIDTH) shortName[GENLISTWIDTH] = 0; // append to dyShortHtml if necessary if (charCount == 0 || (charCount+strlen(trimmedName)<=GENLISTWIDTH)) { if (withLink) { dyStringPrintf(dyShortHtml,"%s" , genome->name, hubUrl, genome->name, shortName); // https://hgdownload-test.gi.ucsc.edu/hubs/GCA/009/914/755/GCA_009914755.4/hub.txt if (withPaste) - { - dyStringPrintf(dyShortHtml,"" , hubUrl); - dyStringAppend(dyShortHtml, ""); - } + dyStringPrintf(dyShortHtml, linkHtml, hubUrl); } else dyStringPrintf(dyShortHtml,"%s" , shortName); dyStringPrintf(dyShortHtml,", "); } freeMem(shortName); charCount += strlen(trimmedName); - // always append to dyHtml + // always append to dyLongHtml if (withLink) - dyStringPrintf(dyHtml,"%s" , genome->name, hubUrl, genome->name, trimmedName); + { + dyStringPrintf(dyLongHtml,"%s" , genome->name, hubUrl, genome->name, trimmedName); + if (withPaste) + dyStringPrintf(dyLongHtml, linkHtml, hubUrl); + } else - dyStringPrintf(dyHtml,"%s" , trimmedName); + dyStringPrintf(dyLongHtml,"%s" , trimmedName); if (genome->next) { - dyStringPrintf(dyHtml,", "); + dyStringPrintf(dyLongHtml,", "); } } -char *longHtml = dyStringCannibalize(&dyHtml); +char *longHtml = dyStringCannibalize(&dyLongHtml); char *shortHtml = dyStringCannibalize(&dyShortHtml); shortHtml = removeLastComma(shortHtml); if (charCount < GENLISTWIDTH) ourPrintCell(shortHtml); else { - char id[256]; char tempHtml[1024+strlen(longHtml)+strlen(shortHtml)]; safef(tempHtml, sizeof tempHtml, - "[+] %s..." - "[-]
%s
" - , row, row, shortHtml - , row, row, longHtml); - - safef(id, sizeof id, "Short%dPlus", row); - jsOnEventByIdF("click", id, - "document.getElementById('Short%d').style.display='none';" - "document.getElementById('Full%d').style.display='inline';" - "return false;" - , row, row); - - safef(id, sizeof id, "Full%dMinus", row); - jsOnEventByIdF("click", id, - "document.getElementById('Full%d').style.display='none';" - "document.getElementById('Short%d').style.display='inline';" - "return false;" - , row, row); + "[+] %s..." + "[-]
%s
", + shortHtml, longHtml); ourPrintCell(tempHtml); } freeMem(longHtml); freeMem(shortHtml); } static void printGenomes(struct trackHub *thub, int row, boolean withLink) /* print supported assembly names from trackHub */ { /* List of associated genomes. */ struct trackHubGenome *genomes = thub->genomeList; struct slName *list = NULL, *el; for(; genomes; genomes = genomes->next)