Fossil SCM
Display a list of symbolic tags associated with each check-in on the timeline.
Commit
fbbd0318bd26e756e88d974424afe67b42f570e1
Parent
c002a008e6ed671…
1 file changed
+22
-5
+22
-5
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -88,14 +88,15 @@ | ||
| 88 | 88 | ** 5. Number of non-merge children |
| 89 | 89 | ** 6. Number of parents |
| 90 | 90 | ** 7. True if is a leaf |
| 91 | 91 | ** 8. background color |
| 92 | 92 | ** 9. type ("ci", "w") |
| 93 | +** 10. list of symbolic tags. | |
| 93 | 94 | */ |
| 94 | 95 | void www_print_timeline( |
| 95 | 96 | Stmt *pQuery |
| 96 | - ){ | |
| 97 | +){ | |
| 97 | 98 | int wikiFlags; |
| 98 | 99 | int mxWikiLen; |
| 99 | 100 | Blob comment; |
| 100 | 101 | char zPrevDate[20]; |
| 101 | 102 | zPrevDate[0] = 0; |
| @@ -121,10 +122,11 @@ | ||
| 121 | 122 | int isLeaf = db_column_int(pQuery, 7); |
| 122 | 123 | const char *zBgClr = db_column_text(pQuery, 8); |
| 123 | 124 | const char *zDate = db_column_text(pQuery, 2); |
| 124 | 125 | const char *zType = db_column_text(pQuery, 9); |
| 125 | 126 | const char *zUser = db_column_text(pQuery, 4); |
| 127 | + const char *zTagList = db_column_text(pQuery, 10); | |
| 126 | 128 | db_multi_exec("INSERT OR IGNORE INTO seen VALUES(%d)", rid); |
| 127 | 129 | if( memcmp(zDate, zPrevDate, 10) ){ |
| 128 | 130 | sprintf(zPrevDate, "%.10s", zDate); |
| 129 | 131 | @ <tr><td colspan=3> |
| 130 | 132 | @ <div class="divider">%s(zPrevDate)</div> |
| @@ -163,11 +165,15 @@ | ||
| 163 | 165 | blob_reset(&truncated); |
| 164 | 166 | }else{ |
| 165 | 167 | wiki_convert(&comment, 0, wikiFlags); |
| 166 | 168 | } |
| 167 | 169 | blob_reset(&comment); |
| 168 | - @ (by %h(zUser))</td></tr> | |
| 170 | + if( zTagList && zTagList[0] ){ | |
| 171 | + @ (user: %h(zUser), tags: %h(zTagList))</td></tr> | |
| 172 | + }else{ | |
| 173 | + @ (user: %h(zUser))</td></tr> | |
| 174 | + } | |
| 169 | 175 | } |
| 170 | 176 | @ </table> |
| 171 | 177 | } |
| 172 | 178 | |
| 173 | 179 | /* |
| @@ -183,11 +189,12 @@ | ||
| 183 | 189 | @ user TEXT, |
| 184 | 190 | @ nchild INTEGER, |
| 185 | 191 | @ nparent INTEGER, |
| 186 | 192 | @ isleaf BOOLEAN, |
| 187 | 193 | @ bgcolor TEXT, |
| 188 | - @ etype TEXT | |
| 194 | + @ etype TEXT, | |
| 195 | + @ taglist TEXT | |
| 189 | 196 | @ ) |
| 190 | 197 | ; |
| 191 | 198 | db_multi_exec(zSql); |
| 192 | 199 | } |
| 193 | 200 | |
| @@ -205,11 +212,14 @@ | ||
| 205 | 212 | @ coalesce(euser, user), |
| 206 | 213 | @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim=1), |
| 207 | 214 | @ (SELECT count(*) FROM plink WHERE cid=blob.rid), |
| 208 | 215 | @ NOT EXISTS (SELECT 1 FROM plink WHERE pid=blob.rid), |
| 209 | 216 | @ coalesce(bgcolor, brbgcolor), |
| 210 | - @ event.type | |
| 217 | + @ event.type, | |
| 218 | + @ (SELECT group_concat(substr(tagname,5), ', ') FROM tag, tagxref | |
| 219 | + @ WHERE tagname GLOB 'sym-*' AND tag.tagid=tagxref.tagid | |
| 220 | + @ AND tagxref.rid=blob.rid AND tagxref.tagtype>0) | |
| 211 | 221 | @ FROM event JOIN blob |
| 212 | 222 | @ WHERE blob.rid=event.objid |
| 213 | 223 | ; |
| 214 | 224 | return zBaseSql; |
| 215 | 225 | } |
| @@ -584,11 +594,18 @@ | ||
| 584 | 594 | static const char zBaseSql[] = |
| 585 | 595 | @ SELECT |
| 586 | 596 | @ blob.rid, |
| 587 | 597 | @ uuid, |
| 588 | 598 | @ datetime(event.mtime,'localtime'), |
| 589 | - @ coalesce(ecomment,comment) || ' (by ' || coalesce(euser,user,'?') ||')', | |
| 599 | + @ coalesce(ecomment,comment) | |
| 600 | + @ || ' (user: ' || coalesce(euser,user,'?') | |
| 601 | + @ || (SELECT case when length(x)>0 then ' tags: ' || x else '' end | |
| 602 | + @ FROM (SELECT group_concat(substr(tagname,5), ', ') AS x | |
| 603 | + @ FROM tag, tagxref | |
| 604 | + @ WHERE tagname GLOB 'sym-*' AND tag.tagid=tagxref.tagid | |
| 605 | + @ AND tagxref.rid=blob.rid AND tagxref.tagtype>0)) | |
| 606 | + @ || ')', | |
| 590 | 607 | @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim), |
| 591 | 608 | @ (SELECT count(*) FROM plink WHERE cid=blob.rid) |
| 592 | 609 | @ FROM event, blob |
| 593 | 610 | @ WHERE blob.rid=event.objid |
| 594 | 611 | ; |
| 595 | 612 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -88,14 +88,15 @@ | |
| 88 | ** 5. Number of non-merge children |
| 89 | ** 6. Number of parents |
| 90 | ** 7. True if is a leaf |
| 91 | ** 8. background color |
| 92 | ** 9. type ("ci", "w") |
| 93 | */ |
| 94 | void www_print_timeline( |
| 95 | Stmt *pQuery |
| 96 | ){ |
| 97 | int wikiFlags; |
| 98 | int mxWikiLen; |
| 99 | Blob comment; |
| 100 | char zPrevDate[20]; |
| 101 | zPrevDate[0] = 0; |
| @@ -121,10 +122,11 @@ | |
| 121 | int isLeaf = db_column_int(pQuery, 7); |
| 122 | const char *zBgClr = db_column_text(pQuery, 8); |
| 123 | const char *zDate = db_column_text(pQuery, 2); |
| 124 | const char *zType = db_column_text(pQuery, 9); |
| 125 | const char *zUser = db_column_text(pQuery, 4); |
| 126 | db_multi_exec("INSERT OR IGNORE INTO seen VALUES(%d)", rid); |
| 127 | if( memcmp(zDate, zPrevDate, 10) ){ |
| 128 | sprintf(zPrevDate, "%.10s", zDate); |
| 129 | @ <tr><td colspan=3> |
| 130 | @ <div class="divider">%s(zPrevDate)</div> |
| @@ -163,11 +165,15 @@ | |
| 163 | blob_reset(&truncated); |
| 164 | }else{ |
| 165 | wiki_convert(&comment, 0, wikiFlags); |
| 166 | } |
| 167 | blob_reset(&comment); |
| 168 | @ (by %h(zUser))</td></tr> |
| 169 | } |
| 170 | @ </table> |
| 171 | } |
| 172 | |
| 173 | /* |
| @@ -183,11 +189,12 @@ | |
| 183 | @ user TEXT, |
| 184 | @ nchild INTEGER, |
| 185 | @ nparent INTEGER, |
| 186 | @ isleaf BOOLEAN, |
| 187 | @ bgcolor TEXT, |
| 188 | @ etype TEXT |
| 189 | @ ) |
| 190 | ; |
| 191 | db_multi_exec(zSql); |
| 192 | } |
| 193 | |
| @@ -205,11 +212,14 @@ | |
| 205 | @ coalesce(euser, user), |
| 206 | @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim=1), |
| 207 | @ (SELECT count(*) FROM plink WHERE cid=blob.rid), |
| 208 | @ NOT EXISTS (SELECT 1 FROM plink WHERE pid=blob.rid), |
| 209 | @ coalesce(bgcolor, brbgcolor), |
| 210 | @ event.type |
| 211 | @ FROM event JOIN blob |
| 212 | @ WHERE blob.rid=event.objid |
| 213 | ; |
| 214 | return zBaseSql; |
| 215 | } |
| @@ -584,11 +594,18 @@ | |
| 584 | static const char zBaseSql[] = |
| 585 | @ SELECT |
| 586 | @ blob.rid, |
| 587 | @ uuid, |
| 588 | @ datetime(event.mtime,'localtime'), |
| 589 | @ coalesce(ecomment,comment) || ' (by ' || coalesce(euser,user,'?') ||')', |
| 590 | @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim), |
| 591 | @ (SELECT count(*) FROM plink WHERE cid=blob.rid) |
| 592 | @ FROM event, blob |
| 593 | @ WHERE blob.rid=event.objid |
| 594 | ; |
| 595 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -88,14 +88,15 @@ | |
| 88 | ** 5. Number of non-merge children |
| 89 | ** 6. Number of parents |
| 90 | ** 7. True if is a leaf |
| 91 | ** 8. background color |
| 92 | ** 9. type ("ci", "w") |
| 93 | ** 10. list of symbolic tags. |
| 94 | */ |
| 95 | void www_print_timeline( |
| 96 | Stmt *pQuery |
| 97 | ){ |
| 98 | int wikiFlags; |
| 99 | int mxWikiLen; |
| 100 | Blob comment; |
| 101 | char zPrevDate[20]; |
| 102 | zPrevDate[0] = 0; |
| @@ -121,10 +122,11 @@ | |
| 122 | int isLeaf = db_column_int(pQuery, 7); |
| 123 | const char *zBgClr = db_column_text(pQuery, 8); |
| 124 | const char *zDate = db_column_text(pQuery, 2); |
| 125 | const char *zType = db_column_text(pQuery, 9); |
| 126 | const char *zUser = db_column_text(pQuery, 4); |
| 127 | const char *zTagList = db_column_text(pQuery, 10); |
| 128 | db_multi_exec("INSERT OR IGNORE INTO seen VALUES(%d)", rid); |
| 129 | if( memcmp(zDate, zPrevDate, 10) ){ |
| 130 | sprintf(zPrevDate, "%.10s", zDate); |
| 131 | @ <tr><td colspan=3> |
| 132 | @ <div class="divider">%s(zPrevDate)</div> |
| @@ -163,11 +165,15 @@ | |
| 165 | blob_reset(&truncated); |
| 166 | }else{ |
| 167 | wiki_convert(&comment, 0, wikiFlags); |
| 168 | } |
| 169 | blob_reset(&comment); |
| 170 | if( zTagList && zTagList[0] ){ |
| 171 | @ (user: %h(zUser), tags: %h(zTagList))</td></tr> |
| 172 | }else{ |
| 173 | @ (user: %h(zUser))</td></tr> |
| 174 | } |
| 175 | } |
| 176 | @ </table> |
| 177 | } |
| 178 | |
| 179 | /* |
| @@ -183,11 +189,12 @@ | |
| 189 | @ user TEXT, |
| 190 | @ nchild INTEGER, |
| 191 | @ nparent INTEGER, |
| 192 | @ isleaf BOOLEAN, |
| 193 | @ bgcolor TEXT, |
| 194 | @ etype TEXT, |
| 195 | @ taglist TEXT |
| 196 | @ ) |
| 197 | ; |
| 198 | db_multi_exec(zSql); |
| 199 | } |
| 200 | |
| @@ -205,11 +212,14 @@ | |
| 212 | @ coalesce(euser, user), |
| 213 | @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim=1), |
| 214 | @ (SELECT count(*) FROM plink WHERE cid=blob.rid), |
| 215 | @ NOT EXISTS (SELECT 1 FROM plink WHERE pid=blob.rid), |
| 216 | @ coalesce(bgcolor, brbgcolor), |
| 217 | @ event.type, |
| 218 | @ (SELECT group_concat(substr(tagname,5), ', ') FROM tag, tagxref |
| 219 | @ WHERE tagname GLOB 'sym-*' AND tag.tagid=tagxref.tagid |
| 220 | @ AND tagxref.rid=blob.rid AND tagxref.tagtype>0) |
| 221 | @ FROM event JOIN blob |
| 222 | @ WHERE blob.rid=event.objid |
| 223 | ; |
| 224 | return zBaseSql; |
| 225 | } |
| @@ -584,11 +594,18 @@ | |
| 594 | static const char zBaseSql[] = |
| 595 | @ SELECT |
| 596 | @ blob.rid, |
| 597 | @ uuid, |
| 598 | @ datetime(event.mtime,'localtime'), |
| 599 | @ coalesce(ecomment,comment) |
| 600 | @ || ' (user: ' || coalesce(euser,user,'?') |
| 601 | @ || (SELECT case when length(x)>0 then ' tags: ' || x else '' end |
| 602 | @ FROM (SELECT group_concat(substr(tagname,5), ', ') AS x |
| 603 | @ FROM tag, tagxref |
| 604 | @ WHERE tagname GLOB 'sym-*' AND tag.tagid=tagxref.tagid |
| 605 | @ AND tagxref.rid=blob.rid AND tagxref.tagtype>0)) |
| 606 | @ || ')', |
| 607 | @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim), |
| 608 | @ (SELECT count(*) FROM plink WHERE cid=blob.rid) |
| 609 | @ FROM event, blob |
| 610 | @ WHERE blob.rid=event.objid |
| 611 | ; |
| 612 |