diff --git a/templates/jobs.html b/templates/jobs.html index ca90b94..3209942 100644 --- a/templates/jobs.html +++ b/templates/jobs.html @@ -77,6 +77,58 @@ .jobs-stat.active .jobs-stat-lbl { color: var(--accent); } + + .text-right { text-align: right !important; } + + /* Actions Dropdown */ + .dropdown { + position: relative; + display: inline-block; + } + .dropdown-menu { + display: none; + position: absolute; + right: 0; + top: 100%; + margin-top: 6px; + background: #111422; + border: 1px solid var(--border-bright); + border-radius: var(--radius-sm); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.6); + z-index: 1000; + min-width: 175px; + overflow: hidden; + } + .dropdown-menu.show { + display: block; + } + .dropdown-item { + display: flex; + align-items: center; + gap: 8px; + padding: 10px 16px; + color: var(--text-secondary); + text-decoration: none; + font-size: 13px; + font-weight: 500; + background: none; + border: none; + width: 100%; + text-align: left; + cursor: pointer; + transition: all 0.15s ease; + } + .dropdown-item:hover { + background: rgba(99, 102, 241, 0.15); + color: var(--text-primary); + } + .dropdown-item.text-danger { + color: #fca5a5; + } + .dropdown-item.text-danger:hover { + background: rgba(239, 68, 68, 0.15); + color: #ffffff; + } {% endblock %} @@ -133,7 +185,7 @@ Status Schedule Started - Actions + Actions @@ -153,12 +205,14 @@ Running {% elif job.status == 'finished' %} Finished + {% elif 'finished with errors' in job.status %} + Finished * {% elif job.status == 'queued' %} Queued {% elif job.status.startswith('failed') %} Failed {% else %} - {{ job.status }} + {{ job.status }} {% endif %} @@ -205,44 +259,63 @@ {{ job.started_fmt }} - -
- - 👁︎View + +
+ + + 👁︎ View - {% if job.status != 'running' and job.status != 'queued' %} -
- -
- - Edit - - {% endif %} + + {% if job.status == 'running' or job.status == 'queued' %} -
- +
+ {% else %} +
+ +
+ {% endif %} + + +
@@ -268,6 +341,27 @@ {% block scripts %}