Comments updated and weeks additions and deletions logic added
This commit is contained in:
@@ -135,7 +135,7 @@ else
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h1 class="text-center">Community GitHub Contributions</h1>
|
||||
<h1 class="text-center">GitHub Contributions</h1>
|
||||
<p>
|
||||
Contributions to Umbraco GitHub repositories
|
||||
<small class="link-list">
|
||||
|
||||
@@ -4,13 +4,17 @@
|
||||
{
|
||||
foreach (var contributor in Model.Contributors)
|
||||
{
|
||||
var author = contributor.First().Author;
|
||||
var author = contributor.Author;
|
||||
if (author != null)
|
||||
{
|
||||
<a href="@author.HtmlUrl" class="contributor" target="_blank">
|
||||
<div class="avatar">
|
||||
<img alt="@author.Login" src="@author.AvatarUrl&s=112" title="@author.Login" />
|
||||
<span class="contrib-count" title="@(contributor.Sum(x=>x.Total) + " contributions")">@contributor.Sum(x => x.Total)</span>
|
||||
<span class="contrib-count" title="@(contributor.TotalCommits + " contributions")">@contributor.TotalCommits</span>
|
||||
<div>
|
||||
Additions: @contributor.TotalAdditions
|
||||
<br />Deletions: @contributor.TotalDeletions
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Web.Http;
|
||||
using System.Web.Mvc;
|
||||
using OurUmbraco.Community.Models;
|
||||
using OurUmbraco.Our.Api;
|
||||
@@ -16,7 +15,7 @@ namespace OurUmbraco.Community.Controllers
|
||||
public class GitHubContributorController : SurfaceController
|
||||
{
|
||||
/// <summary>
|
||||
/// Repositories to include in the combination
|
||||
/// Repositories to include in the combination of contributions
|
||||
/// </summary>
|
||||
private readonly string[] Repositories =
|
||||
{
|
||||
@@ -44,9 +43,9 @@ namespace OurUmbraco.Community.Controllers
|
||||
LogHelper.Debug<GitHubContributorController>("Config file was not found: " + configPath);
|
||||
return PartialView("~/Views/Partials/Home/GitHubContributors.cshtml", model);
|
||||
}
|
||||
|
||||
|
||||
string[] login = System.IO.File.ReadAllLines(configPath).Where(x => x.Trim() != "").Distinct().ToArray();
|
||||
var contributors = ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem<List<GitHubContributorModel>>("UmbracoGitHubContributors",
|
||||
var contributors = ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem<List<GitHubGlobalContributorModel>>("UmbracoGitHubContributors",
|
||||
() =>
|
||||
{
|
||||
var githubController = new GitHubController();
|
||||
@@ -64,16 +63,25 @@ namespace OurUmbraco.Community.Controllers
|
||||
LogHelper.Warn<IGitHubContributorsModel>(string.Format("Invalid HTTP response for repository {0}", repo));
|
||||
}
|
||||
}
|
||||
return gitHubContributors;
|
||||
|
||||
var filteredContributors = gitHubContributors
|
||||
.Where(g => !login.Contains(g.Author.Login))
|
||||
.GroupBy(g => g.Author.Id)
|
||||
.OrderByDescending(c => c.Sum(g => g.Total));
|
||||
|
||||
List<GitHubGlobalContributorModel> temp = new List<GitHubGlobalContributorModel>();
|
||||
|
||||
foreach (var group in filteredContributors)
|
||||
{
|
||||
temp.Add(new GitHubGlobalContributorModel(group));
|
||||
}
|
||||
|
||||
return temp;
|
||||
|
||||
}, TimeSpan.FromDays(1));
|
||||
|
||||
var filteredContributors = contributors
|
||||
.Where(g => !login.Contains(g.Author.Login))
|
||||
.GroupBy(g => g.Author.Id)
|
||||
.OrderByDescending(c => c.Sum(g => g.Total));
|
||||
|
||||
model.Contributors = filteredContributors;
|
||||
model.Contributors = contributors;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OurUmbraco.Community.Models;
|
||||
|
||||
namespace OurUmbraco.Community.Controllers
|
||||
{
|
||||
public class GitHubGlobalContributorModel
|
||||
{
|
||||
public List<GitHubContributorModel> Items { get; set; }
|
||||
|
||||
public int Id
|
||||
{
|
||||
get { return Author.Id; }
|
||||
}
|
||||
|
||||
public int TotalCommits
|
||||
{
|
||||
get { return Items.Sum(x => x.Total); }
|
||||
}
|
||||
|
||||
public int TotalAdditions
|
||||
{
|
||||
get { return Items.Sum(x => x.TotalAdditions); }
|
||||
}
|
||||
|
||||
public int TotalDeletions
|
||||
{
|
||||
get { return Items.Sum(x => x.TotalDeletions); }
|
||||
}
|
||||
|
||||
public Author Author
|
||||
{
|
||||
get { return Items.First().Author; }
|
||||
}
|
||||
|
||||
public GitHubGlobalContributorModel(IEnumerable<GitHubContributorModel> items)
|
||||
{
|
||||
Items = items.ToList();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OurUmbraco.Community.Controllers;
|
||||
|
||||
namespace OurUmbraco.Community.Models
|
||||
{
|
||||
public class GitHubContributorsModel : IGitHubContributorsModel
|
||||
{
|
||||
public IEnumerable<IGrouping<int, GitHubContributorModel>> Contributors { get; set; }
|
||||
public List<GitHubGlobalContributorModel> Contributors { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -6,25 +6,62 @@ namespace OurUmbraco.Community.Models
|
||||
[DataContract]
|
||||
public class GitHubContributorModel : IGitHubContributorModel
|
||||
{
|
||||
|
||||
private List<Week> _weeks;
|
||||
|
||||
public int Total { get; set; }
|
||||
public List<Week> Weeks { get; set; }
|
||||
public int TotalAdditions { get; set; }
|
||||
public int TotalDeletions { get; set; }
|
||||
|
||||
[DataMember(Name = "weeks")]
|
||||
public List<Week> Weeks
|
||||
{
|
||||
get { return _weeks; }
|
||||
|
||||
set
|
||||
{
|
||||
_weeks = value;
|
||||
|
||||
|
||||
int totalAdditions = 0;
|
||||
int totalDeletions = 0;
|
||||
foreach (var week in _weeks)
|
||||
{
|
||||
totalDeletions += week.D;
|
||||
totalAdditions += week.A;
|
||||
}
|
||||
|
||||
TotalAdditions = totalAdditions;
|
||||
TotalDeletions = totalDeletions;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public Author Author { get; set; }
|
||||
}
|
||||
|
||||
[DataContract]
|
||||
public class Week
|
||||
{
|
||||
[DataMember(Name = "w")]
|
||||
public int Timestamp { get; set; }
|
||||
/// <summary>
|
||||
/// Timestamp
|
||||
/// </summary>
|
||||
public int W { get; set; }
|
||||
|
||||
[DataMember(Name = "a")]
|
||||
public int Additions { get; set; }
|
||||
/// <summary>
|
||||
/// Additions
|
||||
/// </summary>
|
||||
public int A { get; set; }
|
||||
|
||||
[DataMember(Name = "d")]
|
||||
public int Deletions { get; set; }
|
||||
/// <summary>
|
||||
/// Deletions
|
||||
/// </summary>
|
||||
public int D { get; set; }
|
||||
|
||||
[DataMember(Name = "c")]
|
||||
public int Commits { get; set; }
|
||||
/// <summary>
|
||||
/// Commits
|
||||
/// </summary>
|
||||
public int C { get; set; }
|
||||
}
|
||||
|
||||
[DataContract]
|
||||
|
||||
Reference in New Issue
Block a user