diff --git a/API/Extensions/QueryExtensions/RestrictByAgeExtensions.cs b/API/Extensions/QueryExtensions/RestrictByAgeExtensions.cs index 32bae74cb..aef595596 100644 --- a/API/Extensions/QueryExtensions/RestrictByAgeExtensions.cs +++ b/API/Extensions/QueryExtensions/RestrictByAgeExtensions.cs @@ -27,18 +27,6 @@ public static class RestrictByAgeExtensions return q; } - public static IQueryable RestrictAgainstAgeRestriction(this IQueryable queryable, AgeRestriction restriction) - { - if (restriction.AgeRating == AgeRating.NotApplicable) return queryable; - var q = queryable.Where(s => s.AgeRating <= restriction.AgeRating); - - if (!restriction.IncludeUnknowns) - { - return q.Where(s => s.AgeRating != AgeRating.Unknown); - } - - return q; - } public static IQueryable RestrictAgainstAgeRestriction(this IQueryable queryable, AgeRestriction restriction) { @@ -53,20 +41,6 @@ public static class RestrictByAgeExtensions return q; } - [Obsolete] - public static IQueryable RestrictAgainstAgeRestriction(this IQueryable queryable, AgeRestriction restriction) - { - if (restriction.AgeRating == AgeRating.NotApplicable) return queryable; - - if (restriction.IncludeUnknowns) - { - return queryable.Where(c => c.SeriesMetadatas.All(sm => - sm.AgeRating <= restriction.AgeRating)); - } - - return queryable.Where(c => c.SeriesMetadatas.All(sm => - sm.AgeRating <= restriction.AgeRating && sm.AgeRating > AgeRating.Unknown)); - } public static IQueryable RestrictAgainstAgeRestriction(this IQueryable queryable, AgeRestriction restriction) { @@ -88,12 +62,15 @@ public static class RestrictByAgeExtensions if (restriction.IncludeUnknowns) { - return queryable.Where(c => c.SeriesMetadatas.All(sm => - sm.AgeRating <= restriction.AgeRating)); + return queryable.Where(c => + c.SeriesMetadatas.Any(sm => sm.AgeRating <= restriction.AgeRating) || + c.Chapters.Any(cp => cp.AgeRating <= restriction.AgeRating)); } - return queryable.Where(c => c.SeriesMetadatas.All(sm => - sm.AgeRating <= restriction.AgeRating && sm.AgeRating > AgeRating.Unknown)); + return queryable.Where(c => + c.SeriesMetadatas.Any(sm => sm.AgeRating <= restriction.AgeRating && sm.AgeRating != AgeRating.Unknown) || + c.Chapters.Any(cp => cp.AgeRating <= restriction.AgeRating && cp.AgeRating != AgeRating.Unknown) + ); } public static IQueryable RestrictAgainstAgeRestriction(this IQueryable queryable, AgeRestriction restriction) @@ -102,12 +79,15 @@ public static class RestrictByAgeExtensions if (restriction.IncludeUnknowns) { - return queryable.Where(c => c.SeriesMetadatas.All(sm => - sm.AgeRating <= restriction.AgeRating)); + return queryable.Where(c => + c.SeriesMetadatas.Any(sm => sm.AgeRating <= restriction.AgeRating) || + c.Chapters.Any(cp => cp.AgeRating <= restriction.AgeRating)); } - return queryable.Where(c => c.SeriesMetadatas.All(sm => - sm.AgeRating <= restriction.AgeRating && sm.AgeRating > AgeRating.Unknown)); + return queryable.Where(c => + c.SeriesMetadatas.Any(sm => sm.AgeRating <= restriction.AgeRating && sm.AgeRating != AgeRating.Unknown) || + c.Chapters.Any(cp => cp.AgeRating <= restriction.AgeRating && cp.AgeRating != AgeRating.Unknown) + ); } public static IQueryable RestrictAgainstAgeRestriction(this IQueryable queryable, AgeRestriction restriction) diff --git a/UI/Web/src/app/browse/browse-genres/browse-genres.component.ts b/UI/Web/src/app/browse/browse-genres/browse-genres.component.ts index ae1ab3817..02c2a8ead 100644 --- a/UI/Web/src/app/browse/browse-genres/browse-genres.component.ts +++ b/UI/Web/src/app/browse/browse-genres/browse-genres.component.ts @@ -4,7 +4,7 @@ import {DecimalPipe} from "@angular/common"; import { SideNavCompanionBarComponent } from "../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component"; -import {TranslocoDirective} from "@jsverse/transloco"; +import {translate, TranslocoDirective} from "@jsverse/transloco"; import {JumpbarService} from "../../_services/jumpbar.service"; import {BrowsePerson} from "../../_models/metadata/browse/browse-person"; import {Pagination} from "../../_models/pagination"; @@ -15,6 +15,7 @@ import {FilterField} from "../../_models/metadata/v2/filter-field"; import {FilterComparison} from "../../_models/metadata/v2/filter-comparison"; import {FilterUtilitiesService} from "../../shared/_services/filter-utilities.service"; import {CompactNumberPipe} from "../../_pipes/compact-number.pipe"; +import {Title} from "@angular/platform-browser"; @Component({ selector: 'app-browse-genres', @@ -36,7 +37,8 @@ export class BrowseGenresComponent implements OnInit { private readonly cdRef = inject(ChangeDetectorRef); private readonly metadataService = inject(MetadataService); private readonly jumpbarService = inject(JumpbarService); - protected readonly filterUtilityService = inject(FilterUtilitiesService); + private readonly filterUtilityService = inject(FilterUtilitiesService); + private readonly titleService = inject(Title); isLoading = false; genres: Array = []; @@ -48,6 +50,9 @@ export class BrowseGenresComponent implements OnInit { ngOnInit() { this.isLoading = true; this.cdRef.markForCheck(); + + this.titleService.setTitle('Kavita - ' + translate('browse-genres.title')); + this.metadataService.getGenreWithCounts(undefined, undefined).subscribe(d => { this.genres = d.result; this.pagination = d.pagination; @@ -60,6 +65,4 @@ export class BrowseGenresComponent implements OnInit { openFilter(field: FilterField, value: string | number) { this.filterUtilityService.applyFilter(['all-series'], field, FilterComparison.Equal, `${value}`).subscribe(); } - - } diff --git a/UI/Web/src/app/browse/browse-tags/browse-tags.component.ts b/UI/Web/src/app/browse/browse-tags/browse-tags.component.ts index 33440ccde..92910b0b9 100644 --- a/UI/Web/src/app/browse/browse-tags/browse-tags.component.ts +++ b/UI/Web/src/app/browse/browse-tags/browse-tags.component.ts @@ -4,7 +4,7 @@ import {DecimalPipe} from "@angular/common"; import { SideNavCompanionBarComponent } from "../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component"; -import {TranslocoDirective} from "@jsverse/transloco"; +import {translate, TranslocoDirective} from "@jsverse/transloco"; import {MetadataService} from "../../_services/metadata.service"; import {JumpbarService} from "../../_services/jumpbar.service"; import {FilterUtilitiesService} from "../../shared/_services/filter-utilities.service"; @@ -16,6 +16,7 @@ import {FilterField} from "../../_models/metadata/v2/filter-field"; import {FilterComparison} from "../../_models/metadata/v2/filter-comparison"; import {BrowseTag} from "../../_models/metadata/browse/browse-tag"; import {CompactNumberPipe} from "../../_pipes/compact-number.pipe"; +import {Title} from "@angular/platform-browser"; @Component({ selector: 'app-browse-tags', @@ -37,6 +38,7 @@ export class BrowseTagsComponent implements OnInit { private readonly metadataService = inject(MetadataService); private readonly jumpbarService = inject(JumpbarService); protected readonly filterUtilityService = inject(FilterUtilitiesService); + private readonly titleService = inject(Title); isLoading = false; tags: Array = []; @@ -48,6 +50,8 @@ export class BrowseTagsComponent implements OnInit { ngOnInit() { this.isLoading = true; this.cdRef.markForCheck(); + this.titleService.setTitle('Kavita - ' + translate('browse-tags.title')); + this.metadataService.getTagWithCounts(undefined, undefined).subscribe(d => { this.tags = d.result; this.pagination = d.pagination;