From 378bef80f3b8af6ffcccf78686da76ed0430a1e3 Mon Sep 17 00:00:00 2001 From: mkelvers Date: Fri, 10 Apr 2026 22:31:15 +0200 Subject: [PATCH] ui: refine anime details and watchlist --- internal/templates/anime.templ | 75 ++++++++++++++-------------------- 1 file changed, 30 insertions(+), 45 deletions(-) diff --git a/internal/templates/anime.templ b/internal/templates/anime.templ index 49a0c01..d602554 100644 --- a/internal/templates/anime.templ +++ b/internal/templates/anime.templ @@ -39,16 +39,15 @@ templ AnimeDetails(anime jikan.Anime, currentStatus string) {
@WatchlistDropdown(anime.MalID, anime.Title, anime.TitleEnglish, anime.TitleJapanese, anime.ImageURL(), currentStatus, anime.Airing)
+
+ if anime.Synopsis != "" { +

{ anime.Synopsis }

+ } else { +

No synopsis available.

+ } +
-
-

Synopsis

- if anime.Synopsis != "" { -

{ anime.Synopsis }

- } else { -

No synopsis available.

- } -

Related

@@ -95,17 +94,13 @@ templ AnimeDetails(anime jikan.Anime, currentStatus string) { { anime.Duration }
} - - if len(anime.Genres) > 0 { -
-

Genres

- - } + } +
if hasExtraSidebarDetails(anime) {
More metadata @@ -140,23 +135,15 @@ templ AnimeDetails(anime jikan.Anime, currentStatus string) { } if len(anime.Demographics) > 0 { -
@@ -190,13 +173,21 @@ func joinNames(entities []jikan.NamedEntity) string { return strings.Join(names, ", ") } +func joinStreamingNames(anime jikan.Anime) string { + names := make([]string, len(anime.Streaming)) + for i, s := range anime.Streaming { + names[i] = s.Name + } + return strings.Join(names, ", ") +} + templ WatchlistDropdown(animeID int, animeTitle string, animeTitleEnglish string, animeTitleJapanese string, animeImage string, currentStatus string, airing bool) { @@ -225,12 +216,9 @@ templ dropdownStatusOption(animeID int, animeTitle string, animeTitleEnglish str hx-post="/api/watchlist" hx-vals={ fmt.Sprintf(`{"anime_id": "%d", "anime_title": "%s", "anime_title_english": "%s", "anime_title_japanese": "%s", "anime_image": "%s", "status": "%s", "airing": "%v"}`, animeID, animeTitle, animeTitleEnglish, animeTitleJapanese, animeImage, status, airing) } hx-target="#watchlist-dropdown" - hx-swap="outerHTML" + hx-swap="outerHTML swap:150ms" > { formatStatus(status) } - if status == currentStatus { - - } } @@ -240,12 +228,9 @@ templ statusOption(anime jikan.Anime, status string, currentStatus string) { hx-post="/api/watchlist" hx-vals={ fmt.Sprintf(`{"anime_id": "%d", "anime_title": "%s", "anime_title_english": "%s", "anime_title_japanese": "%s", "anime_image": "%s", "status": "%s"}`, anime.MalID, anime.Title, anime.TitleEnglish, anime.TitleJapanese, anime.ImageURL(), status) } hx-target="#watchlist-dropdown" - hx-swap="outerHTML" + hx-swap="outerHTML swap:150ms" > { formatStatus(status) } - if status == currentStatus { - - } }