@if (summary(); as stats) {
Total Searches
Last 7 Days
Last 30 Days
Unique Items
Pending Replacements
Instances
@if (stats.perInstanceStats.length > 0) {
@for (inst of sortedInstanceStats(); track inst.instanceId) {
{{ inst.instanceName }}
@if (instanceHealthWarning(inst); as warning) { } {{ inst.instanceType }}
Cycle Progress {{ inst.cycleItemsSearched }} / {{ inst.cycleItemsTotal }}
{{ inst.totalSearchCount }} Searches
{{ inst.cycleStartedAt ? formatCycleDuration(inst.cycleStartedAt) : '—' }} Cycle Duration
{{ inst.lastSearchedAt ? (inst.lastSearchedAt | date:'MM/dd HH:mm') : 'Never' }} Last Search
}
} }
Filters @if (activeFilterCount() > 0) { {{ activeFilterCount() }} } Refresh
@for (event of events(); track event.id) {
{{ event.searchType }} @if (event.searchReason) { {{ formatSearchReason(event.searchReason) }} } @if (event.searchStatus) { {{ event.searchStatus }} } @if (event.isDryRun) { Dry Run } @if (event.cycleId) { {{ event.cycleId.substring(0, 8) }} } @if (event.instanceType) { {{ event.instanceType }} } {{ event.timestamp | date:'yyyy-MM-dd HH:mm' }}
{{ event.itemTitle || 'Search triggered' }}
@if (event.grabbedItems && event.grabbedItems.length > 0) {
Grabbed: {{ formatGrabbedItems(event.grabbedItems) }}
}
} @empty { }
@if (eventsTotalRecords() > 0) { }
@if (!draft().instanceId) { Select an instance to filter by cycle. }
@for (opt of statusOptions; track opt.value) { }
Reset Apply