78 lines
3.1 KiB
TypeScript
78 lines
3.1 KiB
TypeScript
import {Pipe, PipeTransform} from '@angular/core';
|
|
import {FilterField} from "../_models/metadata/v2/filter-field";
|
|
import {translate} from "@jsverse/transloco";
|
|
|
|
/**
|
|
* 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 '';
|
|
}
|
|
}
|
|
|
|
}
|