@if (loadError()) { Retry } @else if (loader.showSpinner()) { } @else if (!loader.loading()) {
@if (enabled()) {
@if (useAdvancedScheduling()) { } @else {
}
}
@if (enabled()) {
@if (stallCoverage().hasGaps) {
Coverage Gaps Detected

Your stall rules don't cover all completion percentage ranges for all privacy types. Torrents in uncovered ranges won't be processed by stall rules.

@for (gap of stallCoverage().gaps; track $index) {
{{ gap.privacyType }} torrents: {{ gap.from }}% - {{ gap.to }}% completion not covered
}
} @if (stallRules().length === 0 && !stallRulesLoading()) { } @for (rule of stallRules(); track rule.id) {

{{ rule.name }}

{{ rule.enabled ? 'Enabled' : 'Disabled' }} {{ rule.privacyType }} {{ rule.minCompletionPercentage }}% - {{ rule.maxCompletionPercentage }}%
Max Strikes: {{ rule.maxStrikes }} Reset on Progress: {{ rule.resetStrikesOnProgress ? 'Yes' : 'No' }} @if (rule.minimumProgress) { Min Progress: {{ rule.minimumProgress }} }
}
Add Stall Rule
@if (slowCoverage().hasGaps) {
Coverage Gaps Detected

Your slow rules don't cover all completion percentage ranges for all privacy types. Torrents in uncovered ranges won't be processed by slow rules.

@for (gap of slowCoverage().gaps; track $index) {
{{ gap.privacyType }} torrents: {{ gap.from }}% - {{ gap.to }}% completion not covered
}
} @if (slowRules().length === 0 && !slowRulesLoading()) { } @for (rule of slowRules(); track rule.id) {

{{ rule.name }}

{{ rule.enabled ? 'Enabled' : 'Disabled' }} {{ rule.privacyType }} {{ rule.minCompletionPercentage }}% - {{ rule.maxCompletionPercentage }}% @if (rule.minSpeed) { {{ rule.minSpeed }} }
Max Strikes: {{ rule.maxStrikes }} Min Speed: {{ rule.minSpeed }} @if (rule.maxTimeHours > 0) { Max Time: {{ rule.maxTimeHours }}h } @if (rule.ignoreAboveSize) { Ignore Above: {{ rule.ignoreAboveSize }} }
}
Add Slow Rule
}
{{ saved() ? 'Saved!' : 'Save Settings' }}
}
@if (stallResetOnProgress()) { }
Cancel {{ editingStallRule() ? 'Update' : 'Create' }}
Cancel {{ editingSlowRule() ? 'Update' : 'Create' }}