Removed some methods that aren't needed anymore.

This commit is contained in:
Joseph Milazzo 2025-06-13 16:47:47 -05:00
parent 154feb1c27
commit e99822cf28
9 changed files with 54 additions and 59 deletions

View file

@ -169,8 +169,8 @@ export class AllSeriesComponent implements OnInit {
}
this.filterActiveCheck = this.filterUtilityService.createSeriesV2Filter();
this.filterActiveCheck!.statements.push(this.filterUtilityService.createSeriesV2DefaultStatement());
this.filterActiveCheck = this.metadataService.createDefaultFilterDto('series');
this.filterActiveCheck.statements.push(this.metadataService.createDefaultFilterStatement('series') as FilterStatement<FilterField>);
this.filterSettings.presetsV2 = this.filter;
this.cdRef.markForCheck();

View file

@ -96,8 +96,8 @@ export class BookmarksComponent implements OnInit {
this.filter.statements.push(this.metadataService.createDefaultFilterStatement('series') as FilterStatement<FilterField>);
}
this.filterActiveCheck = this.filterUtilityService.createSeriesV2Filter();
this.filterActiveCheck!.statements.push(this.filterUtilityService.createSeriesV2DefaultStatement());
this.filterActiveCheck = this.metadataService.createDefaultFilterDto('series');
this.filterActiveCheck.statements.push(this.metadataService.createDefaultFilterStatement('series') as FilterStatement<FilterField>);
this.filterSettings.presetsV2 = this.filter;
this.filterSettings.statementLimit = 1;

View file

