48cd1865d252867ebbd3852d76bed271d0028d29 max Tue Jun 30 05:33:14 2026 -0700 hgBlat: move showAliPlaces autoBigPsl inline JS into src/hg/js/hgBlat.js The "Create a stable custom track" (autoBigPsl) results page emitted ~140 lines of JavaScript as C string literals via jsInlineF/jsInline. Move that code into a real, jshint-clean hgBlat.js and have hgBlat.c emit only a small hgBlatData config object (url, trackName, trackDescription, and the custom-track cart var names) plus a jsIncludeFile("hgBlat.js"). Behavior is unchanged. The track name/description are still javaScriptLiteralEncode'd before interpolation. diff --git src/hg/hgBlat/hgBlat.c src/hg/hgBlat/hgBlat.c index bbed0916c9e..938fbea957b 100644 --- src/hg/hgBlat/hgBlat.c +++ src/hg/hgBlat/hgBlat.c @@ -579,33 +579,48 @@ struct dyString *url = dyStringNew(256); dyStringPrintf(url, "http%s://%s", sameOk(getenv("HTTPS"), "on") ? "s" : "", getenv("HTTP_HOST")); dyStringPrintf(url, "%s", hgcUrl+2); dyStringPrintf(url, "?o=%d", psl->tStart); dyStringPrintf(url, "&t=%d", psl->tEnd); dyStringPrintf(url, "&g=%s", "buildBigPsl"); dyStringPrintf(url, "&i=%s", cgiEncode(item)); dyStringPrintf(url, "&c=%s", cgiEncode(psl->tName)); dyStringPrintf(url, "&l=%d", psl->tStart); dyStringPrintf(url, "&r=%d", psl->tEnd); dyStringPrintf(url, "&%s=%s", cartSessionVarName(), cartSessionId(cart)); dyStringPrintf(url, "&Submit=%s", cgiEncode("Create a stable custom track with these results")); if (pslIsProtein(psl)) dyStringPrintf(url, "&isProt=on"); + /* Pass this request's parameters to hgBlat.js, which builds (and lets the + user rename or delete) a stable bigPsl custom track from the blat result. */ + char *trackNameJs = javaScriptLiteralEncode(trackName); + char *trackDescriptionJs = javaScriptLiteralEncode(trackDescription); + jsIncludeFile("hgBlat.js", NULL); jsInlineF( "var luckyLocation = '';\n" - ); + "var hgBlatData = {\n" + " url: '%s',\n" + " trackName: '%s',\n" + " trackDescription: '%s',\n" + " ctTableVar: '%s',\n" + " ctRemoveVar: '%s'\n" + " };\n", + url->string, trackNameJs, trackDescriptionJs, + CT_SELECTED_TABLE_VAR, CT_DO_REMOVE_VAR); + freeMem(trackNameJs); + freeMem(trackDescriptionJs); if(feelingLucky) { /* If we found something jump browser to there. */ if(slCount(pslList) > 0) printLuckyRedirect(browserUrl, pslList, database, pslName, faName, uiState, unhideTrack); } // RENAME BLAT CT FORM // new re-submit code with new trackname and decription if (!feelingLucky) { printf("