From 3585ce766d9adb86abcad5dfd42587f7687e449b Mon Sep 17 00:00:00 2001 From: Heikki Hokkanen Date: Wed, 23 Dec 2009 19:38:24 +0200 Subject: [PATCH] Show weekly activity for last 32 weeks. --- gitstats | 44 ++++++++++++++++++++++++++++++++++++++++++++ gitstats.css | 8 ++++++++ 2 files changed, 52 insertions(+) diff --git a/gitstats b/gitstats index 34151af..8f7b4a7 100755 --- a/gitstats +++ b/gitstats @@ -159,6 +159,8 @@ class GitDataCollector(DataCollector): self.activity_by_hour_of_week = {} # weekday -> hour -> commits self.activity_by_hour_of_day_busiest = 0 self.activity_by_hour_of_week_busiest = 0 + self.activity_by_year_week = {} # yy_wNN -> commits + self.activity_by_year_week_peak = 0 self.authors = {} # name -> {commits, first_commit_stamp, last_commit_stamp, last_active_day, active_days} @@ -265,6 +267,15 @@ class GitDataCollector(DataCollector): else: self.activity_by_month_of_year[month] = 1 + # yearly/weekly activity + yyw = date.strftime('%Y-%W') + if yyw not in self.activity_by_year_week: + self.activity_by_year_week[yyw] = 1 + else: + self.activity_by_year_week[yyw] += 1 + if self.activity_by_year_week_peak < self.activity_by_year_week[yyw]: + self.activity_by_year_week_peak = self.activity_by_year_week[yyw] + # author stats if author not in self.authors: self.authors[author] = {} @@ -546,6 +557,39 @@ class HTMLReportCreator(ReportCreator): #f.write('

Last 12 months

') + # Weekly activity + WEEKS = 32 + f.write(html_header(2, 'Weekly activity')) + f.write('

Last %d weeks

' % WEEKS) + + # generate weeks to show (previous N weeks from now) + now = datetime.datetime.now() + deltaweek = datetime.timedelta(7) + weeks = [] + stampcur = now + for i in range(0, WEEKS): + weeks.insert(0, stampcur.strftime('%Y-%W')) + stampcur -= deltaweek + + # top row: commits & bar + f.write('') + for i in range(0, WEEKS): + commits = 0 + if weeks[i] in data.activity_by_year_week: + commits = data.activity_by_year_week[weeks[i]] + + percentage = 0 + if weeks[i] in data.activity_by_year_week: + percentage = float(data.activity_by_year_week[weeks[i]]) / data.activity_by_year_week_peak + height = max(1, int(200 * percentage)) + f.write('' % (commits, height)) + + # bottom row: year/week + f.write('') + for i in range(0, WEEKS): + f.write('' % (WEEKS - i)) + f.write('
%d
%s
') + # Hour of Day f.write(html_header(2, 'Hour of Day')) hour_of_day = data.getActivityByHourOfDay() diff --git a/gitstats.css b/gitstats.css index 7dcbf88..8710cf3 100644 --- a/gitstats.css +++ b/gitstats.css @@ -28,6 +28,14 @@ table { margin-bottom: 1em; } +table.noborders { + border: none; +} + +table.noborders td { + border: none; +} + .vtable { float: right; clear: both; -- 2.11.4.GIT