Fossil SCM

Give the correct count of check-ins for /timeline displays that include the from=, to=, and chng= query parameters.

drh 2020-01-17 13:31 trunk
Commit 9dce5ffe5f3f6e1482c4f0cf52b861f292f89aefc5d5c3d32117d9c5fabfd276
1 file changed +10 -3
+10 -3
--- src/timeline.c
+++ src/timeline.c
@@ -1888,15 +1888,13 @@
18881888
);
18891889
if( p ){
18901890
blob_init(&ins, 0, 0);
18911891
blob_append_sql(&ins, "INSERT INTO pathnode(x) VALUES(%d)", p->rid);
18921892
p = p->u.pTo;
1893
- nNodeOnPath = 1;
18941893
while( p ){
18951894
blob_append_sql(&ins, ",(%d)", p->rid);
18961895
p = p->u.pTo;
1897
- nNodeOnPath++;
18981896
}
18991897
}
19001898
path_reset();
19011899
db_multi_exec("%s", blob_str(&ins)/*safe-for-%s*/);
19021900
blob_reset(&ins);
@@ -1925,17 +1923,26 @@
19251923
}
19261924
}
19271925
db_multi_exec("INSERT OR IGNORE INTO pathnode SELECT x FROM related");
19281926
}
19291927
blob_append_sql(&sql, " AND event.objid IN pathnode");
1930
- addFileGlobExclusion(zChng, &sql);
1928
+ if( zChng && zChng[0] ){
1929
+ db_multi_exec(
1930
+ "DELETE FROM pathnode "
1931
+ " WHERE NOT EXISTS(SELECT 1 FROM mlink, filename"
1932
+ " WHERE mlink.mid=x"
1933
+ " AND mlink.fnid=filename.fnid AND %s)",
1934
+ glob_expr("filename.name", zChng)
1935
+ );
1936
+ }
19311937
tmFlags |= TIMELINE_DISJOINT;
19321938
tmFlags &= ~TIMELINE_CHPICK;
19331939
db_multi_exec("%s", blob_sql_text(&sql));
19341940
if( advancedMenu ){
19351941
style_submenu_checkbox("v", "Files", (zType[0]!='a' && zType[0]!='c'),0);
19361942
}
1943
+ nNodeOnPath = db_int(0, "SELECT count(*) FROM temp.pathnode");
19371944
blob_appendf(&desc, "%d check-ins going from ", nNodeOnPath);
19381945
blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h", zFrom), zFrom);
19391946
blob_append(&desc, " to ", -1);
19401947
blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h",zTo), zTo);
19411948
if( related ){
19421949
--- src/timeline.c
+++ src/timeline.c
@@ -1888,15 +1888,13 @@
1888 );
1889 if( p ){
1890 blob_init(&ins, 0, 0);
1891 blob_append_sql(&ins, "INSERT INTO pathnode(x) VALUES(%d)", p->rid);
1892 p = p->u.pTo;
1893 nNodeOnPath = 1;
1894 while( p ){
1895 blob_append_sql(&ins, ",(%d)", p->rid);
1896 p = p->u.pTo;
1897 nNodeOnPath++;
1898 }
1899 }
1900 path_reset();
1901 db_multi_exec("%s", blob_str(&ins)/*safe-for-%s*/);
1902 blob_reset(&ins);
@@ -1925,17 +1923,26 @@
1925 }
1926 }
1927 db_multi_exec("INSERT OR IGNORE INTO pathnode SELECT x FROM related");
1928 }
1929 blob_append_sql(&sql, " AND event.objid IN pathnode");
1930 addFileGlobExclusion(zChng, &sql);
 
 
 
 
 
 
 
 
1931 tmFlags |= TIMELINE_DISJOINT;
1932 tmFlags &= ~TIMELINE_CHPICK;
1933 db_multi_exec("%s", blob_sql_text(&sql));
1934 if( advancedMenu ){
1935 style_submenu_checkbox("v", "Files", (zType[0]!='a' && zType[0]!='c'),0);
1936 }
 
1937 blob_appendf(&desc, "%d check-ins going from ", nNodeOnPath);
1938 blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h", zFrom), zFrom);
1939 blob_append(&desc, " to ", -1);
1940 blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h",zTo), zTo);
1941 if( related ){
1942
--- src/timeline.c
+++ src/timeline.c
@@ -1888,15 +1888,13 @@
1888 );
1889 if( p ){
1890 blob_init(&ins, 0, 0);
1891 blob_append_sql(&ins, "INSERT INTO pathnode(x) VALUES(%d)", p->rid);
1892 p = p->u.pTo;
 
1893 while( p ){
1894 blob_append_sql(&ins, ",(%d)", p->rid);
1895 p = p->u.pTo;
 
1896 }
1897 }
1898 path_reset();
1899 db_multi_exec("%s", blob_str(&ins)/*safe-for-%s*/);
1900 blob_reset(&ins);
@@ -1925,17 +1923,26 @@
1923 }
1924 }
1925 db_multi_exec("INSERT OR IGNORE INTO pathnode SELECT x FROM related");
1926 }
1927 blob_append_sql(&sql, " AND event.objid IN pathnode");
1928 if( zChng && zChng[0] ){
1929 db_multi_exec(
1930 "DELETE FROM pathnode "
1931 " WHERE NOT EXISTS(SELECT 1 FROM mlink, filename"
1932 " WHERE mlink.mid=x"
1933 " AND mlink.fnid=filename.fnid AND %s)",
1934 glob_expr("filename.name", zChng)
1935 );
1936 }
1937 tmFlags |= TIMELINE_DISJOINT;
1938 tmFlags &= ~TIMELINE_CHPICK;
1939 db_multi_exec("%s", blob_sql_text(&sql));
1940 if( advancedMenu ){
1941 style_submenu_checkbox("v", "Files", (zType[0]!='a' && zType[0]!='c'),0);
1942 }
1943 nNodeOnPath = db_int(0, "SELECT count(*) FROM temp.pathnode");
1944 blob_appendf(&desc, "%d check-ins going from ", nNodeOnPath);
1945 blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h", zFrom), zFrom);
1946 blob_append(&desc, " to ", -1);
1947 blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h",zTo), zTo);
1948 if( related ){
1949

Keyboard Shortcuts

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