Fossil SCM

Integrated user=drh flag into more of the stats_report links. When user!='', the byweek report now only lists years for which the user produced events.

stephan 2013-07-16 21:46 UTC stats-report-weekly
Commit 7eeaf16e72526994a5480872ab80e30852a4c021
1 file changed +32 -8
+32 -8
--- src/timeline.c
+++ src/timeline.c
@@ -2069,22 +2069,33 @@
20692069
int nYear = zYear ? strlen(zYear) : 0;
20702070
int i = 0;
20712071
Stmt qYears = empty_Stmt;
20722072
char * zDefaultYear = NULL;
20732073
char const * zUserName = P("user");
2074
+ Blob sql = empty_blob;
2075
+ if(!zUserName) zUserName = P("u");
20742076
cgi_printf("Select year: ");
2075
- db_prepare(&qYears,
2076
- "SELECT DISTINCT substr(date(mtime),1,4) AS y "
2077
- "FROM event GROUP BY y ORDER BY y");
20782077
2078
+ blob_append(&sql,
2079
+ "SELECT DISTINCT substr(date(mtime),1,4) AS y "
2080
+ "FROM event WHERE 1 ", -1);
2081
+ if(zUserName&&*zUserName){
2082
+ blob_appendf(&sql,"AND user=%Q ", zUserName);
2083
+ }
2084
+ blob_append(&sql,"GROUP BY y ORDER BY y", -1);
2085
+ db_prepare(&qYears, blob_str(&sql));
2086
+ blob_reset(&sql);
20792087
while( SQLITE_ROW == db_step(&qYears) ){
20802088
char const * zT = db_column_text(&qYears, 0);
20812089
if( i++ ){
20822090
cgi_printf(" ");
20832091
}
2084
- cgi_printf("<a href='?view=byweek&y=%s'>%s</a>",
2085
- zT, zT);
2092
+ cgi_printf("<a href='?view=byweek&y=%s", zT);
2093
+ if(zUserName && *zUserName){
2094
+ cgi_printf("&user=%t",zUserName);
2095
+ }
2096
+ cgi_printf("'>%s</a>",zT);
20862097
}
20872098
db_finalize(&qYears);
20882099
cgi_printf("<br/>");
20892100
if(!zYear || !*zYear){
20902101
zDefaultYear = db_text("????", "SELECT strftime('%%Y')");
@@ -2093,11 +2104,11 @@
20932104
}
20942105
if(4 == nYear){
20952106
int const nPixelsPerEvent = 3; /* for sizing the "graph" part */
20962107
Stmt stWeek = empty_Stmt;
20972108
int rowCount = 0;
2098
- Blob sql = empty_blob;
2109
+ int total = 0;
20992110
Blob header = empty_blob;
21002111
blob_appendf(&header, "Timeline events for the calendar weeks "
21012112
"of %h", zYear);
21022113
blob_appendf(&sql,
21032114
"SELECT DISTINCT strftime('%%%%W',mtime) AS wk, "
@@ -2126,13 +2137,19 @@
21262137
blob_reset(&sql);
21272138
while( SQLITE_ROW == db_step(&stWeek) ){
21282139
char const * zWeek = db_column_text(&stWeek,0);
21292140
int nCount = db_column_int(&stWeek,1);
21302141
int const graphSize = nPixelsPerEvent * nCount;
2142
+ total += nCount;
21312143
cgi_printf("<tr class='row%d'>", ++rowCount % 2 );
2132
- cgi_printf("<td><a href='%s/timeline?yw=%t-%s'>%s</a></td>",
2133
- g.zTop, zYear, zWeek, zWeek);
2144
+ cgi_printf("<td><a href='%s/timeline?yw=%t-%s",
2145
+ g.zTop, zYear, zWeek);
2146
+ if(zUserName && *zUserName){
2147
+ cgi_printf("&u=%t",zUserName);
2148
+ }
2149
+ cgi_printf("'>%s</a></td>",zWeek);
2150
+
21342151
cgi_printf("<td>%d</td>",nCount);
21352152
cgi_printf("<td>");
21362153
if(nCount){
21372154
cgi_printf("<div class='statistics-report-graph-line'"
21382155
"style='height:16px;width:%dpx;'></div>",
@@ -2140,10 +2157,16 @@
21402157
}
21412158
cgi_printf("</td></tr>");
21422159
}
21432160
db_finalize(&stWeek);
21442161
free(zDefaultYear);
2162
+ if(total){
2163
+ cgi_printf("<tr class='row%d'>", ++rowCount%2);
2164
+ cgi_printf("<td colspan='2'>Total events:</td><td>%d</td>",
2165
+ total);
2166
+ cgi_printf("</tr>");
2167
+ }
21452168
cgi_printf("</tbody></table>");
21462169
output_table_sorting_javascript("statsTable","tnx");
21472170
}
21482171
}
21492172
@@ -2159,10 +2182,11 @@
21592182
*/
21602183
void stats_report_page(){
21612184
HQuery url; /* URL for various branch links */
21622185
char const * zView = P("view"); /* Which view/report to show. */
21632186
char const *zUserName = P("user");
2187
+ if(!zUserName) zUserName = P("u");
21642188
url_initialize(&url, "stats_report");
21652189
21662190
if(zUserName && *zUserName){
21672191
url_add_parameter(&url,"user", zUserName);
21682192
timeline_submenu(&url, "(Remove User Flag)", "view", zView, "user");
21692193
--- src/timeline.c
+++ src/timeline.c
@@ -2069,22 +2069,33 @@
2069 int nYear = zYear ? strlen(zYear) : 0;
2070 int i = 0;
2071 Stmt qYears = empty_Stmt;
2072 char * zDefaultYear = NULL;
2073 char const * zUserName = P("user");
 
 
2074 cgi_printf("Select year: ");
2075 db_prepare(&qYears,
2076 "SELECT DISTINCT substr(date(mtime),1,4) AS y "
2077 "FROM event GROUP BY y ORDER BY y");
2078
 
 
 
 
 
 
 
 
 
2079 while( SQLITE_ROW == db_step(&qYears) ){
2080 char const * zT = db_column_text(&qYears, 0);
2081 if( i++ ){
2082 cgi_printf(" ");
2083 }
2084 cgi_printf("<a href='?view=byweek&y=%s'>%s</a>",
2085 zT, zT);
 
 
 
2086 }
2087 db_finalize(&qYears);
2088 cgi_printf("<br/>");
2089 if(!zYear || !*zYear){
2090 zDefaultYear = db_text("????", "SELECT strftime('%%Y')");
@@ -2093,11 +2104,11 @@
2093 }
2094 if(4 == nYear){
2095 int const nPixelsPerEvent = 3; /* for sizing the "graph" part */
2096 Stmt stWeek = empty_Stmt;
2097 int rowCount = 0;
2098 Blob sql = empty_blob;
2099 Blob header = empty_blob;
2100 blob_appendf(&header, "Timeline events for the calendar weeks "
2101 "of %h", zYear);
2102 blob_appendf(&sql,
2103 "SELECT DISTINCT strftime('%%%%W',mtime) AS wk, "
@@ -2126,13 +2137,19 @@
2126 blob_reset(&sql);
2127 while( SQLITE_ROW == db_step(&stWeek) ){
2128 char const * zWeek = db_column_text(&stWeek,0);
2129 int nCount = db_column_int(&stWeek,1);
2130 int const graphSize = nPixelsPerEvent * nCount;
 
2131 cgi_printf("<tr class='row%d'>", ++rowCount % 2 );
2132 cgi_printf("<td><a href='%s/timeline?yw=%t-%s'>%s</a></td>",
2133 g.zTop, zYear, zWeek, zWeek);
 
 
 
 
 
2134 cgi_printf("<td>%d</td>",nCount);
2135 cgi_printf("<td>");
2136 if(nCount){
2137 cgi_printf("<div class='statistics-report-graph-line'"
2138 "style='height:16px;width:%dpx;'></div>",
@@ -2140,10 +2157,16 @@
2140 }
2141 cgi_printf("</td></tr>");
2142 }
2143 db_finalize(&stWeek);
2144 free(zDefaultYear);
 
 
 
 
 
 
2145 cgi_printf("</tbody></table>");
2146 output_table_sorting_javascript("statsTable","tnx");
2147 }
2148 }
2149
@@ -2159,10 +2182,11 @@
2159 */
2160 void stats_report_page(){
2161 HQuery url; /* URL for various branch links */
2162 char const * zView = P("view"); /* Which view/report to show. */
2163 char const *zUserName = P("user");
 
2164 url_initialize(&url, "stats_report");
2165
2166 if(zUserName && *zUserName){
2167 url_add_parameter(&url,"user", zUserName);
2168 timeline_submenu(&url, "(Remove User Flag)", "view", zView, "user");
2169
--- src/timeline.c
+++ src/timeline.c
@@ -2069,22 +2069,33 @@
2069 int nYear = zYear ? strlen(zYear) : 0;
2070 int i = 0;
2071 Stmt qYears = empty_Stmt;
2072 char * zDefaultYear = NULL;
2073 char const * zUserName = P("user");
2074 Blob sql = empty_blob;
2075 if(!zUserName) zUserName = P("u");
2076 cgi_printf("Select year: ");
 
 
 
2077
2078 blob_append(&sql,
2079 "SELECT DISTINCT substr(date(mtime),1,4) AS y "
2080 "FROM event WHERE 1 ", -1);
2081 if(zUserName&&*zUserName){
2082 blob_appendf(&sql,"AND user=%Q ", zUserName);
2083 }
2084 blob_append(&sql,"GROUP BY y ORDER BY y", -1);
2085 db_prepare(&qYears, blob_str(&sql));
2086 blob_reset(&sql);
2087 while( SQLITE_ROW == db_step(&qYears) ){
2088 char const * zT = db_column_text(&qYears, 0);
2089 if( i++ ){
2090 cgi_printf(" ");
2091 }
2092 cgi_printf("<a href='?view=byweek&y=%s", zT);
2093 if(zUserName && *zUserName){
2094 cgi_printf("&user=%t",zUserName);
2095 }
2096 cgi_printf("'>%s</a>",zT);
2097 }
2098 db_finalize(&qYears);
2099 cgi_printf("<br/>");
2100 if(!zYear || !*zYear){
2101 zDefaultYear = db_text("????", "SELECT strftime('%%Y')");
@@ -2093,11 +2104,11 @@
2104 }
2105 if(4 == nYear){
2106 int const nPixelsPerEvent = 3; /* for sizing the "graph" part */
2107 Stmt stWeek = empty_Stmt;
2108 int rowCount = 0;
2109 int total = 0;
2110 Blob header = empty_blob;
2111 blob_appendf(&header, "Timeline events for the calendar weeks "
2112 "of %h", zYear);
2113 blob_appendf(&sql,
2114 "SELECT DISTINCT strftime('%%%%W',mtime) AS wk, "
@@ -2126,13 +2137,19 @@
2137 blob_reset(&sql);
2138 while( SQLITE_ROW == db_step(&stWeek) ){
2139 char const * zWeek = db_column_text(&stWeek,0);
2140 int nCount = db_column_int(&stWeek,1);
2141 int const graphSize = nPixelsPerEvent * nCount;
2142 total += nCount;
2143 cgi_printf("<tr class='row%d'>", ++rowCount % 2 );
2144 cgi_printf("<td><a href='%s/timeline?yw=%t-%s",
2145 g.zTop, zYear, zWeek);
2146 if(zUserName && *zUserName){
2147 cgi_printf("&u=%t",zUserName);
2148 }
2149 cgi_printf("'>%s</a></td>",zWeek);
2150
2151 cgi_printf("<td>%d</td>",nCount);
2152 cgi_printf("<td>");
2153 if(nCount){
2154 cgi_printf("<div class='statistics-report-graph-line'"
2155 "style='height:16px;width:%dpx;'></div>",
@@ -2140,10 +2157,16 @@
2157 }
2158 cgi_printf("</td></tr>");
2159 }
2160 db_finalize(&stWeek);
2161 free(zDefaultYear);
2162 if(total){
2163 cgi_printf("<tr class='row%d'>", ++rowCount%2);
2164 cgi_printf("<td colspan='2'>Total events:</td><td>%d</td>",
2165 total);
2166 cgi_printf("</tr>");
2167 }
2168 cgi_printf("</tbody></table>");
2169 output_table_sorting_javascript("statsTable","tnx");
2170 }
2171 }
2172
@@ -2159,10 +2182,11 @@
2182 */
2183 void stats_report_page(){
2184 HQuery url; /* URL for various branch links */
2185 char const * zView = P("view"); /* Which view/report to show. */
2186 char const *zUserName = P("user");
2187 if(!zUserName) zUserName = P("u");
2188 url_initialize(&url, "stats_report");
2189
2190 if(zUserName && *zUserName){
2191 url_add_parameter(&url,"user", zUserName);
2192 timeline_submenu(&url, "(Remove User Flag)", "view", zView, "user");
2193

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button