Action Plan Maker
Last Updated: N/A
Action Steps
Action Plan Summary
Creating an Effective Action Plan
- 1. Define a Clear Goal
- Start with a clear and concise title for your action plan. This is your main objective.
- 2. Break Down into Actionable Steps
- For each goal, identify specific, concrete actions that need to be taken. Avoid vague tasks.
- 3. Assign Responsibility
- Clearly state who is responsible for completing each action step. Accountability is key.
- 4. Set Timelines
- Assign realistic Start Dates and Due Dates for each action. This helps in tracking progress and ensuring timeliness.
- 5. Identify Resources
- List any resources (budget, tools, personnel, information) needed to complete each action.
- 6. Determine Priority
- Set a priority (High, Medium, Low) for each action to help focus efforts on what's most critical.
- 7. Track Status Regularly
- Update the status of each action (Not Started, In Progress, Completed, Blocked) as work progresses. This helps in monitoring and identifying roadblocks.
- 8. Be SMART
- When defining actions, try to make them:
- Specific: Clearly defined, what exactly needs to be done?
- Measurable: How will you know it's done? What are the success criteria?
- Achievable: Is it realistic with the available resources and time?
- Relevant: Does this action contribute to the overall goal?
- Time-bound: Does it have a clear deadline?
- 9. Review and Adjust
- Regularly review your action plan. Circumstances can change, and your plan might need adjustments. Be flexible.
×
Add New Action Step
Due Date: ${apmFormatDisplayDate(action.dueDate)}
Resources: ${action.resources}
` : ''} ${action.notes ? `Notes: ${action.notes}
` : ''}${summary.total} Total Actions
${summary.completed} Completed
${summary.inProgress} In Progress
${summary.notStarted} Not Started
${summary.blocked} Blocked
${summary.highPriority} High Priority
${summary.mediumPriority} Medium Priority
${summary.lowPriority} Low Priority
`;
}
// --- PDF Export ---
if(apmDownloadPdfBtn) {
apmDownloadPdfBtn.addEventListener('click', function() {
const doc = new jsPDF();
const planTitle = apmPlanData.planTitle || "Action Plan";
const lastUpdated = new Date(apmPlanData.lastUpdated).toLocaleDateString();
const primaryColor = getComputedStyle(document.documentElement).getPropertyValue('--apm-primary-color').trim();
const secondaryColor = getComputedStyle(document.documentElement).getPropertyValue('--apm-secondary-color').trim();
doc.setFontSize(20);
doc.setTextColor(primaryColor);
doc.text(planTitle, 14, 22);
doc.setFontSize(10);
doc.setTextColor(100);
doc.text(`Last Updated: ${lastUpdated}`, 14, 30);
doc.text(`Report Generated: ${new Date().toLocaleDateString()}`, doc.internal.pageSize.getWidth() - 14, 30, { align: 'right'});
const tableColumn = ["#", "Action", "Responsible", "Start", "Due", "Priority", "Status", "Resources", "Notes"];
const tableRows = [];
apmPlanData.actions.forEach((action, index) => {
const actionData = [
index + 1,
action.description || "",
action.responsible || "",
action.startDate ? apmFormatDisplayDate(action.startDate) : "",
action.dueDate ? apmFormatDisplayDate(action.dueDate) : "",
action.priority || "",
action.status || "",
action.resources || "",
action.notes || ""
];
tableRows.push(actionData);
});
if (tableRows.length > 0) {
doc.autoTable({
head: [tableColumn],
body: tableRows,
startY: 40,
theme: 'grid',
headStyles: { fillColor: secondaryColor, textColor: '#ffffff', fontStyle: 'bold' },
styles: { font: 'Helvetica', fontSize: 8, cellPadding: 2, overflow: 'linebreak' },
columnStyles: {
0: { cellWidth: 8 }, // #
1: { cellWidth: 45 }, // Action
2: { cellWidth: 25 }, // Responsible
// Auto for others, or specify if needed
},
didParseCell: function (data) { // Example to color status text
if (data.column.dataKey === 6) { // 'Status' column (0-indexed)
if (data.cell.raw === 'Completed') data.cell.styles.textColor = [39, 174, 96]; // Green
if (data.cell.raw === 'Blocked') data.cell.styles.textColor = [192, 57, 43]; // Red
if (data.cell.raw === 'In Progress') data.cell.styles.textColor = [52, 152, 219]; // Blue
}
if (data.column.dataKey === 5) { // 'Priority' column
if (data.cell.raw === 'High') data.cell.styles.textColor = [192, 57, 43]; // Red
if (data.cell.raw === 'Medium') data.cell.styles.textColor = [243, 156, 18]; // Orange
}
}
});
} else {
doc.setFontSize(12);
doc.setTextColor(100);
doc.text("No action steps in this plan.", 14, 45);
}
doc.save(`${planTitle.replace(/\s+/g, '_')}_ActionPlan_${new Date().toISOString().slice(0,10)}.pdf`);
});
}
// --- Initialization ---
document.addEventListener('DOMContentLoaded', () => {
apmLoadPlan();
const firstTabButton = document.querySelector('#actionPlanMakerTool .apm-tab-button');
if (firstTabButton) {
firstTabButton.click();
}
// Close modal if clicked outside
window.addEventListener('click', function(event) {
const modal = document.getElementById('apmActionModal');
if (modal && event.target == modal) {
apmCloseModal('apmActionModal');
}
});
});
