{#- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -#} {% 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 and (user.stats.visible or (c.user == user)) %} {% if category %} {% endif %}

General statistics

{% if last_login %} {% endif %}
Parameter Date Time interval
Registration date {{registration_date.strftime("%d %b %Y, %H:%M:%S (UTC)")}} {{h.ago(registration_date, show_date_after=None)}}
Last login {{last_login.strftime("%d %b %Y, %H:%M:%S (UTC)")}} {{last_login_days}} day{% if last_login_days != 1 %}s{% endif %} ago

Contribution statistics

{% if days >= 30 %} {% endif %} {% if not category and last_login %} {% if days >= 30 %} {% endif %} {% endif %} {% if days >= 30 %} {% endif %} {% if h.asbool(config.get('userstats.count_lines_of_code', True)) %} {% if days >= 30 %} {% endif %} {% endif %} {% if days >= 30 %} {% endif %} {% if days >= 30 %} {% endif %} {% for key, value in artifacts_by_type.items() %} {% if days >= 30 %} {% endif %} {% if days >= 30 %} {% endif %} {% endfor %} {% if days >= 30 %} {% endif %} {% if days >= 30 %} {% endif %} {% if days >= 30 %} {% endif %} {% if days >= 30 %} {% endif %}
Parameter Total value Average per-month value Last 30 daysTrend
Logins {{totlogins}} {{permonthlogins}} {{lastmonth_logins}} {% if lastmonth_logins > permonthlogins %} {% elif lastmonth_logins == permonthlogins %} {% else %} {%endif%}
{% if totcommits.number > 0 %} Commits number {% else %} Commits number {% endif %} {{totcommits.number}} {{permonthcommits.number}} {{lastmonthcommits.number}} {% if lastmonthcommits.number > permonthcommits.number %} {% elif lastmonthcommits.number == permonthcommits.number %} {% else %} {%endif%}
{% if totcommits.lines > 0 %} Added/modified LOCs {% else %} Added/modified LOCs {% endif %} {{totcommits.lines}} {{permonthcommits.lines}} {{lastmonthcommits.lines}} {% if lastmonthcommits.lines > permonthcommits.lines %} {% elif lastmonthcommits.lines == permonthcommits.lines %} {% else %} {%endif%}
{% if totartifacts.created > 0 %} Total number of created artifacts {% else %} Total number of created artifacts {% endif %} {{totartifacts.created}} {{permonthartifacts.created}} {{lastmonthartifacts.created}} {% if lastmonthartifacts.created > permonthartifacts.created %} {% elif lastmonthartifacts.created == permonthartifacts.created %} {% else %} {%endif%}
{% if totartifacts.modified > 0 %} Total number of edited artifacts {% else %} Total number of edited artifacts {% endif %} {{totartifacts.modified}} {{permonthartifacts.modified}} {{lastmonthartifacts.modified}} {% if lastmonthartifacts.modified > permonthartifacts.modified %} {% elif lastmonthartifacts.modified == permonthartifacts.modified %} {% else %} {%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 lastmonth_artifacts_by_type.get(key) %} {% if lastmonth_artifacts_by_type[key].created > value.pmcreated %} {% elif lastmonth_artifacts_by_type[key].created == value.pmcreated %} {% else %} {%endif%} {%else%} {%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 lastmonth_artifacts_by_type.get(key) %} {% if lastmonth_artifacts_by_type[key].modified > value.pmmodified %} {% elif lastmonth_artifacts_by_type[key].modified == value.pmmodified %} {% else %} {%endif%} {%else%} {%endif%}
{% if tottickets.assigned > 0 %} Assigned tickets {% else %} Assigned tickets {% endif %} {{tottickets.assigned}} {{permonthtickets.assigned}} {{lastmonthtickets.assigned}} {% if lastmonthtickets.assigned > permonthtickets.assigned %} {% elif lastmonthtickets.assigned == permonthtickets.assigned %} {% else %} {%endif%}
{% if tottickets.revoked > 0 %} Revoked tickets {% else %} Revoked tickets {% endif %} {{tottickets.revoked}} {{permonthtickets.revoked}} {{lastmonthtickets.revoked}} {% if lastmonthtickets.revoked > permonthtickets.revoked %} {% elif lastmonthtickets.revoked == permonthtickets.revoked %} {% else %} {%endif%}
{% if tottickets.solved > 0 %} Solved tickets {% else %} Solved tickets {% endif %} {{tottickets.solved}} {{permonthtickets.solved}} {{lastmonthtickets.solved}} {% if lastmonthtickets.solved > permonthtickets.solved %} {% elif lastmonthtickets.solved == permonthtickets.solved %} {% else %} {%endif%}
{% if tottickets.averagesolvingtime %} 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 lastmonthtickets.averagesolvingtime > tottickets.averagesolvingtime %} {% elif lastmonthtickets.averagesolvingtime == tottickets.averagesolvingtime %} {% else %} {%endif%}
{% if categories %}

Preferred categories

The following table shows the number projects tagged as belonging to each single category in which this user is involved.

{% for cat, count in categories %} {% endfor %}
Category name Number of projects
{{cat.fullname}} {{count}}
{% endif %} {% else %} {% if user %}

Statistics not available

This user has set his or her preferences so that personal statistics are not visible to other users of the forge.
{% else %}

Invalid user

You are looking for personal statistics of a user which doesn't exist on this forge. Check your url.
{% endif %} {% endif %} {% endblock %}