Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

community/: Add a form for adding a gsoc student #279

Open
wants to merge 19 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
community/: Display contributor statistics
Show the contributor statistics in the form of
charts. The charts will be shown for issues,
commits, reviews and for merge requests. And,
an overall chart, which will display stats
repository wise. Apart from all these charts,
the type of issues the contrib has worked on
will be shown, with the count of issues the
user is working on and the last updated datetime
the user data was updated. All this will be shown,
only if there is some statistics, otherwise the
popup option willn't be shown.

Closes #268
KVGarg committed Aug 5, 2019
commit a0126936d20a2849efb8e4aa177be50467c9b1bb
43 changes: 43 additions & 0 deletions data/migrations/0007_auto_20190802_2015.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Generated by Django 2.1.7 on 2019-08-02 20:15

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('data', '0006_auto_20190801_1752'),
]

operations = [
migrations.AddField(
model_name='contributor',
name='is_gci_participant',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='contributor',
name='oauth_completed',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='contributor',
name='statistics',
field=models.TextField(default=None, null=True),
),
migrations.AddField(
model_name='contributor',
name='type_of_issues_worked_on',
field=models.TextField(default=None, null=True),
),
migrations.AddField(
model_name='contributor',
name='updated_at',
field=models.TextField(default=None, null=True),
),
migrations.AddField(
model_name='contributor',
name='working_on_issues_count',
field=models.TextField(default=None, null=True),
),
]
6 changes: 6 additions & 0 deletions data/models.py
Original file line number Diff line number Diff line change
@@ -20,6 +20,12 @@ class Contributor(models.Model):
issues_opened = models.IntegerField(default=None, null=True)
location = models.TextField(default=None, null=True)
teams = models.ManyToManyField(Team, related_name='contributors')
statistics = models.TextField(default=None, null=True)
type_of_issues_worked_on = models.TextField(default=None, null=True)
is_gci_participant = models.BooleanField(default=False)
working_on_issues_count = models.TextField(default=None, null=True)
updated_at = models.TextField(default=None, null=True)
oauth_completed = models.BooleanField(default=False)

def __str__(self):
return self.login
55 changes: 55 additions & 0 deletions static/css/contributors.css
Original file line number Diff line number Diff line change
@@ -47,6 +47,13 @@
min-width: 300px;
}

.repository-canvas {
position: relative;
margin: auto;
width: 60vw;
height: 70vh;
}

.search-results {
width: 100%;
background-color: transparent;
@@ -62,3 +69,51 @@
border-color: darkgray;
border-style: solid;
}

.some-important-information, .issues-labels,
.github-issue-labels, .issues-count, .user-updated-datetime,
.gitlab-issue-labels{
padding: 0 10px;
}

.stats-canvas {
position: relative;
margin: auto;
width: 35vw;
height: 50vh;
}

.user-statistics {
display: none;
position: fixed;
top: 15%;
left: 10%;
width: 80%;
height: 70vh;
background-color: white;
z-index: 1002;
overflow: auto;
border-radius: 10px;
box-shadow: 0 0 25px 2px black;
}

.user-statistics-option {
position: absolute;
float: right;
margin-left: 180px;
margin-top: 10px;
background: black;
color: white;
font-size: 1.5rem;
border-radius: 50px;
width: 20px;
text-align: center;
cursor: pointer;
}

@media only screen and (max-width: 600px) {
.stats-canvas {
width: 50vw;
height: 50vh;
}
}
728 changes: 728 additions & 0 deletions static/js/contributor_statistics.js

Large diffs are not rendered by default.

68 changes: 67 additions & 1 deletion templates/contributors.html
Original file line number Diff line number Diff line change
@@ -9,7 +9,9 @@
{% endblock %}

{% block add_js_files %}
<script src="//cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.js"></script>
<script src="{% static 'js/contributors.js' %}"></script>
<script src="{% static 'js/contributor_statistics.js' %}"></script>
{% endblock %}

{% block main-content %}
@@ -63,7 +65,12 @@ <h3 style="padding-left: 15px">~</h3>
{% for contributor in contributors %}
<div class="contributor-card" login="{{ contributor.login }}" name="{{ contributor.name }}">
<div class="contributor-image">
<img src="//github.com/{{ contributor.login }}.png/?size=210" alt="user-image">
{% if contributor.statistics %}
<div class="user-statistics-option" username="{{ contributor.login }}">
<strong>s</strong>
</div>
{% endif %}{# if contributor.statistics #}
<img src="//github.com/{{ contributor.login }}.png/?size=210">
</div>
<div class="contributor-details">
<a class="bold-text large-font" href="//github.com/{{ contributor.login }}" target="_blank">
@@ -92,4 +99,63 @@ <h3 style="padding-left: 15px">~</h3>
{% endfor %}{# for contributor in contributors #}
</div>

<div class="user-statistics">
<div class="close-statistics apply-flex close-form">
<i class="fa fa-times" aria-hidden="true"></i>
</div>
<div class="input-field row">
<div class="col s6 m3 l2">
<select id="hoster-selector">
<option value="github">GitHub</option>
<option value="gitlab">GitLab</option>
</select>
</div>
<div class="col s6 m3 l2">
<select id="stats-divider">
<option value="yearly">Yearly</option>
<option value="monthly">Last 12 Months</option>
<option value="weekly">Last 12 weeks</option>
</select>
</div>
</div>
<div class="statistics-graphs apply-flex">
<div class="stats-canvas bar-issues-canvas">
<canvas id="issues-canvas"></canvas>
</div>
<div class="stats-canvas bar-commits-canvas">
<canvas id="commits-canvas"></canvas>
</div>
<div class="stats-canvas bar-reviews-canvas">
<canvas id="reviews-canvas"></canvas>
</div>
<div class="stats-canvas line-merge-requests-canvas">
<canvas id="merge-requests-canvas"></canvas>
</div>
</div>
<div class="repository-canvas">
<canvas id="repository-stats-canvas"></canvas>
</div>
<div class="some-important-information">
<div class="worked-on-issues">
<h6><strong>Types of issues user worked on-</strong></h6>
<div class="issues-labels">
<h6>GitHub:</h6>
<div class="github-issue-labels apply-flex center-content"></div>
<h6>GitLab:</h6>
<div class="gitlab-issue-labels apply-flex center-content"></div>
</div>
</div>
<div class="working-on-issues-count">
<h6><strong>Working on issues count-</strong></h6>
<div class="issues-count">
<ol class="count-list"></ol>
</div>
</div>
<div class="data-updated-at">
<h6><strong>User lasted updated on-</strong></h6>
<div class="user-updated-datetime apply-flex"></div>
</div>
</div>
</div>

{% endblock %}