|
153 | 153 | <h1 class='text-lg font-semibold text-zinc-50'>Jobs</h1> |
154 | 154 | <p class='text-sm text-zinc-500 mt-1'>Browse and filter job history</p> |
155 | 155 | </div> |
156 | | - <div @if="wsStatus() === 'OPEN'" class='flex items-center gap-1.5'> |
| 156 | + <div :if="wsStatus() === 'OPEN'" class='flex items-center gap-1.5'> |
157 | 157 | <span class='w-1.5 h-1.5 rounded-full bg-emerald-500 animate-pulse'></span> |
158 | 158 | <span class='text-xs text-zinc-500'>Live</span> |
159 | 159 | </div> |
160 | 160 | </div> |
161 | 161 |
|
162 | 162 | <!-- New items badge (scroll-to-pause) --> |
163 | | - <div @if='bufferedCount() > 0' class='mb-4'> |
| 163 | + <div :if='bufferedCount() > 0' class='mb-4'> |
164 | 164 | <button @click='flushBuffer()' class='w-full py-2 bg-indigo-500/10 border border-indigo-500/30 rounded-lg text-sm font-medium text-indigo-400 cursor-pointer hover:bg-indigo-500/20 transition-colors duration-150'> |
165 | 165 | {{ bufferedCount() }} new job{{ bufferedCount() > 1 ? 's' : '' }} — click to show |
166 | 166 | </button> |
|
184 | 184 | <!-- Jobs Table --> |
185 | 185 | <div class='bg-[#141419] border border-zinc-800 rounded-lg overflow-hidden' ref='table-container'> |
186 | 186 | <!-- Loading state --> |
187 | | - <div @if='loading()' class='text-center py-12 text-zinc-500 text-sm'>Loading jobs...</div> |
| 187 | + <div :if='loading()' class='text-center py-12 text-zinc-500 text-sm'>Loading jobs...</div> |
188 | 188 |
|
189 | 189 | <!-- Empty state --> |
190 | | - <div @if='!loading() && filteredJobs().length === 0'> |
| 190 | + <div :if='!loading() && filteredJobs().length === 0'> |
191 | 191 | <EmptyState icon="search" title="No jobs found" message="Try adjusting your search or filters." /> |
192 | 192 | </div> |
193 | 193 |
|
194 | 194 | <!-- Table --> |
195 | | - <table @if='!loading() && filteredJobs().length > 0' class='w-full border-collapse'> |
| 195 | + <table :if='!loading() && filteredJobs().length > 0' class='w-full border-collapse'> |
196 | 196 | <thead> |
197 | 197 | <tr> |
198 | 198 | <th class='px-4 py-2.5 text-left text-[0.6875rem] font-medium text-zinc-500 uppercase tracking-wide border-b border-zinc-800 bg-[#141419]'>Name</th> |
|
216 | 216 | <td class='px-4 py-2.5 text-xs text-zinc-400 border-b border-zinc-800'>{{ job.createdAt }}</td> |
217 | 217 | <td class='px-4 py-2.5 text-xs text-zinc-400 border-b border-zinc-800'>{{ job.completedAt || job.failedAt || job.processedAt || job.createdAt }}</td> |
218 | 218 | <td class='px-4 py-2.5 text-right border-b border-zinc-800 whitespace-nowrap'> |
219 | | - <button @if="job.status === 'failed'" @click='retryJob(job.id)' class='text-xs font-medium text-amber-400 bg-transparent border-none cursor-pointer hover:text-amber-300 transition-colors duration-150 mr-3'>Retry</button> |
| 219 | + <button :if="job.status === 'failed'" @click='retryJob(job.id)' class='text-xs font-medium text-amber-400 bg-transparent border-none cursor-pointer hover:text-amber-300 transition-colors duration-150 mr-3'>Retry</button> |
220 | 220 | <StxLink :to="'/jobs/' + job.id" class='text-xs font-medium text-indigo-400 no-underline hover:text-indigo-500 hover:underline transition-colors duration-150'>View Details</StxLink> |
221 | 221 | </td> |
222 | 222 | </tr> |
|
0 commit comments