Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Make the spacing between vertical rail centerlines in the graph adjustable based on the number of rails. Use less horizontal space. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
d57481a707e1d558d0535f3b961f6aec |
| User & Date: | drh 2012-12-06 01:47:19.720 |
Context
|
2012-12-06
| ||
| 02:44 | Increase the maximum graph with to 40 rails. Fix the graph display for individual files, which was broken by the prior change. ... (check-in: 8d4ee62b18 user: drh tags: trunk) | |
| 01:47 | Make the spacing between vertical rail centerlines in the graph adjustable based on the number of rails. Use less horizontal space. ... (check-in: d57481a707 user: drh tags: trunk) | |
|
2012-12-05
| ||
| 15:47 | Pull the SQLite 3.7.15 beta from upstream for testing. ... (check-in: 0eb3d8e828 user: drh tags: trunk) | |
Changes
Changes to src/graph.c.
| ︙ | ︙ | |||
59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
};
/* Context while building a graph
*/
struct GraphContext {
int nErr; /* Number of errors encountered */
int mxRail; /* Number of rails required to render the graph */
GraphRow *pFirst; /* First row in the list */
GraphRow *pLast; /* Last row in the list */
int nBranch; /* Number of distinct branches */
char **azBranch; /* Names of the branches */
int nRow; /* Number of rows */
int nHash; /* Number of slots in apHash[] */
GraphRow **apHash; /* Hash table of GraphRow objects. Key: rid */
| > | 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
};
/* Context while building a graph
*/
struct GraphContext {
int nErr; /* Number of errors encountered */
int mxRail; /* Number of rails required to render the graph */
int iRailPitch; /* Pixels between rail centers */
GraphRow *pFirst; /* First row in the list */
GraphRow *pLast; /* Last row in the list */
int nBranch; /* Number of distinct branches */
char **azBranch; /* Names of the branches */
int nRow; /* Number of rows */
int nHash; /* Number of slots in apHash[] */
GraphRow **apHash; /* Hash table of GraphRow objects. Key: rid */
|
| ︙ | ︙ |
Changes to src/timeline.c.
| ︙ | ︙ | |||
481 482 483 484 485 486 487 488 489 490 491 |
}
if( pGraph ){
graph_finish(pGraph, (tmFlags & TIMELINE_DISJOINT)!=0);
if( pGraph->nErr ){
graph_free(pGraph);
pGraph = 0;
}else{
/* style is not moved to css, because this is
** a technical div for the timeline graph
*/
@ <tr><td></td><td>
| > > > > | | 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 |
}
if( pGraph ){
graph_finish(pGraph, (tmFlags & TIMELINE_DISJOINT)!=0);
if( pGraph->nErr ){
graph_free(pGraph);
pGraph = 0;
}else{
int w;
/* style is not moved to css, because this is
** a technical div for the timeline graph
*/
pGraph->iRailPitch = 18 - (pGraph->mxRail/3);
if( pGraph->iRailPitch<12 ) pGraph->iRailPitch = 12;
w = pGraph->mxRail*pGraph->iRailPitch + 30;
@ <tr><td></td><td>
@ <div id="grbtm" style="width:%d(w)px;"></div>
@ </td><td></td></tr>
}
}
@ </table>
if( fchngQueryInit ) db_finalize(&fchngQuery);
timeline_output_graph_javascript(pGraph, (tmFlags & TIMELINE_DISJOINT)!=0, 0);
}
|
| ︙ | ︙ | |||
509 510 511 512 513 514 515 516 517 518 519 520 521 522 |
){
if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
GraphRow *pRow;
int i;
char cSep;
@ <script type="text/JavaScript">
@ /* <![CDATA[ */
/* the rowinfo[] array contains all the information needed to generate
** the graph. Each entry contains information for a single row:
**
** id: The id of the <div> element for the row. This is an integer.
** to get an actual id, prepend "m" to the integer. The top node
** is 1 and numbers increase moving down the timeline.
| > | 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 |
){
if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
GraphRow *pRow;
int i;
char cSep;
@ <script type="text/JavaScript">
@ /* <![CDATA[ */
@ var railPitch=%d(pGraph->iRailPitch);
/* the rowinfo[] array contains all the information needed to generate
** the graph. Each entry contains information for a single row:
**
** id: The id of the <div> element for the row. This is an integer.
** to get an actual id, prepend "m" to the integer. The top node
** is 1 and numbers increase moving down the timeline.
|
| ︙ | ︙ | |||
547 548 549 550 551 552 553 |
*/
cgi_printf("var rowinfo = [\n");
for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
int mo = pRow->mergeOut;
if( mo<0 ){
mo = 0;
}else{
| | | 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 |
*/
cgi_printf("var rowinfo = [\n");
for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
int mo = pRow->mergeOut;
if( mo<0 ){
mo = 0;
}else{
mo = (mo/4)*pGraph->iRailPitch - 3 + 4*(mo&3);
}
cgi_printf("{id:%d,bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,f:%d,au:",
pRow->idx, /* id */
pRow->zBgClr, /* bg */
pRow->iRail, /* r */
pRow->bDescender, /* d */
mo, /* mo */
|
| ︙ | ︙ | |||
574 575 576 577 578 579 580 |
}
if( cSep=='[' ) cgi_printf("[");
cgi_printf("],mi:");
/* mi */
cSep = '[';
for(i=0; i<GR_MAX_RAIL; i++){
if( pRow->mergeIn[i] ){
| | | 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 |
}
if( cSep=='[' ) cgi_printf("[");
cgi_printf("],mi:");
/* mi */
cSep = '[';
for(i=0; i<GR_MAX_RAIL; i++){
if( pRow->mergeIn[i] ){
int mi = i*pGraph->iRailPitch - 8 + 4*pRow->mergeIn[i];
if( pRow->mergeDown & (1<<i) ) mi = -mi;
cgi_printf("%c%d", cSep, mi);
cSep = ',';
}
}
if( cSep=='[' ) cgi_printf("[");
cgi_printf("],h:\"%s\"}%s", pRow->zUuid, pRow->pNext ? ",\n" : "];\n");
|
| ︙ | ︙ | |||
675 676 677 678 679 680 681 |
@ }else{
@ drawThinLine(x0,y1,x1,y1);
@ }
@ drawThinLine(x1,y0,x1,y1);
@ }
@ var n = p.au.length;
@ for(var i=0; i<n; i+=2){
| | | 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 |
@ }else{
@ drawThinLine(x0,y1,x1,y1);
@ }
@ drawThinLine(x1,y0,x1,y1);
@ }
@ var n = p.au.length;
@ for(var i=0; i<n; i+=2){
@ var x1 = p.au[i]*railPitch + left;
@ var x0 = x1>p.x ? p.x+7 : p.x-6;
@ var u = rowinfo[p.au[i+1]-1];
@ if(u.id<p.id){
@ drawBox("black",x0,p.y,x1,p.y+1);
@ drawUpArrow(x1, u.y+6, p.y);
@ }else{
@ drawBox("#600000",x0,p.y,x1,p.y+1);
|
| ︙ | ︙ | |||
714 715 716 717 718 719 720 |
@ function renderGraph(){
@ var canvasDiv = gebi("canvas");
@ while( canvasDiv.hasChildNodes() ){
@ canvasDiv.removeChild(canvasDiv.firstChild);
@ }
@ var canvasY = absoluteY("timelineTable");
@ var left = absoluteX("m"+rowinfo[0].id) - absoluteX("canvas") + 15;
| | | | 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 |
@ function renderGraph(){
@ var canvasDiv = gebi("canvas");
@ while( canvasDiv.hasChildNodes() ){
@ canvasDiv.removeChild(canvasDiv.firstChild);
@ }
@ var canvasY = absoluteY("timelineTable");
@ var left = absoluteX("m"+rowinfo[0].id) - absoluteX("canvas") + 15;
@ var width = nrail*railPitch;
@ for(var i in rowinfo){
@ rowinfo[i].y = absoluteY("m"+rowinfo[i].id) + 10 - canvasY;
@ rowinfo[i].x = left + rowinfo[i].r*railPitch;
@ }
@ var btm = absoluteY("grbtm") + 10 - canvasY;
#if 0
@ if( btm<32768 ){
@ canvasDiv.innerHTML = '<canvas id="timeline-canvas" '+
@ 'style="position:absolute;left:'+(left-5)+'px;"' +
@ ' width="'+width+'" height="'+btm+'"><'+'/canvas>';
|
| ︙ | ︙ |