Fixed a great catch by Amelia on age rating restriction for Genre/Tag. Clean up some dead extension methods too.
This commit is contained in:
parent
0d4825ae14
commit
fc55b7f1b8
3 changed files with 26 additions and 39 deletions
|
|
@ -27,18 +27,6 @@ public static class RestrictByAgeExtensions
|
||||||
return q;
|
return q;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IQueryable<SeriesMetadata> RestrictAgainstAgeRestriction(this IQueryable<SeriesMetadata> 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<Chapter> RestrictAgainstAgeRestriction(this IQueryable<Chapter> queryable, AgeRestriction restriction)
|
public static IQueryable<Chapter> RestrictAgainstAgeRestriction(this IQueryable<Chapter> queryable, AgeRestriction restriction)
|
||||||
{
|
{
|
||||||
|
|
@ -53,20 +41,6 @@ public static class RestrictByAgeExtensions
|
||||||
return q;
|
return q;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Obsolete]
|
|
||||||
public static IQueryable<CollectionTag> RestrictAgainstAgeRestriction(this IQueryable<CollectionTag> 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<AppUserCollection> RestrictAgainstAgeRestriction(this IQueryable<AppUserCollection> queryable, AgeRestriction restriction)
|
public static IQueryable<AppUserCollection> RestrictAgainstAgeRestriction(this IQueryable<AppUserCollection> queryable, AgeRestriction restriction)
|
||||||
{
|
{
|
||||||
|
|
@ -88,12 +62,15 @@ public static class RestrictByAgeExtensions
|
||||||
|
|
||||||
if (restriction.IncludeUnknowns)
|
if (restriction.IncludeUnknowns)
|
||||||
{
|
{
|
||||||
return queryable.Where(c => c.SeriesMetadatas.All(sm =>
|
return queryable.Where(c =>
|
||||||
sm.AgeRating <= restriction.AgeRating));
|
c.SeriesMetadatas.Any(sm => sm.AgeRating <= restriction.AgeRating) ||
|
||||||
|
c.Chapters.Any(cp => cp.AgeRating <= restriction.AgeRating));
|
||||||
}
|
}
|
||||||
|
|
||||||
return queryable.Where(c => c.SeriesMetadatas.All(sm =>
|
return queryable.Where(c =>
|
||||||
sm.AgeRating <= restriction.AgeRating && sm.AgeRating > AgeRating.Unknown));
|
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<Tag> RestrictAgainstAgeRestriction(this IQueryable<Tag> queryable, AgeRestriction restriction)
|
public static IQueryable<Tag> RestrictAgainstAgeRestriction(this IQueryable<Tag> queryable, AgeRestriction restriction)
|
||||||
|
|
@ -102,12 +79,15 @@ public static class RestrictByAgeExtensions
|
||||||
|
|
||||||
if (restriction.IncludeUnknowns)
|
if (restriction.IncludeUnknowns)
|
||||||
{
|
{
|
||||||
return queryable.Where(c => c.SeriesMetadatas.All(sm =>
|
return queryable.Where(c =>
|
||||||
sm.AgeRating <= restriction.AgeRating));
|
c.SeriesMetadatas.Any(sm => sm.AgeRating <= restriction.AgeRating) ||
|
||||||
|
c.Chapters.Any(cp => cp.AgeRating <= restriction.AgeRating));
|
||||||
}
|
}
|
||||||
|
|
||||||
return queryable.Where(c => c.SeriesMetadatas.All(sm =>
|
return queryable.Where(c =>
|
||||||
sm.AgeRating <= restriction.AgeRating && sm.AgeRating > AgeRating.Unknown));
|
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<Person> RestrictAgainstAgeRestriction(this IQueryable<Person> queryable, AgeRestriction restriction)
|
public static IQueryable<Person> RestrictAgainstAgeRestriction(this IQueryable<Person> queryable, AgeRestriction restriction)
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import {DecimalPipe} from "@angular/common";
|
||||||
import {
|
import {
|
||||||
SideNavCompanionBarComponent
|
SideNavCompanionBarComponent
|
||||||
} from "../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component";
|
} 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 {JumpbarService} from "../../_services/jumpbar.service";
|
||||||
import {BrowsePerson} from "../../_models/metadata/browse/browse-person";
|
import {BrowsePerson} from "../../_models/metadata/browse/browse-person";
|
||||||
import {Pagination} from "../../_models/pagination";
|
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 {FilterComparison} from "../../_models/metadata/v2/filter-comparison";
|
||||||
import {FilterUtilitiesService} from "../../shared/_services/filter-utilities.service";
|
import {FilterUtilitiesService} from "../../shared/_services/filter-utilities.service";
|
||||||
import {CompactNumberPipe} from "../../_pipes/compact-number.pipe";
|
import {CompactNumberPipe} from "../../_pipes/compact-number.pipe";
|
||||||
|
import {Title} from "@angular/platform-browser";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-browse-genres',
|
selector: 'app-browse-genres',
|
||||||
|
|
@ -36,7 +37,8 @@ export class BrowseGenresComponent implements OnInit {
|
||||||
private readonly cdRef = inject(ChangeDetectorRef);
|
private readonly cdRef = inject(ChangeDetectorRef);
|
||||||
private readonly metadataService = inject(MetadataService);
|
private readonly metadataService = inject(MetadataService);
|
||||||
private readonly jumpbarService = inject(JumpbarService);
|
private readonly jumpbarService = inject(JumpbarService);
|
||||||
protected readonly filterUtilityService = inject(FilterUtilitiesService);
|
private readonly filterUtilityService = inject(FilterUtilitiesService);
|
||||||
|
private readonly titleService = inject(Title);
|
||||||
|
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
genres: Array<BrowseGenre> = [];
|
genres: Array<BrowseGenre> = [];
|
||||||
|
|
@ -48,6 +50,9 @@ export class BrowseGenresComponent implements OnInit {
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
this.cdRef.markForCheck();
|
this.cdRef.markForCheck();
|
||||||
|
|
||||||
|
this.titleService.setTitle('Kavita - ' + translate('browse-genres.title'));
|
||||||
|
|
||||||
this.metadataService.getGenreWithCounts(undefined, undefined).subscribe(d => {
|
this.metadataService.getGenreWithCounts(undefined, undefined).subscribe(d => {
|
||||||
this.genres = d.result;
|
this.genres = d.result;
|
||||||
this.pagination = d.pagination;
|
this.pagination = d.pagination;
|
||||||
|
|
@ -60,6 +65,4 @@ export class BrowseGenresComponent implements OnInit {
|
||||||
openFilter(field: FilterField, value: string | number) {
|
openFilter(field: FilterField, value: string | number) {
|
||||||
this.filterUtilityService.applyFilter(['all-series'], field, FilterComparison.Equal, `${value}`).subscribe();
|
this.filterUtilityService.applyFilter(['all-series'], field, FilterComparison.Equal, `${value}`).subscribe();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import {DecimalPipe} from "@angular/common";
|
||||||
import {
|
import {
|
||||||
SideNavCompanionBarComponent
|
SideNavCompanionBarComponent
|
||||||
} from "../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component";
|
} 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 {MetadataService} from "../../_services/metadata.service";
|
||||||
import {JumpbarService} from "../../_services/jumpbar.service";
|
import {JumpbarService} from "../../_services/jumpbar.service";
|
||||||
import {FilterUtilitiesService} from "../../shared/_services/filter-utilities.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 {FilterComparison} from "../../_models/metadata/v2/filter-comparison";
|
||||||
import {BrowseTag} from "../../_models/metadata/browse/browse-tag";
|
import {BrowseTag} from "../../_models/metadata/browse/browse-tag";
|
||||||
import {CompactNumberPipe} from "../../_pipes/compact-number.pipe";
|
import {CompactNumberPipe} from "../../_pipes/compact-number.pipe";
|
||||||
|
import {Title} from "@angular/platform-browser";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-browse-tags',
|
selector: 'app-browse-tags',
|
||||||
|
|
@ -37,6 +38,7 @@ export class BrowseTagsComponent implements OnInit {
|
||||||
private readonly metadataService = inject(MetadataService);
|
private readonly metadataService = inject(MetadataService);
|
||||||
private readonly jumpbarService = inject(JumpbarService);
|
private readonly jumpbarService = inject(JumpbarService);
|
||||||
protected readonly filterUtilityService = inject(FilterUtilitiesService);
|
protected readonly filterUtilityService = inject(FilterUtilitiesService);
|
||||||
|
private readonly titleService = inject(Title);
|
||||||
|
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
tags: Array<BrowseTag> = [];
|
tags: Array<BrowseTag> = [];
|
||||||
|
|
@ -48,6 +50,8 @@ export class BrowseTagsComponent implements OnInit {
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
this.cdRef.markForCheck();
|
this.cdRef.markForCheck();
|
||||||
|
this.titleService.setTitle('Kavita - ' + translate('browse-tags.title'));
|
||||||
|
|
||||||
this.metadataService.getTagWithCounts(undefined, undefined).subscribe(d => {
|
this.metadataService.getTagWithCounts(undefined, undefined).subscribe(d => {
|
||||||
this.tags = d.result;
|
this.tags = d.result;
|
||||||
this.pagination = d.pagination;
|
this.pagination = d.pagination;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue