|
|
|
@@ -353,59 +353,58 @@ void cgit_show_stats(struct cgit_context *ctx) |
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 | |
|