7dc6cf43e46774f66fdae62e8df2d674c7dfcf43 tdreszer Mon Dec 20 15:21:29 2010 -0800 Subtrack list needed to exclude the view all/visible radio buttons when it is sortable. diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 948e1f1..8d4a44e 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -3855,99 +3855,124 @@ struct slRef *subtrackRef, *subtrackRefList = trackDbListGetRefsToDescendantLeaves(parentTdb->subtracks); // Look for dividers, heirarchy, dimensions, sort and dragAndDrop! char **lastDivide = NULL; dividers_t *dividers = dividersSettingGet(parentTdb); if (dividers) lastDivide = needMem(sizeof(char*)*dividers->count); hierarchy_t *hierarchy = hierarchySettingGet(parentTdb); membersForAll_t* membersForAll = membersForAllSubGroupsGet(parentTdb,NULL); int dimCount=0,di; for(di=0;didimMax;di++) { if (membersForAll->members[di]) dimCount++; } sortOrder_t* sortOrder = sortOrderGet(cart,parentTdb); boolean preSorted = FALSE; boolean useDragAndDrop = sameOk("subTracks",trackDbSetting(parentTdb, "dragAndDrop")); +boolean displayAll = sameString(cartUsualString(cart, "displaySubtracks", "all"), "all"); // Determine whether there is a restricted until date column boolean restrictions = FALSE; for (subtrackRef = subtrackRefList; subtrackRef != NULL; subtrackRef = subtrackRef->next) { subtrack = subtrackRef->val; (void)metadataForTable(db,subtrack,NULL); if (NULL != metadataFindValue(subtrack,"dateUnrestricted")) { restrictions = TRUE; break; } } // Table wraps around entire list so that "Top" link can float to the correct place. printf("
"); printf(""); +if (sortOrder != NULL) + { + // First table row contains the display "selected/visible" or "all" radio buttons + // NOTE: list subtrack radio buttons are inside tracklist table header if there are no sort columns + // The reason is to ensure spacing of lines column headers when the only column header is "Restricted Until" + printf("List subtracks: "); + char javascript[JBUFSIZE]; + safef(javascript, sizeof(javascript), "onclick=\"showOrHideSelectedSubtracks(true);\""); + cgiMakeOnClickRadioButton("displaySubtracks", "selected", !displayAll,javascript); + puts("only selected/visible   "); + safef(javascript, sizeof(javascript), "onclick=\"showOrHideSelectedSubtracks(false);\""); + cgiMakeOnClickRadioButton("displaySubtracks", "all", displayAll,javascript); + printf("all"); + if (slCount(subtrackRefList) > 5) + printf("    ()"); + makeTopLink(parentTdb); + printf("
"); + } +else makeTopLink(parentTdb); // Now we can start in on the table of subtracks It may be sortable and/or dragAndDroppable printf("\n 0) dyStringAppendC(dyHtml,' '); dyStringPrintf(dyHtml, "tableWithDragAndDrop"); } if (dyStringLen(dyHtml) > 0) { - printf(" class='subtracks %s'",dyStringContents(dyHtml)); + printf(" class='subtracks bglevel1 %s'",dyStringContents(dyHtml)); colorIx = COLOR_BG_ALTDEFAULT_IX; } if (sortOrder != NULL) puts(">"); else puts(">"); -// First table row contains the display "selected/visible" or "all" radio buttons -boolean displayAll = sameString(cartUsualString(cart, "displaySubtracks", "all"), "all"); boolean doColorPatch = trackDbSettingOn(parentTdb, "showSubtrackColorOnUi"); int colspan = 3; if (sortOrder != NULL) colspan = sortOrder->count+2; if (doColorPatch) colspan += 1; int columnCount = 0; +if (sortOrder != NULL) + printf("\n",useDragAndDrop?" nodrop nodrag":""); +else + { printf("",useDragAndDrop?" id='noDrag' class='nodrop nodrag'":""); + // First table row contains the display "selected/visible" or "all" radio buttons + // NOTE: list subtrack radio buttons are inside tracklist table header if there are no sort columns + // The reason is to ensure spacing of lines column headers when the only column header is "Restricted Until" printf(""); -columnCount++; + columnCount = colspan; + } // Add column headers which are sort button links if (sortOrder != NULL) { - puts(""); - printf("\n"); printf("\n", sortOrder->htmlId, sortOrder->sortOrder); // keeing track of sortOrder + columnCount++; // Columns in tdb order (unchanging), sort in cart order (changed by user action) int sIx=0; for(sIx=0;sIxcount;sIx++) { #ifdef SORT_ON_TRACK_NAME if (sameString(SORT_ON_TRACK_NAME,sortOrder->column[sIx])) break; // All wrangler requested sort orders have been done. #endif///def SORT_ON_TRACK_NAME #ifdef SORT_ON_RESTRICTED if (sameString(SORT_ON_RESTRICTED,sortOrder->column[sIx])) break; // All wrangler requested sort orders have been done. #endif///def SORT_ON_RESTRICTED printf(""); printf("\n"); puts("
List subtracks: ", colspan); char javascript[JBUFSIZE]; safef(javascript, sizeof(javascript), "onclick=\"showOrHideSelectedSubtracks(true);\""); cgiMakeOnClickRadioButton("displaySubtracks", "selected", !displayAll,javascript); puts("only selected/visible   "); safef(javascript, sizeof(javascript), "onclick=\"showOrHideSelectedSubtracks(false);\""); cgiMakeOnClickRadioButton("displaySubtracks", "all", displayAll,javascript); printf("all"); if (slCount(subtrackRefList) > 5) printf("    ()"); puts(" 
 %s", sortOrder->column[sIx],(sortOrder->forward[sIx]?"":" sortRev"),sortOrder->order[sIx],sortOrder->title[sIx]); printf("%s",(sortOrder->forward[sIx]?"↓":"↑")); @@ -4184,30 +4209,31 @@ puts("
    ",columnCount-1); // Count of subtracks is filled in by javascript. if (slCount(subtrackRefList) > 5) printf("\n"); // Restruction policy needs a link #ifdef SORT_ON_RESTRICTED if (restrictions && sortOrder != NULL) printf("Restriction Policy", ENCODE_DATA_RELEASE_POLICY); #endif///def SORT_ON_RESTRICTED printf("
"); +if (sortOrder == NULL) printf(""); puts("

"); // Tying subtracks with matrix and subtrack cfgs with views requires javascript help puts(""); #ifndef SUBTRACK_CFG_POPUP if (dependentCfgsNeedBinding) cfgLinkToDependentCfgs(cart,parentTdb,parentTdb->track); #endif//ndef SUBTRACK_CFG_POPUP // Finally we are free of all this membersForAllSubGroupsFree(parentTdb,&membersForAll); dyStringFree(&dyHtml) sortOrderFree(&sortOrder);