cee097b75fe4d1b29f0debd8af938ba6bf729d53 max Tue Aug 11 08:18:42 2026 -0700 hgBlat: new client-rendered BLAT search form and sortable results page, refs #37893 An opt-in modern alternative to the classic hyperlink output, gated by the blatNewForm / blatNewPage hg.conf flags. hgBlat.c emits the hit data and form config as inline JSON (hgBlatData / hgBlatFormData) into empty containers, and hgBlat.js builds the UI: the search form, a sortable/filterable DataTable with identity and query-coverage bars, a docked per-hit detail panel, a FASTA query viewer, and share-link and rename-track modals. - hgBlat.css: all styling for both pages, loaded via webIncludeResourceFile (not injected from JS); layout uses CSS classes rather than inline styles. - utils.js: setupGenomeSelector, the combobox genome picker the form uses. - hgc.c: blatOldTracks / blatKeepResults - the "Keep results" checkbox lets a user accumulate BLAT result tracks instead of each search replacing the last. - hgConfCatalog: register the blatNewForm / blatNewFormBanner gates. - blatExample.fa: the example query the form loads on demand. Markup is built in JS (escaped values via htmlEncode, everything else set through DOM properties); no HTML strings in the C or a template engine. diff --git src/hg/htdocs/style/makefile src/hg/htdocs/style/makefile index ddf4b8e57dc..84cc736a001 100644 --- src/hg/htdocs/style/makefile +++ src/hg/htdocs/style/makefile @@ -1,65 +1,65 @@ kentSrc = ../../.. include ../../../inc/common.mk # recursive target to do install to DEST, with extra excludes EXCL. ifeq (${FIND},) INSIDEGIT := $(shell git rev-parse --is-inside-work-tree 2>/dev/null) ifeq (${INSIDEGIT},true) FIND = gitFiles else FIND = find endif endif CSS_FILES=HGStyle.css assemblySearch.css autocomplete.css blueStyle.css \ dataTables-1.10.12.min.css dataTables-1.13.6.min.css dataTables-2.2.2.min.css \ dataTables.buttons-3.2.2.min.css dataTables.select-1.7.0.min.css \ dataTables.select-3.0.0.min.css \ encodeProject.css facetedComposite.css facets.css floretStyle.css gar.css \ hgHubConnect.css hgMyData.css jquery-ui.css jquery.contextmenu.css \ jquery.ui.autocomplete.css jquery.ui.colorPicker.css \ jquery.treetable.css jquery.treetable.theme.default.css \ jstree-3.3.7.min.css \ jWest.css jWest.afterNiceMenu.css liftRequest.css mouseOver.css \ theme-modern.css ui.dropdownchecklist.css nice_menu.css \ encodeDataMatrix.css encodeDataSummary.css userAccounts.css \ encode3.css encode3Ucsc.css bootstrap.min.css \ - gbStatic.css gb.css gbAfterMenu.css hgGtexTrackSettings.css \ + gbStatic.css gb.css gbAfterMenu.css hgGtexTrackSettings.css hgBlat.css \ spectrum.min.css font-awesome.min.css \ theme-classic.css theme-dark.css theme-modern.css \ bootstrap-3-3-7.min.css shepherd.css \ reveal-5.1.0.css reveal-white-5.1.0.css user: if test -d ${DOCUMENTROOT}-${USER}; then \ ${MAKE} doInstall DEST=${DOCUMENTROOT}-${USER}/style; \ fi alpha: ${GITUP} ${MAKE} doInstall DEST=${DOCUMENTROOT}/style beta: ${GITUP} ${MAKE} doInstall DEST=${DOCUMENTROOT}-beta/style extra=-forceVersionNumbers clean: compile: # Run rsync. Care is taken to preserve times and modes on files. rsync is # smart about recreating files under the current users so that times and # permissions may be modified. However, problems happen when a directory # is not owned by the current users. These options attemp to work around it. # use care in changing rsyncOpts = --whole-file --times --recursive --omit-dir-times --relative --cvs-exclude --exclude='makefile' --exclude='cpAndLinkToResourceFiles.pl' --exclude='style/*' install: ${MAKE} doInstall DEST=${DOCUMENTROOT}/style doInstall: @mkdir -p ${DEST}/ ../../utils/cpAndLinkToResourceFiles.pl ${extra} -destDir=${DEST} -versionFile=../../inc/versionInfo.h ${CSS_FILES} umask 002; rsync ${rsyncOpts} `$(FIND) images` ${DEST} umask 002; rsync ${rsyncOpts} jstree-default ${DEST}