author | Lars Hjemli <hjemli@gmail.com> | 2008-12-07 14:57:55 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2008-12-07 14:57:55 (UTC) |
commit | b54ef9749c083afd86573112fad3b3ed8ee2d0e4 (patch) (unidiff) | |
tree | c23d5f0b32b15e7b6d9d455671a8f5acdc198417 | |
parent | c3c925f4eca3e863bedaae4cfe237c3ad52092b6 (diff) | |
download | cgit-b54ef9749c083afd86573112fad3b3ed8ee2d0e4.zip cgit-b54ef9749c083afd86573112fad3b3ed8ee2d0e4.tar.gz cgit-b54ef9749c083afd86573112fad3b3ed8ee2d0e4.tar.bz2 |
ui-stats.c: reuse cgit_add_hidden_formfields()
This makes sure that the currect branch and path is preserved when
changing the stats period or author count.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | ui-stats.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -321,91 +321,90 @@ void print_authors(struct string_list *authors, int top, | |||
321 | for (j = 0; j < period->count; j++) | 321 | for (j = 0; j < period->count; j++) |
322 | period->dec(tm); | 322 | period->dec(tm); |
323 | for (j = 0; j < period->count; j++) { | 323 | for (j = 0; j < period->count; j++) { |
324 | tmp = period->pretty(tm); | 324 | tmp = period->pretty(tm); |
325 | period->inc(tm); | 325 | period->inc(tm); |
326 | date = string_list_lookup(tmp, items); | 326 | date = string_list_lookup(tmp, items); |
327 | if (!date) | 327 | if (!date) |
328 | html("<td>0</td>"); | 328 | html("<td>0</td>"); |
329 | else { | 329 | else { |
330 | htmlf("<td>%d</td>", date->util); | 330 | htmlf("<td>%d</td>", date->util); |
331 | total += (size_t)date->util; | 331 | total += (size_t)date->util; |
332 | } | 332 | } |
333 | } | 333 | } |
334 | htmlf("<td class='sum'>%d</td></tr>", total); | 334 | htmlf("<td class='sum'>%d</td></tr>", total); |
335 | } | 335 | } |
336 | 336 | ||
337 | if (top < authors->nr) | 337 | if (top < authors->nr) |
338 | print_combined_authorrow(authors, top, authors->nr - 1, | 338 | print_combined_authorrow(authors, top, authors->nr - 1, |
339 | "Others (%d)", "left", "", "sum", period); | 339 | "Others (%d)", "left", "", "sum", period); |
340 | 340 | ||
341 | print_combined_authorrow(authors, 0, authors->nr - 1, "Total", | 341 | print_combined_authorrow(authors, 0, authors->nr - 1, "Total", |
342 | "total", "sum", "sum", period); | 342 | "total", "sum", "sum", period); |
343 | html("</table>"); | 343 | html("</table>"); |
344 | } | 344 | } |
345 | 345 | ||
346 | /* Create a sorted string_list with one entry per author. The util-field | 346 | /* Create a sorted string_list with one entry per author. The util-field |
347 | * for each author is another string_list which is used to calculate the | 347 | * for each author is another string_list which is used to calculate the |
348 | * number of commits per time-interval. | 348 | * number of commits per time-interval. |
349 | */ | 349 | */ |
350 | void cgit_show_stats(struct cgit_context *ctx) | 350 | void cgit_show_stats(struct cgit_context *ctx) |
351 | { | 351 | { |
352 | struct string_list authors; | 352 | struct string_list authors; |
353 | struct cgit_period *period; | 353 | struct cgit_period *period; |
354 | int top, i; | 354 | int top, i; |
355 | const char *code = "w"; | 355 | const char *code = "w"; |
356 | 356 | ||
357 | if (ctx->qry.period) | 357 | if (ctx->qry.period) |
358 | code = ctx->qry.period; | 358 | code = ctx->qry.period; |
359 | 359 | ||
360 | i = cgit_find_stats_period(code, &period); | 360 | i = cgit_find_stats_period(code, &period); |
361 | if (!i) { | 361 | if (!i) { |
362 | cgit_print_error(fmt("Unknown statistics type: %c", code)); | 362 | cgit_print_error(fmt("Unknown statistics type: %c", code)); |
363 | return; | 363 | return; |
364 | } | 364 | } |
365 | if (i > ctx->repo->max_stats) { | 365 | if (i > ctx->repo->max_stats) { |
366 | cgit_print_error(fmt("Statistics type disabled: %s", | 366 | cgit_print_error(fmt("Statistics type disabled: %s", |
367 | period->name)); | 367 | period->name)); |
368 | return; | 368 | return; |
369 | } | 369 | } |
370 | authors = collect_stats(ctx, period); | 370 | authors = collect_stats(ctx, period); |
371 | qsort(authors.items, authors.nr, sizeof(struct string_list_item), | 371 | qsort(authors.items, authors.nr, sizeof(struct string_list_item), |
372 | cmp_total_commits); | 372 | cmp_total_commits); |
373 | 373 | ||
374 | top = ctx->qry.ofs; | 374 | top = ctx->qry.ofs; |
375 | if (!top) | 375 | if (!top) |
376 | top = 10; | 376 | top = 10; |
377 | htmlf("<h2>Commits per author per %s", period->name); | 377 | htmlf("<h2>Commits per author per %s", period->name); |
378 | if (ctx->qry.path) { | 378 | if (ctx->qry.path) { |
379 | html(" (path '"); | 379 | html(" (path '"); |
380 | html_txt(ctx->qry.path); | 380 | html_txt(ctx->qry.path); |
381 | html("')"); | 381 | html("')"); |
382 | } | 382 | } |
383 | html("</h2>"); | 383 | html("</h2>"); |
384 | 384 | ||
385 | html("<form method='get' action='.' style='float: right; text-align: right;'>"); | 385 | html("<form method='get' action='' style='float: right; text-align: right;'>"); |
386 | if (strcmp(ctx->qry.head, ctx->repo->defbranch)) | 386 | cgit_add_hidden_formfields(1, 0, "stats"); |
387 | htmlf("<input type='hidden' name='h' value='%s'/>", ctx->qry.head); | ||
388 | if (ctx->repo->max_stats > 1) { | 387 | if (ctx->repo->max_stats > 1) { |
389 | html("Period: "); | 388 | html("Period: "); |
390 | html("<select name='period' onchange='this.form.submit();'>"); | 389 | html("<select name='period' onchange='this.form.submit();'>"); |
391 | for (i = 0; i < ctx->repo->max_stats; i++) | 390 | for (i = 0; i < ctx->repo->max_stats; i++) |
392 | htmlf("<option value='%c'%s>%s</option>", | 391 | htmlf("<option value='%c'%s>%s</option>", |
393 | periods[i].code, | 392 | periods[i].code, |
394 | period == &periods[i] ? " selected" : "", | 393 | period == &periods[i] ? " selected" : "", |
395 | periods[i].name); | 394 | periods[i].name); |
396 | html("</select><br/><br/>"); | 395 | html("</select><br/><br/>"); |
397 | } | 396 | } |
398 | html("Authors: "); | 397 | html("Authors: "); |
399 | html(""); | 398 | html(""); |
400 | html("<select name='ofs' onchange='this.form.submit();'>"); | 399 | html("<select name='ofs' onchange='this.form.submit();'>"); |
401 | htmlf("<option value='10'%s>10</option>", top == 10 ? " selected" : ""); | 400 | htmlf("<option value='10'%s>10</option>", top == 10 ? " selected" : ""); |
402 | htmlf("<option value='25'%s>25</option>", top == 25 ? " selected" : ""); | 401 | htmlf("<option value='25'%s>25</option>", top == 25 ? " selected" : ""); |
403 | htmlf("<option value='50'%s>50</option>", top == 50 ? " selected" : ""); | 402 | htmlf("<option value='50'%s>50</option>", top == 50 ? " selected" : ""); |
404 | htmlf("<option value='100'%s>100</option>", top == 100 ? " selected" : ""); | 403 | htmlf("<option value='100'%s>100</option>", top == 100 ? " selected" : ""); |
405 | htmlf("<option value='-1'%s>All</option>", top == -1 ? " selected" : ""); | 404 | htmlf("<option value='-1'%s>All</option>", top == -1 ? " selected" : ""); |
406 | html("</select>"); | 405 | html("</select>"); |
407 | html("<noscript> <input type='submit' value='Reload'/></noscript>"); | 406 | html("<noscript> <input type='submit' value='Reload'/></noscript>"); |
408 | html("</form>"); | 407 | html("</form>"); |
409 | print_authors(&authors, top, period); | 408 | print_authors(&authors, top, period); |
410 | } | 409 | } |
411 | 410 | ||