more novelSeries wip

This commit is contained in:
perennial
2024-10-11 01:37:42 +11:00
parent b20f056776
commit 27968f860e
3 changed files with 75 additions and 72 deletions
@@ -25,15 +25,18 @@
{{- if .AiType == 2 }}
<span class="badge bg-warning text-dark me-2 mb-2">AI-generated</span>
{{- end }}
{{- range .Tags }}
{* NOTE: early block to catch the R-18 tag *}
{{- if isEmphasize(.) }}
<span class="badge bg-danger me-2 mb-2">{{ . }}</span>
{{- end }}
{{- end }}
{{- if .IsOriginal }}
<span class="badge bg-primary me-2 mb-2">Original</span>
{{- end }}
{{- if .Brief.Genre != "0" }}
<span class="badge bg-secondary me-2 mb-2">{{ novelGenre: .Brief.Genre }}</span>
{{- end }}
{{- range .Tags }}
{{- if isEmphasize(.) }}
<span class="badge bg-danger me-2 mb-2">{{ . }}</span>
{* Intentionally empty to not render anything to avoid duplication *}
{{- else }}
<span class="badge fw-normal text-muted me-2 mb-2 p-0 text-wrap text-break text-start">
<a href="/tags/{{ escapeString(.) }}" class="text-decoration-none text-wrap text-break">#{{ . }}</a>
+15 -21
View File
@@ -23,7 +23,7 @@
<!-- Series name -->
{{- if .Novel.SeriesNavData }}
<h3 class="fw-medium mb-2">
<h3 class="fw-normal mb-2">
<a href="/novel/series/{{ .Novel.SeriesNavData.SeriesID }}" class="text-body-secondary text-decoration-none">
{{- .Novel.SeriesNavData.Title }} #{{- .Novel.SeriesNavData.Order}}
</a>
@@ -32,20 +32,18 @@
<!-- Author -->
<div class="d-flex align-items-center mb-2">
<a href="/users/{{ .User.ID }}/novels" class="text-decoration-none">
<img src="{{ .User.Avatar }}" alt="{{ .User.Name }}" class="rounded-circle me-2" style="width: 30px; height: 30px" />
</a>
<h4 class="mb-0">
<a href="/users/{{ .User.ID }}" class="text-body-secondary text-decoration-none">
{{ .User.Name }}
<a href="/users/{{ .User.ID }}/novels" class="text-decoration-none">
<img src="{{ .User.Avatar }}" alt="{{ .User.Name }}" class="rounded-circle me-2" style="width: 30px; height: 30px" />
</a>
</h4>
<h4 class="mb-0">
<a href="/users/{{ .User.ID }}" class="text-body-secondary text-decoration-none">
{{ .User.Name }}
</a>
</h4>
</div>
<!-- Word count and reading time -->
<p class="text-muted small mb-3">
<p class="small text-body-secondary">
<span>{{ .Novel.WordCount }} word(s)</span> &middot; <span>{{ floor: .Novel.ReadingTime / 60 }} mins</span>
</p>
@@ -57,7 +55,7 @@
</div>
<!-- Description -->
<p class="mb-3">{{ raw: .Novel.Description }}</p>
<p>{{ raw: .Novel.Description }}</p>
<!-- Tags -->
<div class="d-flex flex-wrap align-items-center mb-2">
@@ -67,7 +65,7 @@
{{- range .Novel.Tags.Tags }}
{* NOTE: early block to catch the R-18 tag *}
{{- if isEmphasize(.Name) }}
<span class="badge bg-danger me-2 mb-2">{{ . }}</span>
<span class="badge bg-danger me-2 mb-2">{{ .Name }}</span>
{{- end }}
{{- end }}
{{- if .Novel.IsOriginal }}
@@ -90,20 +88,16 @@
<!-- Metadata -->
<div class="d-flex flex-wrap text-body-secondary small me-2">
<div class="me-3 mb-2 mb-lg-0">
<i class="bi bi-eye me-1"></i>
<span>{{- .Novel.Views }}</span>
<i class="bi bi-eye me-2"></i>{{- .Novel.Views }}
</div>
<div class="me-3 mb-2 mb-lg-0">
<i class="bi bi-heart-fill me-1"></i>
<span>{{- .Novel.Bookmarks }}</span>
<i class="bi bi-heart-fill me-2"></i>{{- .Novel.Bookmarks }}
</div>
<div class="me-3 mb-2 mb-lg-0">
<i class="bi bi-hand-thumbs-up-fill me-1"></i>
<span>{{- .Novel.Likes }}</span>
<i class="bi bi-hand-thumbs-up-fill me-2"></i>{{- .Novel.Likes }}
</div>
<div>
<i class="bi bi-calendar me-1"></i>
<span>{{- parseTime: .Novel.CreateDate }}</span>
<i class="bi bi-calendar me-2"></i>{{- parseTime: .Novel.CreateDate }}
</div>
</div>
+53 -47
View File
@@ -16,45 +16,67 @@
<!-- Title -->
<h1 class="mb-2">{{ .NovelSeries.Title }}</h1>
<!-- Description -->
<p class="mb-3">{{ raw: parsePixivRedirect(.NovelSeries.Caption) }}</p>
<!-- Metadata -->
<div class="d-flex flex-wrap text-body-secondary small mb-3">
<div class="me-3 mb-2">
<i class="bi bi-book me-1"></i>
<span>{{ .NovelSeries.Total }} Episode(s)</span>
</div>
<div class="me-3 mb-2">
<i class="bi bi-calendar me-1"></i>
<span>Updated on {{parseTime: .NovelSeries.UpdateDate }}</span>
</div>
<div class="me-3 mb-2">
<i class="bi bi-fonts me-1"></i>
<span>{{ .NovelSeries.PublishedTotalCharacterCount }} character(s)</span>
</div>
<div class="mb-2">
<i class="bi bi-clock me-1"></i>
<span>{{ floor: .NovelSeries.PublishedReadingTime / 60 }} mins</span>
</div>
<!-- Author -->
<div class="d-flex align-items-center mb-2">
<a href="/users/{{ .User.ID }}/novels" class="text-decoration-none">
<img src="{{ .User.Avatar }}" alt="{{ .User.Name }}" class="rounded-circle me-2" style="width: 30px; height: 30px" />
</a>
<h4 class="mb-0">
<a href="/users/{{ .User.ID }}" class="text-body-secondary text-decoration-none">
{{ .User.Name }}
</a>
</h4>
</div>
<!-- Word count and reading time -->
<p class="small text-body-secondary">
<span>{{ .NovelSeries.PublishedTotalCharacterCount }} character(s)</span> &middot; <span>{{ floor: .NovelSeries.PublishedReadingTime / 60 }} mins</span>
</p>
<!-- View Pixiv original button -->
<div class="d-flex">
<a href="https://pixiv.net/novel/series/{{ .NovelSeries.ID }}" class="custom-btn-secondary btn-sm mb-3">
<i class="bi bi-box-arrow-up-right me-2"></i>View on pixiv.net
</a>
</div>
<!-- Description -->
<p>{{ raw: parsePixivRedirect(.NovelSeries.Caption) }}</p>
<!-- Tags -->
<div class="d-flex flex-wrap align-items-center mb-3">
{{- if .NovelSeries.XRestrict != 0 }}
<span class="badge bg-danger me-2 mb-2">
{{ if .NovelSeries.XRestrict == 1 }} R-18 {{ else }} R-18G {{ end }}
</span>
{{- end }}
{{- if .NovelSeries.AiType == 2 }}
<span class="badge bg-warning text-dark me-2 mb-2">AI-generated</span>
{{- end }}
{{- if .NovelSeries.GenreID != "0" }}
<span class="badge bg-secondary me-2 mb-2">{{ novelGenre: .NovelSeries.GenreID }}</span>
{{- if .NovelSeries.XRestrict != 0 }}
{* NOTE: different logic than usual due to isEmphasize not existing *}
<span class="badge bg-danger me-2 mb-2">{{ if .NovelSeries.XRestrict == 1 }} R-18 {{ else }} R-18G {{ end }}</span>
{{- end }}
{{- if .NovelSeries.IsOriginal }}
<span class="badge bg-primary me-2 mb-2">Original</span>
{{- end }}
{{- if .NovelSeries.GenreID != "0" }}
<span class="badge bg-secondary me-2 mb-2">{{ novelGenre: .NovelSeries.GenreID }}</span>
{{- end }}
{{- range .NovelSeries.Tags }}
{{- if isEmphasize(.) }}
{* Intentionally empty to not render anything to avoid duplication *}
{{- else }}
<span class="badge fw-normal text-muted me-2 mb-2 p-0 text-wrap text-break text-start">
<a href="/tags/{{ escapeString(.) }}" class="text-decoration-none text-wrap text-break">#{{ . }}</a>
</span>
{{- end }}
{{- end }}
</div>
<!-- Metadata -->
<div class="d-flex flex-wrap text-body-secondary small mb-3">
<div class="me-3 mb-2 mb-lg-0">
<i class="bi bi-book me-2"></i>{{ .NovelSeries.Total }} episode(s)
</div>
<div class="me-3 mb-2 mb-lg-0">
<i class="bi bi-calendar me-2"></i>Updated on {{parseTime: .NovelSeries.UpdateDate }}
</div>
</div>
<!-- Read first episode button -->
@@ -69,27 +91,11 @@
</div>
</div>
<div class="col-12 col-lg-9">
<!-- Author information -->
<div class="custom-card bg-black mb-4">
<div class="card-header border-0 rounded-5 bg-charcoal-surface1 py-3 px-4">
<div class="d-flex align-items-center">
<a href="/users/{{ .User.ID }}/novels">
<img src="{{ .User.Avatar }}" alt="{{ .User.Name }}" class="rounded-circle object-fit-cover me-3" style="width: 48px; height: 48px;">
</a>
<a href="/users/{{ .User.ID }}/novels" class="text-body">
<h2 class="m-0">{{ .User.Name }}</h2>
</a>
</div>
</div>
</div>
</div>
<div class="col-12 col-lg-9">
<h2 class="mb-4">{{ len(.NovelSeriesContents) }} works in this series</h2>
<div class="col-12 mt-5">
<h2>{{ len(.NovelSeriesContents) }} works in this series</h2>
<div class="row row-cols-1 row-cols-lg-2 g-4">
{{- range .NovelSeriesContents }}
<div class="col">
<div class="col mt-1">
<div class="custom-novel-card bg-black p-3 py-4 thumbnail-hover-dark">
{{- include "fragments/novelseriescontents-tn" . }}
</div>