f696e3739df240549d0ef2a172a13f7b4d2a8433
kent
  Thu Jan 28 21:26:51 2021 -0800
Making facet_op be not hard coded

diff --git src/hg/lib/tablesTables.c src/hg/lib/tablesTables.c
index ad19bd7..47a37c2 100644
--- src/hg/lib/tablesTables.c
+++ src/hg/lib/tablesTables.c
@@ -454,36 +454,36 @@
 	    // 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";
 		    htmlDyStringPrintf(facetBar, "<dd class=\"facet\" style='display: inline-block;'>\n");
 		    htmlDyStringPrintf(facetBar, "<input type=checkbox value=%s class=cdwFSCheckBox %s>&nbsp;",
 			specificallySelected ? "true" : "false", 
 			specificallySelected ? "checked" : "");
 		    htmlDyStringPrintf(facetBar, "<a href='%s"
-			    "&browseFiles_facet_op=%s|url|"
+			    "&%s_facet_op=%s|url|"
 			    "&browseFiles_facet_fieldName=%s|url|"
 			    "&browseFiles_facet_fieldVal=%s|url|"
 			    "&%s_page=1' "
 			    ">",
-			returnUrl,
+			returnUrl, varPrefix,
 			op, field->fieldName, val->val, varPrefix
 			);
 		    htmlDyStringPrintf(facetBar, "%s (%d)</a>", val->val, val->selectCount);
 		    htmlDyStringPrintf(facetBar, "</dd>\n");
 		    }
 		}
 	    slFreeList(&valListCopy);
 	    
 	    htmlDyStringPrintf(facetBar, "</span></span>\n");
 
 	    }
 
 	}
 
     if (!isEmpty(where) || gotSelected)
@@ -503,36 +503,36 @@
 	safef(jsText, sizeof(jsText),
 	    "$('[name=%s_page]').val('1');\n"
 	    "$('[name=clearRestriction]').val('1');\n"
 	    "$('#submit').click();\n", varPrefix);
 	jsOnEventById("click", "clearRestrictionButton", jsText);
 
 	printf("<br>");
         }
 
 
     if (gotSelected)
 	{
 	// reset all facet value selections button
 	char *op = "resetAll";
 	htmlPrintf("<a class='btn btn-secondary' href='%s"
-	    "&browseFiles_facet_op=%s|none|"
+	    "&%s_facet_op=%s|none|"
 	    "&browseFiles_facet_fieldName=%s|url|"
 	    "&browseFiles_facet_fieldVal=%s|url|"
 	    "&%s_page=1' "
 		">%s</a>\n",
-		returnUrl, op, "", "", varPrefix, "Clear All"
+		returnUrl, varPrefix, op, "", "", varPrefix, "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
 
@@ -544,104 +544,104 @@
 
     struct slName *visList = slNameListFromComma(visibleFacetList);
     struct slName *vis;
     for (vis = visList; vis != NULL; vis = vis->next)
 	{
 	int f = fieldedTableMustFindFieldIx(table, vis->name);
 	struct facetField *field = ffArray[f];
 	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='%s"
-		    "&browseFiles_facet_op=%s|url|"
+		    "&%s_facet_op=%s|url|"
 		    "&browseFiles_facet_fieldName=%s|url|"
 		    "&browseFiles_facet_fieldVal=%s|url|"
 		    "&%s_page=1' "
 		    ">%s</a></dd>\n",
-		returnUrl,
+		returnUrl, varPrefix,
 		op, field->fieldName, "", varPrefix,
 		"Clear"
 		);
 	    }
 
 	int valuesShown = 0;
 	int valuesNotShown = 0;
 	if (field->showAllValues)  // Sort alphabetically if they want all values 
 	    {
 	    slSort(&field->valList, facetValCmp);
 	    }
 	for (val = field->valList; val; val=val->next)
 	    {
 	    boolean specificallySelected = (val->selected && !field->allSelected);
 	    if ((val->selectCount > 0 && (field->showAllValues || valuesShown < facetUsualSize))
 		|| specificallySelected)
 		{
 		++valuesShown;
 		char *op = "add";
 		if (specificallySelected)
 		    op = "remove";
 		printf("<dd class=\"facet\">\n");
 		htmlPrintf("<input type=checkbox value=%s class=cdwFSCheckBox %s>&nbsp;",
 		    specificallySelected ? "true" : "false", 
 		    specificallySelected ? "checked" : "");
 		htmlPrintf("<a href='%s"
-			"&browseFiles_facet_op=%s|none|"
+			"&%s_facet_op=%s|none|"
 			"&browseFiles_facet_fieldName=%s|url|"
 			"&browseFiles_facet_fieldVal=%s|url|"
 			"&%s_page=1' "
 			">",
-		    returnUrl,
+		    returnUrl, varPrefix,
 		    op, field->fieldName, val->val, varPrefix
 		    );
 		htmlPrintf("%s (%d)</a>", val->val, val->selectCount);
 		printf("</dd>\n");
 		}
 	    else if (val->selectCount > 0)
 		{
 		++valuesNotShown;
 		}
 	    }
 
 	// show "See More" link when facet has lots of values
 	if (valuesNotShown > 0)
 	    {
 	    char *op = "showAllValues";
 	    htmlPrintf("<dd><a href='%s"
-		    "&browseFiles_facet_op=%s|url|"
+		    "&%s_facet_op=%s|url|"
 		    "&browseFiles_facet_fieldName=%s|url|"
 		    "&browseFiles_facet_fieldVal=%s|url|"
 		    "&%s_page=1' "
 		    ">See %d More</a></dd>\n",
-		returnUrl, op, field->fieldName, "", varPrefix, valuesNotShown 
+		returnUrl, varPrefix, op, field->fieldName, "", varPrefix, valuesNotShown 
 		);
 	    }
 
 	// show "See Fewer" link when facet has lots of values
 	if (field->showAllValues && valuesShown >= facetUsualSize)
 	    {
 	    char *op = "showSomeValues";
 	    htmlPrintf("<dd><a href='%s"
-		    "&browseFiles_facet_op=%s|url|"
+		    "&%s_facet_op=%s|url|"
 		    "&browseFiles_facet_fieldName=%s|url|"
 		    "&browseFiles_facet_fieldVal=%s|url|"
 		    "&%s_page=1' "
 		    ">%s</a></dd>\n",
-		returnUrl, op, field->fieldName, "", varPrefix,
+		returnUrl, varPrefix, op, field->fieldName, "", varPrefix,
 		"See Fewer"
 		);
 	    }
 	htmlPrintf("</div></div>\n");
 	}
     printf("</div>\n");
     // Clicking a checkbox is actually a click on the following link
     jsInlineF(
 	"$(function () {\n"
 	"  $('.cdwFSCheckBox').click(function() {\n"
 	"    this.nextSibling.nextSibling.click();\n"
 	"  });\n"
 	"});\n");
     }