Ilya Shakhat b9b8ca91a6 Implemented user activity report and punch card
* Added new report that shows activity for a given user
* Refactored code that calculates activity log and contribution summary
* Implemented punch card that shows when user is active mostly

Implements blueprint review-punchcard

Change-Id: I17af4edb65e49c934c503c5ab6e5d2b6212780b0
2013-10-29 18:29:52 +04:00

106 lines
6.0 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>{% block title %}{% endblock %}</title>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='css/style.css') }}">
<link href='http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic&subset=latin,cyrillic' rel='stylesheet' type='text/css' />
<link href='http://fonts.googleapis.com/css?family=PT+Sans+Caption&subset=latin,cyrillic' rel='stylesheet' type='text/css' />
<link href='http://fonts.googleapis.com/css?family=PT+Sans+Narrow:400,700&subset=latin,cyrillic' rel='stylesheet' type='text/css' />
<link rel="icon" href="{{ url_for('static', filename='images/favicon.png') }}" type="image/png"/>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='css/jquery.jqplot.min.css') }}">
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='css/jquery.dataTables.css') }}">
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='css/select2.css') }}">
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='css/style.css') }}">
<script type="text/javascript" src="{{ url_for('static', filename='js/jquery-1.9.1.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jquery.dataTables.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jquery.jqplot.min.js') }}"></script>
<!--[if lt IE 9]><script type="text/javascript" src="{{ url_for('static', filename='js/excanvas.min.js') }}"></script><![endif]-->
<script type="text/javascript" src="{{ url_for('static', filename='js/jqplot.json2.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jqplot.pieRenderer.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jqplot.barRenderer.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jqplot.bubbleRenderer.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jqplot.categoryAxisRenderer.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jqplot.dateAxisRenderer.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jqplot.canvasTextRenderer.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jqplot.canvasAxisLabelRenderer.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jqplot.canvasAxisTickRenderer.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jqplot.cursor.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jqplot.highlighter.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/select2.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jquery.tmpl.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/stackalytics-ui.js') }}"></script>
{% block head %}{% endblock %}
</head>
<body style="margin: 2em;">
{% macro show_activity_log(activity, show_gravatar) -%}
<h2>Activity Log</h2>
{% if not activity %}
<div>No activity.</div>
{% else %}
{% for item in activity %}
<div style="margin-bottom: 1em;">
<div style='float: left; '>
{% if show_gravatar %}
<img src="{{ item.gravatar }}">
{% else %}
<img src="{{ item.record_type | gravatar(default='retro') }}">
{% endif %}
</div>
<div style="margin-left: 80px;">
<div style="font-weight: bold;">{{ item.date_str}}</div>
<div style="font-weight: bold;">{{ item.author_name }} ({{ item.company_name }})</div>
{% if item.record_type == "commit" %}
<div style='font-weight: bold;'>Commit &ldquo;{{ item.subject }}&rdquo; to {{ item.module }}</div>
<div class="message">{{ item.message | safe }}</div>
<div><span style="color: green">+<span>{{ item.lines_added }}</span></span>
<span style="color: blue">- <span>{{ item.lines_deleted }}</span></span>
</div>
{% if item.correction_comment %}
<div style='font-weight: bold; color: red;'>Commit corrected:
<span>{{ item.correction_comment }}</span></div>
{% endif %}
{% elif item.record_type == "mark" %}
<div style='font-weight: bold;'>Review &ldquo;{{item.subject}}&rdquo; in {{ item.module }}</div>
<div>Patch submitted by <a href="{{ item.parent_user_id }}">{{ item.parent_author_name }}</a></div>
<div>Change Id: <a href="{{item.url}}">{{item.review_id}}</a></div>
<div style="color: {% if item.value > 0 %} green {% else %} blue {% endif %}">
{{item.description}}: <span class="review_mark">{{item.value}}</span></div>
{% elif item.record_type == "review" %}
<div style='font-weight: bold;'>Patch &ldquo;{{item.subject}}&rdquo; in {{ item.module }}</div>
<div>URL: <a href="{{item.url}}">{{item.url}}</a></div>
<div>Change Id: <a href="{{item.url}}">{{item.id}}</a></div>
{% elif item.record_type == "email" %}
<div style='font-weight: bold;'>Email &ldquo;{{item.subject}}&rdquo;</div>
{% if item.body %}
<div class="message">{{ item.body|safe }}</div>
{% endif %}
{% endif %}
</div>
</div>
{% endfor %}
{% endif %}
{%- endmacro %}
<div id="analytics_header" style="padding-bottom: 1em; border-bottom: 1px solid darkgrey;">
<span id="logo"><a href="/">Stackalytics</a></span>
<span id="slogan">| community heartbeat</span>
</div>
{% block body %}{% endblock %}
</body>
</html>