説明なし

data_list.html 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. {% extends "base.html" %}
  2. {% load legacy_filters %}
  3. {% load tailwind_filters %}
  4. {% block title %}Data List{% endblock %}
  5. {% block content %}
  6. <div class="container mx-auto px-4 py-6">
  7. <h1 class="text-3xl font-bold text-gray-800 mb-4">Data List</h1>
  8. <!-- Filter Form -->
  9. <form method="get" class="flex items-center space-x-4 mb-4">
  10. {{ filter.form | crispy }}
  11. <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600">Filter</button>
  12. </form>
  13. <!-- Create Button -->
  14. <div class="my-4 flex">
  15. <p class="text-gray-600 mb-4 mr-auto">
  16. Total Records: {{ page_obj.paginator.count }}
  17. </p>
  18. <a href="{% url 'legacy:data-create' %}" class="ml-auto bg-green-500 text-white px-4 py-2 rounded hover:bg-green-600">
  19. Create New Data
  20. </a>
  21. </div>
  22. <!-- Data Table -->
  23. <div class="clear-both bg-white shadow rounded-lg overflow-x-auto">
  24. <table class="min-w-[2500px] table-auto w-full border-collapse border border-gray-200">
  25. <thead>
  26. <tr class="bg-gray-100 text-left text-sm uppercase">
  27. {% for field in fields %}
  28. <th class="border border-gray-200 px-4 py-2 text-left">{{ field.verbose_name }}</th>
  29. {% endfor %}
  30. <th class="py-2 px-4 border-b">Actions</th>
  31. </tr>
  32. </thead>
  33. <tbody>
  34. {% for obj in page_obj %}
  35. <tr class="hover:bg-gray-50">
  36. {% for field in fields %}
  37. <td class="border border-gray-200 px-4 py-2">
  38. {% if field.name == 'id' %}
  39. <a href="{% url 'legacy:data-update' obj.id %}" class="text-blue-500 hover:underline">
  40. {{ obj|attr:field.name }}
  41. </a>
  42. {% else %}
  43. {{ obj|attr:field.name }}
  44. {% endif %}
  45. </td>
  46. {% endfor %}
  47. <td class="py-2 px-4 border-b">
  48. <a href="{% url 'legacy:data-update' obj.pk %}"
  49. class="bg-blue-500 text-white px-3 py-2 rounded hover:bg-blue-600">Edit</a>
  50. <a href="{% url 'legacy:data-delete' obj.pk %}"
  51. class="bg-red-500 text-white px-3 py-2 rounded hover:bg-red-600"
  52. >Delete</a>
  53. </td>
  54. </tr>
  55. {% empty %}
  56. <tr>
  57. <td colspan="5" class="py-4 px-4 text-center text-gray-600">No data available.</td>
  58. </tr>
  59. {% endfor %}
  60. </tbody>
  61. </table>
  62. </div>
  63. <!-- Pagination -->
  64. <div class="mt-6 flex justify-between items-center">
  65. <div>
  66. <span class="text-sm text-gray-600">
  67. Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
  68. </span>
  69. </div>
  70. <div class="space-x-2">
  71. {% if page_obj.has_previous %}
  72. <a href="?{% for key, value in request.GET.items %}{% if key != 'page' %}{{ key }}={{ value|urlencode }}&{% endif %}{% endfor %}page=1"
  73. class="text-blue-500 hover:underline">First</a>
  74. <a href="?{% for key, value in request.GET.items %}{% if key != 'page' %}{{ key }}={{ value|urlencode }}&{% endif %}{% endfor %}page={{ page_obj.previous_page_number }}"
  75. class="text-blue-500 hover:underline">Previous</a>
  76. {% endif %}
  77. {% for page_num in page_obj.paginator.page_range %}
  78. {% if page_num == page_obj.number %}
  79. <span class="font-bold text-gray-700">{{ page_num }}</span>
  80. {% elif page_num == 1 or page_num == page_obj.paginator.num_pages or page_num >= page_obj.number|add:"-2" and page_num <= page_obj.number|add:"2" %}
  81. <a href="?{% for key, value in request.GET.items %}{% if key != 'page' %}{{ key }}={{ value|urlencode }}&{% endif %}{% endfor %}page={{ page_num }}"
  82. class="text-blue-500 hover:underline">{{ page_num }}</a>
  83. {% elif page_num == page_obj.number|add:-3 or page_num == page_obj.number|add:3 %}
  84. <span class="mx-1">...</span>
  85. {% endif %}
  86. {% endfor %}
  87. {% if page_obj.has_next %}
  88. <a href="?{% for key, value in request.GET.items %}{% if key != 'page' %}{{ key }}={{ value|urlencode }}&{% endif %}{% endfor %}page={{ page_obj.next_page_number }}"
  89. class="text-blue-500 hover:underline">Next</a>
  90. <a href="?{% for key, value in request.GET.items %}{% if key != 'page' %}{{ key }}={{ value|urlencode }}&{% endif %}{% endfor %}page={{ page_obj.paginator.num_pages }}"
  91. class="text-blue-500 hover:underline">Last</a>
  92. {% endif %}
  93. </div>
  94. </div>
  95. </div>
  96. {% endblock %}