6239b81a7033f90749f836e73703c65eabd0de9c jcasper Fri Apr 10 15:56:31 2026 -0700 Moved js and css includes for faceted composites into hgTrackUi for better detection of file changes. Dynamically change the track visibility based on selected subtracks (hiding it if everything is deselected, making it visible when something is selected). refs #36320 diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c index 0068e030ba2..46eb5b6070e 100644 --- src/hg/hgTrackUi/hgTrackUi.c +++ src/hg/hgTrackUi/hgTrackUi.c @@ -3042,32 +3042,30 @@ */ const int token_size = 1024; // html elements for the controls page (from singleCellMerged) const char pageStyle[] = ""; const char placeholderDiv[] = "
\n"; const char openJSON[] = "\n"; const char openDataTypesJSON[] = "\"dataTypes\":{"; const char closeDataTypesJSON[] = "}"; // closing a dict const char openDataElementsJSON[] = "\"dataElements\":["; const char closeDataElementsJSON[] = "]"; // closing an array -const char metadataTableScriptElement[] = - "\n"; // --- Get data from 'settings' field in 'trackDb' entry --- // required const char *metaDataUrl = trackDbSetting(tdb, "metaDataUrl"); const char *primaryKey = trackDbSetting(tdb, "primaryKey"); struct slPair *dataTypes = parseDataTypes(tdb); boolean hasDataTypes = (dataTypes != NULL); // optional const char *colorSettingsUrl = (const char *)hashFindVal(tdb->settingsHash, "colorSettingsUrl"); const char *maxCheckboxes = (const char *)hashFindVal(tdb->settingsHash, "maxCheckboxes"); // --- done parsing values from trackDb.settings --- const char *metaDataId = tdb->track; @@ -3226,31 +3224,38 @@ } printf(closeDataElementsJSON); printf(",\"mdid\": \"%s\"", metaDataId); printf(",\"primaryKey\": \"%s\"", primaryKey); // must exist if (maxCheckboxes) // only if present in trackDb.settings entry printf(",\"maxCheckboxes\": \"%s\"", maxCheckboxes); if (colorSettingsUrl) // only if present in trackDb.settings entry printf(",\"colorSettingsUrl\": \"%s\"", cgiEncode((char*) colorSettingsUrl)); printf(",\"metadataUrl\": \"%s\"", cgiEncode((char*) metaDataUrl)); printf(",\"track\": \"%s\"", tdb->track); if (isNotEmpty(cartOptionalString(cart, "udcTimeout"))) printf(",\"udcTimeout\": true"); printf(closeJSON); /* --- END embedded JSON data --- */ -printf(metadataTableScriptElement); +jsIncludeFile("dataTables-2.2.2.min.js", NULL); +jsIncludeFile("dataTables.select-3.0.0.min.js", NULL); +jsIncludeFile("facetedComposite.js", NULL); + +webIncludeResourceFile("dataTables-2.2.2.min.css"); +webIncludeResourceFile("dataTables.select-3.0.0.min.css"); +webIncludeResourceFile("facetedComposite.css"); + // cleanup slPairFreeValsAndList(&dataTypes); hashFree(&defaultOn); } void specificUi(struct trackDb *tdb, struct trackDb *tdbList, struct customTrack *ct, boolean ajax) /* Draw track specific parts of UI. */ { char *track = tdb->track; char *db = database; char *liftDb = cloneString(trackDbSetting(tdb, "quickLiftDb")); if (liftDb != NULL) db = liftDb; // Ideally check cfgTypeFromTdb()/cfgByCfgType() first, but with all these special cases already in