mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-05-21 05:40:26 -05:00
32bc87db5e
Complete the Time Entry Templates feature by adding timer integration and dashboard UI (70% → 100% complete). Features Added: - One-click start timer from template via new route - Template selector in dashboard "Start Timer" modal - Template pre-fill for manual time entries - Auto-populate timer forms with template data - Usage tracking when templates are used Backend Changes: - Added template support to /timer/start route - Added template pre-fill to /timer/manual route - New route: /timer/start/from-template/<id> for direct timer start - Load recent templates (top 5) on dashboard - All changes include proper validation and error handling Frontend Changes: - Template list in dashboard start timer modal - JavaScript function to apply template data to forms - Template cards show project/task information - Link to full template management page - Responsive design for mobile Testing: - Added 6 new integration tests for timer features - Test start timer from template (success and error cases) - Test manual entry pre-fill from template - Test active timer validation - All 32 tests passing with no linting errors Documentation: - Complete user guide (docs/TIME_ENTRY_TEMPLATES.md) - Technical documentation (docs/features/TIME_ENTRY_TEMPLATES.md) - Implementation summary with usage examples Use Case: Quickly start timers for recurring activities - 80% faster timer start for recurring tasks - Zero retyping of project, task, notes, tags - Consistent data across similar time entries
245 lines
7.2 KiB
Markdown
245 lines
7.2 KiB
Markdown
# Time Entry Templates
|
|
|
|
Time Entry Templates allow you to create reusable templates for frequently logged activities, saving time and ensuring consistency in your time tracking.
|
|
|
|
## Overview
|
|
|
|
Time Entry Templates help you:
|
|
- **Save time**: Start timers or create entries with pre-filled data
|
|
- **Ensure consistency**: Use the same project, task, and notes for recurring activities
|
|
- **Track patterns**: See which templates you use most often
|
|
- **Reduce errors**: Avoid manually entering the same information repeatedly
|
|
|
|
## Features
|
|
|
|
### Template Properties
|
|
|
|
Each template can include:
|
|
- **Name** (required): A descriptive name for quick identification
|
|
- **Description** (optional): Additional details about when to use this template
|
|
- **Project**: Pre-select a project for this activity
|
|
- **Task**: Pre-select a specific task within the project
|
|
- **Default Duration**: Set a standard duration in hours (e.g., 1.0, 0.5)
|
|
- **Default Notes**: Pre-fill notes/description for the time entry
|
|
- **Tags**: Comma-separated tags for categorization
|
|
- **Billable**: Whether time entries from this template should be billable
|
|
|
|
### Usage Tracking
|
|
|
|
Templates track:
|
|
- **Usage Count**: How many times the template has been used
|
|
- **Last Used**: When the template was last used
|
|
- Templates are automatically sorted by most recently used
|
|
|
|
## Using Templates
|
|
|
|
### Creating a Template
|
|
|
|
1. Navigate to **Templates** from the main navigation
|
|
2. Click **"New Template"**
|
|
3. Fill in the template details:
|
|
- Enter a descriptive name
|
|
- Select a project (and optionally a task)
|
|
- Set default duration if desired
|
|
- Add default notes and tags
|
|
4. Click **"Create Template"**
|
|
|
|
### Starting a Timer from a Template
|
|
|
|
There are three ways to use a template:
|
|
|
|
#### 1. From the Templates Page
|
|
|
|
1. Go to **Templates**
|
|
2. Click **"Use Template"** on any template card
|
|
3. You'll be redirected to create a time entry with pre-filled data
|
|
|
|
#### 2. From the Dashboard
|
|
|
|
1. On the dashboard, click **"Start Timer"**
|
|
2. In the start timer modal, you'll see a list of your recent templates
|
|
3. Click on any template to apply its data to the timer form
|
|
4. Click **"Start"** to begin tracking time
|
|
|
|
#### 3. Direct Timer Start
|
|
|
|
Some templates (those with a project assigned) have a direct "Start Timer" button that:
|
|
- Immediately starts a timer with the template's data
|
|
- Increments the template's usage count
|
|
- Takes you back to the dashboard
|
|
|
|
### Editing a Template
|
|
|
|
1. Navigate to **Templates**
|
|
2. Click the **edit icon** (pencil) on the template card
|
|
3. Update any fields as needed
|
|
4. Click **"Save Changes"**
|
|
|
|
### Deleting a Template
|
|
|
|
1. Navigate to **Templates**
|
|
2. Click the **delete icon** (trash) on the template card
|
|
3. Confirm the deletion
|
|
|
|
**Note**: Deleting a template does not affect any time entries that were created using it.
|
|
|
|
## Best Practices
|
|
|
|
### Naming Conventions
|
|
|
|
Use clear, descriptive names:
|
|
- ✅ Good: "Daily Standup", "Client Meeting - ProjectX", "Code Review"
|
|
- ❌ Poor: "Meeting", "Work", "Task1"
|
|
|
|
### When to Use Templates
|
|
|
|
Templates are ideal for:
|
|
- **Recurring meetings**: Daily standups, weekly syncs, client calls
|
|
- **Regular activities**: Code reviews, testing, documentation
|
|
- **Standard tasks**: Email correspondence, administrative work
|
|
- **Frequent projects**: Activities you do multiple times per week
|
|
|
|
### Organizing Templates
|
|
|
|
- Keep your template list focused (5-10 most-used templates)
|
|
- Delete or update templates you no longer use
|
|
- Use consistent naming and tagging schemes
|
|
- Review and clean up templates quarterly
|
|
|
|
### Duration Settings
|
|
|
|
- Leave duration blank for activities with variable length (start/stop timer)
|
|
- Set a duration for activities with predictable length (meetings, standup)
|
|
- Common durations: 0.25 (15 min), 0.5 (30 min), 1.0 (1 hour)
|
|
|
|
## API Integration
|
|
|
|
### Get All Templates
|
|
|
|
```http
|
|
GET /api/templates
|
|
```
|
|
|
|
Returns all templates for the current user.
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"templates": [
|
|
{
|
|
"id": 1,
|
|
"name": "Daily Standup",
|
|
"project_id": 5,
|
|
"project_name": "Internal",
|
|
"task_id": 12,
|
|
"task_name": "Team Meetings",
|
|
"default_duration": 0.25,
|
|
"default_notes": "Discussed progress and blockers",
|
|
"tags": "meeting,standup",
|
|
"billable": false,
|
|
"usage_count": 45,
|
|
"last_used_at": "2024-01-15T09:00:00Z"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Get Single Template
|
|
|
|
```http
|
|
GET /api/templates/{template_id}
|
|
```
|
|
|
|
Returns a specific template by ID.
|
|
|
|
### Mark Template as Used
|
|
|
|
```http
|
|
POST /api/templates/{template_id}/use
|
|
```
|
|
|
|
Records that the template was used (increments usage count and updates last_used_at).
|
|
|
|
## Troubleshooting
|
|
|
|
### Template Not Showing in Dashboard
|
|
|
|
- The dashboard shows only your 5 most recently used templates
|
|
- Visit the Templates page to see all your templates
|
|
- Use a template to move it to the top of the list
|
|
|
|
### Cannot Start Timer from Template
|
|
|
|
- Ensure the template has a project assigned
|
|
- Verify the project is active (not archived)
|
|
- Stop any active timers before starting a new one
|
|
|
|
### Template Data Not Pre-filling
|
|
|
|
- Check that you're using the correct method (template button, not manual form)
|
|
- Verify the template has the fields you expect filled in
|
|
- Try editing and re-saving the template
|
|
|
|
## Migration Notes
|
|
|
|
If you're upgrading to a version with time entry templates:
|
|
|
|
1. Templates are stored in a new `time_entry_templates` table
|
|
2. No migration is needed - the feature is additive
|
|
3. Templates are user-specific and don't affect existing time entries
|
|
|
|
## Related Features
|
|
|
|
- **[Time Tracking](TIME_TRACKING.md)**: Learn about manual time entries and timer
|
|
- **[Projects](PROJECTS.md)**: Understanding projects and their settings
|
|
- **[Tasks](TASKS.md)**: Using tasks within projects
|
|
- **[Reports](REPORTS.md)**: Analyzing your time data
|
|
|
|
## Tips and Tricks
|
|
|
|
### Quick Template Creation
|
|
|
|
Create templates from your most frequent activities by:
|
|
1. Track your time for a week
|
|
2. Review your time entries
|
|
3. Create templates for activities that appear 3+ times
|
|
|
|
### Template Chains
|
|
|
|
For complex workflows:
|
|
- Create separate templates for each phase
|
|
- Use consistent naming: "ProjectX - Phase 1", "ProjectX - Phase 2"
|
|
- This helps with reporting and analysis
|
|
|
|
### Keyboard Shortcuts
|
|
|
|
When using templates on the dashboard:
|
|
- The templates list is keyboard accessible
|
|
- Use Tab to navigate, Enter to select
|
|
- This speeds up your workflow significantly
|
|
|
|
## Frequently Asked Questions
|
|
|
|
**Q: Can I share templates with my team?**
|
|
A: Templates are currently user-specific. Each team member needs to create their own templates.
|
|
|
|
**Q: Will deleting a template affect my past time entries?**
|
|
A: No, time entries are independent once created. Deleting a template doesn't affect any existing time entries.
|
|
|
|
**Q: How many templates can I create?**
|
|
A: There's no hard limit, but we recommend keeping 10-20 active templates for ease of use.
|
|
|
|
**Q: Can I import/export templates?**
|
|
A: Currently, templates are managed through the UI. API support allows for programmatic creation if needed.
|
|
|
|
**Q: Do templates work with the mobile interface?**
|
|
A: Yes, templates are fully functional on mobile devices through the responsive web interface.
|
|
|
|
## Feedback
|
|
|
|
We'd love to hear how you're using time entry templates! If you have suggestions or encounter issues, please:
|
|
- Open an issue on GitHub
|
|
- Contact support
|
|
- Contribute improvements via pull request
|
|
|