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}} -
+
@@ -95,7 +95,7 @@
- +