Browse Source

Show weekly activity for last 32 weeks.

Heikki Hokkanen 16 years ago
parent
commit
3585ce766d
2 changed files with 52 additions and 0 deletions
  1. 44
    0
      gitstats
  2. 8
    0
      gitstats.css

+ 44
- 0
gitstats View File

159
 		self.activity_by_hour_of_week = {} # weekday -> hour -> commits
159
 		self.activity_by_hour_of_week = {} # weekday -> hour -> commits
160
 		self.activity_by_hour_of_day_busiest = 0
160
 		self.activity_by_hour_of_day_busiest = 0
161
 		self.activity_by_hour_of_week_busiest = 0
161
 		self.activity_by_hour_of_week_busiest = 0
162
+		self.activity_by_year_week = {} # yy_wNN -> commits
163
+		self.activity_by_year_week_peak = 0
162
 
164
 
163
 		self.authors = {} # name -> {commits, first_commit_stamp, last_commit_stamp, last_active_day, active_days}
165
 		self.authors = {} # name -> {commits, first_commit_stamp, last_commit_stamp, last_active_day, active_days}
164
 
166
 
265
 			else:
267
 			else:
266
 				self.activity_by_month_of_year[month] = 1
268
 				self.activity_by_month_of_year[month] = 1
267
 
269
 
270
+			# yearly/weekly activity
271
+			yyw = date.strftime('%Y-%W')
272
+			if yyw not in self.activity_by_year_week:
273
+				self.activity_by_year_week[yyw] = 1
274
+			else:
275
+				self.activity_by_year_week[yyw] += 1
276
+			if self.activity_by_year_week_peak < self.activity_by_year_week[yyw]:
277
+				self.activity_by_year_week_peak = self.activity_by_year_week[yyw]
278
+
268
 			# author stats
279
 			# author stats
269
 			if author not in self.authors:
280
 			if author not in self.authors:
270
 				self.authors[author] = {}
281
 				self.authors[author] = {}
546
 
557
 
547
 		#f.write('<h2>Last 12 months</h2>')
558
 		#f.write('<h2>Last 12 months</h2>')
548
 
559
 
560
+		# Weekly activity
561
+		WEEKS = 32
562
+		f.write(html_header(2, 'Weekly activity'))
563
+		f.write('<p>Last %d weeks</p>' % WEEKS)
564
+
565
+		# generate weeks to show (previous N weeks from now)
566
+		now = datetime.datetime.now()
567
+		deltaweek = datetime.timedelta(7)
568
+		weeks = []
569
+		stampcur = now
570
+		for i in range(0, WEEKS):
571
+			weeks.insert(0, stampcur.strftime('%Y-%W'))
572
+			stampcur -= deltaweek
573
+
574
+		# top row: commits & bar
575
+		f.write('<table class="noborders"><tr>')
576
+		for i in range(0, WEEKS):
577
+			commits = 0
578
+			if weeks[i] in data.activity_by_year_week:
579
+				commits = data.activity_by_year_week[weeks[i]]
580
+
581
+			percentage = 0
582
+			if weeks[i] in data.activity_by_year_week:
583
+				percentage = float(data.activity_by_year_week[weeks[i]]) / data.activity_by_year_week_peak
584
+			height = max(1, int(200 * percentage))
585
+			f.write('<td style="text-align: center; vertical-align: bottom">%d<div style="display: block; background-color: red; width: 20px; height: %dpx"></div></td>' % (commits, height))
586
+
587
+		# bottom row: year/week
588
+		f.write('</tr><tr>')
589
+		for i in range(0, WEEKS):
590
+			f.write('<td>%s</td>' % (WEEKS - i))
591
+		f.write('</tr></table>')
592
+
549
 		# Hour of Day
593
 		# Hour of Day
550
 		f.write(html_header(2, 'Hour of Day'))
594
 		f.write(html_header(2, 'Hour of Day'))
551
 		hour_of_day = data.getActivityByHourOfDay()
595
 		hour_of_day = data.getActivityByHourOfDay()

+ 8
- 0
gitstats.css View File

28
 	margin-bottom: 1em;
28
 	margin-bottom: 1em;
29
 }
29
 }
30
 
30
 
31
+table.noborders {
32
+	border: none;
33
+}
34
+
35
+table.noborders td {
36
+	border: none;
37
+}
38
+
31
 .vtable {
39
 .vtable {
32
 	float: right;
40
 	float: right;
33
 	clear: both;
41
 	clear: both;