{% set hide_left_bar = True %} {% extends g.theme.master %} {% block title %}User stats{% endblock %} {% block header %} Statistics about {{user.display_name}}'s contribution {% if category %} in projects of category {{category.fullname}} {% endif %} {% endblock %} {% block content %} {% if user %}
Parameter | Date | Time interval |
---|---|---|
Registration date | {{registration_date.strftime("%d %b %Y, %H:%M:%S (UTC)")}} | {{days}} day{% if days != 1 %}s{% endif %} ago |
Last login | {{last_login.strftime("%d %b %Y, %H:%M:%S (UTC)")}} | {{last_login_days}} day{% if last_login_days != 1 %}s{% endif %} ago |
Parameter | Total value | Average per-month value | Last 30 days | {% if days >= 30 %}Trend | {% endif %}
---|---|---|---|---|
Logins | {{totlogins}} | {{permonthlogins}} | {{lastmonth_logins}} | {% if days >= 30 %}
{% if lastmonth_logins > permonthlogins %}
![]() ![]() ![]() |
{% endif %}
{% if totcommits.number > 0 %} Commits number {% else %} Commits number {% endif %} | {{totcommits.number}} | {{permonthcommits.number}} | {{lastmonthcommits.number}} | {% if days >= 30 %}
{% if permonthcommits.number > permonthcommits.number %}
![]() ![]() ![]() |
{% endif %}
{% if totcommits.lines > 0 %} Added/modified LOCs {% else %} Added/modified LOCs {% endif %} | {{totcommits.lines}} | {{permonthcommits.lines}} | {{lastmonthcommits.lines}} | {% if days >= 30 %}
{% if permonthcommits.lines > permonthcommits.lines %}
![]() ![]() ![]() |
{% endif %}
{% if totartifacts.created > 0 %} Total number of created artifacts {% else %} Total number of created artifacts {% endif %} | {{totartifacts.created}} | {{permonthartifacts.created}} | {{lastmonthartifacts.created}} | {% if days >= 30 %}
{% if lastmonthartifacts.created > permonthartifacts.created %}
![]() ![]() ![]() |
{% endif %}
{% if totartifacts.modified > 0 %} Total number of edited artifacts {% else %} Total number of edited artifacts {% endif %} | {{totartifacts.modified}} | {{permonthartifacts.modified}} | {{lastmonthartifacts.modified}} | {% if days >= 30 %}
{% if lastmonthartifacts.modified > permonthartifacts.modified %}
![]() ![]() ![]() |
{% endif %}
{% if value.created > 0 %} Created {{key}} artifacts {% else %} Created {{key}} artifacts {% endif %} | {{value.created}} | {{value.pmcreated}} | {% if lastmonth_artifacts_by_type.get(key) %} {{lastmonth_artifacts_by_type[key].created}} {% else %} 0 {% endif %} | {% if days >= 30 %}
{% if lastmonth_artifacts_by_type.get(key) %}
{% if lastmonth_artifacts_by_type[key].created > value.pmcreated %}
![]() ![]() ![]() |
{% endif %}
{% if value.modified > 0 %} Edited {{key}} artifacts {% else %} Edited {{key}} artifacts {% endif %} | {{value.modified}} | {{value.pmmodified}} | {% if lastmonth_artifacts_by_type.get(key) %} {{lastmonth_artifacts_by_type[key].modified}} {% else %} 0 {% endif %} | {% if days >= 30 %}
{% if lastmonth_artifacts_by_type.get(key) %}
{% if lastmonth_artifacts_by_type[key].modified > value.pmmodified %}
![]() ![]() ![]() |
{% endif %}
{% if tottickets.assigned > 0 %} Assigned tickets {% else %} Assigned tickets {% endif %} | {{tottickets.assigned}} | {{permonthtickets.assigned}} | {{lastmonthtickets.assigned}} | {% if days >= 30 %}
{% if lastmonthtickets.assigned > permonthtickets.assigned %}
![]() ![]() ![]() |
{% endif %}
{% if tottickets.revoked > 0 %} Revoked tickets {% else %} Revoked tickets {% endif %} | {{tottickets.revoked}} | {{permonthtickets.revoked}} | {{lastmonthtickets.revoked}} | {% if days >= 30 %}
{% if lastmonthtickets.revoked > permonthtickets.revoked %}
![]() ![]() ![]() |
{% endif %}
{% if tottickets.solved > 0 %} Solved tickets {% else %} Solved tickets {% endif %} | {{tottickets.solved}} | {{permonthtickets.solved}} | {{lastmonthtickets.solved}} | {% if days >= 30 %}
{% if lastmonthtickets.solved > permonthtickets.solved %}
![]() ![]() ![]() |
{% endif %}
{% if tottickets.averagesolvingtime > 0 %} Average tickets solving time {% else %} Average tickets solving time {% endif %} | {% if tottickets.averagesolvingtime %} {{tottickets.averagesolvingtime.days}} days, {{tottickets.averagesolvingtime.hours}} hours, {{tottickets.averagesolvingtime.minutes}} min {% else %}n/a{% endif %} | n/a | {% if lastmonthtickets.averagesolvingtime %} {{lastmonthtickets.averagesolvingtime.days}} days, {{lastmonthtickets.averagesolvingtime.hours}} hours, {{lastmonthtickets.averagesolvingtime.minutes}} min {% else %}n/a{% endif %} | {% if days >= 30 %}
{% if lastmonthtickets.averagesolvingtime > tottickets.averagesolvingtime %}
![]() ![]() ![]() |
{% endif %}
The following table shows the number projects tagged as belonging to each single category in which this user is involved.
Category name | Number of projects |
---|---|
{{cat.fullname}} | {{count}} |
The same data listed in the previous table is graphically presented by the following histogram.
Field | Value | Average per-user value | Maximum per-user value | Rank bar |
---|---|---|---|---|
Code | {{codecontribution}} LOC{% if codecontribution != 1 %}s{% endif %}/month | {{averagecodecontrib}} LOC{% if averagecodecontrib != 1 %}s{% endif %}/month | {{maxcodecontrib}} LOC{% if maxcodecontrib != 1 %}s{% endif %}/month | |
Discussion | {{discussioncontribution}} contr./month | {{averagedisccontrib}} contr./month | {{maxdisccontrib}} contr./month | |
Solved issues | {{ticketcontribution}} % | {{averageticketcontrib}} % | {{maxticketcontrib}} % |
The above table compares the average monthly contribution of this user with the average monthly contributions of the other users of the forge. The progressbar and the percentage refer to the user's position in an overall ranking of the users of this forge. For example, a value of 100% in the field "Code" is associated to the user who has the highest average number of committed LOCs per month. Of course, this doesn't consider the quality of the contributions.
{% endif %} {% else %} Invalid user! {% endif %} {% endblock %}