eb57f721736fe3048c30576ff036a30cae7ce448 tdreszer Mon Aug 30 14:41:40 2010 -0700 Metadata link '...' is now populated by ajax diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 0c26581..4099c19 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -47,6 +47,12 @@ #define ENCODE_DCC_DOWNLOADS "encodeDCC" //#define SUBTRACK_CFG_POPUP +// TODO: For subtrack cfg and integration with right-click and subtrack level vis: +/* +1) Composite/view level settings should be ajaxed over upon change +2) subtrack popup should only register changed vars. Like findTracks, this could be done by seen inputs with id and hidden inputs with name. +3) subtrack cfg of vis should only set this var if changed from current possibly inherited state. +*/ struct trackDb *wgEncodeDownloadDirKeeper(char *db, struct trackDb *tdb, struct hash *trackHash) /* Look up through self and parents, looking for someone responsible for handling @@ -61,38 +67,34 @@ return trackDbTopLevelSelfOrParent(tdb); } -static boolean makeFileDownloadsLink(char *database, struct trackDb *tdb,char *name, +static char *htmlStringForDownloadsLink(char *database, struct trackDb *tdb,char *name,boolean nameIsFile, struct hash *trackHash) -// Make a downloads link (if appropriate and then returns TRUE) +// Returns an HTML string for a downloads link { // Downloads directory if this is ENCODE if(trackDbSetting(tdb, "wgEncode") != NULL) { struct trackDb *dirKeeper = wgEncodeDownloadDirKeeper(database, tdb, trackHash); - printf("%s", + struct dyString *dyLink = dyStringCreate("%s", hDownloadsServer(), trackDbSettingOrDefault(dirKeeper, "origAssembly",database), - ENCODE_DCC_DOWNLOADS, dirKeeper->table, name, name); - return TRUE; + ENCODE_DCC_DOWNLOADS, dirKeeper->table, (nameIsFile?name:""), name); + return dyStringCannibalize(&dyLink); } -return FALSE; +return NULL; } static boolean makeNamedDownloadsLink(char *database, struct trackDb *tdb,char *name, struct hash *trackHash) // Make a downloads link (if appropriate and then returns TRUE) { -// Downloads directory if this is ENCODE -if(trackDbSetting(tdb, "wgEncode") != NULL) - { - struct trackDb *dirKeeper = wgEncodeDownloadDirKeeper(database, tdb, trackHash); - printf("%s", - hDownloadsServer(), - trackDbSettingOrDefault(dirKeeper, "origAssembly",database), - ENCODE_DCC_DOWNLOADS, dirKeeper->table, name); - return TRUE; - } +char *htmlString = htmlStringForDownloadsLink(database,tdb,name,FALSE,trackHash); +if (htmlString == NULL) return FALSE; + +printf(htmlString); +freeMem(htmlString); +return TRUE; } boolean makeDownloadsLink(char *database, struct trackDb *tdb, struct hash *trackHash) @@ -132,20 +134,19 @@ return FALSE; } -boolean compositeMetadataToggle(char *db,struct trackDb *tdb,char *title, - boolean embeddedInText,boolean showLongLabel, struct hash *trackHash) -/* If metadata from metaTbl if it exists, create a link that will allow toggling it's display */ +char *metadataAsHtmlTable(char *db,struct trackDb *tdb,boolean showLongLabel,boolean showShortLabel, struct hash *trackHash) +/* If metadata from metaDb exists, return string of html with table definition */ { const struct mdbObj *safeObj = metadataForTable(db,tdb,NULL); if(safeObj == NULL || safeObj->vars == NULL) -return FALSE; +return NULL; -printf("%s%s", - (embeddedInText?" ":"

"),tdb->table,tdb->table, title); -printf("

"); +dyStringAppend(dyTable,""); //mdbObjsFree(&mdbObj); // spill some memory +return dyStringCannibalize(&dyTable); +} + +boolean compositeMetadataToggle(char *db,struct trackDb *tdb,char *title, + boolean embeddedInText,boolean showLongLabel, struct hash *trackHash) +/* If metadata from metaTbl exists, create a link that will allow toggling it's display */ +{ +const struct mdbObj *safeObj = metadataForTable(db,tdb,NULL); +if(safeObj == NULL || safeObj->vars == NULL) +return FALSE; + +printf("%s%s", + (embeddedInText?" ":"

"),tdb->table,tdb->table, showLongLabel?"true":"false", title); +if (!sameString(tdb->table, tdb->track) && trackHash != NULL) // If trackHash is needed, then can't fill this in with ajax + { + printf("

",tdb->table, + metadataAsHtmlTable(db,tdb,showLongLabel,TRUE,trackHash) ); + } +else + printf("",tdb->table); return TRUE; }