@@ -211,11 +211,12 @@
211 211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( tmFlags & TIMELINE_GRAPH ){
212 212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pGraph = graph_init();
213 213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* style is not moved to css, because this is
214 214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a technical div for the timeline graph
215 215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <div id="canvas" style="position:relative;width:1px;height:1px;"></div>
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div id="canvas" style="position:relative;width:1px;height:1px;"
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ onclick="clickOnGraph(event)"></div>
217 218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
218 219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_static_prepare(&qbranch,
219 220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0 AND rid=:rid",
220 221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TAG_BRANCH
221 222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
@@ -311,11 +312,12 @@
311 312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_bind_int(&qparent, ":rid", rid);
312 313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&qparent)==SQLITE_ROW && nParent<32 ){
313 314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aParent[nParent++] = db_column_int(&qparent, 0);
314 315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
315 316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_reset(&qparent);
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- gidx = graph_add_row(pGraph, rid, nParent, aParent, zBr, zBgClr, isLeaf);
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ gidx = graph_add_row(pGraph, rid, nParent, aParent, zBr, zBgClr,
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zUuid, isLeaf);
317 319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_reset(&qbranch);
318 320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <div id="m%d(gidx)"></div>
319 321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
320 322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@</td>
321 323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zBgClr && zBgClr[0] ){
@@ -491,18 +493,22 @@
491 493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </td><td></td></tr>
492 494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
493 495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
494 496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </table>
495 497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fchngQueryInit ) db_finalize(&fchngQuery);
496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- timeline_output_graph_javascript(pGraph, (tmFlags & TIMELINE_DISJOINT)!=0);
498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ timeline_output_graph_javascript(pGraph, (tmFlags & TIMELINE_DISJOINT)!=0, 0);
497 499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
498 500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
499 501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
500 502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate all of the necessary javascript to generate a timeline
501 503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** graph.
502 504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void timeline_output_graph_javascript(GraphContext *pGraph, int omitDescenders){
505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void timeline_output_graph_javascript(
506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ GraphContext *pGraph, /* The graph to be displayed */
507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int omitDescenders, /* True to omit descenders */
508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int fileDiff /* True for file diff. False for check-in diff */
509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
504 510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
505 511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
GraphRow *pRow;
506 512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
507 513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char cSep;
508 514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <script type="text/JavaScript">
@@ -535,10 +541,11 @@
535 541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** mi: "merge-in". An array of integer x-coordinates from which
536 542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** merge arrows should be drawn into this node. If the value is
537 543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** negative, then the x-coordinate is the absolute value of mi[]
538 544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and a thin merge-arrow descender is drawn to the bottom of
539 545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the screen.
546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** h: The SHA1 hash of the object being graphed
540 547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
541 548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("var rowinfo = [\n");
542 549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
543 550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mo = pRow->mergeOut;
544 551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( mo<0 ){
@@ -576,11 +583,11 @@
576 583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("%c%d", cSep, mi);
577 584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cSep = ',';
578 585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
579 586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
580 587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cSep=='[' ) cgi_printf("[");
581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("]}%s", pRow->pNext ? ",\n" : "];\n");
588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("],h:\"%s\"}%s", pRow->zUuid, pRow->pNext ? ",\n" : "];\n");
582 589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
583 590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("var nrail = %d\n", pGraph->mxRail+1);
584 591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
graph_free(pGraph);
585 592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var canvasDiv = gebi("canvas");
586 593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if 0
@@ -598,10 +605,11 @@
598 605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ n.style.top = y0+"px";
599 606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ n.style.width = w+"px";
600 607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ n.style.height = h+"px";
601 608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ n.style.backgroundColor = color;
602 609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ canvasDiv.appendChild(n);
610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ return n;
603 611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
604 612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ function absoluteY(id){
605 613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var obj = gebi(id);
606 614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( !obj ) return;
607 615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var top = 0;
@@ -699,10 +707,12 @@
699 707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }else{
700 708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ drawThinArrow(y0,mx,p.x-5);
701 709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
702 710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
703 711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var selBox = null;
713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var selRow = null;
704 714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ function renderGraph(){
705 715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var canvasDiv = gebi("canvas");
706 716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ while( canvasDiv.hasChildNodes() ){
707 717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ canvasDiv.removeChild(canvasDiv.firstChild);
708 718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
@@ -736,10 +746,41 @@
736 746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ };
737 747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
738 748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
739 749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ for(var i in rowinfo){
740 750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ drawNode(rowinfo[i], left, btm);
751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }
752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ if( selRow!=null ) clickOnRow(selRow);
753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }
754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ function clickOnGraph(event){
755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var x=event.clientX-absoluteX("canvas")+window.pageXOffset;
756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var y=event.clientY-absoluteY("canvas")+window.pageYOffset;
757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ for(var i in rowinfo){
758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ p = rowinfo[i];
759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ if( p.y<y-10 ) continue;
760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ if( p.y>y+10 ) break;
761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ if( p.x>x-10 && p.x<x+10 ){
762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ clickOnRow(p);
763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ break;
764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }
765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }
766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }
767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ function clickOnRow(p){
768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ if( selRow==null ){
769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ selBox = drawBox("red",p.x-2,p.y-2,p.x+3,p.y+3);
770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ selRow = p;
771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }else if( selRow==p ){
772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var canvasDiv = gebi("canvas");
773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ canvasDiv.removeChild(selBox);
774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ selBox = null;
775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ selRow = null;
776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }else{
777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fileDiff ){
778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ location.href="%R/fdiff?v1="+selRow.h+"&v2="+p.h;
779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ location.href="%R/vdiff?from="+selRow.h+"&to="+p.h;
781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
741 782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
742 783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
743 784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var lastId = "m"+rowinfo[rowinfo.length-1].id;
744 785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var lastY = 0;
745 786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ function checkHeight(){
746 787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!