Fossil SCM

Allow styling leaves of closed branches in /timeline.

preben 2023-09-26 13:03 trunk
Commit e042be53cf82b776ccd3b4e0cd97e304725fe4e6412e9ed26630aa148e5a33ed
--- skins/ardoise/css.txt
+++ skins/ardoise/css.txt
@@ -1032,10 +1032,20 @@
10321032
top: 3px;
10331033
left: 3px;
10341034
width: 4px;
10351035
height: 4px;
10361036
background: #bbb
1037
+}
1038
+.tl-node.closed-leaf:after {
1039
+ content: '';
1040
+ position: absolute;
1041
+ top: 3px;
1042
+ left: 0px;
1043
+ width: 10px;
1044
+ height: 4px;
1045
+ background: #bbb
1046
+ border-radius: 0%;
10371047
}
10381048
.tl-node.sel:after {
10391049
content: '';
10401050
position: absolute;
10411051
top: 1px;
10421052
--- skins/ardoise/css.txt
+++ skins/ardoise/css.txt
@@ -1032,10 +1032,20 @@
1032 top: 3px;
1033 left: 3px;
1034 width: 4px;
1035 height: 4px;
1036 background: #bbb
 
 
 
 
 
 
 
 
 
 
1037 }
1038 .tl-node.sel:after {
1039 content: '';
1040 position: absolute;
1041 top: 1px;
1042
--- skins/ardoise/css.txt
+++ skins/ardoise/css.txt
@@ -1032,10 +1032,20 @@
1032 top: 3px;
1033 left: 3px;
1034 width: 4px;
1035 height: 4px;
1036 background: #bbb
1037 }
1038 .tl-node.closed-leaf:after {
1039 content: '';
1040 position: absolute;
1041 top: 3px;
1042 left: 0px;
1043 width: 10px;
1044 height: 4px;
1045 background: #bbb
1046 border-radius: 0%;
1047 }
1048 .tl-node.sel:after {
1049 content: '';
1050 position: absolute;
1051 top: 1px;
1052
--- skins/darkmode/css.txt
+++ skins/darkmode/css.txt
@@ -387,10 +387,20 @@
387387
top: 3px;
388388
left: 3px;
389389
width: 4px;
390390
height: 4px;
391391
background: #bbb
392
+}
393
+.tl-node.closed-leaf:after {
394
+ content: '';
395
+ position: absolute;
396
+ top: 3px;
397
+ left: 0px;
398
+ width: 10px;
399
+ height: 4px;
400
+ background: #bbb
401
+ border-radius: 0%;
392402
}
393403
.tl-node.sel:after {
394404
content: '';
395405
position: absolute;
396406
top: 1px;
397407
--- skins/darkmode/css.txt
+++ skins/darkmode/css.txt
@@ -387,10 +387,20 @@
387 top: 3px;
388 left: 3px;
389 width: 4px;
390 height: 4px;
391 background: #bbb
 
 
 
 
 
 
 
 
 
 
392 }
393 .tl-node.sel:after {
394 content: '';
395 position: absolute;
396 top: 1px;
397
--- skins/darkmode/css.txt
+++ skins/darkmode/css.txt
@@ -387,10 +387,20 @@
387 top: 3px;
388 left: 3px;
389 width: 4px;
390 height: 4px;
391 background: #bbb
392 }
393 .tl-node.closed-leaf:after {
394 content: '';
395 position: absolute;
396 top: 3px;
397 left: 0px;
398 width: 10px;
399 height: 4px;
400 background: #bbb
401 border-radius: 0%;
402 }
403 .tl-node.sel:after {
404 content: '';
405 position: absolute;
406 top: 1px;
407
--- skins/eagle/css.txt
+++ skins/eagle/css.txt
@@ -209,10 +209,22 @@
209209
left: 3px;
210210
width: 4px;
211211
height: 4px;
212212
background: #fff;
213213
}
214
+
215
+/* closed leaf commit marker */
216
+.tl-node.closed-leaf:after {
217
+ content: '';
218
+ position: absolute;
219
+ top: 3px;
220
+ left: 0px;
221
+ width: 10px;
222
+ height: 4px;
223
+ background: #fff;
224
+ border-radius: 0%;
225
+}
214226
215227
/* up arrow */
216228
.tl-arrow.u {
217229
margin-top: -1px;
218230
border-width: 0 3px;
219231
--- skins/eagle/css.txt
+++ skins/eagle/css.txt
@@ -209,10 +209,22 @@
209 left: 3px;
210 width: 4px;
211 height: 4px;
212 background: #fff;
213 }
 
 
 
 
 
 
 
 
 
 
 
 
214
215 /* up arrow */
216 .tl-arrow.u {
217 margin-top: -1px;
218 border-width: 0 3px;
219
--- skins/eagle/css.txt
+++ skins/eagle/css.txt
@@ -209,10 +209,22 @@
209 left: 3px;
210 width: 4px;
211 height: 4px;
212 background: #fff;
213 }
214
215 /* closed leaf commit marker */
216 .tl-node.closed-leaf:after {
217 content: '';
218 position: absolute;
219 top: 3px;
220 left: 0px;
221 width: 10px;
222 height: 4px;
223 background: #fff;
224 border-radius: 0%;
225 }
226
227 /* up arrow */
228 .tl-arrow.u {
229 margin-top: -1px;
230 border-width: 0 3px;
231
--- src/default.css
+++ src/default.css
@@ -117,10 +117,20 @@
117117
top: 3px;
118118
left: 3px;
119119
width: 4px;
120120
height: 4px;
121121
background: #000;
122
+}
123
+.tl-node.closed-leaf:after {
124
+ content: '';
125
+ position: absolute;
126
+ top: 3px;
127
+ left: 0px;
128
+ width: 10px;
129
+ height: 4px;
130
+ background: #000;
131
+ border-radius: 0%;
122132
}
123133
.tl-node.sel:after {
124134
content: '';
125135
position: absolute;
126136
top: 2px;
127137
--- src/default.css
+++ src/default.css
@@ -117,10 +117,20 @@
117 top: 3px;
118 left: 3px;
119 width: 4px;
120 height: 4px;
121 background: #000;
 
 
 
 
 
 
 
 
 
 
122 }
123 .tl-node.sel:after {
124 content: '';
125 position: absolute;
126 top: 2px;
127
--- src/default.css
+++ src/default.css
@@ -117,10 +117,20 @@
117 top: 3px;
118 left: 3px;
119 width: 4px;
120 height: 4px;
121 background: #000;
122 }
123 .tl-node.closed-leaf:after {
124 content: '';
125 position: absolute;
126 top: 3px;
127 left: 0px;
128 width: 10px;
129 height: 4px;
130 background: #000;
131 border-radius: 0%;
132 }
133 .tl-node.sel:after {
134 content: '';
135 position: absolute;
136 top: 2px;
137
--- src/graph.js
+++ src/graph.js
@@ -390,10 +390,11 @@
390390
if( p.u>0 ) drawUpArrow(p,tx.rowinfo[p.u-tx.iTopRow],p.fg,p.id);
391391
if( p.sb>0 ) drawDotted(p,tx.rowinfo[p.sb-tx.iTopRow],p.fg,p.id);
392392
var cls = node.cls;
393393
if( p.hasOwnProperty('mi') && p.mi.length ) cls += " merge";
394394
if( p.f&1 ) cls += " leaf";
395
+ if( p.f&2 ) cls += " closed-leaf";
395396
var n = drawBox(cls,p.bg,p.x,p.y);
396397
n.id = "tln"+p.id;
397398
n.onclick = clickOnNode;
398399
n.ondblclick = dblclickOnNode;
399400
n.onmousemove = mouseOverNode;
400401
--- src/graph.js
+++ src/graph.js
@@ -390,10 +390,11 @@
390 if( p.u>0 ) drawUpArrow(p,tx.rowinfo[p.u-tx.iTopRow],p.fg,p.id);
391 if( p.sb>0 ) drawDotted(p,tx.rowinfo[p.sb-tx.iTopRow],p.fg,p.id);
392 var cls = node.cls;
393 if( p.hasOwnProperty('mi') && p.mi.length ) cls += " merge";
394 if( p.f&1 ) cls += " leaf";
 
395 var n = drawBox(cls,p.bg,p.x,p.y);
396 n.id = "tln"+p.id;
397 n.onclick = clickOnNode;
398 n.ondblclick = dblclickOnNode;
399 n.onmousemove = mouseOverNode;
400
--- src/graph.js
+++ src/graph.js
@@ -390,10 +390,11 @@
390 if( p.u>0 ) drawUpArrow(p,tx.rowinfo[p.u-tx.iTopRow],p.fg,p.id);
391 if( p.sb>0 ) drawDotted(p,tx.rowinfo[p.sb-tx.iTopRow],p.fg,p.id);
392 var cls = node.cls;
393 if( p.hasOwnProperty('mi') && p.mi.length ) cls += " merge";
394 if( p.f&1 ) cls += " leaf";
395 if( p.f&2 ) cls += " closed-leaf";
396 var n = drawBox(cls,p.bg,p.x,p.y);
397 n.id = "tln"+p.id;
398 n.onclick = clickOnNode;
399 n.ondblclick = dblclickOnNode;
400 n.onmousemove = mouseOverNode;
401
+4 -2
--- src/timeline.c
+++ src/timeline.c
@@ -450,11 +450,12 @@
450450
nCherrypick++;
451451
}
452452
db_reset(&qcherrypick);
453453
}
454454
gidx = graph_add_row(pGraph, rid, nParent, nCherrypick, aParent,
455
- zBr, zBgClr, zUuid, isLeaf);
455
+ zBr, zBgClr, zUuid,
456
+ isLeaf ? isLeaf + 2 * has_closed_tag(rid) : 0);
456457
db_reset(&qbranch);
457458
@ <div id="m%d(gidx)" class="tl-nodemark"></div>
458459
}else if( zType[0]=='e' && pGraph && zBgClr && zBgClr[0] ){
459460
/* For technotes, make a graph node with nParent==(-1). This will
460461
** not actually draw anything on the graph, but it will set the
@@ -941,11 +942,11 @@
941942
** no thick-line riser (if the node is a leaf).
942943
** sb: Draw a dotted child-line out of the top of this node up to the
943944
** node with the id equal to the value. This is like "u" except
944945
** that the line is dotted instead of solid and has no arrow.
945946
** Mnemonic: "Same Branch".
946
- ** f: 0x01: a leaf node.
947
+ ** f: 0x01: a leaf node, 0x02: a closed leaf node.
947948
** au: An array of integers that define thick-line risers for branches.
948949
** The integers are in pairs. For each pair, the first integer is
949950
** is the rail on which the riser should run and the second integer
950951
** is the id of the node upto which the riser should run. If there
951952
** are no risers, this array does not exist.
@@ -981,10 +982,11 @@
981982
}else{
982983
cgi_printf("\"u\":%d,", pRow->aiRiser[pRow->iRail]);
983984
}
984985
k = 0;
985986
if( pRow->isLeaf ) k |= 1;
987
+ if( pRow->isLeaf & 2) k |= 2;
986988
cgi_printf("\"f\":%d,",k);
987989
for(i=k=0; i<GR_MAX_RAIL; i++){
988990
if( i==pRow->iRail ) continue;
989991
if( pRow->aiRiser[i]>0 ){
990992
if( k==0 ){
991993
--- src/timeline.c
+++ src/timeline.c
@@ -450,11 +450,12 @@
450 nCherrypick++;
451 }
452 db_reset(&qcherrypick);
453 }
454 gidx = graph_add_row(pGraph, rid, nParent, nCherrypick, aParent,
455 zBr, zBgClr, zUuid, isLeaf);
 
456 db_reset(&qbranch);
457 @ <div id="m%d(gidx)" class="tl-nodemark"></div>
458 }else if( zType[0]=='e' && pGraph && zBgClr && zBgClr[0] ){
459 /* For technotes, make a graph node with nParent==(-1). This will
460 ** not actually draw anything on the graph, but it will set the
@@ -941,11 +942,11 @@
941 ** no thick-line riser (if the node is a leaf).
942 ** sb: Draw a dotted child-line out of the top of this node up to the
943 ** node with the id equal to the value. This is like "u" except
944 ** that the line is dotted instead of solid and has no arrow.
945 ** Mnemonic: "Same Branch".
946 ** f: 0x01: a leaf node.
947 ** au: An array of integers that define thick-line risers for branches.
948 ** The integers are in pairs. For each pair, the first integer is
949 ** is the rail on which the riser should run and the second integer
950 ** is the id of the node upto which the riser should run. If there
951 ** are no risers, this array does not exist.
@@ -981,10 +982,11 @@
981 }else{
982 cgi_printf("\"u\":%d,", pRow->aiRiser[pRow->iRail]);
983 }
984 k = 0;
985 if( pRow->isLeaf ) k |= 1;
 
986 cgi_printf("\"f\":%d,",k);
987 for(i=k=0; i<GR_MAX_RAIL; i++){
988 if( i==pRow->iRail ) continue;
989 if( pRow->aiRiser[i]>0 ){
990 if( k==0 ){
991
--- src/timeline.c
+++ src/timeline.c
@@ -450,11 +450,12 @@
450 nCherrypick++;
451 }
452 db_reset(&qcherrypick);
453 }
454 gidx = graph_add_row(pGraph, rid, nParent, nCherrypick, aParent,
455 zBr, zBgClr, zUuid,
456 isLeaf ? isLeaf + 2 * has_closed_tag(rid) : 0);
457 db_reset(&qbranch);
458 @ <div id="m%d(gidx)" class="tl-nodemark"></div>
459 }else if( zType[0]=='e' && pGraph && zBgClr && zBgClr[0] ){
460 /* For technotes, make a graph node with nParent==(-1). This will
461 ** not actually draw anything on the graph, but it will set the
@@ -941,11 +942,11 @@
942 ** no thick-line riser (if the node is a leaf).
943 ** sb: Draw a dotted child-line out of the top of this node up to the
944 ** node with the id equal to the value. This is like "u" except
945 ** that the line is dotted instead of solid and has no arrow.
946 ** Mnemonic: "Same Branch".
947 ** f: 0x01: a leaf node, 0x02: a closed leaf node.
948 ** au: An array of integers that define thick-line risers for branches.
949 ** The integers are in pairs. For each pair, the first integer is
950 ** is the rail on which the riser should run and the second integer
951 ** is the id of the node upto which the riser should run. If there
952 ** are no risers, this array does not exist.
@@ -981,10 +982,11 @@
982 }else{
983 cgi_printf("\"u\":%d,", pRow->aiRiser[pRow->iRail]);
984 }
985 k = 0;
986 if( pRow->isLeaf ) k |= 1;
987 if( pRow->isLeaf & 2) k |= 2;
988 cgi_printf("\"f\":%d,",k);
989 for(i=k=0; i<GR_MAX_RAIL; i++){
990 if( i==pRow->iRail ) continue;
991 if( pRow->aiRiser[i]>0 ){
992 if( k==0 ){
993

Keyboard Shortcuts

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