Fossil SCM

Improved title on /timeline graphs with from, to, and rel query parameters.

drh 2018-12-28 18:38 trunk
Commit 994d7d849d70487c7d8e3bc24fe721ce4e60cfbc1be81ddfa57234ac93cdeda9
1 file changed +13 -4
+13 -4
--- src/timeline.c
+++ src/timeline.c
@@ -1723,10 +1723,11 @@
17231723
** the two */
17241724
PathNode *p = 0;
17251725
const char *zFrom = 0;
17261726
const char *zTo = 0;
17271727
Blob ins;
1728
+ int nNodeOnPath = 0;
17281729
17291730
if( from_rid && to_rid ){
17301731
p = path_shortest(from_rid, to_rid, noMerge, 0);
17311732
zFrom = P("from");
17321733
zTo = P("to");
@@ -1743,25 +1744,27 @@
17431744
);
17441745
if( p ){
17451746
blob_init(&ins, 0, 0);
17461747
blob_append_sql(&ins, "INSERT INTO pathnode(x) VALUES(%d)", p->rid);
17471748
p = p->u.pTo;
1749
+ nNodeOnPath = 1;
17481750
while( p ){
17491751
blob_append_sql(&ins, ",(%d)", p->rid);
17501752
p = p->u.pTo;
1753
+ nNodeOnPath++;
17511754
}
17521755
}
17531756
path_reset();
17541757
db_multi_exec("%s", blob_str(&ins)/*safe-for-%s*/);
17551758
blob_reset(&ins);
17561759
if( related ){
17571760
db_multi_exec(
17581761
"CREATE TABLE IF NOT EXISTS temp.related(x INTEGER PRIMARY KEY);"
17591762
"INSERT OR IGNORE INTO related(x)"
1760
- " SELECT cid FROM plink WHERE pid IN pathnode;"
1763
+ " SELECT cid FROM plink WHERE pid IN pathnode AND NOT isprim;"
17611764
"INSERT OR IGNORE INTO related(x)"
1762
- " SELECT pid FROM plink WHERE cid IN pathnode;"
1765
+ " SELECT pid FROM plink WHERE cid IN pathnode AND NOT isprim;"
17631766
);
17641767
if( showCherrypicks ){
17651768
db_multi_exec(
17661769
"INSERT OR IGNORE INTO related(x)"
17671770
" SELECT childid FROM cherrypick WHERE parentid IN pathnode;"
@@ -1776,15 +1779,21 @@
17761779
tmFlags |= TIMELINE_DISJOINT;
17771780
db_multi_exec("%s", blob_sql_text(&sql));
17781781
if( advancedMenu ){
17791782
style_submenu_checkbox("v", "Files", (zType[0]!='a' && zType[0]!='c'),0);
17801783
}
1781
- blob_appendf(&desc, "%d check-ins going from ",
1782
- db_int(0, "SELECT count(*) FROM timeline"));
1784
+ blob_appendf(&desc, "%d check-ins going from ", nNodeOnPath);
17831785
blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h", zFrom), zFrom);
17841786
blob_append(&desc, " to ", -1);
17851787
blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h",zTo), zTo);
1788
+ if( related ){
1789
+ int nRelated = db_int(0, "SELECT count(*) FROM timeline") - nNodeOnPath;
1790
+ if( nRelated>0 ){
1791
+ blob_appendf(&desc, " and %d related check-in%s", nRelated,
1792
+ nRelated>1 ? "s" : "");
1793
+ }
1794
+ }
17861795
addFileGlobDescription(zChng, &desc);
17871796
}else if( (p_rid || d_rid) && g.perm.Read && zTagSql==0 ){
17881797
/* If p= or d= is present, ignore all other parameters other than n= */
17891798
char *zUuid;
17901799
int np, nd;
17911800
--- src/timeline.c
+++ src/timeline.c
@@ -1723,10 +1723,11 @@
1723 ** the two */
1724 PathNode *p = 0;
1725 const char *zFrom = 0;
1726 const char *zTo = 0;
1727 Blob ins;
 
1728
1729 if( from_rid && to_rid ){
1730 p = path_shortest(from_rid, to_rid, noMerge, 0);
1731 zFrom = P("from");
1732 zTo = P("to");
@@ -1743,25 +1744,27 @@
1743 );
1744 if( p ){
1745 blob_init(&ins, 0, 0);
1746 blob_append_sql(&ins, "INSERT INTO pathnode(x) VALUES(%d)", p->rid);
1747 p = p->u.pTo;
 
1748 while( p ){
1749 blob_append_sql(&ins, ",(%d)", p->rid);
1750 p = p->u.pTo;
 
1751 }
1752 }
1753 path_reset();
1754 db_multi_exec("%s", blob_str(&ins)/*safe-for-%s*/);
1755 blob_reset(&ins);
1756 if( related ){
1757 db_multi_exec(
1758 "CREATE TABLE IF NOT EXISTS temp.related(x INTEGER PRIMARY KEY);"
1759 "INSERT OR IGNORE INTO related(x)"
1760 " SELECT cid FROM plink WHERE pid IN pathnode;"
1761 "INSERT OR IGNORE INTO related(x)"
1762 " SELECT pid FROM plink WHERE cid IN pathnode;"
1763 );
1764 if( showCherrypicks ){
1765 db_multi_exec(
1766 "INSERT OR IGNORE INTO related(x)"
1767 " SELECT childid FROM cherrypick WHERE parentid IN pathnode;"
@@ -1776,15 +1779,21 @@
1776 tmFlags |= TIMELINE_DISJOINT;
1777 db_multi_exec("%s", blob_sql_text(&sql));
1778 if( advancedMenu ){
1779 style_submenu_checkbox("v", "Files", (zType[0]!='a' && zType[0]!='c'),0);
1780 }
1781 blob_appendf(&desc, "%d check-ins going from ",
1782 db_int(0, "SELECT count(*) FROM timeline"));
1783 blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h", zFrom), zFrom);
1784 blob_append(&desc, " to ", -1);
1785 blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h",zTo), zTo);
 
 
 
 
 
 
 
1786 addFileGlobDescription(zChng, &desc);
1787 }else if( (p_rid || d_rid) && g.perm.Read && zTagSql==0 ){
1788 /* If p= or d= is present, ignore all other parameters other than n= */
1789 char *zUuid;
1790 int np, nd;
1791
--- src/timeline.c
+++ src/timeline.c
@@ -1723,10 +1723,11 @@
1723 ** the two */
1724 PathNode *p = 0;
1725 const char *zFrom = 0;
1726 const char *zTo = 0;
1727 Blob ins;
1728 int nNodeOnPath = 0;
1729
1730 if( from_rid && to_rid ){
1731 p = path_shortest(from_rid, to_rid, noMerge, 0);
1732 zFrom = P("from");
1733 zTo = P("to");
@@ -1743,25 +1744,27 @@
1744 );
1745 if( p ){
1746 blob_init(&ins, 0, 0);
1747 blob_append_sql(&ins, "INSERT INTO pathnode(x) VALUES(%d)", p->rid);
1748 p = p->u.pTo;
1749 nNodeOnPath = 1;
1750 while( p ){
1751 blob_append_sql(&ins, ",(%d)", p->rid);
1752 p = p->u.pTo;
1753 nNodeOnPath++;
1754 }
1755 }
1756 path_reset();
1757 db_multi_exec("%s", blob_str(&ins)/*safe-for-%s*/);
1758 blob_reset(&ins);
1759 if( related ){
1760 db_multi_exec(
1761 "CREATE TABLE IF NOT EXISTS temp.related(x INTEGER PRIMARY KEY);"
1762 "INSERT OR IGNORE INTO related(x)"
1763 " SELECT cid FROM plink WHERE pid IN pathnode AND NOT isprim;"
1764 "INSERT OR IGNORE INTO related(x)"
1765 " SELECT pid FROM plink WHERE cid IN pathnode AND NOT isprim;"
1766 );
1767 if( showCherrypicks ){
1768 db_multi_exec(
1769 "INSERT OR IGNORE INTO related(x)"
1770 " SELECT childid FROM cherrypick WHERE parentid IN pathnode;"
@@ -1776,15 +1779,21 @@
1779 tmFlags |= TIMELINE_DISJOINT;
1780 db_multi_exec("%s", blob_sql_text(&sql));
1781 if( advancedMenu ){
1782 style_submenu_checkbox("v", "Files", (zType[0]!='a' && zType[0]!='c'),0);
1783 }
1784 blob_appendf(&desc, "%d check-ins going from ", nNodeOnPath);
 
1785 blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h", zFrom), zFrom);
1786 blob_append(&desc, " to ", -1);
1787 blob_appendf(&desc, "%z[%h]</a>", href("%R/info/%h",zTo), zTo);
1788 if( related ){
1789 int nRelated = db_int(0, "SELECT count(*) FROM timeline") - nNodeOnPath;
1790 if( nRelated>0 ){
1791 blob_appendf(&desc, " and %d related check-in%s", nRelated,
1792 nRelated>1 ? "s" : "");
1793 }
1794 }
1795 addFileGlobDescription(zChng, &desc);
1796 }else if( (p_rid || d_rid) && g.perm.Read && zTagSql==0 ){
1797 /* If p= or d= is present, ignore all other parameters other than n= */
1798 char *zUuid;
1799 int np, nd;
1800

Keyboard Shortcuts

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