Skip to content

Commit f5579ed

Browse files
committed
add hotness algorithm and refactor
1 parent 403f9a9 commit f5579ed

File tree

1 file changed

+30
-8
lines changed

1 file changed

+30
-8
lines changed

assets/application.js

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,25 +31,36 @@
3131

3232
function addRecentlyUpdatedRepo(repo) {
3333
var $item = $("<li>");
34-
$item.append('<span class="name"><a href="' + repoUrl(repo) + '">' + repo.name + '</a></span>');
35-
$item.append('<span class="time"><a href="' + repo.html_url + '/commits">' + strftime("%h %e, %Y", repo.pushed_at) + '</a></span>');
34+
35+
var $name = $("<a>").attr("href", repoUrl(repo)).text(repo.name);
36+
$item.append($("<span>").addClass("name").append($name));
37+
38+
var $time = $("<a>").attr("href", repo.html_url + "/commits").text(strftime("%h %e, %Y", repo.pushed_at));
39+
$item.append($("<span>").addClass("time").append($time));
40+
3641
$item.append('<span class="bullet">&sdot;</span>');
37-
$item.append('<span class="watchers"><a href="' + repo.html_url + '/watchers">' + repo.watchers + ' watchers</a></span>');
42+
43+
var $watchers = $("<a>").attr("href", repo.html_url + "/watchers").text(repo.watchers);
44+
$item.append($("<span>").addClass("watchers").append($watchers));
45+
3846
$item.append('<span class="bullet">&sdot;</span>');
39-
$item.append('<span class="forks"><a href="' + repo.html_url + '/network">' + repo.forks + ' forks</a></span>');
47+
48+
var $forks = $("<a>").attr("href", repo.html_url + "/network").text(repo.forks + " forks");
49+
$item.append($("<span>").append($forks));
50+
4051
$item.appendTo("#recently-updated-repos");
4152
}
4253

4354
function addRepo(repo) {
44-
var $item = $("<li>").addClass("repo grid-1 " + repo.language.toLowerCase());
55+
var $item = $("<li>").addClass("repo grid-1 " + (repo.language || '').toLowerCase());
4556
var $link = $("<a>").attr("href", repoUrl(repo)).appendTo($item);
4657
$link.append($("<h2>").text(repo.name));
4758
$link.append($("<h3>").text(repo.language));
4859
$link.append($("<p>").text(repoDescription(repo)));
4960
$item.appendTo("#repos");
5061
}
5162

52-
$.getJSON("https://api.github.com/users/twitter/repos?callback=?", function (result) {
63+
$.getJSON("https://api.github.com/orgs/twitter/repos?callback=?", function (result) {
5364
var repos = result.data;
5465

5566
$(function () {
@@ -58,12 +69,23 @@
5869
// Convert pushed_at to Date.
5970
$.each(repos, function (i, repo) {
6071
repo.pushed_at = new Date(repo.pushed_at);
72+
73+
var weekHalfLife = 1.146 * Math.pow(10, -9);
74+
75+
var pushDelta = (new Date) - Date.parse(repo.pushed_at);
76+
var createdDelta = (new Date) - Date.parse(repo.created_at);
77+
78+
var weightForPush = 1;
79+
var weightForWatchers = 1.314 * Math.pow(10, 7);
80+
81+
repo.hotness = weightForPush * Math.pow(Math.E, -1 * weekHalfLife * pushDelta);
82+
repo.hotness += weightForWatchers * repo.watchers / createdDelta;
6183
});
6284

6385
// Sort by highest # of watchers.
6486
repos.sort(function (a, b) {
65-
if (a.watchers < b.watchers) return 1;
66-
if (b.watchers < a.watchers) return -1;
87+
if (a.hotness < b.hotness) return 1;
88+
if (b.hotness < a.hotness) return -1;
6789
return 0;
6890
});
6991

0 commit comments

Comments
 (0)