Esempio n. 1
0
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);
}
Esempio n. 2
0
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");
}