{{- extends "layout/default" }} {{- import "blocks/pagination" }} {{- block body() }}

Series of {{ .NovelSeries.Total }} works

{{ .NovelSeries.Title }}

{{ .NovelSeries.PublishedTotalCharacterCount }} character(s) · {{ floor: .NovelSeries.PublishedReadingTime / 60 }} mins

{{ raw: parsePixivRedirect(.NovelSeries.Caption) }}

{{- if .NovelSeries.AiType == 2 }} AI-generated {{- end }} {{- if .NovelSeries.XRestrict != 0 }} {* NOTE: different logic than usual due to isEmphasize not existing *} {{ if .NovelSeries.XRestrict == 1 }} R-18 {{ else }} R-18G {{ end }} {{- end }} {{- if .NovelSeries.IsOriginal }} Original {{- end }} {{- if .NovelSeries.GenreID != "0" }} {{ novelGenre: .NovelSeries.GenreID }} {{- end }} {{- range .NovelSeries.Tags }} {{- if isEmphasize(.) }} {* Intentionally empty to not render anything to avoid duplication *} {{- else }} #{{ . }} {{- end }} {{- end }}
{{ .NovelSeries.Total }} episode(s)
{* TODO: Enabling this line triggers an error.
Updated on {{parseTime: .NovelSeries.UpdateDate }}
*}

{{ len(.NovelSeriesContents) }} works in this series

{{- range .NovelSeriesContents }}
{{- include "fragments/novelseriescontents-tn" . }}

{{- end }}
{{- url := "/novel/series/" + .NovelSeries.ID + "?p="}} {{- paginationData := createPaginator(url, "#checkpoint", .Page, .PageLimit, 1, 5) }} {{- yield pagination(data=paginationData) }}
{{- end }}