Compare commits
2 Commits
cef544fda4
...
e3c8199598
Author | SHA1 | Date |
---|---|---|
|
e3c8199598 | |
|
46bd17172a |
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "Sage's BitBucket Addon",
|
"name": "Sage's BitBucket Addon",
|
||||||
"description": "Ensure searches don't include forks (and other enhancements)",
|
"description": "Ensure searches don't include forks (and other enhancements)",
|
||||||
"version": "1.0.22",
|
"version": "1.0.24",
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"browser_specific_settings": {
|
"browser_specific_settings": {
|
||||||
"gecko": {
|
"gecko": {
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
if (location.toString().includes('/pull-requests?create')) {
|
if (location.toString().includes('/pull-requests?create')) {
|
||||||
|
const addOnly = async () => ['ADD']
|
||||||
|
|
||||||
|
const allProjects = async () => fetch('https://git.add123.com/rest/api/latest/projects')
|
||||||
|
.then(resp => resp.json())
|
||||||
|
.then(async ({ values }) => values.map(project => project.key).filter(key => !['GRAV', 'TEST'].includes(key)))
|
||||||
|
|
||||||
const names = [
|
const names = [
|
||||||
"Tam Nguyen",
|
"Tam Nguyen",
|
||||||
"David Daniel",
|
"David Daniel",
|
||||||
|
@ -15,28 +21,37 @@ if (location.toString().includes('/pull-requests?create')) {
|
||||||
|
|
||||||
const urlPrefix = 'https://git.add123.com/rest/api/latest'
|
const urlPrefix = 'https://git.add123.com/rest/api/latest'
|
||||||
|
|
||||||
fetch(`${urlPrefix}/projects/ADD/repos?limit=999`)
|
const getPullRequestsForProject = async project => {
|
||||||
|
return await fetch(`${urlPrefix}/projects/${project}/repos?limit=999`)
|
||||||
.then(resp => resp.json())
|
.then(resp => resp.json())
|
||||||
.then(async ({values: allRepos}) => {
|
.then(async (resp) => {
|
||||||
const prListUrls = allRepos.map(repo => `${urlPrefix}/projects/ADD/repos/${repo.slug}/pull-requests`)
|
if (!resp) {
|
||||||
const allPullRequests = (await Promise.all(
|
return []
|
||||||
|
}
|
||||||
|
const { values: allRepos } = resp
|
||||||
|
const prListUrls = allRepos.map(repo => `${urlPrefix}/projects/${project}/repos/${repo.slug}/pull-requests`)
|
||||||
|
return (await Promise.all(
|
||||||
prListUrls.map(async prListUrl => await fetch(prListUrl).then(resp => resp.json())))
|
prListUrls.map(async prListUrl => await fetch(prListUrl).then(resp => resp.json())))
|
||||||
).flatMap(({values}) => values)
|
).flatMap(({values}) => values)})
|
||||||
|
}
|
||||||
|
|
||||||
|
allProjects().then(async allProjects => {
|
||||||
|
const allPullRequests = (await Promise.all(allProjects.map(async project => await getPullRequestsForProject(project)))).flatMap(a => a)
|
||||||
const reviewerCounts = Object.fromEntries(names.map(name => [name, 0]))
|
const reviewerCounts = Object.fromEntries(names.map(name => [name, 0]))
|
||||||
allPullRequests.forEach(({reviewers}) => {
|
allPullRequests.forEach(({reviewers}) => {
|
||||||
reviewers?.map(r => r.user.displayName)
|
reviewers?.map(r => r.user.displayName)
|
||||||
.filter(displayName => !["Chris Gamache", "Tom Keels"].includes(displayName))
|
.filter(displayName => names.includes(displayName))
|
||||||
|
//.filter(displayName => !["Chris Gamache", "Tom Keels", "Todd Sherrin", "Kelly Gunter", "Mark Garrett"].includes(displayName))
|
||||||
.forEach(displayName => {
|
.forEach(displayName => {
|
||||||
reviewerCounts[displayName] ??= 0
|
reviewerCounts[displayName] ??= 0
|
||||||
reviewerCounts[displayName] += 1
|
reviewerCounts[displayName] += 1
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
const sortedCounts = Object.entries(reviewerCounts)
|
const sortedCounts = Object.entries(reviewerCounts)
|
||||||
.map(([name, count]) => ({ name, count }))
|
.map(([name, count]) => ({name, count}))
|
||||||
.toSorted((a, b) => a.count - b.count)
|
.toSorted((a, b) => a.count - b.count)
|
||||||
const tryDisplay = () => setTimeout(() => {
|
const tryDisplay = () => setTimeout(() => {
|
||||||
if (document.getElementById('reviewer-counts')) {
|
if (!sortedCounts.length || document.getElementById('reviewer-counts')) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const formBodyMain = document.querySelector('.create-pull-request-form .form-body .form-body-main')
|
const formBodyMain = document.querySelector('.create-pull-request-form .form-body .form-body-main')
|
||||||
|
@ -56,6 +71,10 @@ if (location.toString().includes('/pull-requests?create')) {
|
||||||
reviewerCountsNode.appendChild(listItem)
|
reviewerCountsNode.appendChild(listItem)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const projectHeadsUp = document.createElement('div')
|
||||||
|
projectHeadsUp.innerText = 'Note: this list does not take into account any projects that you do not have access to. E.g. STA'
|
||||||
|
reviewerCountsNode.appendChild(projectHeadsUp)
|
||||||
|
|
||||||
const label = countsParent.querySelector('.form-label')
|
const label = countsParent.querySelector('.form-label')
|
||||||
label.innerText = 'Now reviewing'
|
label.innerText = 'Now reviewing'
|
||||||
const message = countsParent.querySelector('.form-field-content')
|
const message = countsParent.querySelector('.form-field-content')
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -65,7 +65,8 @@ const addVariableClickers = skipExpandos => {
|
||||||
|
|
||||||
getVarElements()
|
getVarElements()
|
||||||
.forEach(e => {
|
.forEach(e => {
|
||||||
e.onclick = () => selectVar(e.innerText)
|
e.onmouseover = () => selectVar(e.innerText)
|
||||||
|
e.onmouseleave = () => selectVar('zzzzz')
|
||||||
e.ondblclick = () => {
|
e.ondblclick = () => {
|
||||||
let searchBox = getSearchBox()
|
let searchBox = getSearchBox()
|
||||||
|
|
||||||
|
@ -86,7 +87,7 @@ addFix(() => {
|
||||||
const styleSheet = document.createElement('style')
|
const styleSheet = document.createElement('style')
|
||||||
styleSheet.innerText = `
|
styleSheet.innerText = `
|
||||||
.${selectedClass} {
|
.${selectedClass} {
|
||||||
background: rgb(255, 253, 170) !important;
|
background: rgba(255, 253, 170, 0.1) !important;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
padding: 2px !important;
|
padding: 2px !important;
|
||||||
margin: -2px !important;
|
margin: -2px !important;
|
||||||
|
|
Loading…
Reference in New Issue