stackalytics/dashboard/templates/engineer_details.html
Ilya Shakhat b7f19335f6 Implementation of blueprint stackalytics-core
* Data updater is implemented
* Completed implementation of commit processor
* Logging is added into commit processor and runtime storage
* Commit processor is fixed
* Domain-company map is inverted
* Extracted get update count into separate function
* Fixed regex that matches diff statistics (lines inserted, lines deleted and files changed)
* Implemented caching of unknown users
* Replaced dictionaries by sets for pids and branches
* Vcs is responsible for module and branches fields of commit record
* Added release tags support
* Implemented statistics by company
* Added config for releases
* Implemented front-end for companies details
* Implemented front-end for modules details
* Fixed metric switch
* Implemented timeline rendering
* Release selector is fixed
* Chdir is needed after cloning a new repo
* Company details screen is implemented
* Fixed invalid emails processing by Launchpad
* Fixed parsing of 0 files changed case
* Module details screen implemented
* Commit message is cleared and links are inserted
* Engineer details screen is implemented
* Fixed mapping from company to email for subdomains of 3rd level
* Fixed wrong user structure for users not found by LP
* Also coverage for commit processor
* Fixed company matching algorithm
* The company was not matched when user email had more domains than company's one
* Add option to enforce sync with default data
* Default data is added. Old confs removed
* Add *.local into gitignore

Scripts cleanup

Moved from pylibmc to python-memcached

Library pylibmc depends on libmemcached and doesn't work on CentOS (version conflict bw lib requirement and memcached).

Change-Id: I0cc61c6d344ba24442ec954635010b518c0efa95
2013-07-10 23:05:47 +04:00

95 lines
2.8 KiB
HTML

{% extends "layout.html" %}
{% block title %}
{{ user.user_name }}
{% endblock %}
{% block scripts %}
<script type="text/javascript">
chartAndTableRenderer("/data/modules", "right_list", "right_chart", "/modules/", {launchpad_id: "{{ launchpad_id }}" });
timelineRenderer({launchpad_id: "{{ launchpad_id }}" })
</script>
{% endblock %}
{% block left_frame %}
<div style='float: left;'>
<img src="{{ user.emails[0]|gravatar(size=64) }}">
</div>
<div style='margin-left: 90px;'>
<h2 style='margin-bottom: 0.5em;'>{{ user.user_name }}</h2>
{% if user.companies %}
<div>Company: {{ user.companies[-1].company_name|link('/companies/' + user.companies[-1].company_name)|safe }}</div>
{% endif %}
<div>Launchpad: <a href="https://launchpad.net/~{{ launchpad_id }}">{{ launchpad_id }}</a></div>
</div>
<h3>Commits history</h3>
{% if not commits %}
<div>There are no commits for selected period or project type.</div>
{% endif %}
{% for rec in commits %}
<div>
<h4>{{ rec.date|datetimeformat }} to <a href="https://launchpad.net/{{ rec.module }}">{{ rec.module }}</a>
</h4>
<div style='white-space: pre-wrap; padding-left: 2em;'>{{ rec|commit_message|safe }}</div>
<div style="padding-left: 2em;"><span style="color: green">+ {{ rec.lines_added }}</span>
<span style="color: red">- {{ rec.lines_deleted }}</span></div>
</div>
{% endfor %}
{% endblock %}
{% block right_frame %}
{% if commits %}
<h2>Contribution by modules</h2>
<div id="right_chart" style="width: 100%; height: 350px;"></div>
<table id="right_list" class="display">
<thead>
<tr>
<th>#</th>
<th>Module</th>
<th>{{ metric_label }}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<div class="spacer"></div>
<h3>Commit overview</h3>
{% if blueprints %}
<div>Blueprints:
<ol>
{% for rec in blueprints %}
<li>
<a href="https://blueprints.launchpad.net/{{ rec['module'] }}/+spec/{{ rec['id'] }}">{{ rec['id'] }}</a>
<small>{{ rec['module'] }}</small>
</li>
{% endfor %}
</ol>
</div>
{% endif %}
{% if bugs %}
<div>Bugs:
<ol>
{% for rec in bugs %}
<li>
<a href="https://bugs.launchpad.net/bugs/{{ rec['id'] }}">{{ rec['id'] }}</a>
</li>
{% endfor %}
</ol>
</div>
{% endif %}
<div>Total commits: <b>{{ commits|length }}</b></div>
<div>Total LOC: <b>{{ loc }}</b></div>
{% endif %}
{% endblock %}