Last active
November 16, 2018 14:34
-
-
Save justinline/68ced6002606b060fc7087de24f7ab7d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Run on bitbucket PR overview page for an idea of metrics: qty, authors, reviewers | |
| function getPRAuthors(){ | |
| return document.querySelectorAll('td.pull-request-author'); | |
| } | |
| function getPRReviewers(){ | |
| return document.querySelectorAll('td.reviewers'); | |
| } | |
| function countPRs(){ | |
| const elems = getPRAuthors(); | |
| return elems.length; | |
| } | |
| function tableReviewers(){ | |
| const rows = getPRReviewers(); | |
| let outstandingResults = []; | |
| let approvedResults = []; | |
| let users = new Object; | |
| for(let i = 0; i < rows.length; i++) { | |
| let avatars = rows[i].querySelectorAll('span.aui-avatar'); | |
| let avatarsDimmed = [...avatars].filter(avatar => avatar.querySelector('span.approved')); | |
| for(let j = 0; j < avatars.length; j++) { | |
| outstandingResults.push(avatars[j].dataset.username); | |
| } | |
| for(let j = 0; j < avatarsDimmed.length; j++) { | |
| approvedResults.push(avatarsDimmed[j].dataset.username); | |
| } | |
| } | |
| for (var i = 0, j = outstandingResults.length; i < j; i++) { | |
| users[outstandingResults[i]] = {'outstanding': 0, 'approved': 0, 'total': 0}; | |
| } | |
| for (var i = 0, j = outstandingResults.length; i < j; i++) { | |
| users[outstandingResults[i]]['total'] = (users[outstandingResults[i]]['total'] || 0) + 1; | |
| } | |
| for (var i = 0, j = approvedResults.length; i < j; i++) { | |
| users[approvedResults[i]]['approved'] = (users[approvedResults[i]]['approved'] || 0) + 1; | |
| } | |
| for (var i = 0, j = outstandingResults.length; i < j; i++) { | |
| users[outstandingResults[i]]['outstanding'] = users[outstandingResults[i]]['total'] - users[outstandingResults[i]]['approved']; | |
| } | |
| return users | |
| } | |
| function tableAuthors(){ | |
| const rows = getPRAuthors(); | |
| let results = []; | |
| for(let i = 0; i < rows.length; i++) { | |
| let avatars = rows[i].querySelectorAll('span>span>img'); | |
| for(let j = 0; j < avatars.length; j++) { | |
| results.push(avatars[j].title); | |
| } | |
| } | |
| var occurrences = { }; | |
| for (var i = 0, j = results.length; i < j; i++) { | |
| occurrences[results[i]] = (occurrences[results[i]] || 0) + 1; | |
| } | |
| return occurrences | |
| } | |
| const repo = getRepoName(); | |
| console.log(`PR's for ${repo}`); | |
| console.log(`${countPRs()} currently outstanding`); | |
| console.log('AUTHORS'); | |
| console.table(tableAuthors()); | |
| console.log('REVIEWERS'); | |
| console.table(tableReviewers()); | |
| function getRepoName(){ | |
| const url = window.location.href; | |
| let args = url.split('/') | |
| // Get repo name | |
| return args[4]; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment