Fossil SCM
Add the "brief" query parameter to the "stat" page.
Commit
d01ca14d08cdce1a40db72710dc29ce69e5daa20
Parent
6cf00533b2fafdd…
1 file changed
+54
-54
+54
-54
| --- src/stat.c | ||
| +++ src/stat.c | ||
| @@ -30,82 +30,82 @@ | ||
| 30 | 30 | void stat_page(void){ |
| 31 | 31 | i64 t, fsize; |
| 32 | 32 | int n, m; |
| 33 | 33 | int szMax, szAvg; |
| 34 | 34 | const char *zDb; |
| 35 | + int brief; | |
| 35 | 36 | char zBuf[100]; |
| 36 | 37 | |
| 37 | 38 | login_check_credentials(); |
| 38 | 39 | if( !g.okRead ){ login_needed(); return; } |
| 40 | + brief = P("brief")!=0; | |
| 39 | 41 | style_header("Repository Statistics"); |
| 40 | 42 | @ <table class="label-value"> |
| 41 | 43 | @ <tr><th>Repository Size:</th><td> |
| 42 | 44 | fsize = file_size(g.zRepositoryName); |
| 43 | 45 | sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", fsize); |
| 44 | 46 | @ %s(zBuf) bytes |
| 45 | 47 | @ </td></tr> |
| 46 | - @ <tr><th>Number Of Artifacts:</th><td> | |
| 47 | - n = db_int(0, "SELECT count(*) FROM blob"); | |
| 48 | - m = db_int(0, "SELECT count(*) FROM delta"); | |
| 49 | - @ %d(n) (stored as %d(n-m) full text and %d(m) delta blobs) | |
| 50 | - @ </td></tr> | |
| 51 | - if( n>0 ){ | |
| 52 | - int a, b; | |
| 53 | - Stmt q; | |
| 54 | - @ <tr><th>Uncompressed Artifact Size:</th><td> | |
| 55 | - db_prepare(&q, "SELECT total(size), avg(size), max(size)" | |
| 56 | - " FROM blob WHERE size>0"); | |
| 57 | - db_step(&q); | |
| 58 | - t = db_column_int64(&q, 0); | |
| 59 | - szAvg = db_column_int(&q, 1); | |
| 60 | - szMax = db_column_int(&q, 2); | |
| 61 | - db_finalize(&q); | |
| 62 | - sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", t); | |
| 63 | - @ %d(szAvg) bytes average, %d(szMax) bytes max, %s(zBuf) bytes total | |
| 64 | - @ </td></tr> | |
| 65 | - @ <tr><th>Compression Ratio:</th><td> | |
| 66 | - if( t/fsize < 5 ){ | |
| 67 | - b = 10; | |
| 68 | - fsize /= 10; | |
| 69 | - }else{ | |
| 70 | - b = 1; | |
| 71 | - } | |
| 72 | - a = t/fsize; | |
| 73 | - @ %d(a):%d(b) | |
| 74 | - @ </td></tr> | |
| 75 | - } | |
| 76 | - @ <tr><th>Number Of Check-ins:</th><td> | |
| 77 | - n = db_int(0, "SELECT count(distinct mid) FROM mlink /*scan*/"); | |
| 78 | - @ %d(n) | |
| 79 | - @ </td></tr> | |
| 80 | - @ <tr><th>Number Of Files:</th><td> | |
| 81 | - n = db_int(0, "SELECT count(*) FROM filename /*scan*/"); | |
| 82 | - @ %d(n) | |
| 83 | - @ </td></tr> | |
| 84 | - @ <tr><th>Number Of Wiki Pages:</th><td> | |
| 85 | - n = db_int(0, "SELECT count(*) FROM tag /*scan*/" | |
| 86 | - " WHERE +tagname GLOB 'wiki-*'"); | |
| 87 | - @ %d(n) | |
| 88 | - @ </td></tr> | |
| 89 | - @ <tr><th>Number Of Tickets:</th><td> | |
| 90 | - n = db_int(0, "SELECT count(*) FROM tag /*scan*/" | |
| 91 | - " WHERE +tagname GLOB 'tkt-*'"); | |
| 92 | - @ %d(n) | |
| 93 | - @ </td></tr> | |
| 48 | + if( !brief ){ | |
| 49 | + @ <tr><th>Number Of Artifacts:</th><td> | |
| 50 | + n = db_int(0, "SELECT count(*) FROM blob"); | |
| 51 | + m = db_int(0, "SELECT count(*) FROM delta"); | |
| 52 | + @ %d(n) (stored as %d(n-m) full text and %d(m) delta blobs) | |
| 53 | + @ </td></tr> | |
| 54 | + if( n>0 ){ | |
| 55 | + int a, b; | |
| 56 | + Stmt q; | |
| 57 | + @ <tr><th>Uncompressed Artifact Size:</th><td> | |
| 58 | + db_prepare(&q, "SELECT total(size), avg(size), max(size)" | |
| 59 | + " FROM blob WHERE size>0"); | |
| 60 | + db_step(&q); | |
| 61 | + t = db_column_int64(&q, 0); | |
| 62 | + szAvg = db_column_int(&q, 1); | |
| 63 | + szMax = db_column_int(&q, 2); | |
| 64 | + db_finalize(&q); | |
| 65 | + sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", t); | |
| 66 | + @ %d(szAvg) bytes average, %d(szMax) bytes max, %s(zBuf) bytes total | |
| 67 | + @ </td></tr> | |
| 68 | + @ <tr><th>Compression Ratio:</th><td> | |
| 69 | + if( t/fsize < 5 ){ | |
| 70 | + b = 10; | |
| 71 | + fsize /= 10; | |
| 72 | + }else{ | |
| 73 | + b = 1; | |
| 74 | + } | |
| 75 | + a = t/fsize; | |
| 76 | + @ %d(a):%d(b) | |
| 77 | + @ </td></tr> | |
| 78 | + } | |
| 79 | + @ <tr><th>Number Of Check-ins:</th><td> | |
| 80 | + n = db_int(0, "SELECT count(distinct mid) FROM mlink /*scan*/"); | |
| 81 | + @ %d(n) | |
| 82 | + @ </td></tr> | |
| 83 | + @ <tr><th>Number Of Files:</th><td> | |
| 84 | + n = db_int(0, "SELECT count(*) FROM filename /*scan*/"); | |
| 85 | + @ %d(n) | |
| 86 | + @ </td></tr> | |
| 87 | + @ <tr><th>Number Of Wiki Pages:</th><td> | |
| 88 | + n = db_int(0, "SELECT count(*) FROM tag /*scan*/" | |
| 89 | + " WHERE +tagname GLOB 'wiki-*'"); | |
| 90 | + @ %d(n) | |
| 91 | + @ </td></tr> | |
| 92 | + @ <tr><th>Number Of Tickets:</th><td> | |
| 93 | + n = db_int(0, "SELECT count(*) FROM tag /*scan*/" | |
| 94 | + " WHERE +tagname GLOB 'tkt-*'"); | |
| 95 | + @ %d(n) | |
| 96 | + @ </td></tr> | |
| 97 | + } | |
| 94 | 98 | @ <tr><th>Duration Of Project:</th><td> |
| 95 | 99 | n = db_int(0, "SELECT julianday('now') - (SELECT min(mtime) FROM event)" |
| 96 | 100 | " + 0.99"); |
| 97 | 101 | @ %d(n) days |
| 98 | 102 | sqlite3_snprintf(sizeof(zBuf), zBuf, "%.2f", n/365.24); |
| 99 | 103 | @ or approximately %s(zBuf) years |
| 100 | 104 | @ </td></tr> |
| 101 | - @ <tr><th>Project ID:</th><td> | |
| 102 | - @ %h(db_get("project-code","")) | |
| 103 | - @ </td></tr> | |
| 104 | - @ <tr><th>Server ID:</th><td> | |
| 105 | - @ %h(db_get("server-code","")) | |
| 106 | - @ </td></tr> | |
| 105 | + @ <tr><th>Project ID:</th><td>%h(db_get("project-code",""))</td></tr> | |
| 106 | + @ <tr><th>Server ID:</th><td>%h(db_get("server-code",""))</td></tr> | |
| 107 | 107 | |
| 108 | 108 | @ <tr><th>Fossil Version:</th><td> |
| 109 | 109 | @ %h(RELEASE_VERSION) %h(MANIFEST_DATE) %h(MANIFEST_VERSION) |
| 110 | 110 | @ (%h(COMPILER_NAME)) |
| 111 | 111 | @ </td></tr> |
| 112 | 112 |
| --- src/stat.c | |
| +++ src/stat.c | |
| @@ -30,82 +30,82 @@ | |
| 30 | void stat_page(void){ |
| 31 | i64 t, fsize; |
| 32 | int n, m; |
| 33 | int szMax, szAvg; |
| 34 | const char *zDb; |
| 35 | char zBuf[100]; |
| 36 | |
| 37 | login_check_credentials(); |
| 38 | if( !g.okRead ){ login_needed(); return; } |
| 39 | style_header("Repository Statistics"); |
| 40 | @ <table class="label-value"> |
| 41 | @ <tr><th>Repository Size:</th><td> |
| 42 | fsize = file_size(g.zRepositoryName); |
| 43 | sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", fsize); |
| 44 | @ %s(zBuf) bytes |
| 45 | @ </td></tr> |
| 46 | @ <tr><th>Number Of Artifacts:</th><td> |
| 47 | n = db_int(0, "SELECT count(*) FROM blob"); |
| 48 | m = db_int(0, "SELECT count(*) FROM delta"); |
| 49 | @ %d(n) (stored as %d(n-m) full text and %d(m) delta blobs) |
| 50 | @ </td></tr> |
| 51 | if( n>0 ){ |
| 52 | int a, b; |
| 53 | Stmt q; |
| 54 | @ <tr><th>Uncompressed Artifact Size:</th><td> |
| 55 | db_prepare(&q, "SELECT total(size), avg(size), max(size)" |
| 56 | " FROM blob WHERE size>0"); |
| 57 | db_step(&q); |
| 58 | t = db_column_int64(&q, 0); |
| 59 | szAvg = db_column_int(&q, 1); |
| 60 | szMax = db_column_int(&q, 2); |
| 61 | db_finalize(&q); |
| 62 | sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", t); |
| 63 | @ %d(szAvg) bytes average, %d(szMax) bytes max, %s(zBuf) bytes total |
| 64 | @ </td></tr> |
| 65 | @ <tr><th>Compression Ratio:</th><td> |
| 66 | if( t/fsize < 5 ){ |
| 67 | b = 10; |
| 68 | fsize /= 10; |
| 69 | }else{ |
| 70 | b = 1; |
| 71 | } |
| 72 | a = t/fsize; |
| 73 | @ %d(a):%d(b) |
| 74 | @ </td></tr> |
| 75 | } |
| 76 | @ <tr><th>Number Of Check-ins:</th><td> |
| 77 | n = db_int(0, "SELECT count(distinct mid) FROM mlink /*scan*/"); |
| 78 | @ %d(n) |
| 79 | @ </td></tr> |
| 80 | @ <tr><th>Number Of Files:</th><td> |
| 81 | n = db_int(0, "SELECT count(*) FROM filename /*scan*/"); |
| 82 | @ %d(n) |
| 83 | @ </td></tr> |
| 84 | @ <tr><th>Number Of Wiki Pages:</th><td> |
| 85 | n = db_int(0, "SELECT count(*) FROM tag /*scan*/" |
| 86 | " WHERE +tagname GLOB 'wiki-*'"); |
| 87 | @ %d(n) |
| 88 | @ </td></tr> |
| 89 | @ <tr><th>Number Of Tickets:</th><td> |
| 90 | n = db_int(0, "SELECT count(*) FROM tag /*scan*/" |
| 91 | " WHERE +tagname GLOB 'tkt-*'"); |
| 92 | @ %d(n) |
| 93 | @ </td></tr> |
| 94 | @ <tr><th>Duration Of Project:</th><td> |
| 95 | n = db_int(0, "SELECT julianday('now') - (SELECT min(mtime) FROM event)" |
| 96 | " + 0.99"); |
| 97 | @ %d(n) days |
| 98 | sqlite3_snprintf(sizeof(zBuf), zBuf, "%.2f", n/365.24); |
| 99 | @ or approximately %s(zBuf) years |
| 100 | @ </td></tr> |
| 101 | @ <tr><th>Project ID:</th><td> |
| 102 | @ %h(db_get("project-code","")) |
| 103 | @ </td></tr> |
| 104 | @ <tr><th>Server ID:</th><td> |
| 105 | @ %h(db_get("server-code","")) |
| 106 | @ </td></tr> |
| 107 | |
| 108 | @ <tr><th>Fossil Version:</th><td> |
| 109 | @ %h(RELEASE_VERSION) %h(MANIFEST_DATE) %h(MANIFEST_VERSION) |
| 110 | @ (%h(COMPILER_NAME)) |
| 111 | @ </td></tr> |
| 112 |
| --- src/stat.c | |
| +++ src/stat.c | |
| @@ -30,82 +30,82 @@ | |
| 30 | void stat_page(void){ |
| 31 | i64 t, fsize; |
| 32 | int n, m; |
| 33 | int szMax, szAvg; |
| 34 | const char *zDb; |
| 35 | int brief; |
| 36 | char zBuf[100]; |
| 37 | |
| 38 | login_check_credentials(); |
| 39 | if( !g.okRead ){ login_needed(); return; } |
| 40 | brief = P("brief")!=0; |
| 41 | style_header("Repository Statistics"); |
| 42 | @ <table class="label-value"> |
| 43 | @ <tr><th>Repository Size:</th><td> |
| 44 | fsize = file_size(g.zRepositoryName); |
| 45 | sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", fsize); |
| 46 | @ %s(zBuf) bytes |
| 47 | @ </td></tr> |
| 48 | if( !brief ){ |
| 49 | @ <tr><th>Number Of Artifacts:</th><td> |
| 50 | n = db_int(0, "SELECT count(*) FROM blob"); |
| 51 | m = db_int(0, "SELECT count(*) FROM delta"); |
| 52 | @ %d(n) (stored as %d(n-m) full text and %d(m) delta blobs) |
| 53 | @ </td></tr> |
| 54 | if( n>0 ){ |
| 55 | int a, b; |
| 56 | Stmt q; |
| 57 | @ <tr><th>Uncompressed Artifact Size:</th><td> |
| 58 | db_prepare(&q, "SELECT total(size), avg(size), max(size)" |
| 59 | " FROM blob WHERE size>0"); |
| 60 | db_step(&q); |
| 61 | t = db_column_int64(&q, 0); |
| 62 | szAvg = db_column_int(&q, 1); |
| 63 | szMax = db_column_int(&q, 2); |
| 64 | db_finalize(&q); |
| 65 | sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", t); |
| 66 | @ %d(szAvg) bytes average, %d(szMax) bytes max, %s(zBuf) bytes total |
| 67 | @ </td></tr> |
| 68 | @ <tr><th>Compression Ratio:</th><td> |
| 69 | if( t/fsize < 5 ){ |
| 70 | b = 10; |
| 71 | fsize /= 10; |
| 72 | }else{ |
| 73 | b = 1; |
| 74 | } |
| 75 | a = t/fsize; |
| 76 | @ %d(a):%d(b) |
| 77 | @ </td></tr> |
| 78 | } |
| 79 | @ <tr><th>Number Of Check-ins:</th><td> |
| 80 | n = db_int(0, "SELECT count(distinct mid) FROM mlink /*scan*/"); |
| 81 | @ %d(n) |
| 82 | @ </td></tr> |
| 83 | @ <tr><th>Number Of Files:</th><td> |
| 84 | n = db_int(0, "SELECT count(*) FROM filename /*scan*/"); |
| 85 | @ %d(n) |
| 86 | @ </td></tr> |
| 87 | @ <tr><th>Number Of Wiki Pages:</th><td> |
| 88 | n = db_int(0, "SELECT count(*) FROM tag /*scan*/" |
| 89 | " WHERE +tagname GLOB 'wiki-*'"); |
| 90 | @ %d(n) |
| 91 | @ </td></tr> |
| 92 | @ <tr><th>Number Of Tickets:</th><td> |
| 93 | n = db_int(0, "SELECT count(*) FROM tag /*scan*/" |
| 94 | " WHERE +tagname GLOB 'tkt-*'"); |
| 95 | @ %d(n) |
| 96 | @ </td></tr> |
| 97 | } |
| 98 | @ <tr><th>Duration Of Project:</th><td> |
| 99 | n = db_int(0, "SELECT julianday('now') - (SELECT min(mtime) FROM event)" |
| 100 | " + 0.99"); |
| 101 | @ %d(n) days |
| 102 | sqlite3_snprintf(sizeof(zBuf), zBuf, "%.2f", n/365.24); |
| 103 | @ or approximately %s(zBuf) years |
| 104 | @ </td></tr> |
| 105 | @ <tr><th>Project ID:</th><td>%h(db_get("project-code",""))</td></tr> |
| 106 | @ <tr><th>Server ID:</th><td>%h(db_get("server-code",""))</td></tr> |
| 107 | |
| 108 | @ <tr><th>Fossil Version:</th><td> |
| 109 | @ %h(RELEASE_VERSION) %h(MANIFEST_DATE) %h(MANIFEST_VERSION) |
| 110 | @ (%h(COMPILER_NAME)) |
| 111 | @ </td></tr> |
| 112 |