@ -193,7 +193,7 @@ export class CollectionDetailComponent implements OnInit, AfterContentChecked {
this.route.data.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(data => {
this.filter = data['filter'] as FilterV2<FilterField, SortField>;
const defaultStmt = {field: FilterField.CollectionTags, value: tagId + '', comparison: FilterComparison.Equal};
if (this.filter == null) {
@ -205,7 +205,7 @@ export class CollectionDetailComponent implements OnInit, AfterContentChecked {
this.filter!.statements.push(defaultStmt);
}
this.filterActiveCheck = this.filterUtilityService.createSeriesV2Filter();
this.filterActiveCheck = this.metadataService.createDefaultFilterDto('series');
this.filterActiveCheck!.statements.push(defaultStmt);
this.filterSettings.presetsV2 = this.filter;

View file

@ -219,7 +219,7 @@ export class DashboardComponent implements OnInit {
const params: any = {};
params['page'] = 1;
params['title'] = translate('dashboard.recently-updated-title');
const filter = this.filterUtilityService.createSeriesV2Filter();
const filter = this.metadataService.createDefaultFilterDto('series');
if (filter.sortOptions) {
filter.sortOptions.sortField = SortField.LastChapterAdded;
filter.sortOptions.isAscending = false;
@ -230,7 +230,7 @@ export class DashboardComponent implements OnInit {
params['page'] = 1;
params['title'] = translate('dashboard.on-deck-title');
const filter = this.filterUtilityService.createSeriesV2Filter();
const filter = this.metadataService.createDefaultFilterDto('series');
filter.statements.push({field: FilterField.ReadProgress, comparison: FilterComparison.GreaterThan, value: '0'});
filter.statements.push({field: FilterField.ReadProgress, comparison: FilterComparison.NotEqual, value: '100'});
if (filter.sortOptions) {
@ -242,7 +242,7 @@ export class DashboardComponent implements OnInit {
const params: any = {};
params['page'] = 1;
params['title'] = translate('dashboard.recently-added-title');
const filter = this.filterUtilityService.createSeriesV2Filter();
const filter = this.metadataService.createDefaultFilterDto('series');
if (filter.sortOptions) {
filter.sortOptions.sortField = SortField.Created;
filter.sortOptions.isAscending = false;
@ -252,7 +252,7 @@ export class DashboardComponent implements OnInit {
const params: any = {};
params['page'] = 1;
params['title'] = translate('dashboard.more-in-genre-title', {genre: this.genre?.title});
const filter = this.filterUtilityService.createSeriesV2Filter();
const filter = this.metadataService.createDefaultFilterDto('series');
filter.statements.push({field: FilterField.Genres, value: this.genre?.id + '', comparison: FilterComparison.MustContains});
this.filterUtilityService.applyFilterWithParams(['all-series'], filter, params).subscribe();
}

View file

@ -197,7 +197,7 @@ export class LibraryDetailComponent implements OnInit {
}
this.filterActiveCheck = this.filterUtilityService.createSeriesV2Filter();
this.filterActiveCheck = this.metadataService.createDefaultFilterDto('series');
this.filterActiveCheck!.statements.push(defaultStmt);
this.filterSettings.presetsV2 = this.filter;

View file

@ -47,6 +47,7 @@ import {SettingsTabId} from "../../../sidenav/preference-nav/preference-nav.comp
import {Breakpoint, UtilityService} from "../../../shared/_services/utility.service";
import {WikiLink} from "../../../_models/wiki";
import {NavLinkModalComponent} from "../nav-link-modal/nav-link-modal.component";
import {MetadataService} from "../../../_services/metadata.service";
@Component({
selector: 'app-nav-header',
@ -70,6 +71,8 @@ export class NavHeaderComponent implements OnInit {
protected readonly imageService = inject(ImageService);
protected readonly utilityService = inject(UtilityService);
protected readonly modalService = inject(NgbModal);
protected readonly metadataService = inject(MetadataService);
protected readonly FilterField = FilterField;
protected readonly WikiLink = WikiLink;
@ -161,7 +164,7 @@ export class NavHeaderComponent implements OnInit {
goTo(statement: FilterStatement<number>) {
let params: any = {};
const filter = this.filterUtilityService.createSeriesV2Filter();
const filter = this.metadataService.createDefaultFilterDto('series');
filter.statements = [statement];
params['page'] = 1;
this.clearSearch();

View file

@ -44,6 +44,7 @@ import {SafeUrlPipe} from "../_pipes/safe-url.pipe";
import {MergePersonModalComponent} from "./_modal/merge-person-modal/merge-person-modal.component";
import {EVENTS, MessageHubService} from "../_services/message-hub.service";
import {BadgeExpanderComponent} from "../shared/badge-expander/badge-expander.component";
import {MetadataService} from "../_services/metadata.service";
interface PersonMergeEvent {
srcId: number,
@ -87,6 +88,7 @@ export class PersonDetailComponent implements OnInit {
private readonly themeService = inject(ThemeService);
private readonly toastr = inject(ToastrService);
private readonly messageHubService = inject(MessageHubService)
private readonly metadataService = inject(MetadataService)
protected readonly FilterField = FilterField;
@ -181,7 +183,7 @@ export class PersonDetailComponent implements OnInit {
}
createFilter(roles: PersonRole[]) {
const filter = this.filterUtilityService.createSeriesV2Filter();
const filter = this.metadataService.createDefaultFilterDto('series');
filter.combination = FilterCombination.Or;
filter.limitTo = 20;
@ -217,7 +219,7 @@ export class PersonDetailComponent implements OnInit {
params['page'] = 1;
params['title'] = translate('person-detail.browse-person-by-role-title', {name: this.person!.name, role: personPipe.transform(role)});
const searchFilter = this.filterUtilityService.createSeriesV2Filter();
const searchFilter = this.metadataService.createDefaultFilterDto('series');
searchFilter.limitTo = 0;
searchFilter.combination = FilterCombination.Or;

View file

@ -1,9 +1,8 @@
import {inject, Injectable} from '@angular/core';
import {ActivatedRouteSnapshot, Params, Router} from '@angular/router';
import {Params, Router} from '@angular/router';
import {allSeriesSortFields, SortField} from 'src/app/_models/metadata/series-filter';
import {MetadataService} from "../../_services/metadata.service";
import {FilterV2} from "../../_models/metadata/v2/filter-v2";
import {FilterStatement} from "../../_models/metadata/v2/filter-statement";
import {FilterCombination} from "../../_models/metadata/v2/filter-combination";
import {allSeriesFilterFields, FilterField} from "../../_models/metadata/v2/filter-field";
import {FilterComparison} from "../../_models/metadata/v2/filter-comparison";
@ -11,7 +10,7 @@ import {HttpClient} from "@angular/common/http";
import {TextResonse} from "../../_types/text-response";
import {environment} from "../../../environments/environment";
import {map, tap} from "rxjs/operators";
import {Observable, of, switchMap} from "rxjs";
import {switchMap} from "rxjs";
import {allPersonFilterFields, PersonFilterField} from "../../_models/metadata/v2/person-filter-field";
import {allPersonSortFields} from "../../_models/metadata/v2/person-sort-field";
import {
@ -40,44 +39,40 @@ export class FilterUtilitiesService {
private readonly apiUrl = environment.apiUrl;
encodeFilter(filter: FilterV2<number> | undefined) {
encodeFilter(filter: FilterV2 | undefined) {
return this.http.post<string>(this.apiUrl + 'filter/encode', filter, TextResonse);
}
decodeFilter(encodedFilter: string) {
return this.http.post<FilterV2<number>>(this.apiUrl + 'filter/decode', {encodedFilter}).pipe(map(filter => {
return this.http.post<FilterV2>(this.apiUrl + 'filter/decode', {encodedFilter}).pipe(map(filter => {
if (filter == null) {
filter = this.metadataService.createDefaultFilterDto('series');
filter.statements.push(this.createSeriesV2DefaultStatement());
filter.statements.push(this.metadataService.createDefaultFilterStatement('series'));
}
return filter;
}))
}
updateUrlFromFilter(filter: FilterV2<number> | undefined) {
/**
* Encodes the filter and patches into the url
* @param filter
*/
updateUrlFromFilter(filter: FilterV2 | undefined) {
return this.encodeFilter(filter).pipe(tap(encodedFilter => {
window.history.replaceState(window.location.href, '', window.location.href.split('?')[0]+ '?' + encodedFilter);
}));
}
filterPresetsFromUrl<TFilter extends number>(snapshot: ActivatedRouteSnapshot, entityType: ValidFilterEntity, defaultStatement: FilterStatement<TFilter> | null = null): Observable<FilterV2<number>> {
const filter = this.metadataService.createDefaultFilterDto(entityType);
filter.statements.push(defaultStatement ?? this.createSeriesV2DefaultStatement());
if (!window.location.href.includes('?')) return of(filter);
return this.decodeFilter(window.location.href.split('?')[1]);
}
/**
* Applies and redirects to the passed page with the filter encoded
* Applies and redirects to the passed page with the filter encoded (Series only)
* @param page
* @param filter
* @param comparison
* @param value
*/
applyFilter(page: Array<any>, filter: FilterField, comparison: FilterComparison, value: string) {
const dto = this.createSeriesV2Filter();
const dto = this.metadataService.createDefaultFilterDto('series');
dto.statements.push(this.metadataService.createFilterStatement(filter, comparison, value + ''));
return this.encodeFilter(dto).pipe(switchMap(encodedFilter => {
@ -85,6 +80,12 @@ export class FilterUtilitiesService {
}));
}
/**
* (Series only)
* @param page
* @param filter
* @param extraParams
*/
applyFilterWithParams(page: Array<any>, filter: FilterV2<any>, extraParams: Params) {
return this.encodeFilter(filter).pipe(switchMap(encodedFilter => {
let url = page.join('/') + '?' + encodedFilter;
@ -94,25 +95,6 @@ export class FilterUtilitiesService {
}));
}
createSeriesV2Filter(): FilterV2<FilterField> {
return {
combination: FilterCombination.And,
statements: [],
limitTo: 0,
sortOptions: {
isAscending: true,
sortField: SortField.SortName
},
};
}
createSeriesV2DefaultStatement(): FilterStatement<FilterField> {
return {
comparison: FilterComparison.Equal,
value: '',
field: FilterField.SeriesName
}
}
createPersonV2Filter(): FilterV2<PersonFilterField> {
return {
@ -126,14 +108,10 @@ export class FilterUtilitiesService {
};
}
createPersonV2DefaultStatement(): FilterStatement<PersonFilterField> {
return {
comparison: FilterComparison.Equal,
value: '',
field: PersonFilterField.Name
}
}
/**
* Returns the Sort Fields for the Metadata filter based on the entity.
* @param type
*/
getSortFields<T extends number>(type: ValidFilterEntity) {
switch (type) {
case 'series':
@ -149,6 +127,10 @@ export class FilterUtilitiesService {
}
}
/**
* Returns the Filter Fields for the Metadata filter based on the entity.
* @param type
*/
getFilterFields<T extends number>(type: ValidFilterEntity): {title: string, value: T}[] {
switch (type) {
case 'series':
@ -164,6 +146,10 @@ export class FilterUtilitiesService {
}
}
/**
* Returns the default field for the Series or Person entity aka what should be there if there are no statements
* @param type
*/
getDefaultFilterField<T extends number>(type: ValidFilterEntity) {
switch (type) {
case 'series':
@ -196,6 +182,10 @@ export class FilterUtilitiesService {
}
}
/**
* Returns the applicable String fields
* @param type
*/
getStringFields<T extends number>(type: ValidFilterEntity) {
switch (type) {
case 'series':

View file

@ -124,7 +124,7 @@ export class WantToReadComponent implements OnInit, AfterContentChecked {
}
this.filterActiveCheck = this.filterUtilityService.createSeriesV2Filter();
this.filterActiveCheck = this.metadataService.createDefaultFilterDto('series');
this.filterActiveCheck!.statements.push(defaultStmt);
this.filterSettings.presetsV2 = this.filter;