7c0f858f25aac46cc49fbdb588a24ee9baeb8da3
tdreszer
  Wed Aug 17 15:41:37 2011 -0700
dateUnrestricted should no longer be calculated off of dateSubmitted.  It should also no longer be seen in hgc or hgTables when it is in the past.
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 9038544..7ab3cb3 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -3728,64 +3728,47 @@
     case cfgBedFilt:    bedUi(tdb,cart,title, boxed);
                  	break;
 #ifdef USE_BAM
     case cfgBam:        bamCfgUi(cart, tdb, prefix, title, boxed);
 			break;
 #endif
     case cfgVcf:	vcfCfgUi(cart, tdb, prefix, title, boxed);
 			break;
     case cfgPsl:	pslCfgUi(db,cart,tdb,prefix,title,boxed);
                         break;
     default:            warn("Track type is not known to multi-view composites. type is: %d ", cType);
                         break;
     }
 }
 
-char *encodeRestrictionDateDisplay(char *db,struct trackDb *trackDb)
+char *encodeRestrictionDate(char *db,struct trackDb *trackDb,boolean excludePast)
 /* Create a string for ENCODE restriction date of this track
    if return is not null, then free it after use */
 {
 if (!trackDb)
     return NULL;
 
-boolean addMonths = FALSE;
 char *date = NULL;
 
 if(metadataForTable(db,trackDb,NULL) != NULL)
     {
-    addMonths = FALSE;
     date = cloneString((char *)metadataFindValue(trackDb,"dateUnrestricted"));
-    if(date == NULL)  // TODO: The logic to calculate date based upon dateSubmitted should be removed.  However, I don't think we can do it until the mdb is used for all hg18 composites.
-        {
-        date = cloneString((char *)metadataFindValue(trackDb,"dateSubmitted"));
-        addMonths = TRUE;
-        }
-    }
-if(date == NULL)
-    {
-    date = trackDbSetting(trackDb, "dateSubmitted");
-    if(date)
-        {
-        addMonths = TRUE;
-        date = cloneString(date); // all returns should be freeable memory
-        }
-    }
 if (date != NULL)
-    {
-    date = strSwapChar(date, ' ', 0);   // Truncate time
-    if(addMonths)
-        date = dateAddTo(date, "%F", 0, 9, 0);
+        date = strSwapChar(date, ' ', 0);   // Truncate time (not expected, but just in case)
+
+    if (excludePast && dateIsOld(date,"%F"))
+        freez(&date);
     }
 return date;
 }
 
 static void cfgLinkToDependentCfgs(struct cart *cart, struct trackDb *tdb,char *prefix)
 /* Link composite or view level controls to all associateled lower level controls */
 {
 if (!cartVarExists(cart, "ajax") && tdbIsComposite(tdb))
 #ifdef SUBTRACK_CFG_POPUP
     printf("<script type='text/javascript'>registerViewOnchangeAction('%s')</script>\n",prefix);
 #else///ifndef SUBTRACK_CFG_POPUP
     printf("<script type='text/javascript'>compositeCfgRegisterOnchangeAction(\"%s\")</script>\n",prefix);
 #endif///ndef SUBTRACK_CFG_POPUP
 }
 
@@ -4134,31 +4117,31 @@
         MAKE_CFG_SUBTRACK_DIV(subtrack->track,htmlIdentifier,open);
         safef(htmlIdentifier,sizeof(htmlIdentifier),"%s",subtrack->track);
         cfgByCfgType(cType,db,cart,subtrack,htmlIdentifier,"Subtrack",TRUE);
         printf("</DIV>");
         }
 #endif///ndef SUBTRACK_CFG_POPUP
 
     // A schema link for each track
     printf("</td>\n<TD>&nbsp;");
     makeSchemaLink(db,subtrack,"schema");
     printf("&nbsp;");
 
     // Do we have a restricted until date?
     if (restrictions)
         {
-        char *dateDisplay = encodeRestrictionDateDisplay(db,subtrack);
+        char *dateDisplay = encodeRestrictionDate(db,subtrack,FALSE); // includes dates in the past
         if (dateDisplay)
             {
             if (dateIsOld(dateDisplay,"%F"))
                 printf("</TD>\n<TD align='center' nowrap style='color: #BBBBBB;'>&nbsp;%s&nbsp;", dateDisplay);
             else
                 printf("</TD>\n<TD align='center'>&nbsp;%s&nbsp;", dateDisplay);
             }
         }
 
     // End of row and free ourselves of this subtrack
     puts("</TD></TR>\n");
     checkBoxIdFree(&id);
     }
 
 // End of the table
@@ -6391,31 +6374,30 @@
             first = FALSE;
             }
         }
     }
 dyStringPrintf(dyLink,VOCAB_MULTILINK_END,members->groupTitle,members->groupTitle);
 freeMem(vocab);
 return dyStringCannibalize(&dyLink);
 }
 
 static boolean compositeUiByFilter(char *db, struct cart *cart, struct trackDb *parentTdb, char *formName)
 /* UI for composite tracks: filter subgroups by multiselects to select subtracks. */
 {
 membersForAll_t* membersForAll = membersForAllSubGroupsGet(parentTdb,cart);
 if(membersForAll == NULL || membersForAll->filters == FALSE) // Not Matrix or filters
     return FALSE;
-jsIncludeFile("ui.core.js",NULL);
 webIncludeResourceFile("ui.dropdownchecklist.css");
 jsIncludeFile("ui.dropdownchecklist.js",NULL);
 #ifdef NEW_JQUERY
 jsIncludeFile("ddcl.js",NULL);
 #endif///def NEW_JQUERY
 
 cgiDown(0.7);
 printf("<B>Filter subtracks %sby:</B> (select multiple %sitems - %s)<BR>\n",
        (membersForAll->members[dimX] != NULL || membersForAll->members[dimY] != NULL ? "further ":""),
        (membersForAll->dimMax == dimA?"":"categories and "),FILTERBY_HELP_LINK);
 printf("<TABLE><TR valign='top'>\n");
 
 // Do All [+][-] buttons
 if(membersForAll->members[dimX] == NULL && membersForAll->members[dimY] == NULL) // No matrix
     {