Fossil SCM
Fix problems on the stat page that appear for larger repositories.
Commit
80dc46d635bc236ca792ac2ad11da02c42d6ceec
Parent
68cf3ecdb70a115…
2 files changed
+2
+6
-3
+2
| --- src/setup.c | ||
| +++ src/setup.c | ||
| @@ -74,10 +74,12 @@ | ||
| 74 | 74 | "Edit the Cascading Style Sheet used by all pages of this repository"); |
| 75 | 75 | setup_menu_entry("Header", "setup_header", |
| 76 | 76 | "Edit HTML text inserted at the top of every page"); |
| 77 | 77 | setup_menu_entry("Footer", "setup_footer", |
| 78 | 78 | "Edit HTML text inserted at the bottom of every page"); |
| 79 | + setup_menu_entry("Stats", "stat", | |
| 80 | + "Display repository statistics"); | |
| 79 | 81 | @ </table> |
| 80 | 82 | |
| 81 | 83 | style_footer(); |
| 82 | 84 | } |
| 83 | 85 | |
| 84 | 86 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -74,10 +74,12 @@ | |
| 74 | "Edit the Cascading Style Sheet used by all pages of this repository"); |
| 75 | setup_menu_entry("Header", "setup_header", |
| 76 | "Edit HTML text inserted at the top of every page"); |
| 77 | setup_menu_entry("Footer", "setup_footer", |
| 78 | "Edit HTML text inserted at the bottom of every page"); |
| 79 | @ </table> |
| 80 | |
| 81 | style_footer(); |
| 82 | } |
| 83 | |
| 84 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -74,10 +74,12 @@ | |
| 74 | "Edit the Cascading Style Sheet used by all pages of this repository"); |
| 75 | setup_menu_entry("Header", "setup_header", |
| 76 | "Edit HTML text inserted at the top of every page"); |
| 77 | setup_menu_entry("Footer", "setup_footer", |
| 78 | "Edit HTML text inserted at the bottom of every page"); |
| 79 | setup_menu_entry("Stats", "stat", |
| 80 | "Display repository statistics"); |
| 81 | @ </table> |
| 82 | |
| 83 | style_footer(); |
| 84 | } |
| 85 | |
| 86 |
+6
-3
| --- src/stat.c | ||
| +++ src/stat.c | ||
| @@ -32,11 +32,13 @@ | ||
| 32 | 32 | ** WEBPAGE: stat |
| 33 | 33 | ** |
| 34 | 34 | ** Show statistics and global information about the repository. |
| 35 | 35 | */ |
| 36 | 36 | void stat_page(void){ |
| 37 | - int n, m, k; | |
| 37 | + i64 t; | |
| 38 | + int n, m; | |
| 39 | + char zBuf[100]; | |
| 38 | 40 | login_check_credentials(); |
| 39 | 41 | if( !g.okRead ){ login_needed(); return; } |
| 40 | 42 | style_header("Repository Statistics"); |
| 41 | 43 | @ <p><table class="label-value"> |
| 42 | 44 | @ <tr><th>Repository Size:</th><td> |
| @@ -48,12 +50,13 @@ | ||
| 48 | 50 | m = db_int(0, "SELECT count(*) FROM delta"); |
| 49 | 51 | @ %d(n-m) complete, %d(m) deltas, %d(n) total |
| 50 | 52 | @ </td></tr> |
| 51 | 53 | if( n>0 ){ |
| 52 | 54 | @ <tr><th>Uncompressed Artifact Size:</th><td> |
| 53 | - k = db_int(0, "SELECT total(size) FROM blob WHERE size>0"); | |
| 54 | - @ %d((int)(((double)k)/(double)n)) bytes average, %d(k) bytes total | |
| 55 | + t = db_int64(0, "SELECT total(size) FROM blob WHERE size>0"); | |
| 56 | + sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", t); | |
| 57 | + @ %d((int)(((double)t)/(double)n)) bytes average, %s(zBuf) bytes total | |
| 55 | 58 | @ </td></tr> |
| 56 | 59 | } |
| 57 | 60 | @ <tr><th>Number Of Baselines:</th><td> |
| 58 | 61 | n = db_int(0, "SELECT count(distinct mid) FROM mlink"); |
| 59 | 62 | @ %d(n) |
| 60 | 63 |
| --- src/stat.c | |
| +++ src/stat.c | |
| @@ -32,11 +32,13 @@ | |
| 32 | ** WEBPAGE: stat |
| 33 | ** |
| 34 | ** Show statistics and global information about the repository. |
| 35 | */ |
| 36 | void stat_page(void){ |
| 37 | int n, m, k; |
| 38 | login_check_credentials(); |
| 39 | if( !g.okRead ){ login_needed(); return; } |
| 40 | style_header("Repository Statistics"); |
| 41 | @ <p><table class="label-value"> |
| 42 | @ <tr><th>Repository Size:</th><td> |
| @@ -48,12 +50,13 @@ | |
| 48 | m = db_int(0, "SELECT count(*) FROM delta"); |
| 49 | @ %d(n-m) complete, %d(m) deltas, %d(n) total |
| 50 | @ </td></tr> |
| 51 | if( n>0 ){ |
| 52 | @ <tr><th>Uncompressed Artifact Size:</th><td> |
| 53 | k = db_int(0, "SELECT total(size) FROM blob WHERE size>0"); |
| 54 | @ %d((int)(((double)k)/(double)n)) bytes average, %d(k) bytes total |
| 55 | @ </td></tr> |
| 56 | } |
| 57 | @ <tr><th>Number Of Baselines:</th><td> |
| 58 | n = db_int(0, "SELECT count(distinct mid) FROM mlink"); |
| 59 | @ %d(n) |
| 60 |
| --- src/stat.c | |
| +++ src/stat.c | |
| @@ -32,11 +32,13 @@ | |
| 32 | ** WEBPAGE: stat |
| 33 | ** |
| 34 | ** Show statistics and global information about the repository. |
| 35 | */ |
| 36 | void stat_page(void){ |
| 37 | i64 t; |
| 38 | int n, m; |
| 39 | char zBuf[100]; |
| 40 | login_check_credentials(); |
| 41 | if( !g.okRead ){ login_needed(); return; } |
| 42 | style_header("Repository Statistics"); |
| 43 | @ <p><table class="label-value"> |
| 44 | @ <tr><th>Repository Size:</th><td> |
| @@ -48,12 +50,13 @@ | |
| 50 | m = db_int(0, "SELECT count(*) FROM delta"); |
| 51 | @ %d(n-m) complete, %d(m) deltas, %d(n) total |
| 52 | @ </td></tr> |
| 53 | if( n>0 ){ |
| 54 | @ <tr><th>Uncompressed Artifact Size:</th><td> |
| 55 | t = db_int64(0, "SELECT total(size) FROM blob WHERE size>0"); |
| 56 | sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", t); |
| 57 | @ %d((int)(((double)t)/(double)n)) bytes average, %s(zBuf) bytes total |
| 58 | @ </td></tr> |
| 59 | } |
| 60 | @ <tr><th>Number Of Baselines:</th><td> |
| 61 | n = db_int(0, "SELECT count(distinct mid) FROM mlink"); |
| 62 | @ %d(n) |
| 63 |