web-ui: добавлена страница группового удаления загрузок
- выбор → поимённое подтверждение → отчёт: пачка до 20 загрузок, гарды входа на обеих границах, потолок времени и остановка после трёх подряд отказов внешнего сервиса - допуск полного удаления сведён в единую точку store.State.CanDelete() — worker, страница загрузки и Telegram больше не держат своих перечней
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
<!doctype html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>jellybit — удаление</title>
|
||||
<link rel="icon" href="{{asset "favicon.svg"}}" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="{{asset "css/jellybit.css"}}">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{{template "header" "delete"}}
|
||||
|
||||
<main class="main">
|
||||
<h1 class="page-title">Удаление загрузок</h1>
|
||||
<p class="page-sub">
|
||||
Отметь раздачи и нажми «Удалить выбранные» — на следующем экране они будут
|
||||
названы поимённо, и только оттуда уходит удаление. Оно снимает библиотечные
|
||||
хардлинки <strong>и</strong> сносит раздачу с файлами из qBittorrent.
|
||||
Действие необратимо.
|
||||
</p>
|
||||
|
||||
{{if .Error}}
|
||||
<div class="del-warn"><h2>{{.Error}}</h2></div>
|
||||
{{end}}
|
||||
|
||||
{{if .Rows}}
|
||||
<!-- Обычная POST-форма: страница работает без JavaScript, htmx здесь не нужен.
|
||||
Самообновления страница не несёт сознательно — своп разметки стёр бы
|
||||
отметки, и человек подтвердил бы удаление по выбору, которого не видит. -->
|
||||
<form method="post" action="/ui/delete/confirm">
|
||||
<div class="del-list">
|
||||
{{range .Rows}}
|
||||
<label class="del-row">
|
||||
<input type="checkbox" name="id" value="{{.ID}}"{{if .Selected}} checked{{end}}>
|
||||
<span class="body">
|
||||
<span class="name">{{.Title}}</span>
|
||||
<span class="meta">
|
||||
{{template "status_badge" .State}}
|
||||
<span class="id">{{.ID}}</span>
|
||||
{{if .LastCopy}}<span class="last-copy">⚠ последняя копия данных</span>{{end}}
|
||||
</span>
|
||||
</span>
|
||||
</label>
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
<div class="del-bar">
|
||||
<button class="btn btn-danger btn-lg" type="submit">Удалить выбранные</button>
|
||||
<span class="del-limit">За один раз — не больше {{.Max}} загрузок.</span>
|
||||
</div>
|
||||
</form>
|
||||
{{else}}
|
||||
<div class="empty-state">
|
||||
<div class="big">🧹</div>
|
||||
Удалять нечего: ни одной загрузки в состоянии, где удаление с файлами
|
||||
разрешено.
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user