-#include <string-list.h>
-
#include "cgit.h"
#include "html.h"
#include "ui-shared.h"
#include "ui-stats.h"
+#ifdef NO_C99_FORMAT
+#define SZ_FMT "%u"
+#else
+#define SZ_FMT "%zu"
+#endif
+
#define MONTHS 6
struct authorstat {
{
time_t t = timegm(tm);
t -= ((tm->tm_wday + 6) % 7) * DAY_SECS;
- gmtime_r(&t, tm);
+ gmtime_r(&t, tm);
}
static void dec_week(struct tm *tm)
{
time_t t = timegm(tm);
t -= WEEK_SECS;
- gmtime_r(&t, tm);
+ gmtime_r(&t, tm);
}
static void inc_week(struct tm *tm)
{
time_t t = timegm(tm);
t += WEEK_SECS;
- gmtime_r(&t, tm);
+ gmtime_r(&t, tm);
}
static char *pretty_week(struct tm *tm)
if (periods[i].code == code || !strcmp(periods[i].name, expr)) {
if (period)
*period = &periods[i];
- return i+1;
+ return i + 1;
}
return 0;
}
init_revisions(&rev, NULL);
rev.abbrev = DEFAULT_ABBREV;
rev.commit_format = CMIT_FMT_DEFAULT;
- rev.no_merges = 1;
+ rev.max_parents = 1;
rev.verbose_header = 1;
rev.show_root_diff = 0;
setup_revisions(argc, argv, &rev, NULL);
if (date)
subtotal += (size_t)date->util;
}
- htmlf("<td class='%s'>%d</td>", centerclass, subtotal);
+ htmlf("<td class='%s'>%ld</td>", centerclass, subtotal);
total += subtotal;
}
- htmlf("<td class='%s'>%d</td></tr>", rightclass, total);
+ htmlf("<td class='%s'>%ld</td></tr>", rightclass, total);
}
void print_authors(struct string_list *authors, int top,
if (!date)
html("<td>0</td>");
else {
- htmlf("<td>%d</td>", date->util);
+ htmlf("<td>"SZ_FMT"</td>", (size_t)date->util);
total += (size_t)date->util;
}
}
- htmlf("<td class='sum'>%d</td></tr>", total);
+ htmlf("<td class='sum'>%ld</td></tr>", total);
}
if (top < authors->nr)
print_combined_authorrow(authors, top, authors->nr - 1,
- "Others (%d)", "left", "", "sum", period);
+ "Others (%ld)", "left", "", "sum", period);
print_combined_authorrow(authors, 0, authors->nr - 1, "Total",
"total", "sum", "sum", period);
i = cgit_find_stats_period(code, &period);
if (!i) {
- cgit_print_error(fmt("Unknown statistics type: %c", code));
+ cgit_print_error(fmt("Unknown statistics type: %c", code[0]));
return;
}
if (i > ctx->repo->max_stats) {
top = ctx->qry.ofs;
if (!top)
top = 10;
+
+ html("<div class='cgit-panel'>");
+ html("<b>stat options</b>");
+ html("<form method='get' action=''>");
+ cgit_add_hidden_formfields(1, 0, "stats");
+ html("<table><tr><td colspan='2'/></tr>");
+ if (ctx->repo->max_stats > 1) {
+ html("<tr><td class='label'>Period:</td>");
+ html("<td class='ctrl'><select name='period' onchange='this.form.submit();'>");
+ for (i = 0; i < ctx->repo->max_stats; i++)
+ html_option(fmt("%c", periods[i].code),
+ periods[i].name, fmt("%c", period->code));
+ html("</select></td></tr>");
+ }
+ html("<tr><td class='label'>Authors:</td>");
+ html("<td class='ctrl'><select name='ofs' onchange='this.form.submit();'>");
+ html_intoption(10, "10", top);
+ html_intoption(25, "25", top);
+ html_intoption(50, "50", top);
+ html_intoption(100, "100", top);
+ html_intoption(-1, "all", top);
+ html("</select></td></tr>");
+ html("<tr><td/><td class='ctrl'>");
+ html("<noscript><input type='submit' value='Reload'/></noscript>");
+ html("</td></tr></table>");
+ html("</form>");
+ html("</div>");
htmlf("<h2>Commits per author per %s", period->name);
if (ctx->qry.path) {
html(" (path '");
html("')");
}
html("</h2>");
-
- html("<form method='get' action='' style='float: right; text-align: right;'>");
- cgit_add_hidden_formfields(1, 0, "stats");
- if (ctx->repo->max_stats > 1) {
- html("Period: ");
- html("<select name='period' onchange='this.form.submit();'>");
- for (i = 0; i < ctx->repo->max_stats; i++)
- htmlf("<option value='%c'%s>%s</option>",
- periods[i].code,
- period == &periods[i] ? " selected" : "",
- periods[i].name);
- html("</select><br/><br/>");
- }
- html("Authors: ");
- html("");
- html("<select name='ofs' onchange='this.form.submit();'>");
- htmlf("<option value='10'%s>10</option>", top == 10 ? " selected" : "");
- htmlf("<option value='25'%s>25</option>", top == 25 ? " selected" : "");
- htmlf("<option value='50'%s>50</option>", top == 50 ? " selected" : "");
- htmlf("<option value='100'%s>100</option>", top == 100 ? " selected" : "");
- htmlf("<option value='-1'%s>All</option>", top == -1 ? " selected" : "");
- html("</select>");
- html("<noscript> <input type='submit' value='Reload'/></noscript>");
- html("</form>");
print_authors(&authors, top, period);
}