char *hgFindSpecSetting(struct hgFindSpec *hfs, char *name) /* Return setting string or NULL if none exists. */ { if (hfs == NULL) errAbort("Program error: null hfs passed to hgFindSpecSetting."); if (hfs->settingsHash == NULL) hfs->settingsHash = raFromString(hfs->searchSettings); return hashFindVal(hfs->settingsHash, name); }
void galleryDisplay(struct galleryEntry *galList) /* Print a table containing the gallery data from galList */ { struct galleryEntry *thisSession = galList; /* Hide the orderable columns and disable ordering on the visible columns * https://datatables.net/reference/option/columnDefs for more info. * Then set up the ordering drop-down menu */ printf ("<script type=\"text/javascript\">"); printf("$(document).ready(function () {\n" " $('#sessionTable').DataTable({\"columnDefs\": [{\"visible\":false, \"targets\":[2,3]},\n" " {\"orderable\":false, \"targets\":[0,1]}\n" " ],\n" " \"dom\":\"lftip\",\n" " \"stateSave\":true,\n" " \"stateSaveCallback\": %s,\n" " \"stateLoadCallback\": %s,\n" " });\n" /* Recover previous sorting choice from the cart settings, if available */ " var startOrder = $('#sessionTable').DataTable().order();\n" " if (startOrder[0][0] == 3) {\n" " if (startOrder[0][1] == \"asc\") {\n" " $('#sortMethod').val(\"useAsc\");\n" " } else {\n" " $('#sortMethod').val(\"useDesc\");\n" " }\n" " } else {\n" " if (startOrder[0][0] == 2) {\n" " if (startOrder[0][1] == \"asc\") {\n" " $('#sortMethod').val(\"dateAsc\");\n" " } else {\n" " $('#sortMethod').val(\"dateDesc\");\n" " }\n" " } else {\n" " $('#sessionTable').DataTable().order([3,'desc']).draw();\n" " $('#sortMethod').val(\"useDesc\");\n" " }\n" " }\n" "});\n", jsDataTableStateSave(hgPublicSessionsPrefix), jsDataTableStateLoad(hgPublicSessionsPrefix, cart)); printf ("function changeSort() {\n" " var newSort = document.getElementById('sortMethod').value;\n" " var theTable = $('#sessionTable').DataTable();\n" " if (newSort == \"useDesc\") {theTable.order([3,'desc']).draw(); }\n" " if (newSort == \"useAsc\") {theTable.order([3,'asc']).draw(); }\n" " if (newSort == \"dateDesc\") {theTable.order([2,'desc']).draw(); }\n" " if (newSort == \"dateAsc\") {theTable.order([2,'asc']).draw(); }\n" "}\n"); printf("</script>\n"); printf ("<p>\n"); printf ("<b>Sort by:</b> <select id=\"sortMethod\" onchange=\"changeSort()\">\n"); printf ("\t\t<option value=\"useDesc\">Popularity (descending)</option>\n"); printf ("\t\t<option value=\"useAsc\">Popularity (ascending)</option>\n"); printf ("\t\t<option value=\"dateDesc\">Creation (newest first)</option>\n"); printf ("\t\t<option value=\"dateAsc\">Creation (oldest first)</option>\n"); printf ("</select></p>\n"); printf ("<table id=\"sessionTable\" class=\"sessionTable stripe hover row-border compact\" width=\"100%%\">\n" " <thead>" " <tr>" " <th>Screenshot</th>\n" " <th>Session Properties</th>\n" " <th>Creation Date</th>\n" " <th>Use Count</th>\n" " </tr>\n" " </thead>\n"); printf ("<tbody>\n"); while (thisSession != NULL) { char *settingString = NULL; printf ("\t<tr>\n"); if (isNotEmpty(thisSession->imgUri)) { printf ("\t\t<td><a href=\"../cgi-bin/hgTracks?%s\">", dyStringContents(thisSession->sessionUrl)); printf ("<img src=\"%s\" class=\"sessionThumbnail\"></a></td>\n", thisSession->imgUri); } else { printf ("\t\t<td><center><nobr>Screenshot not available</nobr><br>\n"); printf ("\t\t<a href=\"../cgi-bin/hgTracks?%s\">Click Here</a> to view</center></td>\n", dyStringContents(thisSession->sessionUrl)); } struct hash *settingsHash = raFromString(thisSession->settings); settingString = (char*) hashFindVal(settingsHash, "description"); if (settingString == NULL) settingString = ""; else { settingString = replaceChars(settingString, "\\\\", "\\__ESC__"); settingString = replaceChars(settingString, "\\r", "\r"); settingString = replaceChars(settingString, "\\n", "\n"); settingString = replaceChars(settingString, "\\__ESC__", "\\"); } printf ("\t\t<td><b>Description:</b> %s<br>\n", settingString); printf ("\t\t<b>Author:</b> %s<br>\n", thisSession->userName); printf ("\t\t<b>Session Name:</b> %s<br>\n", thisSession->sessionName); printf ("\t\t<b>Genome Assembly:</b> %s<br>\n", thisSession->db); printf ("\t\t<b>Creation Date:</b> %s<br>\n", thisSession->firstUse); printf ("\t\t<b>Views:</b> %ld\n", thisSession->useCount); printf ("\t\t</td>\n"); struct tm creationDate; strptime(thisSession->firstUse, "%Y-%m-%d", &creationDate); /* Hidden columns */ printf ("\t\t<td>%ld</td>\n", mktime(&creationDate)); printf ("\t\t<td>%ld</td>\n", thisSession->useCount); printf ("\t</tr>\n"); thisSession = thisSession->next; } printf ("</tbody>\n"); printf ("</table>\n"); }