Fossil SCM
Add option to show real branch colors in branch list
Commit
26fc65f99c035dac7f2f3819d3cdfba4ffc72982
Parent
ec3dd27f97571cd…
1 file changed
+17
-2
+17
-2
| --- src/branch.c | ||
| +++ src/branch.c | ||
| @@ -317,11 +317,12 @@ | ||
| 317 | 317 | @ WHERE plink.pid=event.objid |
| 318 | 318 | @ AND tagxref.rid=plink.cid |
| 319 | 319 | @ AND tagxref.tagid=(SELECT tagid FROM tag WHERE tagname='branch') |
| 320 | 320 | @ AND tagtype>0), |
| 321 | 321 | @ count(*), |
| 322 | -@ (SELECT uuid FROM blob WHERE rid=tagxref.rid) | |
| 322 | +@ (SELECT uuid FROM blob WHERE rid=tagxref.rid), | |
| 323 | +@ event.bgcolor | |
| 323 | 324 | @ FROM tagxref, tag, event |
| 324 | 325 | @ WHERE tagxref.tagid=tag.tagid |
| 325 | 326 | @ AND tagxref.tagtype>0 |
| 326 | 327 | @ AND tag.tagname='branch' |
| 327 | 328 | @ AND event.objid=tagxref.rid |
| @@ -338,14 +339,16 @@ | ||
| 338 | 339 | ** if there are no query parameters. |
| 339 | 340 | */ |
| 340 | 341 | static void new_brlist_page(void){ |
| 341 | 342 | Stmt q; |
| 342 | 343 | double rNow; |
| 344 | + int show_colors = PB("colors"); | |
| 343 | 345 | login_check_credentials(); |
| 344 | 346 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 345 | 347 | style_header("Branches"); |
| 346 | 348 | style_adunit_config(ADUNIT_RIGHT_OK); |
| 349 | + style_submenu_binary("colors", "Show branch colors", "No branch colors", 0); | |
| 347 | 350 | login_anonymous_available(); |
| 348 | 351 | |
| 349 | 352 | db_prepare(&q, brlistQuery/*works-like:""*/); |
| 350 | 353 | rNow = db_double(0.0, "SELECT julianday('now')"); |
| 351 | 354 | @ <div class="brlist"><table id="branchlisttable"> |
| @@ -361,14 +364,26 @@ | ||
| 361 | 364 | double rMtime = db_column_double(&q, 1); |
| 362 | 365 | int isClosed = db_column_int(&q, 2); |
| 363 | 366 | const char *zMergeTo = db_column_text(&q, 3); |
| 364 | 367 | int nCkin = db_column_int(&q, 4); |
| 365 | 368 | const char *zLastCkin = db_column_text(&q, 5); |
| 369 | + const char *zBgClr = db_column_text(&q, 6); | |
| 366 | 370 | char *zAge = human_readable_age(rNow - rMtime); |
| 367 | 371 | sqlite3_int64 iMtime = (sqlite3_int64)(rMtime*86400.0); |
| 368 | 372 | if( zMergeTo && zMergeTo[0]==0 ) zMergeTo = 0; |
| 369 | - @ <tr> | |
| 373 | + if( zBgClr == 0 ){ | |
| 374 | + if( zBranch==0 || strcmp(zBranch,"trunk")==0 ){ | |
| 375 | + zBgClr = 0; | |
| 376 | + }else{ | |
| 377 | + zBgClr = hash_color(zBranch); | |
| 378 | + } | |
| 379 | + } | |
| 380 | + if( show_colors ){ | |
| 381 | + @ <tr style="background-color:%s(zBgClr)"> | |
| 382 | + }else{ | |
| 383 | + @ <tr> | |
| 384 | + } | |
| 370 | 385 | @ <td>%z(href("%R/timeline?n=100&r=%T",zBranch))%h(zBranch)</a></td> |
| 371 | 386 | @ <td data-sortkey="%016llx(-iMtime)">%s(zAge)</td> |
| 372 | 387 | @ <td>%d(nCkin)</td> |
| 373 | 388 | fossil_free(zAge); |
| 374 | 389 | @ <td>%s(isClosed?"closed":"")</td> |
| 375 | 390 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -317,11 +317,12 @@ | |
| 317 | @ WHERE plink.pid=event.objid |
| 318 | @ AND tagxref.rid=plink.cid |
| 319 | @ AND tagxref.tagid=(SELECT tagid FROM tag WHERE tagname='branch') |
| 320 | @ AND tagtype>0), |
| 321 | @ count(*), |
| 322 | @ (SELECT uuid FROM blob WHERE rid=tagxref.rid) |
| 323 | @ FROM tagxref, tag, event |
| 324 | @ WHERE tagxref.tagid=tag.tagid |
| 325 | @ AND tagxref.tagtype>0 |
| 326 | @ AND tag.tagname='branch' |
| 327 | @ AND event.objid=tagxref.rid |
| @@ -338,14 +339,16 @@ | |
| 338 | ** if there are no query parameters. |
| 339 | */ |
| 340 | static void new_brlist_page(void){ |
| 341 | Stmt q; |
| 342 | double rNow; |
| 343 | login_check_credentials(); |
| 344 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 345 | style_header("Branches"); |
| 346 | style_adunit_config(ADUNIT_RIGHT_OK); |
| 347 | login_anonymous_available(); |
| 348 | |
| 349 | db_prepare(&q, brlistQuery/*works-like:""*/); |
| 350 | rNow = db_double(0.0, "SELECT julianday('now')"); |
| 351 | @ <div class="brlist"><table id="branchlisttable"> |
| @@ -361,14 +364,26 @@ | |
| 361 | double rMtime = db_column_double(&q, 1); |
| 362 | int isClosed = db_column_int(&q, 2); |
| 363 | const char *zMergeTo = db_column_text(&q, 3); |
| 364 | int nCkin = db_column_int(&q, 4); |
| 365 | const char *zLastCkin = db_column_text(&q, 5); |
| 366 | char *zAge = human_readable_age(rNow - rMtime); |
| 367 | sqlite3_int64 iMtime = (sqlite3_int64)(rMtime*86400.0); |
| 368 | if( zMergeTo && zMergeTo[0]==0 ) zMergeTo = 0; |
| 369 | @ <tr> |
| 370 | @ <td>%z(href("%R/timeline?n=100&r=%T",zBranch))%h(zBranch)</a></td> |
| 371 | @ <td data-sortkey="%016llx(-iMtime)">%s(zAge)</td> |
| 372 | @ <td>%d(nCkin)</td> |
| 373 | fossil_free(zAge); |
| 374 | @ <td>%s(isClosed?"closed":"")</td> |
| 375 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -317,11 +317,12 @@ | |
| 317 | @ WHERE plink.pid=event.objid |
| 318 | @ AND tagxref.rid=plink.cid |
| 319 | @ AND tagxref.tagid=(SELECT tagid FROM tag WHERE tagname='branch') |
| 320 | @ AND tagtype>0), |
| 321 | @ count(*), |
| 322 | @ (SELECT uuid FROM blob WHERE rid=tagxref.rid), |
| 323 | @ event.bgcolor |
| 324 | @ FROM tagxref, tag, event |
| 325 | @ WHERE tagxref.tagid=tag.tagid |
| 326 | @ AND tagxref.tagtype>0 |
| 327 | @ AND tag.tagname='branch' |
| 328 | @ AND event.objid=tagxref.rid |
| @@ -338,14 +339,16 @@ | |
| 339 | ** if there are no query parameters. |
| 340 | */ |
| 341 | static void new_brlist_page(void){ |
| 342 | Stmt q; |
| 343 | double rNow; |
| 344 | int show_colors = PB("colors"); |
| 345 | login_check_credentials(); |
| 346 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 347 | style_header("Branches"); |
| 348 | style_adunit_config(ADUNIT_RIGHT_OK); |
| 349 | style_submenu_binary("colors", "Show branch colors", "No branch colors", 0); |
| 350 | login_anonymous_available(); |
| 351 | |
| 352 | db_prepare(&q, brlistQuery/*works-like:""*/); |
| 353 | rNow = db_double(0.0, "SELECT julianday('now')"); |
| 354 | @ <div class="brlist"><table id="branchlisttable"> |
| @@ -361,14 +364,26 @@ | |
| 364 | double rMtime = db_column_double(&q, 1); |
| 365 | int isClosed = db_column_int(&q, 2); |
| 366 | const char *zMergeTo = db_column_text(&q, 3); |
| 367 | int nCkin = db_column_int(&q, 4); |
| 368 | const char *zLastCkin = db_column_text(&q, 5); |
| 369 | const char *zBgClr = db_column_text(&q, 6); |
| 370 | char *zAge = human_readable_age(rNow - rMtime); |
| 371 | sqlite3_int64 iMtime = (sqlite3_int64)(rMtime*86400.0); |
| 372 | if( zMergeTo && zMergeTo[0]==0 ) zMergeTo = 0; |
| 373 | if( zBgClr == 0 ){ |
| 374 | if( zBranch==0 || strcmp(zBranch,"trunk")==0 ){ |
| 375 | zBgClr = 0; |
| 376 | }else{ |
| 377 | zBgClr = hash_color(zBranch); |
| 378 | } |
| 379 | } |
| 380 | if( show_colors ){ |
| 381 | @ <tr style="background-color:%s(zBgClr)"> |
| 382 | }else{ |
| 383 | @ <tr> |
| 384 | } |
| 385 | @ <td>%z(href("%R/timeline?n=100&r=%T",zBranch))%h(zBranch)</a></td> |
| 386 | @ <td data-sortkey="%016llx(-iMtime)">%s(zAge)</td> |
| 387 | @ <td>%d(nCkin)</td> |
| 388 | fossil_free(zAge); |
| 389 | @ <td>%s(isClosed?"closed":"")</td> |
| 390 |