diff --git a/booklore-ui/src/app/book/metadata/book-metadata-center/metadata-viewer/metadata-viewer.component.html b/booklore-ui/src/app/book/metadata/book-metadata-center/metadata-viewer/metadata-viewer.component.html index 8f49d42f0..df6de3273 100644 --- a/booklore-ui/src/app/book/metadata/book-metadata-center/metadata-viewer/metadata-viewer.component.html +++ b/booklore-ui/src/app/book/metadata/book-metadata-center/metadata-viewer/metadata-viewer.component.html @@ -29,8 +29,13 @@
- @if (book?.metadata!.seriesName) { -

{{ book?.metadata!.seriesName }} #{{ book?.metadata!.seriesNumber }}

+ @if (book?.metadata?.seriesName) { +

+ {{ book?.metadata?.seriesName }} + @if (book?.metadata?.seriesNumber) { + #{{ book?.metadata?.seriesNumber }} + } +

}

{{ book?.metadata!.title }}

@@ -163,7 +168,16 @@

-

Publisher: {{ book?.metadata!.publisher || '-' }}

+

+ Publisher: + @if (book?.metadata?.publisher) { + + {{ book?.metadata?.publisher }} + + } @else { + - + } +

Published: {{ book?.metadata!.publishedDate || '-' }}

Language: {{ book?.metadata!.language || '-' }}

ISBN 10: {{ book?.metadata!.isbn10 || '-' }}

@@ -311,12 +325,12 @@ @if (book.metadata!.description && book.metadata!.description.length > 100) {
} diff --git a/booklore-ui/src/app/book/metadata/book-metadata-center/metadata-viewer/metadata-viewer.component.ts b/booklore-ui/src/app/book/metadata/book-metadata-center/metadata-viewer/metadata-viewer.component.ts index b22c3733f..bde55c22c 100644 --- a/booklore-ui/src/app/book/metadata/book-metadata-center/metadata-viewer/metadata-viewer.component.ts +++ b/booklore-ui/src/app/book/metadata/book-metadata-center/metadata-viewer/metadata-viewer.component.ts @@ -374,47 +374,42 @@ export class MetadataViewerComponent implements OnInit, OnChanges { } goToAuthorBooks(author: string): void { - if (this.metadataCenterViewMode === 'dialog') { - this.dialogRef?.close(); - setTimeout(() => this.navigateToAuthorBooks(author), 200); - } else { - this.navigateToAuthorBooks(author); - } - } - - private navigateToAuthorBooks(author: string): void { - this.router.navigate(['/all-books'], { - queryParams: { - view: 'grid', - sort: 'title', - direction: 'asc', - sidebar: true, - filter: `author:${author}` - } - }); + this.handleMetadataClick('author', author); } goToCategory(category: string): void { - if (this.metadataCenterViewMode === 'dialog') { - this.dialogRef?.close(); - setTimeout(() => this.navigateToCategory(category), 200); - } else { - this.navigateToCategory(category); - } + this.handleMetadataClick('category', category); } - private navigateToCategory(category: string): void { + goToSeries(seriesName: string): void { + this.handleMetadataClick('series', seriesName); + } + + goToPublisher(publisher: string): void { + this.handleMetadataClick('publisher', publisher); + } + + private navigateToFilteredBooks(filterKey: string, filterValue: string): void { this.router.navigate(['/all-books'], { queryParams: { view: 'grid', sort: 'title', direction: 'asc', sidebar: true, - filter: `category:${category}` + filter: `${filterKey}:${filterValue}` } }); } + private handleMetadataClick(filterKey: string, filterValue: string): void { + if (this.metadataCenterViewMode === 'dialog') { + this.dialogRef?.close(); + setTimeout(() => this.navigateToFilteredBooks(filterKey, filterValue), 200); + } else { + this.navigateToFilteredBooks(filterKey, filterValue); + } + } + getStatusSeverity(status: string): 'success' | 'secondary' | 'info' | 'warn' | 'danger' | undefined { const normalized = status?.toUpperCase(); if (['UNREAD', 'PAUSED'].includes(normalized)) return 'secondary';