ui-stats: enable path-filtered stats

When a path is specified on the querystring the commit statistics will
now be filtered by this path.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
Lars Hjemli 2008-12-07 11:45:28 +01:00
parent f86a23ff53
commit c6a6aa2186

View File

@ -195,7 +195,8 @@ struct string_list collect_stats(struct cgit_context *ctx,
struct string_list authors; struct string_list authors;
struct rev_info rev; struct rev_info rev;
struct commit *commit; struct commit *commit;
const char *argv[] = {NULL, ctx->qry.head, NULL, NULL}; const char *argv[] = {NULL, ctx->qry.head, NULL, NULL, NULL, NULL};
int argc = 3;
time_t now; time_t now;
long i; long i;
struct tm *tm; struct tm *tm;
@ -208,13 +209,18 @@ struct string_list collect_stats(struct cgit_context *ctx,
period->dec(tm); period->dec(tm);
strftime(tmp, sizeof(tmp), "%Y-%m-%d", tm); strftime(tmp, sizeof(tmp), "%Y-%m-%d", tm);
argv[2] = xstrdup(fmt("--since=%s", tmp)); argv[2] = xstrdup(fmt("--since=%s", tmp));
if (ctx->qry.path) {
argv[3] = "--";
argv[4] = ctx->qry.path;
argc += 2;
}
init_revisions(&rev, NULL); init_revisions(&rev, NULL);
rev.abbrev = DEFAULT_ABBREV; rev.abbrev = DEFAULT_ABBREV;
rev.commit_format = CMIT_FMT_DEFAULT; rev.commit_format = CMIT_FMT_DEFAULT;
rev.no_merges = 1; rev.no_merges = 1;
rev.verbose_header = 1; rev.verbose_header = 1;
rev.show_root_diff = 0; rev.show_root_diff = 0;
setup_revisions(3, argv, &rev, NULL); setup_revisions(argc, argv, &rev, NULL);
prepare_revision_walk(&rev); prepare_revision_walk(&rev);
memset(&authors, 0, sizeof(authors)); memset(&authors, 0, sizeof(authors));
while ((commit = get_revision(&rev)) != NULL) { while ((commit = get_revision(&rev)) != NULL) {
@ -351,7 +357,13 @@ void cgit_show_stats(struct cgit_context *ctx)
top = ctx->qry.ofs; top = ctx->qry.ofs;
if (!top) if (!top)
top = 10; top = 10;
htmlf("<h2>Commits per author per %s</h2>", period->name); htmlf("<h2>Commits per author per %s", period->name);
if (ctx->qry.path) {
html(" (path '");
html_txt(ctx->qry.path);
html("')");
}
html("</h2>");
html("<form method='get' action='.' style='float: right; text-align: right;'>"); html("<form method='get' action='.' style='float: right; text-align: right;'>");
if (strcmp(ctx->qry.head, ctx->repo->defbranch)) if (strcmp(ctx->qry.head, ctx->repo->defbranch))