From 2e3612efca76c7e586151d264b70f63eb70a551d Mon Sep 17 00:00:00 2001 From: NumEricR <-> Date: Thu, 2 Jun 2011 15:08:13 +0200 Subject: [PATCH 1/3] Dynamic user status based on repos number --- js/githubresume.js | 29 ++++++++++++++++++++++++++--- views/resume.html | 2 +- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/js/githubresume.js b/js/githubresume.js index 04ea3de..b74cb90 100644 --- a/js/githubresume.js +++ b/js/githubresume.js @@ -87,9 +87,32 @@ var run = function() { repos: data.user.public_repo_count, plural: data.user.public_repo_count > 1 ? 'repositories' : 'repository', username: username, + userStatus: 'Github user', since: since }; - + + view.userStatus = getUserStatus(); + function getUserStatus() { + if (view.repos == 0) { + return 'Inactive Github user'; + } + else if (view.repos > 0 && view.repos <= 1) { + return 'Newbie Github user'; + } + else if (view.repos > 1 && view.repos <= 5) { + return 'Regular Github user'; + } + else if (view.repos > 5 && view.repos <= 10) { + return 'Advanced Github user'; + } + else if (view.repos > 10 && view.repos <= 30) { + return 'Enthusiastic Github user'; + } + else if (view.repos > 30) { + return 'Passionate Github user'; + } + }; + if (data.user.blog !== undefined && data.user.blog !== null && data.user.blog !== '') { view.blog = addHttp + data.user.blog; } @@ -274,7 +297,7 @@ var run = function() { }); }; - +/* if (trackerId) { var _gaq = _gaq || []; _gaq.push(['_setAccount', trackerId]); @@ -286,5 +309,5 @@ if (trackerId) { var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); } - +*/ $(window).bind('error', error); diff --git a/views/resume.html b/views/resume.html index a176f0d..e3b89ea 100644 --- a/views/resume.html +++ b/views/resume.html @@ -6,7 +6,7 @@

{{name}}

-

Passionate github user

+

{{userStatus}}

From 15b5255a1016743c86f51ebe0650d8273293fbf7 Mon Sep 17 00:00:00 2001 From: NumEricR <-> Date: Thu, 2 Jun 2011 20:53:34 +0200 Subject: [PATCH 2/3] User status is now defined using several parameters --- js/githubresume.js | 58 ++++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/js/githubresume.js b/js/githubresume.js index b74cb90..3d54581 100644 --- a/js/githubresume.js +++ b/js/githubresume.js @@ -87,30 +87,42 @@ var run = function() { repos: data.user.public_repo_count, plural: data.user.public_repo_count > 1 ? 'repositories' : 'repository', username: username, - userStatus: 'Github user', + userStatus: 'Github user', since: since }; - view.userStatus = getUserStatus(); - function getUserStatus() { - if (view.repos == 0) { - return 'Inactive Github user'; - } - else if (view.repos > 0 && view.repos <= 1) { - return 'Newbie Github user'; - } - else if (view.repos > 1 && view.repos <= 5) { - return 'Regular Github user'; - } - else if (view.repos > 5 && view.repos <= 10) { - return 'Advanced Github user'; - } - else if (view.repos > 10 && view.repos <= 30) { - return 'Enthusiastic Github user'; - } - else if (view.repos > 30) { - return 'Passionate Github user'; - } + view.userStatus = getUserStatus(); + function getUserStatus() { + var COEF_REPOS = 2; + var COEF_GISTS = 0.25; + var COEF_FOLLOWERS = 0.5; + var COEF_FOLLOWING = 0.25; + var FIRST_STEP = 0; + var SECOND_STEP = 5; + var THIRD_STEP = 20; + var FOURTH_STEP = 50; + var FIFTH_STEP = 150; + + var statusScore = view.repos*COEF_REPOS + data.user.public_gist_count*COEF_GISTS + data.user.followers_count*COEF_FOLLOWERS + data.user.following_count*COEF_FOLLOWING; + + if (statusScore == FIRST_STEP) { + return 'Inactive Github user'; + } + else if (statusScore > FIRST_STEP && statusScore <= SECOND_STEP) { + return 'Newbie Github user'; + } + else if (statusScore > SECOND_STEP && statusScore <= THIRD_STEP) { + return 'Regular Github user'; + } + else if (statusScore > THIRD_STEP && statusScore <= FOURTH_STEP) { + return 'Advanced Github user'; + } + else if (statusScore > FOURTH_STEP && statusScore <= FIFTH_STEP) { + return 'Enthusiastic Github user'; + } + else if (statusScore > FIFTH_STEP) { + return 'Passionate Github user'; + } }; if (data.user.blog !== undefined && data.user.blog !== null && data.user.blog !== '') { @@ -297,7 +309,7 @@ var run = function() { }); }; -/* + if (trackerId) { var _gaq = _gaq || []; _gaq.push(['_setAccount', trackerId]); @@ -309,5 +321,5 @@ if (trackerId) { var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); } -*/ + $(window).bind('error', error); From 5298fe46cadd077dcd55a5a9bab5e14ec9542956 Mon Sep 17 00:00:00 2001 From: NumEricR <-> Date: Wed, 8 Jun 2011 21:02:49 +0200 Subject: [PATCH 3/3] Added some extra points on user status algorithm --- js/githubresume.js | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/js/githubresume.js b/js/githubresume.js index 3d54581..0623525 100644 --- a/js/githubresume.js +++ b/js/githubresume.js @@ -63,8 +63,9 @@ var run = function() { repos = data; }); - var since = new Date(data.user.created_at); - since = since.getFullYear(); + var sinceDate = new Date(data.user.created_at); + since = sinceDate.getFullYear(); + var sinceMonth = sinceDate.getMonth(); var addHttp = ''; if (data.user.blog !== undefined && data.user.blog !== null && data.user.blog !== '') { @@ -82,6 +83,7 @@ var run = function() { name: name, email: data.user.email, created_at: data.user.created_at, + earlyAdopter: 0, location: data.user.location, gravatar_id: data.user.gravatar_id, repos: data.user.public_repo_count, @@ -90,6 +92,11 @@ var run = function() { userStatus: 'Github user', since: since }; + + // We consider a limit of 4 months since the Github opening (Feb 2008) to be considered as an early adopter + if (since == '2008' && sinceMonth <= 5) { + view.earlyAdopter = 1; + } view.userStatus = getUserStatus(); function getUserStatus() { @@ -102,8 +109,23 @@ var run = function() { var THIRD_STEP = 20; var FOURTH_STEP = 50; var FIFTH_STEP = 150; + var EXTRA_POINT_GAIN = 1; + + var statusScore = view.repos * COEF_REPOS + + data.user.public_gist_count * COEF_GISTS + + data.user.followers_count * COEF_FOLLOWERS + + data.user.following_count * COEF_FOLLOWING; - var statusScore = view.repos*COEF_REPOS + data.user.public_gist_count*COEF_GISTS + data.user.followers_count*COEF_FOLLOWERS + data.user.following_count*COEF_FOLLOWING; + // Extra points + // - Early adopter + if (view.earlyAdopter == 1) { + statusScore += EXTRA_POINT_GAIN; + } + // - Blog & Email & Location + if (view.location && view.location != '' && view.email && view.email != '' && data.user.blog && data.user.blog != '') { + statusScore += EXTRA_POINT_GAIN; + } + if (statusScore == FIRST_STEP) { return 'Inactive Github user';