|
77 | 77 |
|
78 | 78 | <template>
|
79 | 79 | <div>
|
80 |
| - <div class="card"> |
| 80 | + <div class="card overflow-hidden"> |
81 | 81 | <div class="card-header d-flex align-items-center justify-content-between">
|
82 |
| - <h5 v-if="!ready">Batch Preview</h5> |
83 |
| - <h5 v-if="ready">{{batch.name || batch.id}}</h5> |
| 82 | + <h2 class="h6 m-0" v-if="!ready">Batch Preview</h2> |
| 83 | + <h2 class="h6 m-0" v-if="ready">{{batch.name || batch.id}}</h2> |
84 | 84 |
|
85 |
| - <button class="btn btn-outline-primary" v-if="failedJobs.length > 0" v-on:click.prevent="retry(batch.id)"> |
86 |
| - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" class="icon fill-primary" :class="{spin: retrying}"> |
87 |
| - <path d="M10 3v2a5 5 0 0 0-3.54 8.54l-1.41 1.41A7 7 0 0 1 10 3zm4.95 2.05A7 7 0 0 1 10 17v-2a5 5 0 0 0 3.54-8.54l1.41-1.41zM10 20l-4-4 4-4v8zm0-12V0l4 4-4 4z"/> |
| 85 | + <button class="btn btn-primary" v-if="failedJobs.length > 0" v-on:click.prevent="retry(batch.id)"> |
| 86 | + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" class="icon" fill="currentColor" :class="{spin: retrying}"> |
| 87 | + <path fill-rule="evenodd" d="M15.312 11.424a5.5 5.5 0 01-9.201 2.466l-.312-.311h2.433a.75.75 0 000-1.5H3.989a.75.75 0 00-.75.75v4.242a.75.75 0 001.5 0v-2.43l.31.31a7 7 0 0011.712-3.138.75.75 0 00-1.449-.39zm1.23-3.723a.75.75 0 00.219-.53V2.929a.75.75 0 00-1.5 0V5.36l-.31-.31A7 7 0 003.239 8.188a.75.75 0 101.448.389A5.5 5.5 0 0113.89 6.11l.311.31h-2.432a.75.75 0 000 1.5h4.243a.75.75 0 00.53-.219z" clip-rule="evenodd" /> |
88 | 88 | </svg>
|
89 | 89 |
|
90 | 90 | Retry Failed Jobs
|
|
101 | 101 |
|
102 | 102 | <div class="card-body card-bg-secondary" v-if="ready">
|
103 | 103 | <div class="row mb-2">
|
104 |
| - <div class="col-md-2"><strong>ID</strong></div> |
| 104 | + <div class="col-md-2 text-muted">ID</div> |
105 | 105 | <div class="col">
|
106 | 106 | {{batch.id}}
|
107 | 107 |
|
108 |
| - <small class="badge badge-danger badge-sm" v-if="batch.failedJobs > 0 && batch.totalJobs - batch.pendingJobs < batch.totalJobs"> |
| 108 | + <small class="ml-1 badge badge-danger badge-sm" v-if="batch.failedJobs > 0 && batch.totalJobs - batch.pendingJobs < batch.totalJobs"> |
109 | 109 | Failures
|
110 | 110 | </small>
|
111 |
| - <small class="badge badge-success badge-sm" v-if="batch.totalJobs - batch.pendingJobs == batch.totalJobs"> |
| 111 | + <small class="ml-1 badge badge-success badge-sm" v-if="batch.totalJobs - batch.pendingJobs == batch.totalJobs"> |
112 | 112 | Finished
|
113 | 113 | </small>
|
114 |
| - <small class="badge badge-secondary badge-sm" v-if="batch.pendingJobs > 0 && !batch.failedJobs"> |
| 114 | + <small class="ml-1 badge badge-secondary badge-sm" v-if="batch.pendingJobs > 0 && !batch.failedJobs"> |
115 | 115 | Pending
|
116 | 116 | </small>
|
117 | 117 | </div>
|
118 | 118 | </div>
|
119 | 119 | <div class="row mb-2" v-if="batch.name">
|
120 |
| - <div class="col-md-2"><strong>Name</strong></div> |
| 120 | + <div class="col-md-2 text-muted">Name</div> |
121 | 121 | <div class="col">{{batch.name}}</div>
|
122 | 122 | </div>
|
123 | 123 | <div class="row mb-2" v-if="batch.options.queue">
|
124 |
| - <div class="col-md-2"><strong>Queue</strong></div> |
| 124 | + <div class="col-md-2 text-muted">Queue</div> |
125 | 125 | <div class="col">{{batch.options.queue}}</div>
|
126 | 126 | </div>
|
127 | 127 | <div class="row mb-2" v-if="batch.options.connection">
|
128 |
| - <div class="col-md-2"><strong>Connection</strong></div> |
| 128 | + <div class="col-md-2 text-muted">Connection</div> |
129 | 129 | <div class="col">{{batch.options.connection}}</div>
|
130 | 130 | </div>
|
131 | 131 | <div class="row mb-2">
|
132 |
| - <div class="col-md-2"><strong>Created At</strong></div> |
| 132 | + <div class="col-md-2 text-muted">Created</div> |
133 | 133 | <div class="col">{{ formatDateIso(batch.createdAt).format('YYYY-MM-DD HH:mm:ss') }}</div>
|
134 | 134 | </div>
|
135 | 135 | <div class="row mb-2" v-if="batch.finishedAt">
|
136 |
| - <div class="col-md-2"><strong>Finished At</strong></div> |
| 136 | + <div class="col-md-2 text-muted">Finished</div> |
137 | 137 | <div class="col">{{ formatDateIso(batch.finishedAt).format('YYYY-MM-DD HH:mm:ss') }}</div>
|
138 | 138 | </div>
|
139 | 139 | <div class="row mb-2" v-if="batch.cancelledAt">
|
140 |
| - <div class="col-md-2"><strong>Cancelled At</strong></div> |
| 140 | + <div class="col-md-2 text-muted">Cancelled</div> |
141 | 141 | <div class="col">{{ formatDateIso(batch.cancelledAt).format('YYYY-MM-DD HH:mm:ss') }}</div>
|
142 | 142 | </div>
|
143 | 143 | <div class="row mb-2">
|
144 |
| - <div class="col-md-2"><strong>Total Jobs</strong></div> |
| 144 | + <div class="col-md-2 text-muted">Total Jobs</div> |
145 | 145 | <div class="col">{{batch.totalJobs}}</div>
|
146 | 146 | </div>
|
147 | 147 | <div class="row mb-2">
|
148 |
| - <div class="col-md-2"><strong>Pending Jobs</strong></div> |
| 148 | + <div class="col-md-2 text-muted">Pending Jobs</div> |
149 | 149 | <div class="col">{{batch.pendingJobs}}</div>
|
150 | 150 | </div>
|
151 | 151 | <div class="row mb-2">
|
152 |
| - <div class="col-md-2"><strong>Failed Jobs</strong></div> |
| 152 | + <div class="col-md-2 text-muted">Failed Jobs</div> |
153 | 153 | <div class="col">{{batch.failedJobs}}</div>
|
154 | 154 | </div>
|
155 | 155 | <div class="row">
|
156 |
| - <div class="col-md-2"><strong>Completed Jobs (Including Failed)</strong></div> |
| 156 | + <div class="col-md-2 text-muted">Completed Jobs<br><small>(Including Failed)</small></div> |
157 | 157 | <div class="col">{{ (batch.totalJobs-batch.pendingJobs) }} ({{batch.progress}}%)</div>
|
158 | 158 | </div>
|
159 | 159 | </div>
|
160 | 160 | </div>
|
161 | 161 |
|
162 | 162 |
|
163 |
| - <div class="card mt-4" v-if="ready && failedJobs.length"> |
| 163 | + <div class="card overflow-hidden mt-4" v-if="ready && failedJobs.length"> |
164 | 164 | <div class="card-header d-flex align-items-center justify-content-between">
|
165 |
| - <h5>Failed Jobs</h5> |
| 165 | + <h2 class="h6 m-0">Failed Jobs</h2> |
166 | 166 | </div>
|
167 | 167 |
|
168 |
| - <table class="table table-hover table-sm mb-0"> |
| 168 | + <table class="table table-hover mb-0"> |
169 | 169 | <thead>
|
170 | 170 | <tr>
|
171 | 171 | <th>Job</th>
|
172 |
| - <th>Runtime</th> |
173 |
| - <th class="text-right">Failed At</th> |
| 172 | + <th class="text-right">Runtime</th> |
| 173 | + <th class="text-right">Failed</th> |
174 | 174 | </tr>
|
175 | 175 | </thead>
|
176 | 176 |
|
|
183 | 183 | </router-link>
|
184 | 184 | </td>
|
185 | 185 |
|
186 |
| - <td class="table-fit"> |
| 186 | + <td class="text-right text-muted table-fit"> |
187 | 187 | <span>{{ failedJob.failed_at && failedJob.reserved_at ? String((failedJob.failed_at - failedJob.reserved_at).toFixed(2))+'s' : '-' }}</span>
|
188 | 188 | </td>
|
189 | 189 |
|
190 |
| - <td class="text-right table-fit"> |
| 190 | + <td class="text-right text-muted table-fit"> |
191 | 191 | {{ readableTimestamp(failedJob.failed_at) }}
|
192 | 192 | </td>
|
193 | 193 | </tr>
|
|
0 commit comments