@@ -201,10 +201,18 @@
201 201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
202 202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <input type="submit">
203 203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </form>
204 204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_footer();
205 205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return a new timelineTable id.
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int timeline_tableid(void){
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int id = 0;
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return id++;
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
206 214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
207 215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
208 216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Output a timeline in the web format given a query. The query
209 217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** should return these columns:
210 218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -241,10 +249,11 @@
241 249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int pendingEndTr = 0; /* True if a </td></tr> is needed */
242 250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int vid = 0; /* Current checkout version */
243 251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int dateFormat = 0; /* 0: HH:MM (default) */
244 252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bCommentGitStyle = 0; /* Only show comments through first blank line */
245 253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDateFmt;
254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iTableId = timeline_tableid();
246 255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
247 256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fossil_strcmp(g.zIpAddr, "127.0.0.1")==0 && db_open_local(0) ){
248 257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vid = db_lget_int("checkout", 0);
249 258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250 259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPrevDate[0] = 0;
@@ -259,11 +268,11 @@
259 268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_static_prepare(&qbranch,
260 269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0 AND rid=:rid",
261 270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TAG_BRANCH
262 271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
263 272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <table id="timelineTable" class="timelineTable">
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <table id="timelineTable%d(iTableId)" class="timelineTable">
265 274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&comment);
266 275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(pQuery)==SQLITE_ROW ){
267 276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rid = db_column_int(pQuery, 0);
268 277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zUuid = db_column_text(pQuery, 1);
269 278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isLeaf = db_column_int(pQuery, 5);
@@ -623,11 +632,11 @@
623 632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <tr class="timelineBottom"><td></td><td></td><td></td></tr>
624 633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
625 634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
626 635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </table>
627 636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fchngQueryInit ) db_finalize(&fchngQuery);
628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- timeline_output_graph_javascript(pGraph, (tmFlags & TIMELINE_DISJOINT)!=0, 0);
637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ timeline_output_graph_javascript(pGraph, (tmFlags & TIMELINE_DISJOINT)!=0, iTableId, 0);
629 638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
630 639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
631 640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
632 641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Change the RGB background color given in the argument in a foreground
633 642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** color with the same hue.
@@ -664,10 +673,11 @@
664 673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** graph.
665 674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
666 675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void timeline_output_graph_javascript(
667 676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
GraphContext *pGraph, /* The graph to be displayed */
668 677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int omitDescenders, /* True to omit descenders */
678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iTableId, /* Identifier for the timelineTable */
669 679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fileDiff /* True for file diff. False for check-in diff */
670 680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
671 681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
672 682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
GraphRow *pRow;
673 683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
@@ -699,11 +709,11 @@
699 709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* the rowinfo[] array contains all the information needed to generate
700 710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the graph. Each entry contains information for a single row:
701 711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
702 712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** id: The id of the <div> element for the row. This is an integer.
703 713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to get an actual id, prepend "m" to the integer. The top node
704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is 1 and numbers increase moving down the timeline.
714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is topRow and numbers increase moving down the timeline.
705 715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** bg: The background color for this row
706 716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** r: The "rail" that the node for this row sits on. The left-most
707 717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** rail is 0 and the number increases to the right.
708 718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** d: True if there is a "descender" - an arrow coming from the bottom
709 719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the page straight up to this node.
@@ -725,10 +735,11 @@
725 735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** negative, then the rail position is the absolute value of mi[]
726 736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and a thin merge-arrow descender is drawn to the bottom of
727 737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the screen.
728 738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** h: The artifact hash of the object being graphed
729 739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pGraph->pFirst ) cgi_printf("var topRow = %d\n", pGraph->pFirst->idx);
730 741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("var rowinfo = [\n");
731 742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
732 743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("{id:%d,bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,f:%d,au:",
733 744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRow->idx, /* id */
734 745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRow->zBgClr, /* bg */
@@ -772,11 +783,11 @@
772 783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var canvasDiv;
773 784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var railPitch;
774 785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var mergeOffset;
775 786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var node, arrow, arrowSmall, line, mArrow, mLine, wArrow, wLine;
776 787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ function initGraph(){
777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ var parent = gebi("timelineTable").rows[0].cells[1];
788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var parent = gebi("timelineTable%d(iTableId)").rows[0].cells[1];
778 789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ parent.style.verticalAlign = "top";
779 790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ canvasDiv = document.createElement("div");
780 791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ canvasDiv.className = "tl-canvas";
781 792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ canvasDiv.style.position = "absolute";
782 793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ parent.appendChild(canvasDiv);
@@ -901,11 +912,11 @@
901 912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var x = p.x + (p.r<rail ? node.w : -mArrow.w);
902 913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var cls = "arrow merge " + (p.r<rail ? "l" : "r");
903 914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ drawBox(cls,null,x,y+(mLine.w-mArrow.h)/2);
904 915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
905 916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ function drawNode(p, btm){
906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ if( p.u>0 ) drawUpArrow(p,rowinfo[p.u-1],p.fg);
917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ if( p.u>0 ) drawUpArrow(p,rowinfo[p.u-topRow],p.fg);
907 918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var cls = node.cls;
908 919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( p.mi.length ) cls += " merge";
909 920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( p.f&1 ) cls += " leaf";
910 921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var n = drawBox(cls,p.bg,p.x,p.y);
911 922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ n.id = "tln"+p.id;
@@ -916,11 +927,11 @@
916 927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( p.d ) drawUpArrow({x: p.x, y: btm-node.h/2},p,p.fg);
917 928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
918 929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( p.mo>=0 ){
919 930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var x0 = p.x + node.w/2;
920 931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var x1 = p.mo*railPitch + node.w/2;
921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ var u = rowinfo[p.mu-1];
932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var u = rowinfo[p.mu-topRow];
922 933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var y1 = miLineY(u);
923 934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( p.u<0 || p.mo!=p.r ){
924 935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ x1 += mergeLines[p.mo] = -mLine.w/2;
925 936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var y0 = p.y+2;
926 937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( p.r!=p.mo ) drawMergeLine(x0,y0,x1+(x0<x1 ? mLine.w : 0),null);
@@ -940,11 +951,11 @@
940 951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( x0<x1 ){
941 952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ x0 = Math.ceil(x0);
942 953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ x1 += line.w;
943 954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
944 955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var y0 = p.y + (node.h-line.w)/2;
945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ var u = rowinfo[p.au[i+1]-1];
956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var u = rowinfo[p.au[i+1]-topRow];
946 957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( u.id<p.id ){
947 958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ drawLine(line,u.fg,x0,y0,x1,null);
948 959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ drawUpArrow(p,u,u.fg);
949 960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }else{
950 961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var y1 = u.y + (node.h-line.w)/2;
@@ -986,11 +997,11 @@
986 997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ drawNode(rowinfo[i], btm);
987 998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
988 999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
989 1000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var selRow;
990 1001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ function clickOnNode(){
991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ var p = rowinfo[parseInt(this.id.match(/\d+$/)[0], 10)-1];
1002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var p = rowinfo[parseInt(this.id.match(/\d+$/)[0], 10)-topRow];
992 1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( !selRow ){
993 1004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ selRow = p;
994 1005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ this.className += " sel";
995 1006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ canvasDiv.className += " sel";
996 1007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }else if( selRow==p ){
997 1008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!