88 lines
3.6 KiB
Handlebars
88 lines
3.6 KiB
Handlebars
<div id="background-tasks-state" data-state-version="{{stateVersion}}" hidden></div>
|
|
|
|
<div class="page-header">
|
|
<div>
|
|
<h2>Scheduled tasks</h2>
|
|
<p>Use this page to view and manage recurring tasks.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="background-tasks-recurring-card" class="card card-outline card-secondary" data-pagination-card="recurring" data-table-search-container>
|
|
<div class="card-header d-flex align-items-center">
|
|
<h3 class="card-title mb-0">Scheduled Tasks</h3>
|
|
<div class="ms-auto d-flex flex-nowrap align-items-center background-tasks-recurring-tools">
|
|
<div class="input-group input-group-sm background-tasks-recurring-search">
|
|
<span class="input-group-text" aria-hidden="true"><i class="bi bi-search"></i></span>
|
|
<input type="search" class="form-control" placeholder="Search scheduled" aria-label="Search scheduled refreshes" data-table-search />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card-body table-responsive p-0">
|
|
<table class="table table-striped w-100 mb-0 align-middle" data-table-searchable>
|
|
<thead>
|
|
<tr>
|
|
<th>Task</th>
|
|
<th>Interval</th>
|
|
<th>Next run</th>
|
|
<th>Last run</th>
|
|
<th>Last result</th>
|
|
<th>Source</th>
|
|
{{#if canManage}}<th>Actions</th>{{/if}}
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{{#if recurringTasks.length}}
|
|
{{#each recurringTasks}}
|
|
<tr data-table-search-row>
|
|
<td data-label="Task">
|
|
<div class="fw-semibold">{{title}}</div>
|
|
<div class="text-muted small text-break">{{key}}</div>
|
|
</td>
|
|
<td data-label="Interval">{{intervalLabel}}</td>
|
|
<td data-label="Next run">
|
|
{{#if nextRunAt}}
|
|
<time data-local-datetime datetime="{{nextRunAt}}">{{nextRunAt}}</time>
|
|
{{else}}-{{/if}}
|
|
</td>
|
|
<td data-label="Last run">
|
|
{{#if lastRunAt}}
|
|
<time data-local-datetime datetime="{{lastRunAt}}">{{lastRunAt}}</time>
|
|
{{else}}-{{/if}}
|
|
</td>
|
|
<td data-label="Last result">
|
|
{{#if lastStatus}}
|
|
<span class="badge text-capitalize {{#if (eq lastStatus 'failed')}}text-bg-danger{{else if (eq lastStatus 'completed')}}text-bg-success{{else}}text-bg-secondary{{/if}}">{{lastStatus}}</span>
|
|
{{#if lastError}}<div class="text-danger small mt-1 text-break">{{lastError}}</div>{{/if}}
|
|
{{else}}
|
|
<span class="empty">-</span>
|
|
{{/if}}
|
|
</td>
|
|
<td data-label="Source">
|
|
{{#if metadata.sourceName}}
|
|
<div>{{metadata.sourceName}}</div>
|
|
<div class="text-muted small">{{metadata.sourceType}} #{{metadata.sourceId}}</div>
|
|
{{else}}
|
|
<span class="empty">-</span>
|
|
{{/if}}
|
|
</td>
|
|
{{#if ../canManage}}
|
|
<td data-label="Actions">
|
|
<div class="d-flex flex-wrap gap-2">
|
|
<form method="post" action="/settings/background-tasks/recurring/{{key}}/run">
|
|
<button type="submit" class="btn btn-outline-primary btn-sm">Run now</button>
|
|
</form>
|
|
</div>
|
|
</td>
|
|
{{/if}}
|
|
</tr>
|
|
{{/each}}
|
|
{{else}}
|
|
<tr data-table-search-empty-default>
|
|
<td colspan="{{#if canManage}}7{{else}}6{{/if}}" class="empty">No scheduled refreshes are registered yet.</td>
|
|
</tr>
|
|
{{/if}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|