$(function() { var milestonesUrl = "https://api.github.com/repos/marcuswhybrow/minecraft-server-manager/milestones?callback=?", tagsUrl = "https://api.github.com/repos/marcuswhybrow/minecraft-server-manager/tags?callback=?" stargazersUrl = "https://api.github.com/repos/marcuswhybrow/minecraft-server-manager/stargazers?per_page=100&callback=?", contributorsUrl = "https://api.github.com/repos/marcuswhybrow/minecraft-server-manager/contributors?per_page=100&callback=?"; var maintainers = [ "marcuswhybrow", ]; var donators = [ "joecabezas", ]; function populateContributors() { var contributors = getAllPages(contributorsUrl); // Sort contributors by the number of contributins (most first) contributors.sort(function(a, b) { var aCount = a.contributions; var bCount = b.contributions; return (aCount < bCount) ? 1 : (aCount > bCount) ? -1 : 0; }); $.each(contributors, function(i, contributor) { var $link = $("") .attr("target", "_blank") .attr("href", "https://github.com/" + contributor.login + "/") .attr("ref", "tooltip") .attr("title", contributor.login) .addClass("contributor ga-track") .appendTo("#contributors") .tooltip({ placement: "bottom", }); $('') .text('#' + contributor.contributions) .appendTo($link); $("") .attr("src", contributor.avatar_url) .appendTo($link); if (maintainers.indexOf(contributor.login) >= 0) { $link.addClass("maintainer"); } if (donators.indexOf(contributor.login) >= 0) { $link.addClass("donator"); } }); } function populateStargazers() { var stargazers = getAllPages(stargazersUrl);; $.each(stargazers, function(i, stargazer) { var $link = $("") .attr("target", "_blank") .attr("href", "https://github.com/" + stargazer.login + "/") .attr("ref", "tooltip") .attr("title", stargazer.login) .addClass("stargazer ga-track") .appendTo("#stargazers") .tooltip({ placement: "bottom", }); $("") .attr("src", stargazer.avatar_url) .appendTo($link); if (maintainers.indexOf(stargazer.login) >= 0) { $link.addClass("maintainer"); } if (donators.indexOf(stargazer.login) >= 0) { $link.addClass("donator"); } }); $('.stargazers').slideDown(); } function getAllPages(url, output, page) { if (typeof(output) === 'undefined') { output = []; } if (typeof(page) === 'undefined') { page = 1; } $.ajax({ url: url + "&page=" + page, dataType: 'json', async: false, xhrFields: { withCredentials: true, }, success: function(data) { if (data.length == 100) { output = getAllPages(url, output.concat(data), page + 1); } else { output = output.concat(data); } }, }); return output; } populateContributors(); populateStargazers(); $.getJSON(milestonesUrl, function(result) { var milestones = result.data; $.each(milestones, function(i, milestone) { var closedIssues = milestone.closed_issues; var totalIssues = closedIssues + milestone.open_issues; var milestonePercentage = closedIssues / totalIssues * 100; var $div = $("
").addClass("milestone"); var $link = $("") .attr("href", "https://github.com/marcuswhybrow/minecraft-server-manager/issues?state=open&milestone=" + milestone.number) .addClass("ga-track") .appendTo($div); $("

").text(milestone.title).appendTo($link); $("

").text(milestone.description).appendTo($div); var $progress = $("

").addClass("progress").appendTo($div); var $bar = $("
").addClass("bar").css("width", milestonePercentage + "%").appendTo($progress); $(".milestones").append($div); }); $(".milestones").slideDown(); }); function compareTags(a, b) { if (a[0] > b[0]) return 1; else if (a[0] == b[0] && a[1] > b[1]) return 1; else if (a[0] == b[0] && a[1] == b[1] && a[2] > b[2]) return 1; else if (a[0] == b[0] && a[1] == b[1] && a[2] == b[2]) return 0; return -1; } function matchToTagVersion(match) { return [ parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10) ]; } $.getJSON(tagsUrl, function(result) { var tags = result.data, latestTagVersion = [0, 0, 0], tagVersion, match; $.each(tags, function(i, tag) { if (! tag.name === 'undefined') { match = tag.name.match(/^(\d+)\.(\d+)\.(\d+)$/); if (match) { tagVersion = matchToTagVersion(match); if (compareTags(tagVersion, latestTagVersion) == 1) latestTagVersion = tagVersion; } } }); var $installBtnVersion = $('#install-button small'); match = $installBtnVersion.text().match(/^\((\d+)\.(\d+)\.(\d+)\)$/); if (match) { tagVersion = matchToTagVersion(match); if (compareTags(latestTagVersion, tagVersion) == 1) $installBtnVersion.text('(' + latestTagVersion.join('.') + ')'); } }); $('.player').tooltip(); $('.donator').tooltip({ placement: 'bottom', }); $('a.ga-track').live('click', function() { var $this = $(this); _gaq.push(['_trackEvent', 'External Link', $this.text(), $this.attr('href')]); }); });