47 lines
2.2 KiB
HTML
47 lines
2.2 KiB
HTML
{{/* Per-Series page: one address per Series, keyed "<site>:<series_id>" so the
|
|
list row is one hop from it. Everything here is a Series-level fact plus
|
|
the anonymous Reader count. The Check now control lands in its own .dform
|
|
below the .detail-grid; the correction form is the grid's first column,
|
|
and the grid's second waits for the series-URL repair (#151). The pending
|
|
and corrected markers ride the meta line with the other marks. */}}
|
|
{{define "series-detail"}}
|
|
<a class="ghost detail-back" href="/admin/series">← Series</a>
|
|
<h1 class="detail-title">{{.Title}}</h1>
|
|
<p class="detail-key">{{.Key}} · {{.Site}} · {{.Kind}}</p>
|
|
{{if .Cover}}<div class="cover"><img src="{{.Cover}}" alt="" loading="lazy"></div>
|
|
{{else}}<div class="cover"></div>{{end}}
|
|
{{template "series-detail-meta" .}}
|
|
<div class="detail-grid">
|
|
<form class="dform" hx-post="/admin/series/{{.Key}}/latest" hx-target="#detail-meta" hx-swap="outerHTML">
|
|
<h3>Correct latest chapter</h3>
|
|
<p class="hint">The next successful Poll overwrites this value.</p>
|
|
<div class="field">
|
|
<input type="number" name="chapter" step="any" placeholder="{{.Chapter}}" required>
|
|
<button type="submit" class="ghost">Set</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
{{if .CanPoll}}
|
|
<div class="dform">
|
|
<div class="field"><a class="ghost act" hx-post="/admin/series/{{.Key}}/poll" hx-target="#detail-meta" hx-swap="outerHTML" href="#">Check now</a></div>
|
|
</div>
|
|
{{end}}
|
|
{{end}}
|
|
|
|
{{/* series-detail-meta is the meta line, and the answer a Check now or
|
|
correction press on the detail page swaps into its place: the same marks,
|
|
re-rendered after the stamp so the pending and corrected markers show. */}}
|
|
{{define "series-detail-meta"}}
|
|
<div class="detail-meta" id="detail-meta">
|
|
<span>ch {{.Chapter}}</span>
|
|
<span>checked {{.Checked}}</span>
|
|
<span>{{.Readers}} readers</span>
|
|
{{if .Corrected}}<span class="mark">{{.Corrected}}</span>{{end}}
|
|
{{if .Pending}}<span class="mark">{{.Requested}}</span>{{end}}
|
|
{{if .Unpollable}}<span class="mark">unpollable</span>{{end}}
|
|
{{if .NoCover}}<span class="mark">no cover</span>{{end}}
|
|
{{if .Orphan}}<span class="mark">orphan</span>{{end}}
|
|
{{if .SightingRaised}}<span class="mark">sighting-raised</span>{{end}}
|
|
</div>
|
|
{{end}}
|