Files
OpenTimeTracker/templates/logbook_detail.html
2026-02-10 20:02:16 +01:00

95 lines
4.4 KiB
HTML

{% extends "layout.html" %}
{% block content %}
<div class="card" style="border-left: 5px solid {{ entry.activity.color }};">
<div style="display: flex; justify-content: space-between; align-items: start;">
<div>
<h2>
{{ entry.activity.name }}
{% if entry.subcategory %}
<span style="font-size: 0.8rem; background: #eee; padding: 2px 8px; border-radius: 10px; color: #555; vertical-align: middle;">
{{ entry.subcategory }}
</span>
{% endif %}
</h2>
<p style="color: #666;">
{{ entry.start_time.strftime('%A, %d. %B %Y') }}
</p>
</div>
<div style="text-align: right;">
<div style="font-weight: bold; font-size: 2rem; color: #333;">{{ entry.duration_str }}</div>
<a href="{{ url_for('logbook') }}" class="btn" style="background: #95a5a6; font-size: 0.8rem; margin-top: 15px; display:inline-block;">Back to Log</a>
</div>
</div>
</div>
<div class="card">
<h3>Edit Entry</h3>
<form method="POST">
<input type="hidden" name="action" value="update">
<div style="display: flex; gap: 1rem; margin-bottom: 1rem;">
<div style="flex: 1;">
<label>Start Time</label>
<input type="datetime-local" name="start_time" value="{{ entry.start_time.strftime('%Y-%m-%dT%H:%M') }}" required>
</div>
<div style="flex: 1;">
<label>End Time</label>
<!-- If currently running (end_time is None), prevent editing end time or handle appropriately. Usually logbook is for past entries. -->
<input type="datetime-local" name="end_time" value="{{ entry.end_time.strftime('%Y-%m-%dT%H:%M') if entry.end_time else '' }}">
</div>
</div>
<!-- Subcategory Edit -->
<label>Subcategory</label>
<select name="subcategory">
<option value="">-- None --</option>
{% if entry.activity and entry.activity.subcategories %}
{% for sub in entry.activity.subcategories %}
<option value="{{ sub }}" {% if sub == entry.subcategory %}selected{% endif %}>{{ sub }}</option>
{% endfor %}
{% endif %}
</select>
<label>Note</label>
<textarea name="note" rows="3" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 5px; font-family: inherit;">{{ entry.note }}</textarea>
<div style="margin-top: 10px; display: flex; justify-content: space-between;">
<button type="submit" class="btn">Save Changes</button>
</div>
</form>
<div style="border-top: 1px solid #eee; margin-top: 2rem; padding-top: 1rem;">
<form method="POST" onsubmit="return confirm('Are you sure you want to delete this entry? This action cannot be undone.');">
<input type="hidden" name="action" value="delete">
<button type="submit" class="btn btn-danger">Delete Entry</button>
</form>
</div>
</div>
<div class="card">
<h3>Tasks in this Session</h3>
{% if not tasks %}
<p style="color: #999;">No tasks were tracked for this session.</p>
{% else %}
<ul style="list-style: none; padding: 0;">
{% for task in tasks %}
<li style="border-bottom: 1px solid #eee; padding: 15px 0; display: flex; align-items: center;">
<span style="margin-right: 15px; font-size: 1.2rem;">
{% if task.status == 'completed' %}Done{% else %}Open{% endif %}
</span>
<div style="flex-grow: 1;">
<a href="{{ url_for('task_detail', task_id=task._id) }}" style="font-weight: bold; display: block; font-size: 1.1rem;">{{ task.name }}</a>
{% if task.completed_at %}
<small style="color: #27ae60;">Completed at {{ task.completed_at.strftime('%H:%M') }}</small>
{% else %}
<small style="color: #e67e22;">Not completed</small>
{% endif %}
</div>
<a href="{{ url_for('task_detail', task_id=task._id) }}" class="btn" style="font-size: 0.8rem; padding: 5px 10px;">View Task ></a>
</li>
{% endfor %}
</ul>
{% endif %}
</div>
{% endblock %}