Untitled
unknown
javascript
3 months ago
3.3 kB
14
Indexable
(async function () {
function waitForElement(selector, timeout = 10000) {
return new Promise((resolve, reject) => {
const interval = 200;
let elapsed = 0;
const timer = setInterval(() => {
const element = document.querySelector(selector);
if (element) {
clearInterval(timer);
resolve(element);
}
elapsed += interval;
if (elapsed >= timeout) {
clearInterval(timer);
reject("Timeout waiting for " + selector);
}
}, interval);
});
}
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const finalResults = [];
const tbody = document.getElementById("dateRangeLogSummeryTableBody");
if (!tbody) {
console.error("Table body not found!");
return;
}
const firstRow = tbody.querySelector("tr");
if (!firstRow) {
console.error("No row found!");
return;
}
const logCells = firstRow.querySelectorAll("td.spanWithLog");
for (let cell of logCells) {
const icon = cell.querySelector("img.popupIcon");
if (!icon) continue;
icon.click();
// wait for modal to load
await waitForElement("#dataDivInModel");
await waitForElement("#worklogs");
await delay(500); // allow ajax data to populate
const header = document.getElementById("popupHeader")?.innerText || "";
const table = document.getElementById("worklogs");
const rows = table.querySelectorAll("tr");
const modalData = [];
rows.forEach((row, index) => {
if (index === 0) return; // skip header row
const tds = row.querySelectorAll("td");
const rowData = [];
tds.forEach((td, tdIndex) => {
if (tdIndex === 0 || tdIndex === 1) return; // skip first two columns
rowData.push(td.innerHTML.trim());
});
if (rowData.length > 0) {
modalData.push(rowData);
}
});
finalResults.push({
header: header,
logs: modalData
});
// close modal
document.getElementById("closemodal")?.click();
await delay(500);
}
// ===== Format Output =====
let formattedText = "";
finalResults.forEach(group => {
formattedText += "=====================================\n";
formattedText += group.header + "\n";
formattedText += "=====================================\n\n";
group.logs.forEach(log => {
// After skipping first 2 columns:
// log[0] = User
// log[1] = Time Spent
// log[2] = Description
formattedText += "User: " + log[0] + "\n";
formattedText += "Time Spent: " + log[1] + "\n";
formattedText += "Description:\n" + log[2] + "\n";
formattedText += "-------------------------------------\n\n";
});
});
console.log(formattedText);
})();
Editor is loading...
Leave a Comment