84769302d77939430b003999bd6397ecc64207b5 galt Fri Feb 7 15:33:28 2020 -0800 CIRM cdwWebBrowse: Placing the Clear-All-Facets button in a more logical location. Now only visble if some facets have been chosen. diff --git src/hg/lib/tablesTables.c src/hg/lib/tablesTables.c index dab9121..77e170c 100644 --- src/hg/lib/tablesTables.c +++ src/hg/lib/tablesTables.c @@ -393,147 +393,152 @@ boolean withFilters, char *itemPlural, int pageSize, struct fieldedTableSegment *largerContext, struct hash *suggestHash, struct facetField **ffArray, char *visibleFacetList, void (*addFunc)(int)) /* Show a fielded table that can be sorted by clicking on column labels and optionally * that includes a row of filter controls above the labels . * The maxLenField is maximum character length of field before truncation with ... * Pass in 0 for no max */ { if (strchr(returnUrl, '?') == NULL) errAbort("Expecting returnUrl to include ? in showFieldedTable\nIt's %s", returnUrl); if (withFilters || visibleFacetList) showTableFilterInstructionsEtc(table, itemPlural, largerContext, addFunc, visibleFacetList); -// Show top bar with quick-deselects for selected facet values -// as well a clear restriction button that cleans out cdwFile_filter cart var. - if (visibleFacetList) { - char *where = cartUsualString(cart, "cdwFile_filter", ""); - if (!isEmpty(where)) - { - // left column - printf("<div>\n"); + // Show top bar with quick-deselects for selected facet values + // as well a clear restriction button that cleans out cdwFile_filter cart var. - printf("Restricting files to where %s. ", where); + struct dyString *facetBar = dyStringNew(1024); - printf("  "); - printf("<input class='btn btn-secondary' type='button' id='clearRestrictionButton' VALUE=\"Clear Restriction\">"); - jsOnEventById("click", "clearRestrictionButton", - "$('[name=cdwBrowseFiles_page]').val('1');\n" - "$('[name=clearRestriction]').val('1');\n" - "$('#submit').click();\n"); + char *where = cartUsualString(cart, "cdwFile_filter", ""); - printf("<br>"); - } boolean gotSelected = FALSE; struct slName *nameList = slNameListFromComma(visibleFacetList); int f; for (f = 0; f < table->fieldCount; ++f) { struct facetField *field = ffArray[f]; if (slNameInListUseCase(nameList, field->fieldName)) // i.e. is this field a visible facet? { if (!field->allSelected) { - if (!gotSelected) - { - if (isEmpty(where)) // we still need to do this - { - // left column - printf("<div>\n"); - } - htmlPrintf("<dl style='display: inline-block;'>\n"); gotSelected = TRUE; - } - htmlPrintf("<span class='card facet-card' style='display: inline-block;'><span class='card-body'>\n"); - htmlPrintf("<dt style='display: inline-block;'>\n"); - htmlPrintf("<h6 class='card-title'>%s</h6></dt>\n", field->fieldName); + htmlDyStringPrintf(facetBar, "<span class='card facet-card' style='display: inline-block;'><span class='card-body'>\n"); + htmlDyStringPrintf(facetBar, "<dt style='display: inline-block;'>\n"); + htmlDyStringPrintf(facetBar, "<h6 class='card-title'>%s</h6></dt>\n", field->fieldName); struct facetVal *val; // Sort values alphabetically // Make a copy to not disturb the original order struct facetVal *valListCopy = facetsClone(field->valList); slSort(&valListCopy, facetValCmp); for (val = valListCopy; val; val=val->next) { boolean specificallySelected = (val->selected && !field->allSelected); if (specificallySelected) { char *op = "remove"; - printf("<dd class=\"facet\" style='display: inline-block;'>\n"); - htmlPrintf("<input type=checkbox value=%s class=cdwFSCheckBox %s> ", + htmlDyStringPrintf(facetBar, "<dd class=\"facet\" style='display: inline-block;'>\n"); + htmlDyStringPrintf(facetBar, "<input type=checkbox value=%s class=cdwFSCheckBox %s> ", specificallySelected ? "true" : "false", specificallySelected ? "checked" : ""); - htmlPrintf("<a href='../cgi-bin/cdwWebBrowse?%s=%s|url|&cdwCommand=browseFiles" + htmlDyStringPrintf(facetBar, "<a href='../cgi-bin/cdwWebBrowse?%s=%s|url|&cdwCommand=browseFiles" "&browseFiles_facet_op=%s|url|" "&browseFiles_facet_fieldName=%s|url|" "&browseFiles_facet_fieldVal=%s|url|" "&cdwBrowseFiles_page=1' " ">", cartSessionVarName(), cartSessionId(cart), op, field->fieldName, val->val ); - htmlPrintf("%s (%d)</a>", val->val, val->selectCount); - printf("</dd>\n"); + htmlDyStringPrintf(facetBar, "%s (%d)</a>", val->val, val->selectCount); + htmlDyStringPrintf(facetBar, "</dd>\n"); } } slFreeList(&valListCopy); - htmlPrintf("</span></span>\n"); + htmlDyStringPrintf(facetBar, "</span></span>\n"); } } } - if (gotSelected) - htmlPrintf("</dl>\n"); - if (!isEmpty(where) || gotSelected) - printf("</div><br>\n"); - + { + printf("<div>\n"); } -printf("<div class='row'>\n"); // parent container - -if (visibleFacetList) + if (!isEmpty(where)) { - // left column - printf("<div class='col-xs-6 col-sm-4 col-md-4 col-lg-3 col-xl-3'>\n"); - // reset all facet value selections + printf("Restricting files to where %s. ", where); + + printf("  "); + printf("<input class='btn btn-secondary' type='button' id='clearRestrictionButton' VALUE=\"Clear Restriction\">"); + jsOnEventById("click", "clearRestrictionButton", + "$('[name=cdwBrowseFiles_page]').val('1');\n" + "$('[name=clearRestriction]').val('1');\n" + "$('#submit').click();\n"); + + printf("<br>"); + } + + + if (gotSelected) + { + // reset all facet value selections button char *op = "resetAll"; htmlPrintf("<a class='btn btn-secondary' href='../cgi-bin/cdwWebBrowse?%s=%s|url|&cdwCommand=browseFiles" "&browseFiles_facet_op=%s|url|" "&browseFiles_facet_fieldName=%s|url|" "&browseFiles_facet_fieldVal=%s|url|" "&cdwBrowseFiles_page=1' " - ">%s</a><br><br>\n", + ">%s</a>\n", cartSessionVarName(), cartSessionId(cart), op, "", "", "Clear All" ); + printf("<dl style='display: inline-block;'>\n"); + printf("%s\n", facetBar->string); + printf("</dl>\n"); + } + + if (!isEmpty(where) || gotSelected) + printf("</div><br>\n"); + + dyStringFree(&facetBar); + } + +printf("<div class='row'>\n"); // parent container + +if (visibleFacetList) + { + + // left column + printf("<div class='col-xs-6 col-sm-4 col-md-4 col-lg-3 col-xl-3'>\n"); + struct slName *nameList = slNameListFromComma(visibleFacetList); int f; for (f = 0; f < table->fieldCount; ++f) { struct facetField *field = ffArray[f]; if (slNameInListUseCase(nameList, field->fieldName)) // i.e. is this field a visible facet? { htmlPrintf("<div class='card facet-card'><div class='card-body'>\n"); htmlPrintf("<h6 class='card-title'>%s</h6><dl>\n", field->fieldName); struct facetVal *val; if (!field->allSelected) // add reset facet link { char *op = "reset"; htmlPrintf("<dd><a class='btn btn-secondary' href='../cgi-bin/cdwWebBrowse?%s=%s|url|&cdwCommand=browseFiles"