Fossil SCM

More /timeline enhancements. Improved graph drawing for from=,to= especially when using the mionly and rel options. Improved label on p=,bt=.

drh 2020-06-18 18:02 trunk
Commit 21eebbbaba4e84b1a438d03e9dfa4a46f961585ce9dda76ae54b8ca744467b22
1 file changed +11 -3
+11 -3
--- src/timeline.c
+++ src/timeline.c
@@ -2019,19 +2019,20 @@
20192019
" AND mlink.fnid=filename.fnid AND %s)",
20202020
glob_expr("filename.name", zChng)
20212021
);
20222022
}
20232023
// tmFlags |= TIMELINE_DISJOINT;
2024
+ tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS;
20242025
db_multi_exec("%s", blob_sql_text(&sql));
20252026
if( advancedMenu ){
20262027
style_submenu_checkbox("v", "Files", (zType[0]!='a' && zType[0]!='c'),0);
20272028
}
20282029
nNodeOnPath = db_int(0, "SELECT count(*) FROM temp.pathnode");
20292030
blob_appendf(&desc, "%d check-ins going from ", nNodeOnPath);
2030
- blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h", zFrom), zFrom);
2031
+ blob_appendf(&desc, "%z%h</a>", href("%R/info/%h", zFrom), zFrom);
20312032
blob_append(&desc, " to ", -1);
2032
- blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h",zTo), zTo);
2033
+ blob_appendf(&desc, "%z%h</a>", href("%R/info/%h",zTo), zTo);
20332034
if( related ){
20342035
int nRelated = db_int(0, "SELECT count(*) FROM timeline") - nNodeOnPath;
20352036
if( nRelated>0 ){
20362037
blob_appendf(&desc, " and %d related check-in%s", nRelated,
20372038
nRelated>1 ? "s" : "");
@@ -2041,10 +2042,12 @@
20412042
}else if( (p_rid || d_rid) && g.perm.Read && zTagSql==0 ){
20422043
/* If p= or d= is present, ignore all other parameters other than n= */
20432044
char *zUuid;
20442045
const char *zCiName;
20452046
int np, nd;
2047
+ const char *zBackTo = 0;
2048
+ int ridBackTo = 0;
20462049
20472050
tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS;
20482051
if( p_rid && d_rid ){
20492052
if( p_rid!=d_rid ) p_rid = d_rid;
20502053
if( P("n")==0 ) nEntry = 10;
@@ -2065,11 +2068,12 @@
20652068
if( nd>0 ) blob_appendf(&desc, "%d descendant%s", nd,(1==nd)?"":"s");
20662069
if( useDividers ) selectedRid = d_rid;
20672070
db_multi_exec("DELETE FROM ok");
20682071
}
20692072
if( p_rid ){
2070
- int ridBackTo = name_to_typed_rid(P("bt"),"ci");
2073
+ zBackTo = P("bt");
2074
+ ridBackTo = zBackTo ? name_to_typed_rid(zBackTo,"ci") : 0;
20712075
compute_ancestors(p_rid, nEntry==0 ? 0 : nEntry+1, 0, ridBackTo);
20722076
np = db_int(0, "SELECT count(*)-1 FROM ok");
20732077
if( np>0 ){
20742078
if( nd>0 ) blob_appendf(&desc, " and ");
20752079
blob_appendf(&desc, "%d ancestors", np);
@@ -2077,10 +2081,14 @@
20772081
}
20782082
if( useDividers ) selectedRid = p_rid;
20792083
}
20802084
blob_appendf(&desc, " of %z%h</a>",
20812085
href("%R/info?name=%h", zCiName), zCiName);
2086
+ if( ridBackTo ){
2087
+ blob_appendf(&desc, " back to %z%h</a>",
2088
+ href("%R/info?name=%h",zBackTo), zBackTo);
2089
+ }
20822090
if( d_rid ){
20832091
if( p_rid ){
20842092
/* If both p= and d= are set, we don't have the uuid of d yet. */
20852093
zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", d_rid);
20862094
}
20872095
--- src/timeline.c
+++ src/timeline.c
@@ -2019,19 +2019,20 @@
2019 " AND mlink.fnid=filename.fnid AND %s)",
2020 glob_expr("filename.name", zChng)
2021 );
2022 }
2023 // tmFlags |= TIMELINE_DISJOINT;
 
2024 db_multi_exec("%s", blob_sql_text(&sql));
2025 if( advancedMenu ){
2026 style_submenu_checkbox("v", "Files", (zType[0]!='a' && zType[0]!='c'),0);
2027 }
2028 nNodeOnPath = db_int(0, "SELECT count(*) FROM temp.pathnode");
2029 blob_appendf(&desc, "%d check-ins going from ", nNodeOnPath);
2030 blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h", zFrom), zFrom);
2031 blob_append(&desc, " to ", -1);
2032 blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h",zTo), zTo);
2033 if( related ){
2034 int nRelated = db_int(0, "SELECT count(*) FROM timeline") - nNodeOnPath;
2035 if( nRelated>0 ){
2036 blob_appendf(&desc, " and %d related check-in%s", nRelated,
2037 nRelated>1 ? "s" : "");
@@ -2041,10 +2042,12 @@
2041 }else if( (p_rid || d_rid) && g.perm.Read && zTagSql==0 ){
2042 /* If p= or d= is present, ignore all other parameters other than n= */
2043 char *zUuid;
2044 const char *zCiName;
2045 int np, nd;
 
 
2046
2047 tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS;
2048 if( p_rid && d_rid ){
2049 if( p_rid!=d_rid ) p_rid = d_rid;
2050 if( P("n")==0 ) nEntry = 10;
@@ -2065,11 +2068,12 @@
2065 if( nd>0 ) blob_appendf(&desc, "%d descendant%s", nd,(1==nd)?"":"s");
2066 if( useDividers ) selectedRid = d_rid;
2067 db_multi_exec("DELETE FROM ok");
2068 }
2069 if( p_rid ){
2070 int ridBackTo = name_to_typed_rid(P("bt"),"ci");
 
2071 compute_ancestors(p_rid, nEntry==0 ? 0 : nEntry+1, 0, ridBackTo);
2072 np = db_int(0, "SELECT count(*)-1 FROM ok");
2073 if( np>0 ){
2074 if( nd>0 ) blob_appendf(&desc, " and ");
2075 blob_appendf(&desc, "%d ancestors", np);
@@ -2077,10 +2081,14 @@
2077 }
2078 if( useDividers ) selectedRid = p_rid;
2079 }
2080 blob_appendf(&desc, " of %z%h</a>",
2081 href("%R/info?name=%h", zCiName), zCiName);
 
 
 
 
2082 if( d_rid ){
2083 if( p_rid ){
2084 /* If both p= and d= are set, we don't have the uuid of d yet. */
2085 zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", d_rid);
2086 }
2087
--- src/timeline.c
+++ src/timeline.c
@@ -2019,19 +2019,20 @@
2019 " AND mlink.fnid=filename.fnid AND %s)",
2020 glob_expr("filename.name", zChng)
2021 );
2022 }
2023 // tmFlags |= TIMELINE_DISJOINT;
2024 tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS;
2025 db_multi_exec("%s", blob_sql_text(&sql));
2026 if( advancedMenu ){
2027 style_submenu_checkbox("v", "Files", (zType[0]!='a' && zType[0]!='c'),0);
2028 }
2029 nNodeOnPath = db_int(0, "SELECT count(*) FROM temp.pathnode");
2030 blob_appendf(&desc, "%d check-ins going from ", nNodeOnPath);
2031 blob_appendf(&desc, "%z%h</a>", href("%R/info/%h", zFrom), zFrom);
2032 blob_append(&desc, " to ", -1);
2033 blob_appendf(&desc, "%z%h</a>", href("%R/info/%h",zTo), zTo);
2034 if( related ){
2035 int nRelated = db_int(0, "SELECT count(*) FROM timeline") - nNodeOnPath;
2036 if( nRelated>0 ){
2037 blob_appendf(&desc, " and %d related check-in%s", nRelated,
2038 nRelated>1 ? "s" : "");
@@ -2041,10 +2042,12 @@
2042 }else if( (p_rid || d_rid) && g.perm.Read && zTagSql==0 ){
2043 /* If p= or d= is present, ignore all other parameters other than n= */
2044 char *zUuid;
2045 const char *zCiName;
2046 int np, nd;
2047 const char *zBackTo = 0;
2048 int ridBackTo = 0;
2049
2050 tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS;
2051 if( p_rid && d_rid ){
2052 if( p_rid!=d_rid ) p_rid = d_rid;
2053 if( P("n")==0 ) nEntry = 10;
@@ -2065,11 +2068,12 @@
2068 if( nd>0 ) blob_appendf(&desc, "%d descendant%s", nd,(1==nd)?"":"s");
2069 if( useDividers ) selectedRid = d_rid;
2070 db_multi_exec("DELETE FROM ok");
2071 }
2072 if( p_rid ){
2073 zBackTo = P("bt");
2074 ridBackTo = zBackTo ? name_to_typed_rid(zBackTo,"ci") : 0;
2075 compute_ancestors(p_rid, nEntry==0 ? 0 : nEntry+1, 0, ridBackTo);
2076 np = db_int(0, "SELECT count(*)-1 FROM ok");
2077 if( np>0 ){
2078 if( nd>0 ) blob_appendf(&desc, " and ");
2079 blob_appendf(&desc, "%d ancestors", np);
@@ -2077,10 +2081,14 @@
2081 }
2082 if( useDividers ) selectedRid = p_rid;
2083 }
2084 blob_appendf(&desc, " of %z%h</a>",
2085 href("%R/info?name=%h", zCiName), zCiName);
2086 if( ridBackTo ){
2087 blob_appendf(&desc, " back to %z%h</a>",
2088 href("%R/info?name=%h",zBackTo), zBackTo);
2089 }
2090 if( d_rid ){
2091 if( p_rid ){
2092 /* If both p= and d= are set, we don't have the uuid of d yet. */
2093 zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", d_rid);
2094 }
2095

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button