Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add timeline web UI to set tag filter and match style. Still not 100%. (1) Now that more than one text entry is on the page, pressing enter does not trigger a submit [Firefox ESR 10.0.12], (2) electing "Related" causes Tag Filter to blank, (3) entering a tag filter while "Related" is selected causes "Related" to be deselected, (4) possibly too much clutter, and (5) definitely too much clutter if combined with any future expansions. (1) is due to the lack of a submit button. (2) and (3) are a bad interaction between the t=/r= dichotomy and the design of style_submenu_entry(). (4) maybe could be addressed by changing "Related"/"Branch Only" and "Without Files"/"With Files" to checkbuttons, but style_submenu_checkbox() was never actually implemented. (Probably also want "Unhide" to be a checkbox.) For (5) I have in mind letting the admin define a project-specific list of preset filters.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | andygoth-timeline-ms
Files: files | file ages | folders
SHA1:d4a6d3c1ec0ed8322c49fe0d180f2a2966c1df67
User & Date: andygoth 2016-11-04 16:21:20
Original Comment: Add timeline web UI to set tag filter and match style. Still not 100%. (1) Now that more than one text entry is on the page, pressing enter does not trigger a submit [Firefox ESR 10.0.12], (2) electing "Related" causes Tag Filter to blank, (3) entering a tag filter while "Related" is selected causes "Related" to be deselected, (4) possibly too much clutter, and (5) definitely too much clutter if combined with any future expansions. (1) is due to the lack of a submit button. (2) and (3) are a bad interaction between the t=/r= dichotomy and the design of style_submenu_entry(). (4) maybe could be addressed by changing "Related"/"Branch Only" and "Without Files"/"With Files" to checkbuttons, but style_submenu_checkbox() was never actually implemented. (Probably also want "Unhide" to be a checkbox. For (5) I have in mind letting the admin define a project-specific list of preset filters.
References
2016-11-05
03:34
Merge trunk. Some issues identified by [d4a6d3c1ec] are now improved. (1) is fixed, though clicking/tabbing outside the entry field also triggers a submit which may prove annoying. (2) and (3) are still broken. (4) is better because "With/Without Files" is now a checkbox simply labeled "Files". (5) is closer to being feasible, perhaps if "Tag Filter:" is changed to "Filter:". check-in: 74fe9587 user: andygoth tags: andygoth-timeline-ms
Context
2016-11-04
20:49
Integrate andygoth-quote-apostrophe. Needed because single quotes can be used in the tag filter entry, and these single quotes would otherwise be passed through unprotected to the output HTML. check-in: 68bd2e7b user: andygoth tags: andygoth-timeline-ms
16:21
Add timeline web UI to set tag filter and match style. Still not 100%. (1) Now that more than one text entry is on the page, pressing enter does not trigger a submit [Firefox ESR 10.0.12], (2) electing "Related" causes Tag Filter to blank, (3) entering a tag filter while "Related" is selected causes "Related" to be deselected, (4) possibly too much clutter, and (5) definitely too much clutter if combined with any future expansions. (1) is due to the lack of a submit button. (2) and (3) are a bad interaction between the t=/r= dichotomy and the design of style_submenu_entry(). (4) maybe could be addressed by changing "Related"/"Branch Only" and "Without Files"/"With Files" to checkbuttons, but style_submenu_checkbox() was never actually implemented. (Probably also want "Unhide" to be a checkbox.) For (5) I have in mind letting the admin define a project-specific list of preset filters. check-in: d4a6d3c1 user: andygoth tags: andygoth-timeline-ms
15:52
Change style_submenu_entry() to allow zero and negative iSize. Zero iSize means display size and length limit are not specified, and negative iSize means no length limit is specified but the display size is set to the absolute value of iSize. check-in: 2e9ac33a user: andygoth tags: andygoth-timeline-ms
Changes

Changes to src/timeline.c.

1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
....
1952
1953
1954
1955
1956
1957
1958



1959
1960
1961
1962
1963
1964
1965
....
1993
1994
1995
1996
1997
1998
1999




2000
2001
2002
2003
2004
2005
2006
    zThisTag = zTagName;
  }else if( zBrName ){
    zThisTag = zBrName;
  }

  /* Interpet the tag style string. */
  if( zThisTag ){
    if( fossil_stricmp(zMatchStyle, "GLOB")==0 ){
      matchStyle = MS_GLOB;
    }else if( fossil_stricmp(zMatchStyle, "LIKE")==0 ){
      matchStyle = MS_LIKE;
    }else if( fossil_stricmp(zMatchStyle, "REGEXP")==0 ){
      matchStyle = MS_REGEXP;
    }
  }

  /* Construct the tag match expression. */
  if( zThisTag ){
    zTagSql = tagMatchExpression(matchStyle, zThisTag, &tagMatchCount);
................................................................................
    }else if( rCirca>0.0 ){
      blob_appendf(&desc, " occurring around %h.<br />", zCirca);
    }
    if( zSearch ){
      blob_appendf(&desc, " matching \"%h\"", zSearch);
    }
    if( g.perm.Hyperlink ){



      double rDate;
      zDate = db_text(0, "SELECT min(timestamp) FROM timeline /*scan*/");
      if( (!zDate || !zDate[0]) && ( zAfter || zBefore ) ){
        zDate = mprintf("%s", (zAfter ? zAfter : zBefore));
      }
      if( zDate ){
        rDate = symbolic_name_to_mtime(zDate);
................................................................................
          timeline_submenu(&url, "Unhide", "unhide", "", 0);
        }
      }
      style_submenu_entry("n","Max:",4,0);
      timeline_y_submenu(disableY);
      style_submenu_binary("v","With Files","Without Files",
                           zType[0]!='a' && zType[0]!='c');




    }
    blob_zero(&cond);
  }
  if( PB("showsql") ){
    @ <pre>%h(blob_sql_text(&sql))</pre>
  }
  if( search_restrict(SRCH_CKIN)!=0 ){







|

|

|







 







>
>
>







 







>
>
>
>







1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
....
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
....
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
    zThisTag = zTagName;
  }else if( zBrName ){
    zThisTag = zBrName;
  }

  /* Interpet the tag style string. */
  if( zThisTag ){
    if( fossil_stricmp(zMatchStyle, "glob")==0 ){
      matchStyle = MS_GLOB;
    }else if( fossil_stricmp(zMatchStyle, "like")==0 ){
      matchStyle = MS_LIKE;
    }else if( fossil_stricmp(zMatchStyle, "regexp")==0 ){
      matchStyle = MS_REGEXP;
    }
  }

  /* Construct the tag match expression. */
  if( zThisTag ){
    zTagSql = tagMatchExpression(matchStyle, zThisTag, &tagMatchCount);
................................................................................
    }else if( rCirca>0.0 ){
      blob_appendf(&desc, " occurring around %h.<br />", zCirca);
    }
    if( zSearch ){
      blob_appendf(&desc, " matching \"%h\"", zSearch);
    }
    if( g.perm.Hyperlink ){
      static const char *const azMatchStyles[] = {
        "exact","Exact", "glob","Glob", "like","Like", "regexp","Regexp"
      };
      double rDate;
      zDate = db_text(0, "SELECT min(timestamp) FROM timeline /*scan*/");
      if( (!zDate || !zDate[0]) && ( zAfter || zBefore ) ){
        zDate = mprintf("%s", (zAfter ? zAfter : zBefore));
      }
      if( zDate ){
        rDate = symbolic_name_to_mtime(zDate);
................................................................................
          timeline_submenu(&url, "Unhide", "unhide", "", 0);
        }
      }
      style_submenu_entry("n","Max:",4,0);
      timeline_y_submenu(disableY);
      style_submenu_binary("v","With Files","Without Files",
                           zType[0]!='a' && zType[0]!='c');
      style_submenu_entry("t", "Tag Filter:", -8, 0);
      style_submenu_multichoice("ms",
          sizeof(azMatchStyles) / sizeof(*azMatchStyles) / 2,
          azMatchStyles, 0);
    }
    blob_zero(&cond);
  }
  if( PB("showsql") ){
    @ <pre>%h(blob_sql_text(&sql))</pre>
  }
  if( search_restrict(SRCH_CKIN)!=0 ){