Skip to content

Instantly share code, notes, and snippets.

@waj
Created November 1, 2011 03:29
Show Gist options
  • Save waj/1329802 to your computer and use it in GitHub Desktop.
Save waj/1329802 to your computer and use it in GitHub Desktop.
Display a matrix with the permissions of your bitbucket repositories
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<style>
body, table {
font-family: verdana;
font-size: 8pt;
}
table, td {
border-collapse: collapse;
border: 1px solid black;
}
td {
padding: 3px;
}
a {
text-decoration: none;
}
.user {
}
</style>
</head>
<body>
<script>
var projects = [];
var users = {};
function readPrivileges(data) {
if (data.length == 0) return;
projects[data[0].repo] = data;
for (var x in data) {
if (users[data[x].user.username] == null)
users[data[x].user.username] = data[x].user
}
refreshTable();
}
function readRepositories(data) {
for (var x in data) {
$.getJSON('https://api.bitbucket.org/1.0/privileges/' + data[x].owner + '/' + data[x].slug + '?callback=?', readPrivileges);
}
}
$(function() {
$.getJSON('https://api.bitbucket.org/1.0/user/repositories/?callback=?', readRepositories);
});
function refreshTable() {
$('#tbl tr').remove();
var t = $('#tbl');
var row = $('<tr>').append($('<td>'));
t.append(row);
for (var u in users) {
var name = (users[u].first_name + ' ' + users[u].last_name).trim();
if (name.length == 0)
name = u;
row.append($('<td class="user">').text(name));
}
for (var p in projects) {
var row = $('<tr>').append($('<td>').append($('<a>').attr('href', 'https://bitbucket.org/' + p).text(p)));
t.append(row);
for (var u in users) {
var priv = "";
for (var i in projects[p]) {
if (projects[p][i].user.username == u) {
priv = projects[p][i].privilege;
break;
}
}
row.append($('<td>').text(priv));
}
}
}
</script>
<table id="tbl">
<tr></tr>
<tr></tr>
</table>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment