feat: add retired category

This commit is contained in:
2026-02-19 15:34:05 -08:00
parent afdcc346dd
commit 603398b0e1
11 changed files with 65 additions and 0 deletions
+5
View File
@@ -41,6 +41,7 @@ enum GameStatus {
PLAYING PLAYING
COMPLETED COMPLETED
BACKLOG BACKLOG
RETIRED
} }
model Book { model Book {
@@ -66,6 +67,7 @@ enum BookStatus {
READING READING
FINISHED FINISHED
TO_READ TO_READ
RETIRED
} }
model Music { model Music {
@@ -98,6 +100,7 @@ enum MusicStatus {
LISTENING LISTENING
COMPLETED COMPLETED
WANT_TO_LISTEN WANT_TO_LISTEN
RETIRED
} }
model Art { model Art {
@@ -144,6 +147,7 @@ enum ShowStatus {
WATCHING WATCHING
COMPLETED COMPLETED
WANT_TO_WATCH WANT_TO_WATCH
RETIRED
} }
model Manga { model Manga {
@@ -169,6 +173,7 @@ enum MangaStatus {
READING READING
COMPLETED COMPLETED
WANT_TO_READ WANT_TO_READ
RETIRED
} }
model User { model User {
@@ -79,6 +79,7 @@ import { Book, BookStatus, CreateBookDto, UpdateBookDto, Comment, SuggestionEnti
<option [value]="BookStatus.reading">Currently Reading</option> <option [value]="BookStatus.reading">Currently Reading</option>
<option [value]="BookStatus.finished">Finished</option> <option [value]="BookStatus.finished">Finished</option>
<option [value]="BookStatus.toRead">To Read</option> <option [value]="BookStatus.toRead">To Read</option>
<option [value]="BookStatus.retired">Retired</option>
</select> </select>
</div> </div>
@@ -240,6 +241,7 @@ import { Book, BookStatus, CreateBookDto, UpdateBookDto, Comment, SuggestionEnti
<option [value]="BookStatus.reading">Currently Reading</option> <option [value]="BookStatus.reading">Currently Reading</option>
<option [value]="BookStatus.finished">Finished</option> <option [value]="BookStatus.finished">Finished</option>
<option [value]="BookStatus.toRead">To Read</option> <option [value]="BookStatus.toRead">To Read</option>
<option [value]="BookStatus.retired">Retired</option>
</select> </select>
</div> </div>
@@ -510,6 +512,13 @@ import { Book, BookStatus, CreateBookDto, UpdateBookDto, Comment, SuggestionEnti
> >
To Read ({{ toReadCount() }}) To Read ({{ toReadCount() }})
</button> </button>
<button
(click)="setFilter(BookStatus.retired)"
[class.active]="statusFilter() === BookStatus.retired"
class="filter-btn"
>
Retired ({{ retiredCount() }})
</button>
</div> </div>
@if (loading()) { @if (loading()) {
@@ -1473,6 +1482,7 @@ export class BooksListComponent implements OnInit {
readingCount = computed(() => this.books().filter(book => book.status === BookStatus.reading).length); readingCount = computed(() => this.books().filter(book => book.status === BookStatus.reading).length);
finishedCount = computed(() => this.books().filter(book => book.status === BookStatus.finished).length); finishedCount = computed(() => this.books().filter(book => book.status === BookStatus.finished).length);
toReadCount = computed(() => this.books().filter(book => book.status === BookStatus.toRead).length); toReadCount = computed(() => this.books().filter(book => book.status === BookStatus.toRead).length);
retiredCount = computed(() => this.books().filter(book => book.status === BookStatus.retired).length);
// Get all unique tags from all books // Get all unique tags from all books
allTags = computed(() => { allTags = computed(() => {
@@ -1610,6 +1620,7 @@ export class BooksListComponent implements OnInit {
case BookStatus.reading: return 'Currently Reading'; case BookStatus.reading: return 'Currently Reading';
case BookStatus.finished: return 'Finished'; case BookStatus.finished: return 'Finished';
case BookStatus.toRead: return 'To Read'; case BookStatus.toRead: return 'To Read';
case BookStatus.retired: return 'Retired';
} }
} }
@@ -67,6 +67,7 @@ import { Game, GameStatus, CreateGameDto, UpdateGameDto, Comment, SuggestionEnti
<option [value]="GameStatus.playing">Currently Playing</option> <option [value]="GameStatus.playing">Currently Playing</option>
<option [value]="GameStatus.completed">Completed</option> <option [value]="GameStatus.completed">Completed</option>
<option [value]="GameStatus.backlog">In Backlog</option> <option [value]="GameStatus.backlog">In Backlog</option>
<option [value]="GameStatus.retired">Retired</option>
</select> </select>
</div> </div>
@@ -216,6 +217,7 @@ import { Game, GameStatus, CreateGameDto, UpdateGameDto, Comment, SuggestionEnti
<option [value]="GameStatus.playing">Currently Playing</option> <option [value]="GameStatus.playing">Currently Playing</option>
<option [value]="GameStatus.completed">Completed</option> <option [value]="GameStatus.completed">Completed</option>
<option [value]="GameStatus.backlog">In Backlog</option> <option [value]="GameStatus.backlog">In Backlog</option>
<option [value]="GameStatus.retired">Retired</option>
</select> </select>
</div> </div>
@@ -472,6 +474,13 @@ import { Game, GameStatus, CreateGameDto, UpdateGameDto, Comment, SuggestionEnti
> >
Backlog ({{ backlogCount() }}) Backlog ({{ backlogCount() }})
</button> </button>
<button
(click)="setFilter(GameStatus.retired)"
[class.active]="statusFilter() === GameStatus.retired"
class="filter-btn"
>
Retired ({{ retiredCount() }})
</button>
</div> </div>
@if (loading()) { @if (loading()) {
@@ -1278,6 +1287,7 @@ export class GamesListComponent implements OnInit {
playingCount = computed(() => this.games().filter(game => game.status === GameStatus.playing).length); playingCount = computed(() => this.games().filter(game => game.status === GameStatus.playing).length);
completedCount = computed(() => this.games().filter(game => game.status === GameStatus.completed).length); completedCount = computed(() => this.games().filter(game => game.status === GameStatus.completed).length);
backlogCount = computed(() => this.games().filter(game => game.status === GameStatus.backlog).length); backlogCount = computed(() => this.games().filter(game => game.status === GameStatus.backlog).length);
retiredCount = computed(() => this.games().filter(game => game.status === GameStatus.retired).length);
allTags = computed(() => { allTags = computed(() => {
const tagsSet = new Set<string>(); const tagsSet = new Set<string>();
@@ -1408,6 +1418,7 @@ export class GamesListComponent implements OnInit {
case GameStatus.playing: return 'Currently Playing'; case GameStatus.playing: return 'Currently Playing';
case GameStatus.completed: return 'Completed'; case GameStatus.completed: return 'Completed';
case GameStatus.backlog: return 'In Backlog'; case GameStatus.backlog: return 'In Backlog';
case GameStatus.retired: return 'Retired';
} }
} }
@@ -68,6 +68,7 @@ import { Manga, MangaStatus, CreateMangaDto, UpdateMangaDto, Comment, Suggestion
<option [value]="MangaStatus.reading">Currently Reading</option> <option [value]="MangaStatus.reading">Currently Reading</option>
<option [value]="MangaStatus.completed">Completed</option> <option [value]="MangaStatus.completed">Completed</option>
<option [value]="MangaStatus.wantToRead">Want to Read</option> <option [value]="MangaStatus.wantToRead">Want to Read</option>
<option [value]="MangaStatus.retired">Retired</option>
</select> </select>
</div> </div>
@@ -218,6 +219,7 @@ import { Manga, MangaStatus, CreateMangaDto, UpdateMangaDto, Comment, Suggestion
<option [value]="MangaStatus.reading">Currently Reading</option> <option [value]="MangaStatus.reading">Currently Reading</option>
<option [value]="MangaStatus.completed">Completed</option> <option [value]="MangaStatus.completed">Completed</option>
<option [value]="MangaStatus.wantToRead">Want to Read</option> <option [value]="MangaStatus.wantToRead">Want to Read</option>
<option [value]="MangaStatus.retired">Retired</option>
</select> </select>
</div> </div>
@@ -475,6 +477,13 @@ import { Manga, MangaStatus, CreateMangaDto, UpdateMangaDto, Comment, Suggestion
> >
Want to Read ({{ wantToReadCount() }}) Want to Read ({{ wantToReadCount() }})
</button> </button>
<button
(click)="setFilter(MangaStatus.retired)"
[class.active]="statusFilter() === MangaStatus.retired"
class="filter-btn"
>
Retired ({{ retiredCount() }})
</button>
</div> </div>
@if (loading()) { @if (loading()) {
@@ -1285,6 +1294,7 @@ export class MangaListComponent implements OnInit {
readingCount = computed(() => this.mangaList().filter(m => m.status === MangaStatus.reading).length); readingCount = computed(() => this.mangaList().filter(m => m.status === MangaStatus.reading).length);
completedCount = computed(() => this.mangaList().filter(m => m.status === MangaStatus.completed).length); completedCount = computed(() => this.mangaList().filter(m => m.status === MangaStatus.completed).length);
wantToReadCount = computed(() => this.mangaList().filter(m => m.status === MangaStatus.wantToRead).length); wantToReadCount = computed(() => this.mangaList().filter(m => m.status === MangaStatus.wantToRead).length);
retiredCount = computed(() => this.mangaList().filter(m => m.status === MangaStatus.retired).length);
allTags = computed(() => { allTags = computed(() => {
const tagsSet = new Set<string>(); const tagsSet = new Set<string>();
@@ -1415,6 +1425,7 @@ export class MangaListComponent implements OnInit {
case MangaStatus.reading: return 'Currently Reading'; case MangaStatus.reading: return 'Currently Reading';
case MangaStatus.completed: return 'Completed'; case MangaStatus.completed: return 'Completed';
case MangaStatus.wantToRead: return 'Want to Read'; case MangaStatus.wantToRead: return 'Want to Read';
case MangaStatus.retired: return 'Retired';
} }
} }
@@ -77,6 +77,7 @@ import { Music, MusicStatus, MusicType, CreateMusicDto, UpdateMusicDto, Comment,
<option [value]="MusicStatus.listening">Currently Listening</option> <option [value]="MusicStatus.listening">Currently Listening</option>
<option [value]="MusicStatus.completed">Completed</option> <option [value]="MusicStatus.completed">Completed</option>
<option [value]="MusicStatus.wantToListen">Want to Listen</option> <option [value]="MusicStatus.wantToListen">Want to Listen</option>
<option [value]="MusicStatus.retired">Retired</option>
</select> </select>
</div> </div>
@@ -236,6 +237,7 @@ import { Music, MusicStatus, MusicType, CreateMusicDto, UpdateMusicDto, Comment,
<option [value]="MusicStatus.listening">Currently Listening</option> <option [value]="MusicStatus.listening">Currently Listening</option>
<option [value]="MusicStatus.completed">Completed</option> <option [value]="MusicStatus.completed">Completed</option>
<option [value]="MusicStatus.wantToListen">Want to Listen</option> <option [value]="MusicStatus.wantToListen">Want to Listen</option>
<option [value]="MusicStatus.retired">Retired</option>
</select> </select>
</div> </div>
@@ -536,6 +538,13 @@ import { Music, MusicStatus, MusicType, CreateMusicDto, UpdateMusicDto, Comment,
> >
Want to Listen ({{ wantToListenCount() }}) Want to Listen ({{ wantToListenCount() }})
</button> </button>
<button
(click)="setStatusFilter(MusicStatus.retired)"
[class.active]="statusFilter() === MusicStatus.retired"
class="filter-btn"
>
Retired ({{ retiredCount() }})
</button>
</div> </div>
</div> </div>
@@ -1492,6 +1501,7 @@ export class MusicListComponent implements OnInit {
listeningCount = computed(() => this.music().filter(m => m.status === MusicStatus.listening).length); listeningCount = computed(() => this.music().filter(m => m.status === MusicStatus.listening).length);
completedCount = computed(() => this.music().filter(m => m.status === MusicStatus.completed).length); completedCount = computed(() => this.music().filter(m => m.status === MusicStatus.completed).length);
wantToListenCount = computed(() => this.music().filter(m => m.status === MusicStatus.wantToListen).length); wantToListenCount = computed(() => this.music().filter(m => m.status === MusicStatus.wantToListen).length);
retiredCount = computed(() => this.music().filter(m => m.status === MusicStatus.retired).length);
allTags = computed(() => { allTags = computed(() => {
const tagsSet = new Set<string>(); const tagsSet = new Set<string>();
@@ -1642,6 +1652,7 @@ export class MusicListComponent implements OnInit {
case MusicStatus.listening: return 'Currently Listening'; case MusicStatus.listening: return 'Currently Listening';
case MusicStatus.completed: return 'Completed'; case MusicStatus.completed: return 'Completed';
case MusicStatus.wantToListen: return 'Want to Listen'; case MusicStatus.wantToListen: return 'Want to Listen';
case MusicStatus.retired: return 'Retired';
} }
} }
@@ -66,6 +66,7 @@ import { Show, ShowStatus, ShowType, CreateShowDto, UpdateShowDto, Comment, Sugg
<option [value]="ShowStatus.watching">Currently Watching</option> <option [value]="ShowStatus.watching">Currently Watching</option>
<option [value]="ShowStatus.completed">Completed</option> <option [value]="ShowStatus.completed">Completed</option>
<option [value]="ShowStatus.wantToWatch">Want to Watch</option> <option [value]="ShowStatus.wantToWatch">Want to Watch</option>
<option [value]="ShowStatus.retired">Retired</option>
</select> </select>
</div> </div>
@@ -214,6 +215,7 @@ import { Show, ShowStatus, ShowType, CreateShowDto, UpdateShowDto, Comment, Sugg
<option [value]="ShowStatus.watching">Currently Watching</option> <option [value]="ShowStatus.watching">Currently Watching</option>
<option [value]="ShowStatus.completed">Completed</option> <option [value]="ShowStatus.completed">Completed</option>
<option [value]="ShowStatus.wantToWatch">Want to Watch</option> <option [value]="ShowStatus.wantToWatch">Want to Watch</option>
<option [value]="ShowStatus.retired">Retired</option>
</select> </select>
</div> </div>
@@ -469,6 +471,13 @@ import { Show, ShowStatus, ShowType, CreateShowDto, UpdateShowDto, Comment, Sugg
> >
Want to Watch ({{ wantToWatchCount() }}) Want to Watch ({{ wantToWatchCount() }})
</button> </button>
<button
(click)="setFilter(ShowStatus.retired)"
[class.active]="statusFilter() === ShowStatus.retired"
class="filter-btn"
>
Retired ({{ retiredCount() }})
</button>
</div> </div>
@if (loading()) { @if (loading()) {
@@ -1279,6 +1288,7 @@ export class ShowsListComponent implements OnInit {
watchingCount = computed(() => this.shows().filter(show => show.status === ShowStatus.watching).length); watchingCount = computed(() => this.shows().filter(show => show.status === ShowStatus.watching).length);
completedCount = computed(() => this.shows().filter(show => show.status === ShowStatus.completed).length); completedCount = computed(() => this.shows().filter(show => show.status === ShowStatus.completed).length);
wantToWatchCount = computed(() => this.shows().filter(show => show.status === ShowStatus.wantToWatch).length); wantToWatchCount = computed(() => this.shows().filter(show => show.status === ShowStatus.wantToWatch).length);
retiredCount = computed(() => this.shows().filter(show => show.status === ShowStatus.retired).length);
allTags = computed(() => { allTags = computed(() => {
const tagsSet = new Set<string>(); const tagsSet = new Set<string>();
@@ -1409,6 +1419,7 @@ export class ShowsListComponent implements OnInit {
case ShowStatus.watching: return 'Currently Watching'; case ShowStatus.watching: return 'Currently Watching';
case ShowStatus.completed: return 'Completed'; case ShowStatus.completed: return 'Completed';
case ShowStatus.wantToWatch: return 'Want to Watch'; case ShowStatus.wantToWatch: return 'Want to Watch';
case ShowStatus.retired: return 'Retired';
} }
} }
+1
View File
@@ -10,6 +10,7 @@ enum BookStatus {
reading = "READING", reading = "READING",
finished = "FINISHED", finished = "FINISHED",
toRead = "TO_READ", toRead = "TO_READ",
retired = "RETIRED",
} }
interface Book { interface Book {
+1
View File
@@ -10,6 +10,7 @@ enum GameStatus {
playing = "PLAYING", playing = "PLAYING",
completed = "COMPLETED", completed = "COMPLETED",
backlog = "BACKLOG", backlog = "BACKLOG",
retired = "RETIRED",
} }
interface Game { interface Game {
+1
View File
@@ -10,6 +10,7 @@ enum MangaStatus {
reading = "READING", reading = "READING",
completed = "COMPLETED", completed = "COMPLETED",
wantToRead = "WANT_TO_READ", wantToRead = "WANT_TO_READ",
retired = "RETIRED",
} }
interface Manga { interface Manga {
+1
View File
@@ -16,6 +16,7 @@ enum MusicStatus {
listening = "LISTENING", listening = "LISTENING",
completed = "COMPLETED", completed = "COMPLETED",
wantToListen = "WANT_TO_LISTEN", wantToListen = "WANT_TO_LISTEN",
retired = "RETIRED",
} }
interface Music { interface Music {
+1
View File
@@ -17,6 +17,7 @@ enum ShowStatus {
watching = "WATCHING", watching = "WATCHING",
completed = "COMPLETED", completed = "COMPLETED",
wantToWatch = "WANT_TO_WATCH", wantToWatch = "WANT_TO_WATCH",
retired = "RETIRED",
} }
interface Show { interface Show {