New Scanner + People Pages (#3286)

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
This commit is contained in:
Joe Milazzo 2024-10-23 15:11:18 -07:00 committed by GitHub
parent 1ed0eae22d
commit ba20ad4ecc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
142 changed files with 17529 additions and 3038 deletions

View file

@ -41,7 +41,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.writers" [title]="t('writers-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.Writers, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>
@ -49,7 +49,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.colorists" [title]="t('colorists-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.Colorist, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>
@ -57,7 +57,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.editors" [title]="t('editors-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.Editor, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>
@ -66,7 +66,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.coverArtists" [title]="t('cover-artists-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.CoverArtist, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>
@ -74,7 +74,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.inkers" [title]="t('inkers-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.Inker, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>
@ -82,7 +82,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.letterers" [title]="t('letterers-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.Letterer, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>
@ -90,7 +90,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.pencillers" [title]="t('pencillers-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.Penciller, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>
@ -98,7 +98,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.translators" [title]="t('translators-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.Translators, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>
@ -106,7 +106,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.characters" [title]="t('characters-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.Characters, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>
@ -114,7 +114,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.locations" [title]="t('locations-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.Location, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>
@ -122,7 +122,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.teams" [title]="t('teams-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.Team, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>
@ -130,7 +130,7 @@
<div class="mb-3">
<app-carousel-reel [items]="metadata.imprints" [title]="t('imprints-title')">
<ng-template #carouselItem let-item>
<app-person-badge [person]="item" (click)="openPerson(FilterField.Imprint, item)"></app-person-badge>
<app-person-badge [person]="item"></app-person-badge>
</ng-template>
</app-carousel-reel>
</div>

View file

@ -46,16 +46,8 @@ export class DetailsTabComponent {
@Input() webLinks: Array<string> = [];
openPerson(queryParamName: FilterField, filter: Person) {
if (queryParamName === FilterField.None) return;
this.filterUtilityService.applyFilter(['all-series'], queryParamName, FilterComparison.Equal, `${filter.id}`).subscribe();
}
openGeneric(queryParamName: FilterField, filter: string | number) {
if (queryParamName === FilterField.None) return;
this.filterUtilityService.applyFilter(['all-series'], queryParamName, FilterComparison.Equal, `${filter}`).subscribe();
}
protected readonly TagBadgeCursor = TagBadgeCursor;
}

View file

@ -192,7 +192,7 @@ export class EditChapterModalComponent implements OnInit {
})).subscribe();
this.editForm.addControl('titleName', new FormControl(this.chapter.titleName, []));
this.editForm.addControl('sortOrder', new FormControl(this.chapter.sortOrder, [Validators.required, Validators.min(0)]));
this.editForm.addControl('sortOrder', new FormControl(Math.max(0, this.chapter.sortOrder), [Validators.required, Validators.min(0)]));
this.editForm.addControl('summary', new FormControl(this.chapter.summary || '', []));
this.editForm.addControl('language', new FormControl(this.chapter.language, []));
this.editForm.addControl('isbn', new FormControl(this.chapter.isbn, []));
@ -466,12 +466,12 @@ export class EditChapterModalComponent implements OnInit {
fetchPeople(role: PersonRole, filter: string) {
return this.metadataService.getAllPeople().pipe(map(people => {
return people.filter(p => p.role == role && this.utilityService.filter(p.name, filter));
return people.filter(p => this.utilityService.filter(p.name, filter));
}));
}
createBlankPersonSettings(id: string, role: PersonRole) {
var personSettings = new TypeaheadSettings<Person>();
let personSettings = new TypeaheadSettings<Person>();
personSettings.minCharacters = 0;
personSettings.multiple = true;
personSettings.showLocked = true;
@ -486,14 +486,14 @@ export class EditChapterModalComponent implements OnInit {
}
personSettings.selectionCompareFn = (a: Person, b: Person) => {
return a.name == b.name && a.role == b.role;
return a.name == b.name;
}
personSettings.fetchFn = (filter: string) => {
return this.fetchPeople(role, filter).pipe(map(items => personSettings.compareFn(items, filter)));
};
personSettings.addTransformFn = ((title: string) => {
return {id: 0, name: title, role: role };
return {id: 0, name: title, role: role, description: '', coverImage: '', coverImageLocked: false };
});
return personSettings;