const pages = dv.pages('"content"').filter(p => (p.area ?? []).includes("blog"));const rows = pages.map(p => { const timeLog = p.time_log || []; const est = Number(p.estimated_time ?? 0); const act = Number(p.actual_time ?? 0); const rate = Number(p.hourly_rate ?? 0); const tasks = p.file.tasks || []; const completedTasks = tasks.filter(t => t.completed).length; const totalTasks = tasks.length; const percent = totalTasks === 0 ? "0%" : `${Math.round((completedTasks / totalTasks) * 100)}%`; const variance = est === 0 ? "–" : `${Math.round(((act - est) / est) * 100)}%`; const status = act > est ? "Overrun" : act < est ? "Underrun" : "On Target"; const cost = rate * act; const lastUpdated = p.last_update ?? "-"; return [ dv.fileLink(p.file.name), lastUpdated, `${act}h / ${est}h`, variance, status, `$${cost.toLocaleString()}`, p.priority ?? "-", p.description ?? "-", p.completed_on ?? "-", (p.skills ?? []).filter(s => s).map(s => dv.fileLink(s)).join(", "), percent, p.team ? "✅" : "❌", p.completed ? "✅" : "❌" ];});dv.table( [ "File", "Last Updated", "Time (Actual / Estimated)", "% Variance", "Status", "Cost", "Priority", "Description", "Completed On", "Skills", "Task Completion", "Team", "Completed" ], rows);