{{/* The Series list: every Series across every Reader's library, filtered by one hygiene rule and narrowed by Site and Library. Filter, Site, Library and page all live in the query string, so the list's state is an address that can be bookmarked: the two selects submit the GET form, and the Library segment links and the pager preserve the filter and Site. */}} {{define "series-list"}}
both manga novels
{{template "series-list-head" .}} {{if .Rows}}
SiteChCheckedReadersNotes
{{range .Rows}}{{template "series-row" .}}{{end}}
{{if .PrevHref}}‹ prev{{else}}‹ prev{{end}} {{.Range}} {{if .NextHref}}next ›{{else}}next ›{{end}}
{{else}}
No series

Nothing matches {{.FilterLabel}}.

{{end}} {{end}} {{/* series-row is one Series list row, and the answer a Check now press swaps into the row's place (hx-target="closest .trow"): it must render the pending marker the press created. The control is absent on a Series with no page to fetch and on an orphan, so the owner is never offered a button that can never do anything. */}} {{define "series-row"}}
{{.Title}}{{if .Pending}}{{.Requested}}{{end}} {{.Site}} {{.Ch}} {{.Age}} {{.Readers}} {{range .Notes}}{{.}}{{end}}{{if .More}}+{{.More}}{{end}}{{if .Finished}}finished{{end}} {{if .CanPoll}}Check now{{end}}{{if .CanRemove}}{{end}} {{if .RemovalRefused}}a Reader has bookmarked this Series again{{end}}
{{end}} {{/* series-list-head is the list's heading — the count and the label are one fact. The removal answer renders it out of band (the OOB flag, like the chrome partials) so the heading never lies past the row that made it, and inline here it is the page's own heading. The id is the OOB swap's hook; hx-swap-oob sits on the element the answer carries. */}} {{define "series-list-head"}}
{{.Total}} series · {{.FilterLabel}}
{{end}}