diff --git a/API/Data/Repositories/SeriesRepository.cs b/API/Data/Repositories/SeriesRepository.cs
index 46b591ee2..04215c9ca 100644
--- a/API/Data/Repositories/SeriesRepository.cs
+++ b/API/Data/Repositories/SeriesRepository.cs
@@ -348,11 +348,11 @@ public class SeriesRepository : ISeriesRepository
result.Series = _context.Series
.Where(s => libraryIds.Contains(s.LibraryId))
- .Where(s => (EF.Functions.Like(s.Name, $"%{searchQuery}%")
+ .Where(s => EF.Functions.Like(s.Name, $"%{searchQuery}%")
|| (s.OriginalName != null && EF.Functions.Like(s.OriginalName, $"%{searchQuery}%"))
|| (s.LocalizedName != null && EF.Functions.Like(s.LocalizedName, $"%{searchQuery}%"))
|| (EF.Functions.Like(s.NormalizedName, $"%{searchQueryNormalized}%"))
- || (hasYearInQuery && s.Metadata.ReleaseYear == yearComparison)))
+ || (hasYearInQuery && s.Metadata.ReleaseYear == yearComparison))
.RestrictAgainstAgeRestriction(userRating)
.Include(s => s.Library)
.OrderBy(s => s.SortName!.ToLower())
@@ -430,7 +430,9 @@ public class SeriesRepository : ISeriesRepository
result.Chapters = await _context.Chapter
.Include(c => c.Files)
- .Where(c => EF.Functions.Like(c.TitleName, $"%{searchQuery}%"))
+ .Where(c => EF.Functions.Like(c.TitleName, $"%{searchQuery}%")
+ || EF.Functions.Like(c.ISBN, $"%{searchQuery}%")
+ )
.Where(c => c.Files.All(f => fileIds.Contains(f.Id)))
.AsSplitQuery()
.Take(maxRecords)
diff --git a/API/Data/Seed.cs b/API/Data/Seed.cs
index fb7e97f40..24f0236f5 100644
--- a/API/Data/Seed.cs
+++ b/API/Data/Seed.cs
@@ -144,14 +144,4 @@ public static class Seed
}
await context.SaveChangesAsync();
}
-
- // ///
- // /// Responsible to copy (not overwrite) a set of favicons that Kavita can't parse from websites.
- // ///
- // ///
- // ///
- // public static Task SeedFavicons(IDirectoryService directoryService)
- // {
- //
- // }
}
diff --git a/UI/Web/package-lock.json b/UI/Web/package-lock.json
index ad859003c..d36b59c0b 100644
--- a/UI/Web/package-lock.json
+++ b/UI/Web/package-lock.json
@@ -22,7 +22,7 @@
"@iharbeck/ngx-virtual-scroller": "^16.0.0",
"@iplab/ngx-file-upload": "^16.0.1",
"@microsoft/signalr": "^7.0.5",
- "@ng-bootstrap/ng-bootstrap": "^14.1.1",
+ "@ng-bootstrap/ng-bootstrap": "^15.0.0",
"@popperjs/core": "^2.11.7",
"@swimlane/ngx-charts": "^20.1.2",
"@tweenjs/tween.js": "^20.0.3",
@@ -3697,17 +3697,17 @@
}
},
"node_modules/@ng-bootstrap/ng-bootstrap": {
- "version": "14.1.1",
- "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-14.1.1.tgz",
- "integrity": "sha512-3EIc+lCmqUlr7sghzx0r28sjk771zvyqe3SXkrT7grYFzQCVbjtms6Wr9OPbdbmpqDNXG6a8llUoyVgtp1B2Tg==",
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-15.0.0.tgz",
+ "integrity": "sha512-BA/SI7sURpKwIex6bj2ujL+xUh8oYMrc5POdGC8sVe+yX3NRS0xNbozI6oke6pL2PpYq+/zaJTmuEJsEMCplZA==",
"dependencies": {
"tslib": "^2.3.0"
},
"peerDependencies": {
- "@angular/common": "^15.0.0",
- "@angular/core": "^15.0.0",
- "@angular/forms": "^15.0.0",
- "@angular/localize": "^15.0.0",
+ "@angular/common": "^16.0.0",
+ "@angular/core": "^16.0.0",
+ "@angular/forms": "^16.0.0",
+ "@angular/localize": "^16.0.0",
"@popperjs/core": "^2.11.6",
"rxjs": "^6.5.3 || ^7.4.0"
}
diff --git a/UI/Web/package.json b/UI/Web/package.json
index c8ce75425..67d222454 100644
--- a/UI/Web/package.json
+++ b/UI/Web/package.json
@@ -26,7 +26,7 @@
"@iharbeck/ngx-virtual-scroller": "^16.0.0",
"@iplab/ngx-file-upload": "^16.0.1",
"@microsoft/signalr": "^7.0.5",
- "@ng-bootstrap/ng-bootstrap": "^14.1.1",
+ "@ng-bootstrap/ng-bootstrap": "^15.0.0",
"@popperjs/core": "^2.11.7",
"@swimlane/ngx-charts": "^20.1.2",
"@tweenjs/tween.js": "^20.0.3",
diff --git a/UI/Web/src/app/bookmark/_components/bookmarks/bookmarks.component.ts b/UI/Web/src/app/bookmark/_components/bookmarks/bookmarks.component.ts
index 1c0573d6c..9a19f0acc 100644
--- a/UI/Web/src/app/bookmark/_components/bookmarks/bookmarks.component.ts
+++ b/UI/Web/src/app/bookmark/_components/bookmarks/bookmarks.component.ts
@@ -47,12 +47,12 @@ export class BookmarksComponent implements OnInit, OnDestroy {
refresh: EventEmitter = new EventEmitter();
private onDestroy: Subject = new Subject();
-
- constructor(private readerService: ReaderService, private seriesService: SeriesService,
+
+ constructor(private readerService: ReaderService, private seriesService: SeriesService,
private downloadService: DownloadService, private toastr: ToastrService,
- private confirmService: ConfirmService, public bulkSelectionService: BulkSelectionService,
+ private confirmService: ConfirmService, public bulkSelectionService: BulkSelectionService,
public imageService: ImageService, private actionFactoryService: ActionFactoryService,
- private router: Router, private readonly cdRef: ChangeDetectorRef,
+ private router: Router, private readonly cdRef: ChangeDetectorRef,
private filterUtilityService: FilterUtilitiesService, private route: ActivatedRoute,
private jumpbarService: JumpbarService) {
this.filterSettings.ageRatingDisabled = true;
diff --git a/UI/Web/src/app/cards/card-detail-layout/card-detail-layout.component.ts b/UI/Web/src/app/cards/card-detail-layout/card-detail-layout.component.ts
index 294da3a92..8372b8a44 100644
--- a/UI/Web/src/app/cards/card-detail-layout/card-detail-layout.component.ts
+++ b/UI/Web/src/app/cards/card-detail-layout/card-detail-layout.component.ts
@@ -1,7 +1,22 @@
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { DOCUMENT } from '@angular/common';
-import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, HostListener,
- Inject, Input, OnChanges, OnDestroy, OnInit, Output, TemplateRef, TrackByFunction, ViewChild } from '@angular/core';
+import {
+ ChangeDetectionStrategy,
+ ChangeDetectorRef,
+ Component,
+ ContentChild,
+ ElementRef,
+ EventEmitter,
+ HostListener,
+ Inject,
+ Input,
+ OnChanges,
+ OnInit,
+ Output,
+ TemplateRef,
+ TrackByFunction,
+ ViewChild
+} from '@angular/core';
import { Router } from '@angular/router';
import { VirtualScrollerComponent } from '@iharbeck/ngx-virtual-scroller';
import { Subject } from 'rxjs';
@@ -22,7 +37,7 @@ import { ScrollService } from 'src/app/_services/scroll.service';
styleUrls: ['./card-detail-layout.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
-export class CardDetailLayoutComponent implements OnInit, OnDestroy, OnChanges {
+export class CardDetailLayoutComponent implements OnInit, OnChanges {
@Input() header: string = '';
@Input() isLoading: boolean = false;
@@ -67,8 +82,6 @@ export class CardDetailLayoutComponent implements OnInit, OnDestroy, OnChanges {
updateApplied: number = 0;
hasResumedJumpKey: boolean = false;
- private onDestory: Subject = new Subject();
-
get Breakpoint() {
return Breakpoint;
}
@@ -99,6 +112,8 @@ export class CardDetailLayoutComponent implements OnInit, OnDestroy, OnChanges {
this.changeDetectionRef.markForCheck();
}
+ console.log('filterSettings: ', this.filterSettings)
+
if (this.pagination === undefined) {
this.pagination = {currentPage: 1, itemsPerPage: this.items.length, totalItems: this.items.length, totalPages: 1};
this.changeDetectionRef.markForCheck();
@@ -138,14 +153,8 @@ export class CardDetailLayoutComponent implements OnInit, OnDestroy, OnChanges {
}
}
-
- ngOnDestroy() {
- this.onDestory.next();
- this.onDestory.complete();
- }
-
hasCustomSort() {
- return this.filter.sortOptions !== null || this.filterSettings?.presets?.sortOptions !== null;
+ return this.filter.sortOptions !== null || this.filterSettings?.presets?.sortOptions !== undefined;
}
performAction(action: ActionItem) {
diff --git a/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html b/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html
index 6dbd498d5..a669d786a 100644
--- a/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html
+++ b/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html
@@ -27,7 +27,7 @@
-
+
@@ -40,10 +40,10 @@
-
+
-
+
@@ -52,7 +52,7 @@
-
+
@@ -63,7 +63,7 @@
{{unreadCount}}
-
-
+