persons.html 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. {% extends "base.html" %}
  2. {% block title %}Persons - astro-mcp{% endblock %}
  3. {% block content %}
  4. <h1>Persons</h1>
  5. <div class="toolbar">
  6. <a href="/dashboard/persons/new" class="btn btn-primary">+ Add Person</a>
  7. <a href="/dashboard/persons/export" class="btn btn-ghost" title="Export all persons as JSON">Export All</a>
  8. <a href="/dashboard/persons/import" class="btn btn-ghost" title="Import persons from JSON">Import</a>
  9. <input
  10. class="search-input"
  11. type="text"
  12. id="search"
  13. placeholder="Search name or nickname..."
  14. >
  15. </div>
  16. {% if persons %}
  17. <table>
  18. <thead>
  19. <tr>
  20. <th>Name</th>
  21. <th>Nickname</th>
  22. <th>Birth</th>
  23. <th>Location</th>
  24. <th>Gender</th>
  25. <th>Status</th>
  26. <th></th>
  27. </tr>
  28. </thead>
  29. <tbody id="person-rows">
  30. {% for p in persons %}
  31. <tr>
  32. <td><a href="/dashboard/persons/{{ p.id }}">{{ p.name }}</a></td>
  33. <td>{{ p.nickname or '—' }}</td>
  34. <td>{{ p.birth_datetime[:10] if p.birth_datetime else '—' }}</td>
  35. <td>{{ p.birthplace or '—' }}</td>
  36. <td>
  37. {% if p.gender %}
  38. <span class="badge badge-blue">{{ p.gender }}</span>
  39. {% else %}
  40. —
  41. {% endif %}
  42. </td>
  43. <td>
  44. {% if p.alive %}
  45. <span class="badge badge-green">alive</span>
  46. {% else %}
  47. <span class="badge badge-deceased">deceased</span>
  48. {% endif %}
  49. {% if p.private %}
  50. <span class="badge badge-gray">private</span>
  51. {% endif %}
  52. {% if p.birth_time_known == False %}
  53. <span class="badge badge-gray">time unknown</span>
  54. {% endif %}
  55. </td>
  56. <td class="row-actions">
  57. <form method="post" action="/dashboard/persons/{{ p.id }}/delete" style="display:inline">
  58. <button type="submit" class="btn btn-delete btn-sm" data-confirm="Delete {{ p.name }}?">Delete</button>
  59. </form>
  60. <a href="/dashboard/persons/{{ p.id }}/edit" class="btn btn-primary btn-sm">Edit</a>
  61. <a href="/dashboard/persons/{{ p.id }}/export" class="btn btn-ghost btn-sm" title="Export as JSON">Export</a>
  62. </td>
  63. </tr>
  64. {% endfor %}
  65. </tbody>
  66. </table>
  67. {% else %}
  68. <div class="empty card">
  69. <p>No persons yet. <a href="/dashboard/persons/new">Add one</a>.</p>
  70. </div>
  71. {% endif %}
  72. {% endblock %}