2eecd47992bf6fcfee294854359117d81167459a max Sat Sep 5 15:51:03 2026 -0700 hgc: show the trackDb iframeUrl frame with the item details, not above them The iframe from the iframeUrl setting was written out before anything else on the details page, which is unlike every other part of a details page. It now appears just below the "View DNA for this feature" line, with the rest of the details. Rather than move each of the printIframe() calls, which all happen before the position is known, printIframe() now only builds the html and a new printPendingIframe() writes it out from the position-printing routines. That covers bigBed, bigPsl and the generic click handler alike. The lorax details page prints it immediately, since there the iframe is the page itself. Also, a track with an iframeUrl but no url setting never showed its iframe at all, refs #37595 diff --git src/hg/hgc/hgc.h src/hg/hgc/hgc.h index abda4b2f4a1..251fde51f21 100644 --- src/hg/hgc/hgc.h +++ src/hg/hgc/hgc.h @@ -1,626 +1,632 @@ /* hgc - Human Genome Click processor - gets called when user clicks * on something in human tracks display. This file contains stuff * shared with other modules in hgc, but not in other programs. */ /* Copyright (C) 2014 The Regents of the University of California * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */ #ifndef HGC_H #define HGC_H #ifndef CART_H #include "cart.h" #endif #ifndef TRACKDB_H #include "trackDb.h" #endif #ifndef BED_H #include "bed.h" #endif #ifndef HDB_H #include "hdb.h" #endif #ifndef HPRINT_H #include "hPrint.h" #endif #ifndef CUSTOMTRACK_H #include "customTrack.h" #endif #ifndef WIKITRACK_H #include "wikiTrack.h" #endif #ifndef VARIOME_H #include "variome.h" #endif #ifndef BEDDETAIL_H #include "bedDetail.h" #endif #include "hgdpGeo.h" #include "dnaMotif.h" #include "togaClick.h" #include "featureBits.h" #include "snp125.h" extern struct cart *cart; /* User's settings. */ extern char *seqName; /* Name of sequence we're working on. */ extern int winStart, winEnd; /* Bounds of sequence. */ extern char *database; /* Name of mySQL database. */ extern char *organism; /* Colloquial name of organism. */ extern char *genome; /* common name, e.g. Mouse, Human */ extern char *scientificName; /* Scientific name of organism. */ extern struct hash *trackHash; /* A hash of all tracks - trackDb valued */ // A helper struct for allowing variable sized user defined tables. Each table // is encoded in one field of the bigBed with '|' as column separators and ';' as // field separators. struct embeddedTbl { struct embeddedTbl *next; // the next custom table char *field; // field name from bigBed, used as title when title is NULL char *title; // title of the table from trackDb, may be NULL char *encodedTbl; // contents of field in bigBed }; void hgcStart(char *title); /* Print out header of web page with title. Set * error handler to normal html error handler. */ char *hgcPath(); /* Return path of this CGI script. */ char *hgcPathAndSettings(); /* Return path with this CGI script and session state variable. */ void hgcAnchorSomewhere(char *group, char *item, char *other, char *chrom); /* Generate an anchor that calls click processing program with item * and other parameters. */ void hgcAnchorWindow(char *group, char *item, int thisWinStart, int thisWinEnd, char *other, char *chrom); /* Generate an anchor that calls click processing program with item * and other parameters, INCLUDING the ability to specify left and * right window positions different from the current window*/ void hgcAnchor(char *group, char *item, char *other); /* Generate an anchor that calls click processing program with item * and other parameters. */ struct trackDb *tdbForTableArg(); /* get trackDb for track passed in table arg */ void writeFramesetType(); /* Write document type that shows a frame set, rather than regular HTML. */ void htmlFramesetStart(char *title); /* Write DOCTYPE HTML and HEAD sections for framesets. */ void alnModernStart(char *classicTitle); /* Begin an alignment page: modern single-page chrome when the modernAlignPage hg.conf flag is set * (showSomeAlignment then renders the modern body), else the classic