Last active
July 28, 2025 14:00
-
-
Save horacioibrahim/b24153a9c3726fbf1cd44686fa61c2b2 to your computer and use it in GitHub Desktop.
Extrair informações dos cards para estimar conclusividade
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
(function () { | |
const rows = document.querySelectorAll('tr[data-row-index]'); | |
const result = []; | |
rows.forEach((row) => { | |
const userStoryCard = row.querySelector('.taskboard-parent-cell .wit-card'); | |
if (!userStoryCard) return; | |
const codigo = userStoryCard.querySelector('.font-weight-semibold')?.innerText?.trim(); | |
const descricao = userStoryCard.querySelector('.title-text')?.innerText?.trim(); | |
const tipo = userStoryCard.querySelector('[aria-label]')?.getAttribute('aria-label')?.toLowerCase(); | |
const taskCards = row.querySelectorAll('.taskboard-expanded-cell .wit-card'); | |
const tasks = Array.from(taskCards).filter(card => { | |
const label = card.querySelector('[aria-label]'); | |
return label && label.getAttribute('aria-label')?.toLowerCase() === 'task'; | |
}); | |
const qtdTasks = tasks.length; | |
const countInColumn = (name) => { | |
return Array.from(row.querySelectorAll(`.taskboard-expanded-cell[data-columnname="${name}"] .wit-card`)).filter(card => { | |
return card.querySelector('[aria-label]')?.getAttribute('aria-label')?.toLowerCase() === 'task'; | |
}).length; | |
}; | |
const emDesenvolvimento = countInColumn('Em Desenvolvimento'); | |
const revisandoPR = countInColumn('Revisando PR'); | |
const testando = countInColumn('Testando'); | |
const closed = countInColumn('Closed'); | |
const percentual = qtdTasks === 0 ? '0%' : `${Math.round((closed / qtdTasks) * 100)}%`; | |
result.push([codigo, descricao, tipo, qtdTasks, emDesenvolvimento, revisandoPR, testando, closed, percentual]); | |
}); | |
// Montar CSV | |
let output = "cód, descrição, tipo, qtd tasks, Em Desenvolvimento, Revisando PR, Testando, Closed, % conclusão tasks\n"; | |
result.forEach(item => { | |
output += item.join(", ") + "\n"; | |
}); | |
// Copiar usando área de transferência segura | |
const textarea = document.createElement("textarea"); | |
textarea.value = output; | |
document.body.appendChild(textarea); | |
textarea.select(); | |
document.execCommand("copy"); | |
document.body.removeChild(textarea); | |
console.log("✅ Copiado para a área de transferência!"); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment