101 lines
5.9 KiB
HTML
101 lines
5.9 KiB
HTML
{% load i18n %}
|
|
<div class="overflow-hidden border border-gray-100 rounded-2xl">
|
|
<div class="bg-gradient-to-r from-gray-50 to-slate-50 px-6 py-4 border-b border-gray-100 flex justify-between items-center">
|
|
<h3 class="font-bold text-lg flex items-center gap-2">
|
|
<i data-lucide="list-todo" class="w-5 h-5 text-gray-500"></i>
|
|
{% trans "Tasks" %}
|
|
</h3>
|
|
<div class="flex gap-2">
|
|
<button class="bulk-action-btn px-4 py-2 border-2 border-gray-400 text-gray-500 rounded-xl font-semibold hover:bg-gray-50 transition text-sm" data-tab="tasks" disabled>
|
|
{% trans "Bulk Action" %}
|
|
</button>
|
|
<a href="#" class="px-4 py-2 bg-gray-500 text-white rounded-xl font-semibold hover:bg-gray-600 transition text-sm">
|
|
{% trans "View All" %}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<div class="overflow-x-auto">
|
|
<table class="w-full">
|
|
<thead class="bg-gray-50">
|
|
<tr>
|
|
<th class="px-6 py-4 text-left text-xs font-bold text-gray-500 uppercase tracking-wider">
|
|
<input type="checkbox" class="bulk-checkbox-all w-4 h-4 rounded border-gray-300">
|
|
</th>
|
|
<th class="px-6 py-4 text-left text-xs font-bold text-gray-500 uppercase tracking-wider">{% trans "ID" %}</th>
|
|
<th class="px-6 py-4 text-left text-xs font-bold text-gray-500 uppercase tracking-wider">{% trans "Title" %}</th>
|
|
<th class="px-6 py-4 text-left text-xs font-bold text-gray-500 uppercase tracking-wider">{% trans "Priority" %}</th>
|
|
<th class="px-6 py-4 text-left text-xs font-bold text-gray-500 uppercase tracking-wider">{% trans "Status" %}</th>
|
|
<th class="px-6 py-4 text-left text-xs font-bold text-gray-500 uppercase tracking-wider">{% trans "Due Date" %}</th>
|
|
<th class="px-6 py-4 text-left text-xs font-bold text-gray-500 uppercase tracking-wider">{% trans "Actions" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="divide-y divide-gray-50">
|
|
{% for task in data.object_list %}
|
|
<tr class="hover:bg-gray-50 transition">
|
|
<td class="px-6 py-4">
|
|
<input type="checkbox" class="bulk-checkbox w-4 h-4 rounded border-gray-300" value="{{ task.id }}">
|
|
</td>
|
|
<td class="px-6 py-4 text-sm font-semibold text-gray-600">#{{ task.id }}</td>
|
|
<td class="px-6 py-4">
|
|
<a href="#" class="font-semibold text-gray-800 hover:text-gray-500 transition">
|
|
{{ task.title }}
|
|
</a>
|
|
</td>
|
|
<td class="px-6 py-4">
|
|
<span class="px-2.5 py-1 rounded-lg text-xs font-bold {% if task.priority == 'high' %}bg-orange-100 text-orange-600{% elif task.priority == 'medium' %}bg-yellow-100 text-yellow-600{% else %}bg-gray-100 text-gray-600{% endif %}">
|
|
{{ task.get_priority_display }}
|
|
</span>
|
|
</td>
|
|
<td class="px-6 py-4">
|
|
<span class="px-2.5 py-1 rounded-lg text-xs font-bold {% if task.status == 'open' %}bg-yellow-100 text-yellow-600{% elif task.status == 'in_progress' %}bg-blue-100 text-blue-600{% elif task.status == 'completed' %}bg-green-100 text-green-600{% else %}bg-gray-100 text-gray-600{% endif %}">
|
|
{{ task.get_status_display }}
|
|
</span>
|
|
</td>
|
|
<td class="px-6 py-4 text-sm text-gray-600">
|
|
{% if task.due_date %}
|
|
{{ task.due_date|date:"M d, Y" }}
|
|
{% else %}
|
|
-
|
|
{% endif %}
|
|
</td>
|
|
<td class="px-6 py-4">
|
|
<a href="#" class="inline-flex items-center gap-1 text-gray-500 hover:text-gray-600 text-sm font-semibold">
|
|
{% trans "View" %}
|
|
<i data-lucide="arrow-right" class="w-4 h-4"></i>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
{% empty %}
|
|
<tr>
|
|
<td colspan="7" class="px-6 py-12 text-center text-gray-500">
|
|
<i data-lucide="list-todo" class="w-12 h-12 mx-auto mb-3 text-gray-300"></i>
|
|
<p class="font-semibold">{% trans "No tasks found" %}</p>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% if data.has_other_pages %}
|
|
<div class="px-6 py-4 border-t border-gray-100 flex justify-between items-center">
|
|
<div class="text-sm text-gray-500">
|
|
{% trans "Showing" %} <span class="font-bold">{{ data.start_index }}</span>-<span class="font-bold">{{ data.end_index }}</span> {% trans "of" %} <span class="font-bold">{{ data.paginator.count }}</span> {% trans "tasks" %}
|
|
</div>
|
|
<div class="flex gap-2">
|
|
{% if data.has_previous %}
|
|
<a href="?page={{ data.previous_page_number }}&tab=tasks" class="px-3 py-1.5 border border-gray-200 rounded-lg text-sm font-semibold hover:bg-gray-50 transition">
|
|
{% trans "Previous" %}
|
|
</a>
|
|
{% endif %}
|
|
<span class="px-3 py-1.5 bg-gray-500 text-white rounded-lg text-sm font-bold">
|
|
{{ data.number }}
|
|
</span>
|
|
{% if data.has_next %}
|
|
<a href="?page={{ data.next_page_number }}&tab=tasks" class="px-3 py-1.5 border border-gray-200 rounded-lg text-sm font-semibold hover:bg-gray-50 transition">
|
|
{% trans "Next" %}
|
|
</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div> |