Animal Shelter Volunteer Task Sheet

Animal Shelter Volunteer Task Sheet

Generate a daily checklist of animal care and facility maintenance tasks, categorized by area of responsibility.

VOLUNTEER DAILY TASK SHEET

Date: -- | Volunteer: Morning Shift

Daily Shelter Duties

Date: -- | Shift/Volunteer: Morning Shift

Completion Summary

Total Tasks: 0 | Completed: 0 | Completion Rate: 0%

Supervisor Initials upon review:

Task List Builder

Define your tasks one item per line, separated by the pipe (|) symbol to assign a category.

Format: **Category | Task Description**
Example: *CLEANING | Disinfect all cat carriers.*

Assignment Details

No tasks defined. Please use the Task Builder tab.

'; totalTasks = 0; } else { // Adjust grid layout based on number of categories container.className = `asvts-task-grid grid grid-cols-1 md:grid-cols-${categoryNames.length >= 3 ? 3 : 2} gap-5 mb-8`; categoryNames.forEach(category => { const categoryBox = document.createElement('div'); categoryBox.className = 'asvts-category-box'; let tasksHtml = ''; categories[category].forEach(task => { const statusCheck = task.status ? 'checked' : ''; const checkMark = task.status ? '✓' : ''; if (task.status) completedTasks++; totalTasks++; tasksHtml += `
${task.description} ${checkMark} ${checkMark}
`; }); categoryBox.innerHTML = `

${category}

${tasksHtml} `; container.appendChild(categoryBox); }); } // --- Update Stats --- const completionRate = totalTasks > 0 ? ((completedTasks / totalTasks) * 100).toFixed(1) : 0; document.getElementById('out-date').innerText = date; document.getElementById('out-volunteer-name').innerText = volunteer; document.getElementById('stat-total-tasks').innerText = totalTasks; document.getElementById('stat-completed-tasks').innerText = completedTasks; document.getElementById('stat-rate').innerText = `${completionRate}%`; document.getElementById('out-pdf-date').innerText = date; document.getElementById('out-pdf-volunteer').innerText = volunteer; } function asvtsDownloadPDF() { asvtsUpdateDashboard(); // Ensure latest data is rendered const element = document.getElementById('asvts-print-area'); // Show PDF header and hide controls/interactive checkboxes const headers = element.querySelectorAll('.pdf-header'); headers.forEach(h => h.style.display = 'block'); const controls = element.querySelectorAll('.pdf-hide'); controls.forEach(c => c.style.display = 'none'); // Show static checkboxes for printing const staticChecks = element.querySelectorAll('.pdf-only-check'); staticChecks.forEach(c => c.style.display = 'inline-block'); // Reset sheet background for print const sheet = element.querySelector('.asvts-tab-content'); sheet.style.backgroundColor = '#fff'; const opt = { margin: 0.5, filename: `${document.getElementById('inp-volunteer').value.replace(/\s/g, '_')}_Task_Sheet_${document.getElementById('inp-date').value}.pdf`, image: { type: 'jpeg', quality: 0.98 }, html2canvas: { scale: 2 }, jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' } }; html2pdf().set(opt).from(element).save().then(function() { // Revert changes after download headers.forEach(h => h.style.display = 'none'); controls.forEach(c => c.style.display = 'flex'); sheet.style.backgroundColor = '#fff'; // Re-hide static checkboxes and re-show interactive ones staticChecks.forEach(c => c.style.display = 'none'); document.querySelectorAll('.asvts-checkbox:not(.pdf-only-check)').forEach(c => c.style.display = 'inline-block'); // Re-show button container that was hidden by pdf-hide class document.querySelector('.asvts-btn-container').style.display = 'flex'; }); }
Scroll to Top