035323fe4a88aea8872eb11de17a3800321cf8e7 galt Wed Jan 18 19:59:51 2023 -0800 code cleanup based on htmlCheck output. refs #7914 diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 954010d..1f2b962 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -1507,31 +1507,31 @@ { indelEnabledByName(cart,tdb,tdb->track,basesPerPixel,retDoubleInsert,retQueryInsert,retPolyA); } static void indelShowOptionsWithNameExt(struct cart *cart, struct trackDb *tdb, char *name, char *queryTerm, boolean includeDoubleInsert, boolean includePolyA) /* Make HTML inputs for indel display options if any are applicable. */ { if (indelAppropriate(tdb)) { boolean showDoubleInsert, showQueryInsert, showPolyA; char var[512]; indelEnabledByName(cart, tdb, name, 0.0, &showDoubleInsert, &showQueryInsert, &showPolyA); printf("<TABLE><TR><TD colspan=2><B>Alignment Gap/Insertion Display Options</B>"); - printf(" <A HREF=\"%s\">Help on display options</A>\n<TR valign='top'><TD>", + printf(" <A HREF=\"%s\">Help on display options</A></TD></TR>\n<TR valign='top'><TD>", INDEL_HELP_PAGE); if (includeDoubleInsert) { safef(var, sizeof(var), "%s.%s", name, INDEL_DOUBLE_INSERT); cgiMakeCheckBox(var, showDoubleInsert); printf("</TD><TD>Draw double horizontal lines when both genome and %s have " "an insertion</TD></TR>\n<TR valign='top'><TD>", queryTerm); } safef(var, sizeof(var), "%s.%s", name, INDEL_QUERY_INSERT); cgiMakeCheckBox(var, showQueryInsert); printf("</TD><TD>Draw a vertical purple line for an insertion at the beginning or " "end of the <BR>%s, orange for insertion in the middle of the %s</TD></TR>\n" "<TR valign='top'><TD>", queryTerm, queryTerm); if (includePolyA) { @@ -4560,62 +4560,62 @@ /* UI for the wiggle track */ { int maxHeightPixels; int minHeightPixels; char option[256]; int defaultHeight; /* pixels per item */ int settingsDefault; #define MIN_HEIGHT_LOLLY 32 cartTdbFetchMinMaxPixels(cart, tdb, MIN_HEIGHT_LOLLY, atoi(DEFAULT_HEIGHT_PER), atoi(DEFAULT_HEIGHT_PER), &minHeightPixels, &maxHeightPixels, &settingsDefault, &defaultHeight); boxed = cfgBeginBoxAndTitle(tdb, boxed, title); printf("<TABLE BORDER=0>"); -printf("<TR valign=center><th align=right>Track height:</th><td align=left colspan=3>"); +printf("<TR valign=middle><th align=right>Track height:</th><td align=left colspan=3>"); safef(option, sizeof(option), "%s.%s", name, HEIGHTPER ); cgiMakeIntVarWithLimits(option, defaultHeight, "Track height",0, minHeightPixels, maxHeightPixels); printf("pixels (range: %d to %d)", minHeightPixels, maxHeightPixels); char *autoScale; wigFetchAutoScaleWithCart(cart,tdb,name, &autoScale); -printf("<TR valign=center><th align=right>Data view scaling:</th><td align=left colspan=3>"); +printf("<TR valign=middle><th align=right>Data view scaling:</th><td align=left colspan=3>"); safef(option, sizeof(option), "%s.%s", name, AUTOSCALE ); wiggleScaleDropDown(option, autoScale); void wiggleScaleDropDownJavascript(char *name); wiggleScaleDropDownJavascript(name); puts("</TD></TR>"); double minY; /* from trackDb or cart */ double maxY; /* from trackDb or cart */ double tDbMinY; /* data range limits from trackDb type line */ double tDbMaxY; /* data range limits from trackDb type line */ char *words[8]; /* to parse the trackDb type line */ int wordCount = 0; /* to parse the trackDb type line */ wigFetchMinMaxYWithCart(cart, tdb, name, &minY, &maxY, &tDbMinY, &tDbMaxY, wordCount, words); -printf("<TR class=\"%sAutoScaleDesc\" valign=center><th align=right>Vertical viewing range:</th>" +printf("<TR class=\"%sAutoScaleDesc\" valign=middle><th align=right>Vertical viewing range:</th>" "<td align=left> min: ", name); safef(option, sizeof(option), "%s.%s", name, MIN_Y ); cgiMakeDoubleVarWithLimits(option, minY, "Range min", 0, NO_VALUE, NO_VALUE); printf("</td><td align=leftv colspan=2>max: "); safef(option, sizeof(option), "%s.%s", name, MAX_Y ); cgiMakeDoubleVarWithLimits(option, maxY, "Range max", 0, NO_VALUE, NO_VALUE); /* -printf("<TR valign=center><th align=right>Drawing method:</th><td align=left>"); +printf("<TR valign=middle><th align=right>Drawing method:</th><td align=left>"); safef(option, sizeof(option), "%s.%s", name, POPMETHOD); char *popMethodVal = cartOrTdbString(cart, tdb, "popMethod", NULL); cgiMakeDropListFull(option, popMethodLabels, popMethodValues, ArraySize(popMethodValues), popMethodVal, NULL, NULL); */ puts("</td></TR>"); printf("</TABLE>"); cfgEndBox(boxed); } void labelMakeCheckBox(struct cart *cart, struct trackDb *tdb, char *sym, char *desc, boolean defaultOn) @@ -5118,36 +5118,37 @@ sortOrder_t *sortOrder = settings->sortOrder; int columnCount = settings->columnCount; if (subCount > 5 || (restrictions && sortOrder != NULL)) { printf("<TFOOT style='background-color:%s;'><TR valign='top'>", COLOR_BG_DEFAULT_DARKER); if (restrictions && sortOrder != NULL) printf("<TD colspan=%d> ",columnCount-1); else printf("<TD colspan=%d> ",columnCount); // Count of subtracks is filled in by javascript. if (subCount > 5) printf("<span class='subCBcount'></span>\n"); + printf("</TD>\n"); // Restriction policy needs a link if (restrictions && sortOrder != NULL) - printf("</TD><TH><A HREF='%s' TARGET=BLANK style='font-size:.9em;'>Restriction Policy</A>", + printf("<TH><A HREF='%s' TARGET=BLANK style='font-size:.9em;'>Restriction Policy</A></TH>", ENCODE_DATA_RELEASE_POLICY); - printf("</TD></TR></TFOOT>\n"); + printf("</TR></TFOOT>\n"); } } /********************/ /* Basic info for a controlled vocabulary term */ struct vocabBasic { struct vocabBasic *next; char *term; char *description; char *url; }; boolean vocabSettingIsEncode(char *setting) /* Distinguish ENCODE controlled vocab settings (first arg is cv.ra filename) from non-ENCODE @@ -5406,31 +5407,31 @@ (visibleCB ? "":" disabled"),view); // view should be last! else safef(classList,sizeof(classList),"clickable fauxInput%s subVisDD", (visibleCB ? "":" disabled")); #define SUBTRACK_CFG_VIS "<div id='%s_faux' class='%s' style='width:65px;'>%s</div>\n" printf(SUBTRACK_CFG_VIS,subtrack->track,classList,hStringFromTv(vis)); char id[256]; safef(id, sizeof id, "%s_faux", subtrack->track); jsOnEventByIdF("click", id, "return subCfg.replaceWithVis(this,\"%s\",true);", subtrack->track); if (cType != cfgNone) // make a wrench { safef(id, sizeof id, "%s_toggle", subtrack->track); #define SUBTRACK_CFG_WRENCH "<span id='%s' class='clickable%s' " \ "title='Configure this subtrack'><img src='../images/wrench.png'>" \ - "<span class='link'> Configure</a> </span></span>\n" + "<span class='link'> Configure</span></span>\n" printf(SUBTRACK_CFG_WRENCH,id, (visibleCB ? "":" disabled")); jsOnEventByIdF("click", id, "return subCfg.cfgToggle(this,\"%s\");", subtrack->track); } } printf("</TD>"); // If sortable, then there must be a column per sortable dimension if (sortOrder != NULL) { int sIx=0; for (sIx=0; sIx <sortOrder->count; sIx++) { ix = -1; char *col = sortOrder->column[sIx]; if (membership) @@ -5446,31 +5447,31 @@ } else { if (ix >= 0) { char *term = membership->membership[ix]; char *title = membership->titles[ix]; char *titleRoot=NULL; if (cvTermIsEmpty(col, title)) titleRoot = cloneString(" "); else titleRoot = labelRoot(title, NULL); // Each sortable column requires hidden goop (in the "abbr" field currently) // which is the actual sort on value printf("<TD id='%s_%s' abbr='%s' align='left'>", subtrack->track, col, term); - printf(" "); + printf(" "); char *link = NULL; if (vocabHash) { struct hash *colHash = hashFindVal(vocabHash, col); if (colHash) link = vocabLink(colHash, term, titleRoot); } printf("%s", link ? link : titleRoot); puts("</TD>"); freeMem(titleRoot); } else if (sameString(col, SUBTRACK_COLOR_SUBGROUP)) { char *hue = subtrackColorToCompare(subtrack); printf("<TD id='%s_%s' abbr='%s' bgcolor='#%02X%02X%02X'>" @@ -5973,149 +5974,152 @@ printf("<TABLE BORDER=0>"); boolean isLogo = ((tdb->parent != NULL) && trackDbSetting(tdb->parent, "logo") != NULL); boolean parentLevel = isNameAtParentLevel(tdb, name); boolean didAggregate = FALSE; if (parentLevel && !isLogo) { assert(tdb->parent != NULL); char *aggregate = trackDbSetting(tdb->parent, "aggregate"); if (aggregate != NULL && parentLevel) { char *aggregateVal = cartOrTdbString(cart, tdb->parent, "aggregate", NULL); safef(option, sizeof(option), "%s.%s", name, AGGREGATE); if (isCustomComposite(tdb)) { - printf("<TR valign=center><th align=right>Merge method:</th><td align=left>"); + printf("<TR valign=middle><th align=right>Merge method:</th><td align=left>"); aggregateExtraDropDown(option, aggregateVal); } else { - printf("<TR valign=center><th align=right>Overlay method:</th><td align=left>"); + printf("<TR valign=middle><th align=right>Overlay method:</th><td align=left>"); aggregateDropDown(option, aggregateVal); } puts("</td></TR>"); if (sameString(aggregateVal, WIG_AGGREGATE_STACKED) && sameString(windowingFunction, "mean+whiskers")) { windowingFunction = "maximum"; } didAggregate = TRUE; } if (isCustomComposite(tdb)) { /* char *viewFuncVal = cartOrTdbString(cart, tdb->parent, "viewFunc", NULL); - printf("<TR valign=center><th align=right>Math method:</th><td align=left>"); + printf("<TR valign=middle><th align=right>Math method:</th><td align=left>"); safef(option, sizeof(option), "%s.%s", name, VIEWFUNC); viewFuncDropDown(option, viewFuncVal); */ - printf("<TR valign=center><th align=right>Missing data treatment:</th><td align=left>"); + printf("<TR valign=middle><th align=right>Missing data treatment:</th><td align=left>"); char *missingMethodVal = cartOrTdbString(cart, tdb->parent, "missingMethod", NULL); boolean missingIsZero = (missingMethodVal == NULL) || differentString(missingMethodVal, "missing"); char buffer[1024]; safef(buffer, sizeof buffer, "%s.missingMethod",name); cgiMakeOnEventRadioButtonWithClass(buffer, "zero", missingIsZero, "allOrOnly", "click", NULL); puts("missing is zero "); cgiMakeOnEventRadioButtonWithClass(buffer, "missing", !missingIsZero, "allOrOnly", "click", NULL); printf("math with missing values is missing</B>"); } } if (!isLogo) { - printf("<TR valign=center><th align=right>Type of graph:</th><td align=left>"); + printf("<TR valign=middle><th align=right>Type of graph:</th><td align=left>"); safef( option, sizeof(option), "%s.%s", name, LINEBAR ); wiggleGraphDropDown(option, lineBar); if (boxed) { printf("</td><td align=right colspan=2>"); printf("<A HREF=\"%s\" TARGET=_blank>Graph configuration help</A>",WIGGLE_HELP_PAGE); } puts("</td></TR>"); } -printf("<TR valign=center><th align=right>Track height:</th><td align=left colspan=3>"); +printf("<TR valign=middle><th align=right>Track height:</th><td align=left colspan=3>"); safef(option, sizeof(option), "%s.%s", name, HEIGHTPER ); cgiMakeIntVarWithLimits(option, defaultHeight, "Track height",0, minHeightPixels, maxHeightPixels); printf("pixels (range: %d to %d)", minHeightPixels, maxHeightPixels); puts("</TD></TR>"); -printf("<TR valign=center><th align=right>Data view scaling:</th><td align=left colspan=3>"); +printf("<TR valign=middle><th align=right>Data view scaling:</th><td align=left colspan=3>"); safef(option, sizeof(option), "%s.%s", name, AUTOSCALE ); if (tdb->parent || tdb->subtracks) wiggleScaleDropDownParent(option, autoScale); else wiggleScaleDropDown(option, autoScale); wiggleScaleDropDownJavascript(name); if (!isLogo) { safef(option, sizeof(option), "%s.%s", name, ALWAYSZERO); - printf("Always include zero: "); + printf("Always include zero: "); wiggleAlwaysZeroDropDown(option, alwaysZero); puts("</TD></TR>"); } -printf("<TR class=\"%sAutoScaleDesc\" valign=center><th align=right>Vertical viewing range:</th>" +printf("<TR class=\"%sAutoScaleDesc\" valign=middle><th align=right>Vertical viewing range:</th>" "<td align=left> min: ", name); safef(option, sizeof(option), "%s.%s", name, MIN_Y ); cgiMakeDoubleVarWithLimits(option, minY, "Range min", 0, NO_VALUE, NO_VALUE); printf("</td><td align=leftv colspan=2>max: "); safef(option, sizeof(option), "%s.%s", name, MAX_Y ); cgiMakeDoubleVarWithLimits(option, maxY, "Range max", 0, NO_VALUE, NO_VALUE); if (!isCustomComposite(tdb)) printf(" (range: %g to %g)", tDbMinY, tDbMaxY); puts("</TD></TR>"); -printf("<TR valign=center><th align=right>Transform function:</th><td align=left>"); +printf("<TR valign=middle><th align=right>Transform function:</th><td align=left>"); safef(option, sizeof(option), "%s.%s", name, TRANSFORMFUNC); -printf("Transform data points by: "); +printf("Transform data points by: "); wiggleTransformFuncDropDown(option, transformFunc); +puts("</TD></TR>"); if (!isLogo) { - printf("<TR valign=center><th align=right>Windowing function:</th><td align=left>"); + printf("<TR valign=middle><th align=right>Windowing function:</th><td align=left>"); safef(option, sizeof(option), "%s.%s", name, WINDOWINGFUNCTION ); wiggleWindowingDropDown(option, windowingFunction); + puts("</TD>"); printf("<th align=right>Smoothing window:</th><td align=left>"); safef(option, sizeof(option), "%s.%s", name, SMOOTHINGWINDOW ); wiggleSmoothingDropDown(option, smoothingWindow); puts(" pixels</TD></TR>"); + printf("<TR valign=middle>"); printf("<th align=right>Negate values:</th><td align=left>"); safef(option, sizeof(option), "%s.%s", name, DONEGATIVEMODE ); cgiMakeCheckBox(option, doNegative); + puts("</TD></TR>"); - printf("<TR valign=center><td align=right><b>Draw y indicator lines:</b>" + printf("<TR valign=middle><td align=right><b>Draw y indicator lines:</b></td>" "<td align=left colspan=2>"); printf("at y = 0.0:"); safef(option, sizeof(option), "%s.%s", name, HORIZGRID ); wiggleGridDropDown(option, horizontalGrid); printf(" at y ="); safef(option, sizeof(option), "%s.%s", name, YLINEMARK ); cgiMakeDoubleVarInRange(option, yLineMark, "Indicator at Y", 0, NULL, NULL); safef(option, sizeof(option), "%s.%s", name, YLINEONOFF ); wiggleYLineMarkDropDown(option, yLineMarkOnOff); - printf("</td>"); } if (boxed) puts("</TD></TR></TABLE>"); else { puts("</TD></TR></TABLE>"); if (!isLogo) printf("<A HREF=\"%s\" TARGET=_blank>Graph configuration help</A>",WIGGLE_HELP_PAGE); } // add a little javascript call to make sure we don't get whiskers with stacks in multiwigs if (didAggregate) jsInlineF("$(function () { multiWigSetupOnChange('%s'); });\n", name); @@ -7975,33 +7979,33 @@ /* BAM: short-read-oriented alignment file format. */ { boxed = cfgBeginBoxAndTitle(tdb, boxed, title); char cartVarName[1024]; printf("<TABLE%s><TR><TD>",boxed?" width='100%'":""); bamAddBaseAndIndelSettings(tdb); // Deal with tdb being from a subtrack when a view is being configured, ugh: if (differentString(tdb->track, name) && tdb->parent != NULL && sameString(tdb->parent->type, "bam")) bamAddBaseAndIndelSettings(tdb->parent); #ifdef NOTNOW // temporarily (?) remove this check box because code doesn't allow for setting wiggle options char *showWig = cartOrTdbString(cart, tdb, BAMWIG_MODE, "0"); safef(cartVarName, sizeof(cartVarName), "%s.%s", name, BAMWIG_MODE); cgiMakeCheckBox(cartVarName, SETTING_IS_ON(showWig)); -printf("</TD><TD>Only show coverage of reads</TD>"); -printf("</TR>\n"); +printf("</TD><TD>Only show coverage of reads"); #endif +printf("</TD></TR>\n"); printf("<TR><TD>\n"); char *showNames = cartOrTdbString(cart, tdb, BAM_SHOW_NAMES, "0"); safef(cartVarName, sizeof(cartVarName), "%s.%s", name, BAM_SHOW_NAMES); cgiMakeCheckBox(cartVarName, SETTING_IS_ON(showNames)); printf("</TD><TD>Display read names</TD>"); if (boxed && fileExists(hHelpFile("hgBamTrackHelp"))) printf("<TD style='text-align:right'><A HREF=\"../goldenPath/help/hgBamTrackHelp.html\" " "TARGET=_BLANK>BAM configuration help</A></TD>"); printf("</TR>\n"); boolean canPair = (cartOrTdbString(cart, tdb, BAM_PAIR_ENDS_BY_NAME, NULL) != NULL); if (canPair) { char *doPairing = cartOrTdbString(cart, tdb, BAM_PAIR_ENDS_BY_NAME, "0"); printf("<TR><TD>"); @@ -8235,30 +8239,31 @@ printf("<TR id=\"tr_cfg_%s\"", viewName); if (( firstOpened == -1 && !compositeViewCfgExpandedByDefault(parentTdb,membersOfView->tags[ix],NULL)) || (firstOpened != -1 && firstOpened != ix)) printf(" style=\"display:none\""); printf("><TD width=10> </TD>"); int ix2=ix; while (0 < ix2--) printf("<TD width=100> </TD>"); printf("<TD colspan=%d>",membersOfView->count+1); if (configurable[ix] != cfgNone) { // Hint: subtrack is model but named for view cfgByCfgType(configurable[ix],db,cart,view->subtracks,view->track, membersOfView->titles[ix],TRUE); } + printf("</TD></TR>"); } } } puts("</TABLE>"); freeMem(matchedViewTracks); return TRUE; } char *compositeLabelWithVocabLink(char *db,struct trackDb *parentTdb, struct trackDb *childTdb, char *vocabType, char *label) // If the parentTdb has a controlledVocabulary setting and the vocabType is found, // then label will be wrapped with the link to display it. Return string is cloned. { char *vocab = trackDbSetting(parentTdb, "controlledVocabulary"); @@ -9007,31 +9012,31 @@ dimensionX->tags[ixX],dimensionY->tags[ixY]); else printf("<TD class='matCell %s'></TD>\n", (dimensionX ? dimensionX->tags[ixX] : dimensionY->tags[ixY])); } } } if (dimensionX && cntX>MATRIX_RIGHT_BUTTONS_AFTER) matrixYheadings(db,parentTdb, membersForAll,ixY,FALSE); puts("</TR>\n"); } } if (dimensionY && cntY>MATRIX_BOTTOM_BUTTONS_AFTER) matrixXheadings(db,parentTdb,membersForAll,FALSE); -puts("</TD></TR></TABLE>"); +puts("</TABLE>"); // if there is a treeImage, put it beside the matrix if (treeImage != NULL) printf("</TD><TD><IMG SRC=\"%s\"></TD></TABLE>", treeImage); // If any filter additional filter composites, they can be added at the end. compositeUiByFilter(db, cart, parentTdb, formName); fastMatixToSubtrackMap(); return TRUE; } static boolean compositeUiAllButtons(char *db, struct cart *cart, struct trackDb *parentTdb, char *formName)