Added the ability to have a richer title experience on all series page (#3825)

This commit is contained in:
Joseph Milazzo 2025-06-06 15:30:47 -05:00
parent ef77474e33
commit dadf9cbac8
6 changed files with 223 additions and 98 deletions

View file

@ -0,0 +1,82 @@
import {Pipe, PipeTransform} from '@angular/core';
import {FilterField} from "../_models/metadata/v2/filter-field";
import {translate} from "@jsverse/transloco";
// export type BrowseTitleFields = FilterField.Genres | FilterField.Tags | FilterField.Editor | FilterField.Inker |
// FilterField.
/**
* Responsible for taking a filter field and value (as a string) and translating into a "Browse X" heading for All Series page
* Example: Genre & "Action" -> Browse Action
* Example: Artist & "Joe Shmo" -> Browse Joe Shmo Works
*/
@Pipe({
name: 'browseTitle'
})
export class BrowseTitlePipe implements PipeTransform {
transform(field: FilterField, value: string): string {
switch (field) {
case FilterField.PublicationStatus:
return translate('browse-title-pipe.publication-status', {value});
case FilterField.AgeRating:
return translate('browse-title-pipe.age-rating', {value});
case FilterField.UserRating:
return translate('browse-title-pipe.user-rating', {value});
case FilterField.Tags:
return translate('browse-title-pipe.tag', {value});
case FilterField.Translators:
return translate('browse-title-pipe.translator', {value});
case FilterField.Characters:
return translate('browse-title-pipe.character', {value});
case FilterField.Publisher:
return translate('browse-title-pipe.publisher', {value});
case FilterField.Editor:
return translate('browse-title-pipe.editor', {value});
case FilterField.CoverArtist:
return translate('browse-title-pipe.artist', {value});
case FilterField.Letterer:
return translate('browse-title-pipe.letterer', {value});
case FilterField.Colorist:
return translate('browse-title-pipe.colorist', {value});
case FilterField.Inker:
return translate('browse-title-pipe.inker', {value});
case FilterField.Penciller:
return translate('browse-title-pipe.penciller', {value});
case FilterField.Writers:
return translate('browse-title-pipe.writer', {value});
case FilterField.Genres:
return translate('browse-title-pipe.genre', {value});
case FilterField.Libraries:
return translate('browse-title-pipe.library', {value});
case FilterField.Formats:
return translate('browse-title-pipe.format', {value});
case FilterField.ReleaseYear:
return translate('browse-title-pipe.release-year', {value});
case FilterField.Imprint:
return translate('browse-title-pipe.imprint', {value});
case FilterField.Team:
return translate('browse-title-pipe.team', {value});
case FilterField.Location:
return translate('browse-title-pipe.location', {value});
// These have no natural links in the app to demand a richer title experience
case FilterField.Languages:
case FilterField.CollectionTags:
case FilterField.ReadProgress:
case FilterField.ReadTime:
case FilterField.Path:
case FilterField.FilePath:
case FilterField.WantToRead:
case FilterField.ReadingDate:
case FilterField.AverageRating:
case FilterField.ReadLast:
case FilterField.Summary:
case FilterField.SeriesName:
default:
return '';
}
}
}