2ed451a171f3939be436ccc3bf6f0800f9df2a3a kate Fri Feb 21 17:41:17 2020 -0800 Implement collapsible panel with supertrack description, to appear at top of supertrack component track config page. refs #24948 diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c index 65b696f..e93ee24 100644 --- src/hg/hgTrackUi/hgTrackUi.c +++ src/hg/hgTrackUi/hgTrackUi.c @@ -3137,90 +3137,112 @@ cartRemove(cart,"descriptionOnly"); // This is a once only request and should be deleted return; } if (tdbIsContainer(tdb)) { safef(setting,sizeof(setting),"%s.%s",tdb->track,RESET_TO_DEFAULTS); // NOTE: if you want track vis to not be reset, move to after vis dropdown if (1 == cartUsualInt(cart, setting, 0)) cartRemoveAllForTdbAndChildren(cart,tdb); else if (!ajax) // Overkill on !ajax, because ajax shouldn't be called for a composite cartTdbTreeReshapeIfNeeded(cart,tdb); } if (tdb->parent) { - printf("This track is part of a super-track. " - "To configure the parent or sibling tracks, click a link below."); + printf("This track is part of a super-track. " + "To configure the parent or sibling tracks, click a link below."); // show super-track info struct trackDb *tdbParent = tdb->parent; printf("

"); if (trackDbSetting(tdbParent, "wgEncode")) printf(""); printf("%s Tracks", + " title='Configure parent track'>%s tracks", strlen(tdb->longLabel) > 30 ? 133 : 200, hgTrackUiName(), cartSessionVarName(), cartSessionId(cart), chromosome, cgiEncode(tdbParent->track), tdbParent->longLabel); // show group info struct grp *grp, *grps = hLoadGrps(database); for (grp = grps; grp != NULL; grp = grp->next) { if (sameString(grp->name, tdb->grp)) { printf("  " "(All %s%s)", hgTracksName(), cartSessionVarName(), cartSessionId(cart), chromosome, tdb->grp, tdb->grp, grp->label, grp->label, endsWith(grp->label," Tracks")?"":" tracks"); break; } } grpFreeList(&grps); printf(""); struct slRef *childRef; tdbRefSortPrioritiesFromCart(cart, &tdbParent->children); for (childRef = tdbParent->children; childRef != NULL; childRef = childRef->next) { struct trackDb *sibTdb = childRef->val; if (sameString(sibTdb->track, tdb->track)) { - printf("\n", sibTdb->shortLabel); - printf("\n", sibTdb->longLabel); + printf("\n", sibTdb->shortLabel); + printf("\n", sibTdb->longLabel); continue; } printf(""); - //hPrintPennantIcon(sibTdb); printf("", tdbIsDownloadsOnly(sibTdb) ? hgFileUiName(): hTrackUiForTrack(sibTdb->track), cartSessionVarName(), cartSessionId(cart), chromosome, cgiEncode(sibTdb->track), sibTdb->shortLabel); printf("\n", sibTdb->longLabel); } - printf("
%s%s
%s%s
%s %s
"); + printf("

"); + + // collapsed panel for Description + printf("

"); + jsBeginCollapsibleSectionFontSize(cart, tdb->track, "superDescription", "Description", FALSE, + "medium"); + char *html = replaceChars(tdbParent->html, "Description", ""); + html = replaceChars(html, "

Description

", ""); + html = replaceChars(html, "

Description

", ""); + + // remove everything after Description text + char *end = stringIn("

", html); + if (!end) + end = stringIn("

", html); + if (!end) + end = stringIn("

", html); + if (end) + *end = '\0'; + printf("%s", html); + printf("

To view the full description of this super-track, click the link above.\n"); + jsEndCollapsibleSection(); + printf("

"); -// TODO: Add collapsed panel for Description + //printf("

  + Description\n"); - printf("

  + Description\n"); printf("


"); - printf("

"); } /* track configuration form */ printf("
\n\n", hgTracksName(), cartUsualString(cart, "formMethod", "POST")); cartSaveSession(cart); if (sameWord(tdb->track,"ensGene")) { char longLabel[256]; struct trackVersion *trackVersion = getTrackVersion(database, tdb->track); if ((trackVersion != NULL) && !isEmpty(trackVersion->version)) { if (!isEmpty(trackVersion->dateReference) && differentWord("current", trackVersion->dateReference)) safef(longLabel, sizeof(longLabel), "Ensembl Gene Predictions - archive %s - %s", trackVersion->version, trackVersion->dateReference); @@ -3248,31 +3270,31 @@ { safef(longLabel, sizeof(longLabel), "%s - Annotation Release %s", tdb->longLabel, trackVersion->version); } else safef(longLabel, sizeof(longLabel), "%s", tdb->longLabel); } printf("%s%s\n", longLabel, tdbIsSuper(tdb) ? " Tracks" : ""); } else { if (trackDbSetting(tdb, "wgEncode") && !tdb->parent) printf(""); // set large title font size, but less so for long labels to minimize wrap printf("%s%s\n", strlen(tdb->longLabel) > 30 ? 133 : 200, - tdb->longLabel, tdbIsSuper(tdb) ? " Tracks" : ""); + tdb->longLabel, tdbIsSuper(tdb) ? " tracks" : ""); } /* Print link for parent track */ if (!ajax) { if (!tdb->parent) { // show group info struct grp *grp, *grps = hLoadGrps(database); for (grp = grps; grp != NULL; grp = grp->next) { if (sameString(grp->name,tdb->grp)) { printf("  "