Skip to content

Instantly share code, notes, and snippets.

@horacioibrahim
Last active July 28, 2025 14:00
Show Gist options
  • Save horacioibrahim/b24153a9c3726fbf1cd44686fa61c2b2 to your computer and use it in GitHub Desktop.
Save horacioibrahim/b24153a9c3726fbf1cd44686fa61c2b2 to your computer and use it in GitHub Desktop.
Extrair informações dos cards para estimar conclusividade
(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