src/hg/hgTrackUi/hgTrackUi.c 1.483

1.483 2009/03/19 21:13:00 tdreszer
Add 'Reset to defaults' to hgTrackUi. Currently only applied to multi-view, because it relies on cart var naming convention {tableName}.{varName}...
Index: src/hg/hgTrackUi/hgTrackUi.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTrackUi/hgTrackUi.c,v
retrieving revision 1.482
retrieving revision 1.483
diff -b -B -U 4 -r1.482 -r1.483
--- src/hg/hgTrackUi/hgTrackUi.c	18 Mar 2009 21:10:26 -0000	1.482
+++ src/hg/hgTrackUi/hgTrackUi.c	19 Mar 2009 21:13:00 -0000	1.483
@@ -2429,11 +2429,31 @@
     }
 makeDownloadsLink(tdb);
 }
 
+
 void trackUi(struct trackDb *tdb, struct customTrack *ct)
 /* Put up track-specific user interface. */
 {
+jsIncludeFile("jquery.js", NULL);
+jsIncludeFile("utils.js",NULL);
+jsIncludeFile("ajax.js", NULL);
+#define SUPPORT_RESET_TO_DEFAULTS
+#ifdef SUPPORT_RESET_TO_DEFAULTS
+#define RESET_TO_DEFAULTS "defaults"
+char setting[128];
+// NOTE: Currently only composite multi-view tracks because
+// reset relies upon all cart vars following naming convention:
+//   {tableName}.{varName}...  ( One exception supported: {tableName}_sel ).
+if(tdbIsComposite(tdb) && subgroupingExists(tdb,"view"))
+    {
+    safef(setting,sizeof(setting),"%s.%s",tdb->tableName,RESET_TO_DEFAULTS);
+    // NOTE: if you want track vis to not be reset, move to after vis dropdown
+    if(1 == cartUsualInt(cart, setting, 0))
+        cartRemoveAllForTdbAndChildren(cart,tdb);
+    }
+#endif//def SUPPORT_RESET_TO_DEFAULTS
+
 printf("<FORM ACTION=\"%s\" NAME=\""MAIN_FORM"\" METHOD=%s>\n\n",
        hgTracksName(), cartUsualString(cart, "formMethod", "POST"));
 cartSaveSession(cart);
 printf("<H1>%s%s</H1>\n", tdb->longLabel, tdbIsSuper(tdb) ? " Tracks" : "");
@@ -2476,8 +2496,14 @@
         tdb->canPack, "normalText", trackDbSetting(tdb, "onlyVisibility"));
     }
 printf("&nbsp;");
 cgiMakeButton("Submit", "Submit");
+
+#ifdef SUPPORT_RESET_TO_DEFAULTS
+if(tdbIsComposite(tdb) && subgroupingExists(tdb,"view"))
+    printf("\n&nbsp;&nbsp;<a href='#' onclick='setCartVarAndRefresh(\"%s\",\"1\"); return false;'>Reset to defaults</a>\n",setting);
+#endif//def SUPPORT_RESET_TO_DEFAULTS
+
 if (ct)
     {
     puts("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
     cgiMakeButton(CT_DO_REMOVE_VAR, "Remove custom track");