feat: display series information on book and game cards

- Add series name and order display to book cards (books-list.component.ts:598-602)
- Add series name and order display to game cards (games-list.component.ts:560-564)
- Series shows as "📚 Series Name #Order" format
- Add brown-themed styling (#8b6f47) for series info
- Pre-populate series fields when editing books/games
- Series fields added to startEdit() methods for both books and games

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-19 23:10:28 -08:00
parent 5a59afaa5e
commit 8f95f57838
2 changed files with 32 additions and 2 deletions
@@ -595,6 +595,11 @@ import { Book, BookStatus, CreateBookDto, UpdateBookDto, Comment, SuggestionEnti
<div class="book-info"> <div class="book-info">
<h3>{{ book.title }}</h3> <h3>{{ book.title }}</h3>
<p class="author">by {{ book.author }}</p> <p class="author">by {{ book.author }}</p>
@if (book.series) {
<p class="series">
📚 {{ book.series }}@if (book.seriesOrder) { #{{ book.seriesOrder }}}
</p>
}
<span class="status status-{{ book.status }}"> <span class="status status-{{ book.status }}">
{{ getStatusLabel(book.status) }} {{ getStatusLabel(book.status) }}
@@ -1011,6 +1016,14 @@ import { Book, BookStatus, CreateBookDto, UpdateBookDto, Comment, SuggestionEnti
margin: 0.5rem 0; margin: 0.5rem 0;
} }
.series {
color: #8b6f47;
font-size: 0.85rem;
margin: 0.5rem 0;
font-weight: 500;
font-style: italic;
}
.status { .status {
display: inline-block; display: inline-block;
padding: 0.25rem 0.5rem; padding: 0.25rem 0.5rem;
@@ -1747,7 +1760,9 @@ export class BooksListComponent implements OnInit {
notes: book.notes, notes: book.notes,
coverImage: book.coverImage, coverImage: book.coverImage,
tags: [...(book.tags || [])], tags: [...(book.tags || [])],
links: [...(book.links || [])] links: [...(book.links || [])],
series: book.series,
seriesOrder: book.seriesOrder
}; };
this.editBookImagePreview.set(book.coverImage || null); this.editBookImagePreview.set(book.coverImage || null);
this.showAddForm.set(false); this.showAddForm.set(false);
@@ -557,6 +557,11 @@ import { Game, GameStatus, CreateGameDto, UpdateGameDto, Comment, SuggestionEnti
@if (game.platform) { @if (game.platform) {
<p class="platform">{{ game.platform }}</p> <p class="platform">{{ game.platform }}</p>
} }
@if (game.series) {
<p class="series">
📚 {{ game.series }}@if (game.seriesOrder) { #{{ game.seriesOrder }}}
</p>
}
<span class="status status-{{ game.status }}"> <span class="status status-{{ game.status }}">
{{ getStatusLabel(game.status) }} {{ getStatusLabel(game.status) }}
</span> </span>
@@ -898,6 +903,14 @@ import { Game, GameStatus, CreateGameDto, UpdateGameDto, Comment, SuggestionEnti
margin: 0.5rem 0; margin: 0.5rem 0;
} }
.series {
color: #8b6f47;
font-size: 0.85rem;
margin: 0.5rem 0;
font-weight: 500;
font-style: italic;
}
.status { .status {
display: inline-block; display: inline-block;
padding: 0.25rem 0.5rem; padding: 0.25rem 0.5rem;
@@ -1542,7 +1555,9 @@ export class GamesListComponent implements OnInit {
notes: game.notes, notes: game.notes,
coverImage: game.coverImage, coverImage: game.coverImage,
tags: [...(game.tags || [])], tags: [...(game.tags || [])],
links: [...(game.links || [])] links: [...(game.links || [])],
series: game.series,
seriesOrder: game.seriesOrder
}; };
this.editGameImagePreview.set(game.coverImage || null); this.editGameImagePreview.set(game.coverImage || null);
this.showAddForm.set(false); this.showAddForm.set(false);