Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Add compression to the built-in javascript. Update comments on graph.js. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
4da95b254396d1f3fc8875a9fdccec82 |
| User & Date: | drh 2018-12-28 16:52:07.882 |
Context
|
2018-12-28
| ||
| 18:15 | Enhance the from=/to= query parameters on the /timeline page so that when the "rel" query parameter is present, the graph shows checkins that merge with checkins on the choose path. ... (check-in: 7759a00e3e user: drh tags: trunk) | |
| 16:52 | Add compression to the built-in javascript. Update comments on graph.js. ... (check-in: 4da95b2543 user: drh tags: trunk) | |
| 16:21 | Improved graph display when a single checkin is the parent of both a normal and a cherrypick merge. ... (check-in: 30aec47aa0 user: drh tags: trunk) | |
Changes
Changes to src/graph.js.
| ︙ | ︙ | |||
26 27 28 29 30 31 32 | ** is iTopRow and numbers increase moving down the timeline. ** bg: The background color for this row ** r: The "rail" that the node for this row sits on. The left-most ** rail is 0 and the number increases to the right. ** d: If exists and true then there is a "descender" - an arrow ** coming from the bottom of the page straight up to this node. ** mo: "merge-out". If it exists, this is the rail position | | | > | < | < | < | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | ** is iTopRow and numbers increase moving down the timeline. ** bg: The background color for this row ** r: The "rail" that the node for this row sits on. The left-most ** rail is 0 and the number increases to the right. ** d: If exists and true then there is a "descender" - an arrow ** coming from the bottom of the page straight up to this node. ** mo: "merge-out". If it exists, this is the rail position ** for the upward portion of a merge arrow. The merge arrow goes as ** a solid normal merge line up to the row identified by "mu" and ** then as a dashed cherrypick merge line up further to "cu". ** If this value is omitted if there are no merge children. ** mu: The id of the row which is the top of the merge-out arrow. ** Only exists if "mo" exists. ** cu: Extend the mu merge arrow up to this row as a cherrypick ** merge line, if this value exists. ** u: Draw a thick child-line out of the top of this node and up to ** the node with an id equal to this value. 0 if it is straight to ** the top of the page, -1 if there is no thick-line riser. ** f: 0x01: a leaf node. ** au: An array of integers that define thick-line risers for branches. ** The integers are in pairs. For each pair, the first integer is ** is the rail on which the riser should run and the second integer ** is the id of the node upto which the riser should run. If there ** are no risers, this array does not exist. ** mi: "merge-in". An array of integer rail positions from which ** merge arrows should be drawn into this node. If the value is |
| ︙ | ︙ |
Changes to src/mkbuiltin.c.
| ︙ | ︙ | |||
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
exit(1);
}
got = fread(z, 1, nByte, in);
fclose(in);
z[got] = 0;
return z;
}
/*
** There is an instance of the following for each file translated.
*/
typedef struct Resource Resource;
struct Resource {
char *zName;
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
exit(1);
}
got = fread(z, 1, nByte, in);
fclose(in);
z[got] = 0;
return z;
}
/*
** Try to compress a javascript file by removing unnecessary whitespace.
**
** Warning: This compression routine does not necessarily work for any
** arbitrary Javascript source file. But it should work ok for the
** well-behaved source files in this project.
*/
static void compressJavascript(unsigned char *z, int *pn){
int n = *pn;
int i, j, k;
for(i=j=0; i<n; i++){
unsigned char c = z[i];
if( c=='/' ){
if( z[i+1]=='*' ){
for(k=i+3; k<n && (z[k]!='/' || z[k-1]!='*'); k++){}
if( k<n ){
i = k;
while( i+1<n && isspace(z[i+1]) ) i++;
continue;
}
}else if( z[i+1]=='/' ){
for(k=i+2; k<n && z[k]!='\n'; k++){}
i = k;
while( i+1<n && isspace(z[i+1]) ) i++;
continue;
}
}
if( c=='\n' ){
while( j>0 && isspace(z[j-1]) ) j--;
z[j++] = '\n';
while( i+1<n && isspace(z[i+1]) ) i++;
continue;
}
z[j++] = c;
}
z[j] = 0;
*pn = j;
}
/*
** There is an instance of the following for each file translated.
*/
typedef struct Resource Resource;
struct Resource {
char *zName;
|
| ︙ | ︙ | |||
83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
int j, n;
Resource *aRes;
int nRes;
unsigned char *pData;
int nErr = 0;
int nSkip;
int nPrefix = 0;
if( argc>3 && strcmp(argv[1],"--prefix")==0 ){
nPrefix = (int)strlen(argv[2]);
argc -= 2;
argv += 2;
}
nRes = argc - 1;
| > | 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
int j, n;
Resource *aRes;
int nRes;
unsigned char *pData;
int nErr = 0;
int nSkip;
int nPrefix = 0;
int nName;
if( argc>3 && strcmp(argv[1],"--prefix")==0 ){
nPrefix = (int)strlen(argv[2]);
argc -= 2;
argv += 2;
}
nRes = argc - 1;
|
| ︙ | ︙ | |||
117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
/* Skip initial lines beginning with # */
nSkip = 0;
while( pData[nSkip]=='#' ){
while( pData[nSkip]!=0 && pData[nSkip]!='\n' ){ nSkip++; }
if( pData[nSkip]=='\n' ) nSkip++;
}
aRes[i].nByte = sz - nSkip;
aRes[i].idx = i;
printf("/* Content of file %s */\n", aRes[i].zName);
printf("static const unsigned char bidata%d[%d] = {\n ",
i, sz+1-nSkip);
for(j=nSkip, n=0; j<=sz; j++){
| > > > > > > > > | 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
/* Skip initial lines beginning with # */
nSkip = 0;
while( pData[nSkip]=='#' ){
while( pData[nSkip]!=0 && pData[nSkip]!='\n' ){ nSkip++; }
if( pData[nSkip]=='\n' ) nSkip++;
}
/* Compress javascript source files */
nName = (int)strlen(aRes[i].zName);
if( nName>3 && strcmp(&aRes[i].zName[nName-3],".js")==0 ){
int x = sz-nSkip;
compressJavascript(pData+nSkip, &x);
sz = x + nSkip;
}
aRes[i].nByte = sz - nSkip;
aRes[i].idx = i;
printf("/* Content of file %s */\n", aRes[i].zName);
printf("static const unsigned char bidata%d[%d] = {\n ",
i, sz+1-nSkip);
for(j=nSkip, n=0; j<=sz; j++){
|
| ︙ | ︙ |
Changes to src/timeline.c.
| ︙ | ︙ | |||
870 871 872 873 874 875 876 |
** mo: "merge-out". If it exists, this is the rail position
** for the upward portion of a merge arrow. The merge arrow goes as
** a solid normal merge line up to the row identified by "mu" and
** then as a dashed cherrypick merge line up further to "cu".
** If this value is omitted if there are no merge children.
** mu: The id of the row which is the top of the merge-out arrow.
** Only exists if "mo" exists.
| | | 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 |
** mo: "merge-out". If it exists, this is the rail position
** for the upward portion of a merge arrow. The merge arrow goes as
** a solid normal merge line up to the row identified by "mu" and
** then as a dashed cherrypick merge line up further to "cu".
** If this value is omitted if there are no merge children.
** mu: The id of the row which is the top of the merge-out arrow.
** Only exists if "mo" exists.
** cu: Extend the mu merge arrow up to this row as a cherrypick
** merge line, if this value exists.
** u: Draw a thick child-line out of the top of this node and up to
** the node with an id equal to this value. 0 if it is straight to
** the top of the page, -1 if there is no thick-line riser.
** f: 0x01: a leaf node.
** au: An array of integers that define thick-line risers for branches.
** The integers are in pairs. For each pair, the first integer is
|
| ︙ | ︙ |