29ffc987c852f9978f2442575d1f292aa9cd43aa tdreszer Thu Dec 16 08:59:55 2010 -0800 Had to add back in the 'windowSize' table or else things like top light blue bar start breaking diff --git src/hg/lib/hui.c src/hg/lib/hui.c index ea12491..e8e880a 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -3793,73 +3793,75 @@ // 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;di<membersForAll->dimMax;di++) { if (membersForAll->members[di]) dimCount++; } sortOrder_t* sortOrder = sortOrderGet(cart,parentTdb); boolean preSorted = FALSE; boolean useDragAndDrop = sameOk("subTracks",trackDbSetting(parentTdb, "dragAndDrop")); +// Table wraps around entire list so that "Top" link can float to the correct place. +printf("<table><tr><td class='windowSize'>"); +printf("<A NAME='DISPLAY_SUBTRACKS'></A>"); +makeTopLink(parentTdb); + // Now we can start in on the table of subtracks It may be sortable and/or dragAndDroppable printf("\n<TABLE CELLSPACING='2' CELLPADDING='0' border='0'"); dyStringClear(dyHtml); if (sortOrder != NULL) dyStringPrintf(dyHtml, "sortable"); if (useDragAndDrop) { if (dyStringLen(dyHtml) > 0) dyStringAppendC(dyHtml,' '); dyStringPrintf(dyHtml, "tableWithDragAndDrop"); } if (dyStringLen(dyHtml) > 0) { printf(" class='subtracks %s'",dyStringContents(dyHtml)); colorIx = COLOR_BG_ALTDEFAULT_IX; } if (sortOrder != NULL) puts("><THEAD class=sortable>"); else puts("><THEAD>"); // 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+4; + colspan = sortOrder->count+2; if (doColorPatch) colspan += 1; printf("<TR%s>",useDragAndDrop?" id='noDrag' class='nodrop nodrag'":""); -printf("<TD colspan='%d'>", colspan); -printf("<A NAME='DISPLAY_SUBTRACKS'></A>"); -printf("<B>List subtracks: "); +printf("<TD colspan='%d'><B>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</B>"); if (slCount(subtrackRefList) > 5) printf(" (<FONT class='subCBcount'></font>)"); -makeTopLink(parentTdb); // "Top" link floats to right side of table puts("</TD>"); // Add column headers which are sort button links if (sortOrder != NULL) { puts("<TD colspan=5> </TD></TR>"); printf("<TR id=\"subtracksHeader\" class='nodrop nodrag sortable'>\n"); printf("<TH> <INPUT TYPE=HIDDEN NAME='%s' class='sortOrder' VALUE=\"%s\"></TH>\n", sortOrder->htmlId, sortOrder->sortOrder); // keeing track of sortOrder // Columns in tdb order (unchanging), sort in cart order (changed by user action) int sIx=0; for(sIx=0;sIx<sortOrder->count;sIx++) { printf("<TH id='%s' class='sortable%s sort%d' abbr='use' nowrap title='Sort list on this column' onclick='tableSortAtButtonPress(this);'>%s", sortOrder->column[sIx],(sortOrder->forward[sIx]?"":" sortRev"),sortOrder->order[sIx],sortOrder->title[sIx]); printf("<sup>%s",(sortOrder->forward[sIx]?"↓":"↑")); @@ -3879,31 +3881,31 @@ (void)metadataForTable(db,subtrack,NULL); if (NULL != metadataFindValue(subtrack,"dateUnrestricted")) { printf("<TH align=\"center\" nowrap> "); printf("<A HREF=\'%s\' TARGET=BLANK>Restricted Until</A>", ENCODE_DATA_RELEASE_POLICY); puts(" </TH>"); break; // Don't need more than one } } puts("</TR></THEAD>"); // The end of the header section. // The subtracks need to be sorted by priority but only sortable and dragable will have non-default (cart) priorities to sort on if (sortOrder != NULL || useDragAndDrop) { preSorted = tdbRefSortPrioritiesFromCart(cart, &subtrackRefList); // preserves user's prev sort/drags - puts("<TBODY class='sortable altColors'>"); + printf("<TBODY class='%saltColors'>\n",(sortOrder != NULL ? "sortable " : "") ); } else { slSort(&subtrackRefList, trackDbRefCmp); // straight from trackDb.ra preSorted = TRUE; puts("<TBODY>"); } // Finally the big "for loop" to list each subtrack as a table row. for (subtrackRef = subtrackRefList; subtrackRef != NULL; subtrackRef = subtrackRef->next) { subtrack = subtrackRef->val; int ix; // Determine whether subtrack is checked, visible, configurable, has group membership, etc.