fix(web): verdict space per design mock, single door() fig builder (#143)

This commit is contained in:
2026-08-22 00:56:49 +07:00
parent c432a3be30
commit 00fa237151
2 changed files with 17 additions and 19 deletions
+16 -18
View File
@@ -98,11 +98,7 @@ func (h *Handler) overviewView() (overviewView, error) {
// "hygiene" figure. // "hygiene" figure.
hygiene := make([]fig, 0, len(seriesFilterOrder)-1) hygiene := make([]fig, 0, len(seriesFilterOrder)-1)
for _, name := range seriesFilterOrder[1:] { for _, name := range seriesFilterOrder[1:] {
hygiene = append(hygiene, fig{ hygiene = append(hygiene, door(seriesFilterLabels[name], totals[name], seriesListHref(name, "", "", 0)))
Label: seriesFilterLabels[name],
Href: zeroHref(totals[name], seriesListHref(name, "", "", 0)),
Count: totals[name],
})
} }
view.Hygiene = hygiene view.Hygiene = hygiene
@@ -112,10 +108,10 @@ func (h *Handler) overviewView() (overviewView, error) {
novel += sh.Novel novel += sh.Novel
} }
view.Library = []fig{ view.Library = []fig{
{Label: "Series", Href: zeroHref(totals[store.SeriesFilterAll], seriesListHref("", "", "", 0)), Count: totals[store.SeriesFilterAll]}, door("Series", totals[store.SeriesFilterAll], seriesListHref("", "", "", 0)),
{Label: "Manga", Href: zeroHref(manga, seriesListHref("", "", store.KindManga, 0)), Count: manga}, door("Manga", manga, seriesListHref("", "", store.KindManga, 0)),
{Label: "Novels", Href: zeroHref(novel, seriesListHref("", "", store.KindNovel, 0)), Count: novel}, door("Novels", novel, seriesListHref("", "", store.KindNovel, 0)),
{Label: "Readers", Href: zeroHref(len(readers), "/admin/readers"), Count: len(readers)}, door("Readers", len(readers), "/admin/readers"),
} }
// One row per Site with any Series, from the All shapes; the hygiene // One row per Site with any Series, from the All shapes; the hygiene
@@ -139,10 +135,10 @@ func (h *Handler) overviewView() (overviewView, error) {
Site: sh.Site, Site: sh.Site,
SiteHref: seriesListHref("", sh.Site, "", 0), SiteHref: seriesListHref("", sh.Site, "", 0),
Figs: []fig{ Figs: []fig{
{Count: sh.Total, Href: zeroHref(sh.Total, seriesListHref("", sh.Site, "", 0))}, door("", sh.Total, seriesListHref("", sh.Site, "", 0)),
{Count: siteCounts[store.SeriesFilterNoCover][sh.Site], Href: zeroHref(siteCounts[store.SeriesFilterNoCover][sh.Site], seriesListHref(store.SeriesFilterNoCover, sh.Site, "", 0))}, door("", siteCounts[store.SeriesFilterNoCover][sh.Site], seriesListHref(store.SeriesFilterNoCover, sh.Site, "", 0)),
{Count: siteCounts[store.SeriesFilterNeverChecked][sh.Site], Href: zeroHref(siteCounts[store.SeriesFilterNeverChecked][sh.Site], seriesListHref(store.SeriesFilterNeverChecked, sh.Site, "", 0))}, door("", siteCounts[store.SeriesFilterNeverChecked][sh.Site], seriesListHref(store.SeriesFilterNeverChecked, sh.Site, "", 0)),
{Count: siteCounts[store.SeriesFilterStale][sh.Site], Href: zeroHref(siteCounts[store.SeriesFilterStale][sh.Site], seriesListHref(store.SeriesFilterStale, sh.Site, "", 0))}, door("", siteCounts[store.SeriesFilterStale][sh.Site], seriesListHref(store.SeriesFilterStale, sh.Site, "", 0)),
}, },
} }
if p, ok := passBySite[sh.Site]; ok { if p, ok := passBySite[sh.Site]; ok {
@@ -155,13 +151,15 @@ func (h *Handler) overviewView() (overviewView, error) {
return view, nil return view, nil
} }
// zeroHref is the zero rule: a measured zero keeps its figure but loses its // door is one figure with its door: the list that counts it. A measured zero
// door, because following the link lands on an empty list. // is still a real figure, but the door closes — following it would land on an
func zeroHref(count int, href string) string { // empty list. The count is written once so the figure and what it links to
// cannot drift apart.
func door(label string, count int, href string) fig {
if count == 0 { if count == 0 {
return "" href = ""
} }
return href return fig{Label: label, Href: href, Count: count}
} }
// overviewVerdict decides the landing page's one line from the latest pass // overviewVerdict decides the landing page's one line from the latest pass
+1 -1
View File
@@ -4,7 +4,7 @@
figures link, what a Lane's state means — is made in Go; this template figures link, what a Lane's state means — is made in Go; this template
only prints. */}} only prints. */}}
{{define "overview"}} {{define "overview"}}
<p class="verdict"><span class="attn">{{.Verdict}}</span>{{if .HasCounts}}<span class="counts">· <b>{{.Waiting}}</b> series waiting · <b>{{.Unchecked}}</b> unchecked over 12h</span>{{end}}</p> <p class="verdict"><span class="attn">{{.Verdict}}</span> {{if .HasCounts}}<span class="counts">· <b>{{.Waiting}}</b> series waiting · <b>{{.Unchecked}}</b> unchecked over 12h</span>{{end}}</p>
<h2 class="sec">Hygiene</h2> <h2 class="sec">Hygiene</h2>
<div class="stats">{{range .Hygiene}}<div class="stat"><span class="lbl">{{.Label}}</span>{{if .Href}}<a class="fig" href="{{.Href}}">{{.Count}}</a>{{else}}<span class="fig zero">{{.Count}}</span>{{end}}</div>{{end}}</div> <div class="stats">{{range .Hygiene}}<div class="stat"><span class="lbl">{{.Label}}</span>{{if .Href}}<a class="fig" href="{{.Href}}">{{.Count}}</a>{{else}}<span class="fig zero">{{.Count}}</span>{{end}}</div>{{end}}</div>
<h2 class="sec">Library</h2> <h2 class="sec">Library</h2>