Productivity Optimization Tool
Productivity Optimization Tool

Pomodoro Settings

25:00

Session Log (0 Pomodoros)

    Today's Most Important Task (MIT)

    Quick Priority Sorter (Top 5 Tasks)

    Log a Distraction

    Logged Distractions (Today/Session)

      Distraction Summary:

      ${type}: ${summary[type]}

      `; } } } // --- PDF Report --- function pot_downloadReport() { if (!tpc_jsPDF_loaded_POT || !tpc_autoTable_loaded_POT) { alert("POT Error: PDF libraries not loaded."); return; } const doc = new TPC_jsPDF_POT(); const primaryColor = getComputedStyle(document.documentElement).getPropertyValue('--primary-color').trim(); const darkColor = getComputedStyle(document.documentElement).getPropertyValue('--dark-color').trim(); let finalY = 15; const todayStr = new Date().toLocaleDateString(); doc.setFontSize(18); doc.setTextColor(primaryColor); doc.text("Productivity Optimization Report", doc.internal.pageSize.getWidth() / 2, finalY, { align: 'center' }); finalY += 8; doc.setFontSize(10); doc.setTextColor(darkColor); doc.text(`Report Date: ${todayStr}`, doc.internal.pageSize.getWidth() / 2, finalY, { align: 'center'}); finalY += 12; // Pomodoro Log doc.setFontSize(14); doc.setTextColor(primaryColor); doc.text("Pomodoro Session Log", 14, finalY); finalY += 7; doc.setFontSize(10); doc.setTextColor(darkColor); doc.text(`Work: ${document.getElementById('pot-work-duration').value}m, Short Break: ${document.getElementById('pot-short-break').value}m, Long Break: ${document.getElementById('pot-long-break').value}m (after ${document.getElementById('pot-cycles').value} cycles)`, 14, finalY); finalY +=5; doc.text(`Total Pomodoros Completed: ${pot_pomodorosCompleted}`, 14, finalY); finalY += 7; if(pot_pomodoroLog.length > 0) { doc.autoTable({ startY: finalY, head: [['Type', 'Task/Activity', 'Duration']], body: pot_pomodoroLog.map(p => [p.type, p.task, p.duration]), theme: 'grid', headStyles: { fillColor: primaryColor, textColor: '#ffffff' }, styles: { fontSize: 9 } }); finalY = doc.lastAutoTable.finalY + 10; } else { doc.text("No Pomodoros logged in this session.", 14, finalY); finalY += 7; } // Daily Goals & Priority doc.setFontSize(14); doc.setTextColor(primaryColor); doc.text("Daily Goals & Priority", 14, finalY); finalY += 7; doc.setFontSize(10); doc.setTextColor(darkColor); const mitTask = document.getElementById('pot-mit-task').value.trim(); doc.text(`Today's Most Important Task (MIT): ${mitTask || 'Not set'}`, 14, finalY, {maxWidth: doc.internal.pageSize.getWidth() - 28}); finalY += (mitTask ? Math.ceil(doc.getTextDimensions(mitTask).h / (doc.internal.pageSize.getWidth() - 28)) * 5 : 5) + 5 ; if(pot_sortedPriorityTasksData.length > 0) { doc.text("Prioritized Task List:", 14, finalY); finalY += 5; doc.autoTable({ startY: finalY, head: [['Task Name', 'Importance', 'Urgency', 'Quadrant']], body: pot_sortedPriorityTasksData.map(t => [t.name, t.importance, t.urgency, t.quadrant]), theme: 'grid', headStyles: { fillColor: primaryColor, textColor: '#ffffff' }, styles: { fontSize: 9 } }); finalY = doc.lastAutoTable.finalY + 10; } else { doc.text("No tasks processed by priority sorter.", 14, finalY); finalY += 7; } // Distraction Log doc.setFontSize(14); doc.setTextColor(primaryColor); doc.text("Distraction Log", 14, finalY); finalY += 7; if(pot_distractionLog.length > 0) { doc.autoTable({ startY: finalY, head: [['Time', 'Type', 'Note']], body: pot_distractionLog.map(d => [d.timestamp.toLocaleTimeString(), d.type, d.note]), theme: 'grid', headStyles: { fillColor: primaryColor, textColor: '#ffffff' }, styles: { fontSize: 9 } }); finalY = doc.lastAutoTable.finalY; // For summary right after table // Distraction Summary for PDF const summary = {}; pot_distractionLog.forEach(d => { summary[d.type] = (summary[d.type] || 0) + 1; }); let summaryText = "Summary: "; for (const type in summary) { summaryText += `${type}: ${summary[type]}; `; } finalY += 7; doc.setFontSize(9); doc.setTextColor(darkColor); doc.text(summaryText, 14, finalY, {maxWidth: doc.internal.pageSize.getWidth() - 28}); } else { doc.setFontSize(10); doc.setTextColor(darkColor); doc.text("No distractions logged in this session.", 14, finalY); } doc.save(`Productivity_Report_${new Date().toISOString().slice(0,10)}.pdf`); }
      Scroll to Top