Improve punch-card on activity report

* Turn punch-card upside down to make Mon the first and Sun the last
* Cleanup the grid and axes names

Change-Id: I5a666b5fefb0baa312fed35685410113dac6b4a0
This commit is contained in:
Ilya Shakhat
2015-08-18 13:01:15 +03:00
parent 7ecd37096a
commit 9ea4fc949a
5 changed files with 17 additions and 12 deletions

View File

@@ -20,7 +20,6 @@ import operator
import time import time
import flask import flask
import six
from stackalytics.dashboard import decorators from stackalytics.dashboard import decorators
from stackalytics.dashboard import helpers from stackalytics.dashboard import helpers
@@ -205,18 +204,18 @@ def cores():
def _get_punch_card_data(records): def _get_punch_card_data(records):
punch_card_raw = [] # matrix days x hours punch_card_raw = [] # matrix days x hours
for wday in six.moves.range(0, 7): for wday in range(7):
punch_card_raw.append([0] * 24) punch_card_raw.append([0] * 24)
for record in records: for record in records:
tt = datetime.datetime.fromtimestamp(record.date).timetuple() tt = datetime.datetime.fromtimestamp(record.date).timetuple()
punch_card_raw[tt.tm_wday][tt.tm_hour] += 1 punch_card_raw[tt.tm_wday][tt.tm_hour] += 1
punch_card_data = [] # format for jqplot bubble renderer punch_card_data = [] # format for jqplot bubble renderer
for wday in six.moves.range(0, 7): for wday in range(7):
for hour in six.moves.range(0, 24): for hour in range(24):
v = punch_card_raw[wday][hour] v = punch_card_raw[wday][hour]
if v: if v:
punch_card_data.append([hour, wday, v, v]) punch_card_data.append([hour, 6 - wday, v, v]) # upside down
# add corner point, otherwise chart doesn't know the bounds # add corner point, otherwise chart doesn't know the bounds
if punch_card_raw[0][0] == 0: if punch_card_raw[0][0] == 0:

View File

@@ -497,3 +497,9 @@ div.stackamenu li.current-menu-item a span {
color: red; color: red;
margin: 0.5em 0; margin: 0.5em 0;
} }
#punch_card {
margin-top: 1em;
width: 99%;
height: 350px;
}

View File

@@ -220,22 +220,22 @@ function renderPunchCard(chart_id, chart_data) {
}, },
axes: { axes: {
xaxis: { xaxis: {
label: 'Hour', label: 'hour, UTC',
labelRenderer: $.jqplot.CanvasAxisLabelRenderer, labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
tickOptions: { tickOptions: {
formatter: function (format, val) { formatter: function (format, val) {
if (val < 0 || val > 24) { return "" } if (val < 0 || val > 23) { return "" }
return val; return val;
} }
} }
}, },
yaxis: { yaxis: {
label: 'Day of week', label: 'day of week',
labelRenderer: $.jqplot.CanvasAxisLabelRenderer, labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
tickOptions: { tickOptions: {
formatter: function (format, val) { formatter: function (format, val) {
if (val < 0 || val > 6) { return "" } if (val < 0 || val > 6) { return "" }
var labels = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; var labels = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"].reverse();
return labels[val]; return labels[val];
} }
} }

View File

@@ -19,7 +19,7 @@
{{ contribution_summary.show_contribution_summary(company=company_name) }} {{ contribution_summary.show_contribution_summary(company=company_name) }}
<div id="punch_card" style="width: 100%; height: 350px;"></div> <div id="punch_card"></div>
{{ activity_log.show_activity_log(company=company_name, gravatar_size=64) }} {{ activity_log.show_activity_log(company=company_name, gravatar_size=64) }}

View File

@@ -21,7 +21,7 @@
{{ user_profile.show_user_profile(user_id=user.user_id) }} {{ user_profile.show_user_profile(user_id=user.user_id) }}
{{ contribution_summary.show_contribution_summary(user_id=user.user_id) }} {{ contribution_summary.show_contribution_summary(user_id=user.user_id) }}
<div id="punch_card" style="width: 100%; height: 350px;"></div> <div id="punch_card"></div>
{{ activity_log.show_activity_log(user_id=user.user_id, show_user_gravatar=false, gravatar_size=64) }} {{ activity_log.show_activity_log(user_id=user.user_id, show_user_gravatar=false, gravatar_size=64) }}