{ "version": 3, "sources": ["src/app/_services/jumpbar.service.ts", "src/app/metadata-filter/filter-settings.ts", "src/app/_pipes/sort-field.pipe.ts", "src/app/_pipes/filter-field.pipe.ts", "src/app/_pipes/filter-comparison.pipe.ts", "src/app/metadata-filter/_components/metadata-filter-row/metadata-filter-row.component.ts", "src/app/metadata-filter/_components/metadata-filter-row/metadata-filter-row.component.html", "src/app/metadata-filter/_components/metadata-builder/metadata-builder.component.ts", "src/app/metadata-filter/_components/metadata-builder/metadata-builder.component.html", "src/app/metadata-filter/metadata-filter.component.ts", "src/app/metadata-filter/metadata-filter.component.html", "src/app/cards/card-detail-layout/card-detail-layout.component.ts", "src/app/cards/card-detail-layout/card-detail-layout.component.html"], "sourcesContent": ["import { Injectable } from '@angular/core';\nimport { JumpKey } from '../_models/jumpbar/jump-key';\n\nconst keySize = 25; // Height of the JumpBar button\n\n@Injectable({\n providedIn: 'root'\n})\nexport class JumpbarService {\n\n resumeKeys: {[key: string]: string} = {};\n // Used for custom filtered urls\n resumeScroll: {[key: string]: number} = {};\n\n constructor() { }\n\n\n getResumeKey(key: string) {\n if (this.resumeKeys.hasOwnProperty(key)) return this.resumeKeys[key];\n return '';\n }\n\n getResumePosition(key: string) {\n if (this.resumeScroll.hasOwnProperty(key)) return this.resumeScroll[key];\n return 0;\n }\n\n saveResumeKey(key: string, value: string) {\n this.resumeKeys[key] = value;\n }\n\n saveScrollOffset(key: string, value: number) {\n this.resumeScroll[key] = value;\n }\n\n generateJumpBar(jumpBarKeys: Array, currentSize: number) {\n const fullSize = (jumpBarKeys.length * keySize);\n if (currentSize >= fullSize) {\n return [...jumpBarKeys];\n }\n\n const jumpBarKeysToRender: Array = [];\n const targetNumberOfKeys = parseInt(Math.floor(currentSize / keySize) + '', 10);\n const removeCount = jumpBarKeys.length - targetNumberOfKeys - 3;\n if (removeCount <= 0) return [...jumpBarKeys];\n\n const removalTimes = Math.ceil(removeCount / 2);\n const midPoint = Math.floor(jumpBarKeys.length / 2);\n jumpBarKeysToRender.push(jumpBarKeys[0]);\n this._removeFirstPartOfJumpBar(midPoint, removalTimes, jumpBarKeys, jumpBarKeysToRender);\n jumpBarKeysToRender.push(jumpBarKeys[midPoint]);\n this._removeSecondPartOfJumpBar(midPoint, removalTimes, jumpBarKeys, jumpBarKeysToRender);\n jumpBarKeysToRender.push(jumpBarKeys[jumpBarKeys.length - 1]);\n\n return jumpBarKeysToRender;\n }\n\n _removeSecondPartOfJumpBar(midPoint: number, numberOfRemovals: number = 1, jumpBarKeys: Array, jumpBarKeysToRender: Array) {\n const removedIndexes: Array = [];\n for(let removal = 0; removal < numberOfRemovals; removal++) {\n let min = 100000000;\n let minIndex = -1;\n for(let i = midPoint + 1; i < jumpBarKeys.length - 2; i++) {\n if (jumpBarKeys[i].size < min && !removedIndexes.includes(i)) {\n min = jumpBarKeys[i].size;\n minIndex = i;\n }\n }\n removedIndexes.push(minIndex);\n }\n for(let i = midPoint + 1; i < jumpBarKeys.length - 2; i++) {\n if (!removedIndexes.includes(i)) jumpBarKeysToRender.push(jumpBarKeys[i]);\n }\n }\n\n _removeFirstPartOfJumpBar(midPoint: number, numberOfRemovals: number = 1, jumpBarKeys: Array, jumpBarKeysToRender: Array) {\n const removedIndexes: Array = [];\n for(let removal = 0; removal < numberOfRemovals; removal++) {\n let min = 100000000;\n let minIndex = -1;\n for(let i = 1; i < midPoint; i++) {\n if (jumpBarKeys[i].size < min && !removedIndexes.includes(i)) {\n min = jumpBarKeys[i].size;\n minIndex = i;\n }\n }\n removedIndexes.push(minIndex);\n }\n\n for(let i = 1; i < midPoint; i++) {\n if (!removedIndexes.includes(i)) jumpBarKeysToRender.push(jumpBarKeys[i]);\n }\n }\n\n /**\n * \n * @param data An array of objects\n * @param keySelector A method to fetch a string from the object, which is used to classify the JumpKey\n * @returns \n */\n getJumpKeys(data :Array, keySelector: (data: any) => string) {\n const keys: {[key: string]: number} = {};\n data.forEach(obj => {\n let ch = keySelector(obj).charAt(0);\n if (/\\d|\\#|!|%|@|\\(|\\)|\\^|\\.|_|\\*/g.test(ch)) {\n ch = '#';\n }\n if (!keys.hasOwnProperty(ch)) {\n keys[ch] = 0;\n }\n keys[ch] += 1;\n });\n return Object.keys(keys).map(k => {\n return {\n key: k,\n size: keys[k],\n title: k.toUpperCase()\n }\n }).sort((a, b) => {\n if (a.key < b.key) return -1;\n if (a.key > b.key) return 1;\n return 0;\n });\n }\n}\n", "import { SeriesFilterV2 } from \"../_models/metadata/v2/series-filter-v2\";\n\nexport class FilterSettings {\n sortDisabled = false;\n presetsV2: SeriesFilterV2 | undefined;\n /**\n * The number of statements that can be on the filter. Set to 1 to disable adding more.\n */\n statementLimit: number = 0;\n saveDisabled: boolean = false;\n }\n", "import { Pipe, PipeTransform } from '@angular/core';\nimport {SortField} from \"../_models/metadata/series-filter\";\nimport {TranslocoService} from \"@ngneat/transloco\";\n\n@Pipe({\n name: 'sortField',\n standalone: true\n})\nexport class SortFieldPipe implements PipeTransform {\n\n constructor(private translocoService: TranslocoService) {\n }\n\n transform(value: SortField): string {\n switch (value) {\n case SortField.SortName:\n return this.translocoService.translate('sort-field-pipe.sort-name');\n case SortField.Created:\n return this.translocoService.translate('sort-field-pipe.created');\n case SortField.LastModified:\n return this.translocoService.translate('sort-field-pipe.last-modified');\n case SortField.LastChapterAdded:\n return this.translocoService.translate('sort-field-pipe.last-chapter-added');\n case SortField.TimeToRead:\n return this.translocoService.translate('sort-field-pipe.time-to-read');\n case SortField.ReleaseYear:\n return this.translocoService.translate('sort-field-pipe.release-year');\n case SortField.ReadProgress:\n return this.translocoService.translate('sort-field-pipe.read-progress');\n case SortField.AverageRating:\n return this.translocoService.translate('sort-field-pipe.average-rating');\n }\n\n }\n\n}\n", "import { Pipe, PipeTransform } from '@angular/core';\nimport { FilterField } from 'src/app/_models/metadata/v2/filter-field';\nimport {translate} from \"@ngneat/transloco\";\n\n@Pipe({\n name: 'filterField',\n standalone: true\n})\nexport class FilterFieldPipe implements PipeTransform {\n\n transform(value: FilterField): string {\n switch (value) {\n case FilterField.AgeRating:\n return translate('filter-field-pipe.age-rating');\n case FilterField.Characters:\n return translate('filter-field-pipe.characters');\n case FilterField.CollectionTags:\n return translate('filter-field-pipe.collection-tags');\n case FilterField.Colorist:\n return translate('filter-field-pipe.colorist');\n case FilterField.CoverArtist:\n return translate('filter-field-pipe.cover-artist');\n case FilterField.Editor:\n return translate('filter-field-pipe.editor');\n case FilterField.Formats:\n return translate('filter-field-pipe.formats');\n case FilterField.Genres:\n return translate('filter-field-pipe.genres');\n case FilterField.Inker:\n return translate('filter-field-pipe.inker');\n case FilterField.Imprint:\n return translate('filter-field-pipe.imprint');\n case FilterField.Team:\n return translate('filter-field-pipe.team');\n case FilterField.Location:\n return translate('filter-field-pipe.location');\n case FilterField.Languages:\n return translate('filter-field-pipe.languages');\n case FilterField.Libraries:\n return translate('filter-field-pipe.libraries');\n case FilterField.Letterer:\n return translate('filter-field-pipe.letterer');\n case FilterField.PublicationStatus:\n return translate('filter-field-pipe.publication-status');\n case FilterField.Penciller:\n return translate('filter-field-pipe.penciller');\n case FilterField.Publisher:\n return translate('filter-field-pipe.publisher');\n case FilterField.ReadProgress:\n return translate('filter-field-pipe.read-progress');\n case FilterField.ReadTime:\n return translate('filter-field-pipe.read-time');\n case FilterField.ReleaseYear:\n return translate('filter-field-pipe.release-year');\n case FilterField.SeriesName:\n return translate('filter-field-pipe.series-name');\n case FilterField.Summary:\n return translate('filter-field-pipe.summary');\n case FilterField.Tags:\n return translate('filter-field-pipe.tags');\n case FilterField.Translators:\n return translate('filter-field-pipe.translators');\n case FilterField.UserRating:\n return translate('filter-field-pipe.user-rating');\n case FilterField.Writers:\n return translate('filter-field-pipe.writers');\n case FilterField.Path:\n return translate('filter-field-pipe.path');\n case FilterField.FilePath:\n return translate('filter-field-pipe.file-path');\n case FilterField.WantToRead:\n return translate('filter-field-pipe.want-to-read');\n case FilterField.ReadingDate:\n return translate('filter-field-pipe.read-date');\n case FilterField.AverageRating:\n return translate('filter-field-pipe.average-rating');\n default:\n throw new Error(`Invalid FilterField value: ${value}`);\n }\n }\n\n}\n", "import { Pipe, PipeTransform } from '@angular/core';\nimport { FilterComparison } from 'src/app/_models/metadata/v2/filter-comparison';\nimport {translate} from \"@ngneat/transloco\";\n\n@Pipe({\n name: 'filterComparison',\n standalone: true\n})\nexport class FilterComparisonPipe implements PipeTransform {\n\n transform(value: FilterComparison): string {\n switch (value) {\n case FilterComparison.BeginsWith:\n return translate('filter-comparison-pipe.begins-with');\n case FilterComparison.Contains:\n return translate('filter-comparison-pipe.contains');\n case FilterComparison.Equal:\n return translate('filter-comparison-pipe.equal');\n case FilterComparison.GreaterThan:\n return translate('filter-comparison-pipe.greater-than');\n case FilterComparison.GreaterThanEqual:\n return translate('filter-comparison-pipe.greater-than-or-equal');\n case FilterComparison.LessThan:\n return translate('filter-comparison-pipe.less-than');\n case FilterComparison.LessThanEqual:\n return translate('filter-comparison-pipe.less-than-or-equal');\n case FilterComparison.Matches:\n return translate('filter-comparison-pipe.matches');\n case FilterComparison.NotContains:\n return translate('filter-comparison-pipe.does-not-contain');\n case FilterComparison.NotEqual:\n return translate('filter-comparison-pipe.not-equal');\n case FilterComparison.EndsWith:\n return translate('filter-comparison-pipe.ends-with');\n case FilterComparison.IsBefore:\n return translate('filter-comparison-pipe.is-before');\n case FilterComparison.IsAfter:\n return translate('filter-comparison-pipe.is-after');\n case FilterComparison.IsInLast:\n return translate('filter-comparison-pipe.is-in-last');\n case FilterComparison.IsNotInLast:\n return translate('filter-comparison-pipe.is-not-in-last');\n case FilterComparison.MustContains:\n return translate('filter-comparison-pipe.must-contains');\n default:\n throw new Error(`Invalid FilterComparison value: ${value}`);\n }\n }\n\n}\n", "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport {FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport {FilterStatement} from '../../../_models/metadata/v2/filter-statement';\nimport {BehaviorSubject, distinctUntilChanged, filter, map, Observable, of, startWith, switchMap} from 'rxjs';\nimport {MetadataService} from 'src/app/_services/metadata.service';\nimport {mangaFormatFilters} from 'src/app/_models/metadata/series-filter';\nimport {PersonRole} from 'src/app/_models/metadata/person';\nimport {LibraryService} from 'src/app/_services/library.service';\nimport {CollectionTagService} from 'src/app/_services/collection-tag.service';\nimport {FilterComparison} from 'src/app/_models/metadata/v2/filter-comparison';\nimport {allFields, FilterField} from 'src/app/_models/metadata/v2/filter-field';\nimport {AsyncPipe, NgForOf, NgIf, NgSwitch, NgSwitchCase, NgTemplateOutlet} from \"@angular/common\";\nimport {FilterFieldPipe} from \"../../../_pipes/filter-field.pipe\";\nimport {FilterComparisonPipe} from \"../../../_pipes/filter-comparison.pipe\";\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {Select2Module, Select2Option} from \"ng-select2-component\";\nimport {TagBadgeComponent} from \"../../../shared/tag-badge/tag-badge.component\";\nimport {\n NgbDate,\n NgbDateParserFormatter,\n NgbDatepicker,\n NgbInputDatepicker,\n NgbTooltip\n} from \"@ng-bootstrap/ng-bootstrap\";\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\nenum PredicateType {\n Text = 1,\n Number = 2,\n Dropdown = 3,\n Boolean = 4,\n Date = 5\n}\n\nclass FilterRowUi {\n unit = '';\n tooltip = ''\n constructor(unit: string = '', tooltip: string = '') {\n this.unit = unit;\n this.tooltip = tooltip;\n }\n}\n\nconst unitLabels: Map = new Map([\n [FilterField.ReadingDate, new FilterRowUi('unit-reading-date')],\n [FilterField.AverageRating, new FilterRowUi('unit-average-rating')],\n [FilterField.ReadProgress, new FilterRowUi('unit-reading-progress')],\n]);\n\nconst StringFields = [FilterField.SeriesName, FilterField.Summary, FilterField.Path, FilterField.FilePath];\nconst NumberFields = [FilterField.ReadTime, FilterField.ReleaseYear, FilterField.ReadProgress, FilterField.UserRating, FilterField.AverageRating];\nconst DropdownFields = [FilterField.PublicationStatus, FilterField.Languages, FilterField.AgeRating,\n FilterField.Translators, FilterField.Characters, FilterField.Publisher,\n FilterField.Editor, FilterField.CoverArtist, FilterField.Letterer,\n FilterField.Colorist, FilterField.Inker, FilterField.Penciller,\n FilterField.Writers, FilterField.Genres, FilterField.Libraries,\n FilterField.Formats, FilterField.CollectionTags, FilterField.Tags,\n FilterField.Imprint, FilterField.Team, FilterField.Location\n];\nconst BooleanFields = [FilterField.WantToRead];\nconst DateFields = [FilterField.ReadingDate];\n\nconst DropdownFieldsWithoutMustContains = [\n FilterField.Libraries, FilterField.Formats, FilterField.AgeRating, FilterField.PublicationStatus\n];\nconst DropdownFieldsThatIncludeNumberComparisons = [\n FilterField.AgeRating\n];\nconst NumberFieldsThatIncludeDateComparisons = [\n FilterField.ReleaseYear\n];\n\nconst StringComparisons = [\n FilterComparison.Equal,\n FilterComparison.NotEqual,\n FilterComparison.BeginsWith,\n FilterComparison.EndsWith,\n FilterComparison.Matches];\nconst DateComparisons = [\n FilterComparison.IsBefore,\n FilterComparison.IsAfter,\n FilterComparison.Equal,\n FilterComparison.NotEqual,];\nconst NumberComparisons = [\n FilterComparison.Equal,\n FilterComparison.NotEqual,\n FilterComparison.LessThan,\n FilterComparison.LessThanEqual,\n FilterComparison.GreaterThan,\n FilterComparison.GreaterThanEqual];\nconst DropdownComparisons = [\n FilterComparison.Equal,\n FilterComparison.NotEqual,\n FilterComparison.Contains,\n FilterComparison.NotContains,\n FilterComparison.MustContains];\nconst BooleanComparisons = [\n FilterComparison.Equal\n]\n\n@Component({\n selector: 'app-metadata-row-filter',\n templateUrl: './metadata-filter-row.component.html',\n styleUrls: ['./metadata-filter-row.component.scss'],\n standalone: true,\n imports: [\n ReactiveFormsModule,\n AsyncPipe,\n FilterFieldPipe,\n FilterComparisonPipe,\n NgSwitch,\n NgSwitchCase,\n NgForOf,\n NgIf,\n Select2Module,\n NgTemplateOutlet,\n TagBadgeComponent,\n NgbTooltip,\n TranslocoDirective,\n NgbDatepicker,\n NgbInputDatepicker\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MetadataFilterRowComponent implements OnInit {\n\n @Input() index: number = 0; // This is only for debugging\n /**\n * Slightly misleading as this is the initial state and will be updated on the filterStatement event emitter\n */\n @Input() preset!: FilterStatement;\n @Input() availableFields: Array = allFields;\n @Output() filterStatement = new EventEmitter();\n\n\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly dateParser = inject(NgbDateParserFormatter);\n\n formGroup: FormGroup = new FormGroup({\n 'comparison': new FormControl(FilterComparison.Equal, []),\n 'filterValue': new FormControl('', []),\n });\n validComparisons$: BehaviorSubject = new BehaviorSubject([FilterComparison.Equal] as FilterComparison[]);\n predicateType$: BehaviorSubject = new BehaviorSubject(PredicateType.Text as PredicateType);\n dropdownOptions$ = of([]);\n\n loaded: boolean = false;\n protected readonly PredicateType = PredicateType;\n\n get UiLabel(): FilterRowUi | null {\n const field = parseInt(this.formGroup.get('input')!.value, 10) as FilterField;\n if (!unitLabels.has(field)) return null;\n return unitLabels.get(field) as FilterRowUi;\n }\n\n get MultipleDropdownAllowed() {\n const comp = parseInt(this.formGroup.get('comparison')?.value, 10) as FilterComparison;\n return comp === FilterComparison.Contains || comp === FilterComparison.NotContains || comp === FilterComparison.MustContains;\n }\n\n constructor(private readonly metadataService: MetadataService, private readonly libraryService: LibraryService,\n private readonly collectionTagService: CollectionTagService) {}\n\n ngOnInit() {\n this.formGroup.addControl('input', new FormControl(FilterField.SeriesName, []));\n\n this.formGroup.get('input')?.valueChanges.pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe((val: string) => this.handleFieldChange(val));\n this.populateFromPreset();\n\n this.formGroup.get('filterValue')?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe();\n\n // Dropdown dynamic option selection\n this.dropdownOptions$ = this.formGroup.get('input')!.valueChanges.pipe(\n startWith(this.preset.value),\n distinctUntilChanged(),\n filter(() => {\n const inputVal = parseInt(this.formGroup.get('input')?.value, 10) as FilterField;\n return DropdownFields.includes(inputVal);\n }),\n switchMap((_) => this.getDropdownObservable()),\n takeUntilDestroyed(this.destroyRef)\n );\n\n\n this.formGroup!.valueChanges.pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe(_ => {\n this.propagateFilterUpdate();\n });\n\n this.loaded = true;\n this.cdRef.markForCheck();\n }\n\n propagateFilterUpdate() {\n const stmt = {\n comparison: parseInt(this.formGroup.get('comparison')?.value, 10) as FilterComparison,\n field: parseInt(this.formGroup.get('input')?.value, 10) as FilterField,\n value: this.formGroup.get('filterValue')?.value!\n };\n\n if (typeof stmt.value === 'object' && DateFields.includes(stmt.field)) {\n stmt.value = this.dateParser.format(stmt.value);\n }\n\n // Some ids can get through and be numbers, convert them to strings for the backend\n if (typeof stmt.value === 'number' && !Number.isNaN(stmt.value)) {\n stmt.value = stmt.value + '';\n }\n\n if (typeof stmt.value === 'boolean') {\n stmt.value = stmt.value + '';\n }\n\n if (!stmt.value && (![FilterField.SeriesName, FilterField.Summary].includes(stmt.field) && !BooleanFields.includes(stmt.field))) return;\n this.filterStatement.emit(stmt);\n }\n\n populateFromPreset() {\n const val = this.preset.value === \"undefined\" || !this.preset.value ? '' : this.preset.value;\n this.formGroup.get('comparison')?.patchValue(this.preset.comparison);\n this.formGroup.get('input')?.patchValue(this.preset.field);\n\n if (StringFields.includes(this.preset.field)) {\n this.formGroup.get('filterValue')?.patchValue(val);\n } else if (BooleanFields.includes(this.preset.field)) {\n this.formGroup.get('filterValue')?.patchValue(val);\n } else if (DateFields.includes(this.preset.field)) {\n this.formGroup.get('filterValue')?.patchValue(this.dateParser.parse(val));\n }\n else if (DropdownFields.includes(this.preset.field)) {\n if (this.MultipleDropdownAllowed || val.includes(',')) {\n this.formGroup.get('filterValue')?.patchValue(val.split(',').map(d => parseInt(d, 10)));\n } else {\n if (this.preset.field === FilterField.Languages) {\n this.formGroup.get('filterValue')?.patchValue(val);\n } else {\n this.formGroup.get('filterValue')?.patchValue(parseInt(val, 10));\n }\n }\n } else {\n this.formGroup.get('filterValue')?.patchValue(parseInt(val, 10));\n }\n\n\n this.cdRef.markForCheck();\n }\n\n getDropdownObservable(): Observable {\n const filterField = parseInt(this.formGroup.get('input')?.value, 10) as FilterField;\n switch (filterField) {\n case FilterField.PublicationStatus:\n return this.metadataService.getAllPublicationStatus().pipe(map(pubs => pubs.map(pub => {\n return {value: pub.value, label: pub.title}\n })));\n case FilterField.AgeRating:\n return this.metadataService.getAllAgeRatings().pipe(map(ratings => ratings.map(rating => {\n return {value: rating.value, label: rating.title}\n })));\n case FilterField.Genres:\n return this.metadataService.getAllGenres().pipe(map(genres => genres.map(genre => {\n return {value: genre.id, label: genre.title}\n })));\n case FilterField.Languages:\n return this.metadataService.getAllLanguages().pipe(map(statuses => statuses.map(status => {\n return {value: status.isoCode, label: status.title + ` (${status.isoCode})`}\n })));\n case FilterField.Formats:\n return of(mangaFormatFilters).pipe(map(statuses => statuses.map(status => {\n return {value: status.value, label: status.title}\n })));\n case FilterField.Libraries:\n return this.libraryService.getLibraries().pipe(map(libs => libs.map(lib => {\n return {value: lib.id, label: lib.name}\n })));\n case FilterField.Tags:\n return this.metadataService.getAllTags().pipe(map(statuses => statuses.map(status => {\n return {value: status.id, label: status.title}\n })));\n case FilterField.CollectionTags:\n return this.collectionTagService.allCollections().pipe(map(statuses => statuses.map(status => {\n return {value: status.id, label: status.title}\n })));\n case FilterField.Characters: return this.getPersonOptions(PersonRole.Character);\n case FilterField.Colorist: return this.getPersonOptions(PersonRole.Colorist);\n case FilterField.CoverArtist: return this.getPersonOptions(PersonRole.CoverArtist);\n case FilterField.Editor: return this.getPersonOptions(PersonRole.Editor);\n case FilterField.Inker: return this.getPersonOptions(PersonRole.Inker);\n case FilterField.Letterer: return this.getPersonOptions(PersonRole.Letterer);\n case FilterField.Penciller: return this.getPersonOptions(PersonRole.Penciller);\n case FilterField.Publisher: return this.getPersonOptions(PersonRole.Publisher);\n case FilterField.Imprint: return this.getPersonOptions(PersonRole.Imprint);\n case FilterField.Team: return this.getPersonOptions(PersonRole.Team);\n case FilterField.Location: return this.getPersonOptions(PersonRole.Location);\n case FilterField.Translators: return this.getPersonOptions(PersonRole.Translator);\n case FilterField.Writers: return this.getPersonOptions(PersonRole.Writer);\n }\n return of([]);\n }\n\n getPersonOptions(role: PersonRole) {\n return this.metadataService.getAllPeopleByRole(role).pipe(map(people => people.map(person => {\n return {value: person.id, label: person.name}\n })));\n }\n\n\n handleFieldChange(val: string) {\n const inputVal = parseInt(val, 10) as FilterField;\n\n if (StringFields.includes(inputVal)) {\n this.validComparisons$.next(StringComparisons);\n this.predicateType$.next(PredicateType.Text);\n\n if (this.loaded) {\n this.formGroup.get('filterValue')?.patchValue('');\n this.formGroup.get('comparison')?.patchValue(StringComparisons[0]);\n }\n return;\n }\n\n if (NumberFields.includes(inputVal)) {\n const comps = [...NumberComparisons];\n if (NumberFieldsThatIncludeDateComparisons.includes(inputVal)) {\n comps.push(...DateComparisons);\n }\n this.validComparisons$.next(comps);\n this.predicateType$.next(PredicateType.Number);\n if (this.loaded) {\n this.formGroup.get('filterValue')?.patchValue(0);\n this.formGroup.get('comparison')?.patchValue(NumberComparisons[0]);\n }\n return;\n }\n\n if (DateFields.includes(inputVal)) {\n this.validComparisons$.next(DateComparisons);\n this.predicateType$.next(PredicateType.Date);\n\n if (this.loaded) {\n this.formGroup.get('filterValue')?.patchValue(false);\n this.formGroup.get('comparison')?.patchValue(DateComparisons[0]);\n }\n return;\n }\n\n if (BooleanFields.includes(inputVal)) {\n this.validComparisons$.next(BooleanComparisons);\n this.predicateType$.next(PredicateType.Boolean);\n\n if (this.loaded) {\n this.formGroup.get('filterValue')?.patchValue(false);\n this.formGroup.get('comparison')?.patchValue(BooleanComparisons[0]);\n }\n return;\n }\n\n if (DropdownFields.includes(inputVal)) {\n let comps = [...DropdownComparisons];\n if (DropdownFieldsThatIncludeNumberComparisons.includes(inputVal)) {\n comps.push(...NumberComparisons);\n }\n if (DropdownFieldsWithoutMustContains.includes(inputVal)) {\n comps = comps.filter(c => c !== FilterComparison.MustContains);\n }\n this.validComparisons$.next(comps);\n this.predicateType$.next(PredicateType.Dropdown);\n if (this.loaded) {\n this.formGroup.get('filterValue')?.patchValue(0);\n this.formGroup.get('comparison')?.patchValue(comps[0]);\n }\n return;\n }\n }\n\n\n\n onDateSelect(event: NgbDate) {\n this.propagateFilterUpdate();\n }\n updateIfDateFilled() {\n this.propagateFilterUpdate();\n }\n\n}\n", "\n
\n
\n
\n \n
\n\n
\n \n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n
\n\n\n
\n \n \n \n \n \n \n \n \n \n
\n
\n
\n\n
\n \n {{t(UiLabel.unit)}}\n \n \n
\n\n \n
\n
\n
\n", "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport {MetadataService} from 'src/app/_services/metadata.service';\nimport {Breakpoint, UtilityService} from 'src/app/shared/_services/utility.service';\nimport {SeriesFilterV2} from 'src/app/_models/metadata/v2/series-filter-v2';\nimport {NgForOf, NgIf, UpperCasePipe} from \"@angular/common\";\nimport {MetadataFilterRowComponent} from \"../metadata-filter-row/metadata-filter-row.component\";\nimport {FilterStatement} from \"../../../_models/metadata/v2/filter-statement\";\nimport {CardActionablesComponent} from \"../../../_single-module/card-actionables/card-actionables.component\";\nimport {FormControl, FormGroup, FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {NgbTooltip} from \"@ng-bootstrap/ng-bootstrap\";\nimport {FilterCombination} from \"../../../_models/metadata/v2/filter-combination\";\nimport {FilterUtilitiesService} from \"../../../shared/_services/filter-utilities.service\";\nimport {allFields} from \"../../../_models/metadata/v2/filter-field\";\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {distinctUntilChanged, tap} from \"rxjs/operators\";\nimport {translate, TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-metadata-builder',\n templateUrl: './metadata-builder.component.html',\n styleUrls: ['./metadata-builder.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n MetadataFilterRowComponent,\n NgForOf,\n CardActionablesComponent,\n FormsModule,\n NgbTooltip,\n UpperCasePipe,\n ReactiveFormsModule,\n TranslocoDirective\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MetadataBuilderComponent implements OnInit {\n\n @Input({required: true}) filter!: SeriesFilterV2;\n /**\n * The number of statements that can be. 0 means unlimited. -1 means none.\n */\n @Input() statementLimit = 0;\n @Input() availableFilterFields = allFields;\n @Output() update: EventEmitter = new EventEmitter();\n @Output() apply: EventEmitter = new EventEmitter();\n\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly metadataService = inject(MetadataService);\n protected readonly utilityService = inject(UtilityService);\n protected readonly filterUtilityService = inject(FilterUtilitiesService);\n private readonly destroyRef = inject(DestroyRef);\n protected readonly Breakpoint = Breakpoint;\n\n formGroup: FormGroup = new FormGroup({});\n\n groupOptions: Array<{value: FilterCombination, title: string}> = [\n {value: FilterCombination.Or, title: translate('metadata-builder.or')},\n {value: FilterCombination.And, title: translate('metadata-builder.and')},\n ];\n\n ngOnInit() {\n this.formGroup.addControl('comparison', new FormControl(this.filter?.combination || FilterCombination.Or, []));\n this.formGroup.valueChanges.pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef), tap(values => {\n this.filter.combination = parseInt(this.formGroup.get('comparison')?.value, 10) as FilterCombination;\n this.update.emit(this.filter);\n })).subscribe();\n }\n\n addFilter() {\n this.filter.statements = [this.metadataService.createDefaultFilterStatement(), ...this.filter.statements];\n this.cdRef.markForCheck();\n }\n\n removeFilter(index: number) {\n this.filter.statements = this.filter.statements.slice(0, index).concat(this.filter.statements.slice(index + 1))\n this.cdRef.markForCheck();\n }\n\n updateFilter(index: number, filterStmt: FilterStatement) {\n this.metadataService.updateFilter(this.filter.statements, index, filterStmt);\n this.update.emit(this.filter);\n }\n\n}\n", "\n \n
\n \n
\n
\n
\n \n
\n\n
\n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n\n
\n
\n
\n\n \n
\n
\n
\n \n
\n\n
\n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n", "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport {FormControl, FormGroup, FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NgbCollapse, NgbModal, NgbRating, NgbTooltip} from '@ng-bootstrap/ng-bootstrap';\nimport {Breakpoint, UtilityService} from '../shared/_services/utility.service';\nimport {Library} from '../_models/library/library';\nimport {allSortFields, FilterEvent, FilterItem, SortField} from '../_models/metadata/series-filter';\nimport {ToggleService} from '../_services/toggle.service';\nimport {FilterSettings} from './filter-settings';\nimport {SeriesFilterV2} from '../_models/metadata/v2/series-filter-v2';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {TypeaheadComponent} from '../typeahead/_components/typeahead.component';\nimport {DrawerComponent} from '../shared/drawer/drawer.component';\nimport {AsyncPipe, NgClass, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport {translate, TranslocoModule} from \"@ngneat/transloco\";\nimport {SortFieldPipe} from \"../_pipes/sort-field.pipe\";\nimport {MetadataBuilderComponent} from \"./_components/metadata-builder/metadata-builder.component\";\nimport {allFields} from \"../_models/metadata/v2/filter-field\";\nimport {MetadataService} from \"../_services/metadata.service\";\nimport {FilterUtilitiesService} from \"../shared/_services/filter-utilities.service\";\nimport {FilterService} from \"../_services/filter.service\";\nimport {ToastrService} from \"ngx-toastr\";\nimport {\n Select2AutoCreateEvent,\n Select2Module,\n Select2Option,\n Select2UpdateEvent,\n Select2UpdateValue\n} from \"ng-select2-component\";\nimport {SmartFilter} from \"../_models/metadata/v2/smart-filter\";\nimport {animate, state, style, transition, trigger} from \"@angular/animations\";\n\nconst ANIMATION_SPEED = 750;\n\n@Component({\n selector: 'app-metadata-filter',\n templateUrl: './metadata-filter.component.html',\n styleUrls: ['./metadata-filter.component.scss'],\n animations: [\n trigger(\n 'inOutAnimation',\n [\n transition(\n ':enter',\n [\n style({ height: 0, opacity: 0 }),\n animate('.5s ease-out',\n style({ height: 300, opacity: 1 }))\n ]\n ),\n transition(\n ':leave',\n [\n style({ height: 300, opacity: 1 }),\n animate('.5s ease-in',\n style({ height: 0, opacity: 0 }))\n ]\n )\n ]\n ),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgbCollapse, NgTemplateOutlet, DrawerComponent, NgbTooltip, TypeaheadComponent,\n ReactiveFormsModule, FormsModule, NgbRating, AsyncPipe, TranslocoModule, SortFieldPipe,\n MetadataBuilderComponent, NgForOf, Select2Module, NgClass]\n})\nexport class MetadataFilterComponent implements OnInit {\n\n /**\n * This toggles the opening/collapsing of the metadata filter code\n */\n @Input() filterOpen: EventEmitter = new EventEmitter();\n\n /**\n * Should filtering be shown on the page\n */\n @Input() filteringDisabled: boolean = false;\n\n @Input({required: true}) filterSettings!: FilterSettings;\n\n @Output() applyFilter: EventEmitter = new EventEmitter();\n\n @ContentChild('[ngbCollapse]') collapse!: NgbCollapse;\n private readonly destroyRef = inject(DestroyRef);\n public readonly utilityService = inject(UtilityService);\n public readonly filterUtilitiesService = inject(FilterUtilitiesService);\n\n\n /**\n * Controls the visibility of extended controls that sit below the main header.\n */\n filteringCollapsed: boolean = true;\n\n libraries: Array> = [];\n\n sortGroup!: FormGroup;\n isAscendingSort: boolean = true;\n\n updateApplied: number = 0;\n\n fullyLoaded: boolean = false;\n filterV2: SeriesFilterV2 | undefined;\n allSortFields = allSortFields;\n allFilterFields = allFields;\n\n smartFilters!: Array;\n\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly toastr = inject(ToastrService);\n\n\n constructor(public toggleService: ToggleService, private filterService: FilterService) {\n this.filterService.getAllFilters().subscribe(res => {\n this.smartFilters = res.map(r => {\n return {\n value: r,\n label: r.name,\n }\n });\n });\n }\n\n ngOnInit(): void {\n if (this.filterSettings === undefined) {\n this.filterSettings = new FilterSettings();\n this.cdRef.markForCheck();\n }\n\n if (this.filterOpen) {\n this.filterOpen.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(openState => {\n this.filteringCollapsed = !openState;\n this.toggleService.set(!this.filteringCollapsed);\n this.cdRef.markForCheck();\n });\n }\n\n\n\n this.loadFromPresetsAndSetup();\n }\n\n // loadSavedFilter(event: Select2UpdateEvent) {\n // // Load the filter from the backend and update the screen\n // if (event.value === undefined || typeof(event.value) === 'string') return;\n // const smartFilter = event.value as SmartFilter;\n // this.filterV2 = this.filterUtilitiesService.decodeSeriesFilter(smartFilter.filter);\n // this.cdRef.markForCheck();\n // console.log('update event: ', event);\n // }\n //\n // createFilterValue(event: Select2AutoCreateEvent) {\n // // Create a new name and filter\n // if (!this.filterV2) return;\n // this.filterV2.name = event.value;\n // this.filterService.saveFilter(this.filterV2).subscribe(() => {\n //\n // const item = {\n // value: {\n // filter: this.filterUtilitiesService.encodeSeriesFilter(this.filterV2!),\n // name: event.value,\n // } as SmartFilter,\n // label: event.value\n // };\n // this.smartFilters.push(item);\n // this.sortGroup.get('name')?.setValue(item);\n // this.cdRef.markForCheck();\n // this.toastr.success(translate('toasts.smart-filter-updated'));\n // this.apply();\n // });\n //\n // console.log('create event: ', event);\n // }\n\n\n close() {\n this.filterOpen.emit(false);\n this.filteringCollapsed = true;\n this.toggleService.set(!this.filteringCollapsed);\n this.cdRef.markForCheck();\n }\n\n deepClone(obj: any): any {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (obj instanceof Array) {\n return obj.map(item => this.deepClone(item));\n }\n\n const clonedObj: any = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n clonedObj[key] = this.deepClone(obj[key]);\n } else {\n clonedObj[key] = obj[key];\n }\n }\n }\n\n return clonedObj;\n }\n\n handleFilters(filter: SeriesFilterV2) {\n this.filterV2 = filter;\n }\n\n\n loadFromPresetsAndSetup() {\n this.fullyLoaded = false;\n\n this.filterV2 = this.deepClone(this.filterSettings.presetsV2);\n\n this.sortGroup = new FormGroup({\n sortField: new FormControl({value: this.filterV2?.sortOptions?.sortField || SortField.SortName, disabled: this.filterSettings.sortDisabled}, []),\n limitTo: new FormControl(this.filterV2?.limitTo || 0, []),\n name: new FormControl(this.filterV2?.name || '', [])\n });\n if (this.filterSettings?.presetsV2?.sortOptions) {\n this.isAscendingSort = this.filterSettings?.presetsV2?.sortOptions!.isAscending;\n }\n\n\n this.sortGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (this.filterV2?.sortOptions === null) {\n this.filterV2.sortOptions = {\n isAscending: this.isAscendingSort,\n sortField: parseInt(this.sortGroup.get('sortField')?.value, 10)\n };\n }\n this.filterV2!.sortOptions!.sortField = parseInt(this.sortGroup.get('sortField')?.value, 10);\n this.filterV2!.limitTo = Math.max(parseInt(this.sortGroup.get('limitTo')?.value || '0', 10), 0);\n this.filterV2!.name = this.sortGroup.get('name')?.value || '';\n this.cdRef.markForCheck();\n });\n\n this.fullyLoaded = true;\n this.apply();\n }\n\n\n updateSortOrder() {\n if (this.filterSettings.sortDisabled) return;\n this.isAscendingSort = !this.isAscendingSort;\n if (this.filterV2?.sortOptions === null) {\n this.filterV2.sortOptions = {\n isAscending: this.isAscendingSort,\n sortField: SortField.SortName\n }\n }\n\n this.filterV2!.sortOptions!.isAscending = this.isAscendingSort;\n this.cdRef.markForCheck();\n }\n\n clear() {\n // Apply any presets which will trigger the \"apply\"\n this.loadFromPresetsAndSetup();\n }\n\n apply() {\n this.applyFilter.emit({isFirst: this.updateApplied === 0, filterV2: this.filterV2!});\n\n if (this.utilityService.getActiveBreakpoint() === Breakpoint.Mobile && this.updateApplied !== 0) {\n this.toggleSelected();\n }\n\n this.updateApplied++;\n this.cdRef.markForCheck();\n }\n\n save() {\n if (!this.filterV2) return;\n this.filterV2.name = this.sortGroup.get('name')?.value;\n this.filterService.saveFilter(this.filterV2).subscribe(() => {\n this.toastr.success(translate('toasts.smart-filter-updated'));\n this.apply();\n });\n }\n\n toggleSelected() {\n this.toggleService.toggle();\n this.cdRef.markForCheck();\n }\n\n setToggle(event: any) {\n this.toggleService.set(!this.filteringCollapsed);\n }\n\n protected readonly Breakpoint = Breakpoint;\n}\n", "\n \n \n
= Breakpoint.Tablet; else mobileView\" [@inOutAnimation]>\n \n
\n\n \n
\n \n
\n {{t('filter-title')}}\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n\n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n \n
\n
\n \n \n\n\n\n\n\n\n\n\n\n
\n\n Breakpoint.Tablet\" [ngTemplateOutlet]=\"buttons\">\n
\n
\n \n
\n
\n
\n
\n\n \n \n
\n \n \n
\n
\n \n
\n
\n
\n\n\n", "import {CommonModule, DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n TemplateRef,\n TrackByFunction,\n ViewChild\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {VirtualScrollerComponent, VirtualScrollerModule} from '@iharbeck/ngx-virtual-scroller';\nimport {FilterSettings} from 'src/app/metadata-filter/filter-settings';\nimport {FilterUtilitiesService} from 'src/app/shared/_services/filter-utilities.service';\nimport {Breakpoint, UtilityService} from 'src/app/shared/_services/utility.service';\nimport {JumpKey} from 'src/app/_models/jumpbar/jump-key';\nimport {Library} from 'src/app/_models/library/library';\nimport {Pagination} from 'src/app/_models/pagination';\nimport {FilterEvent, FilterItem, SortField} from 'src/app/_models/metadata/series-filter';\nimport {ActionItem} from 'src/app/_services/action-factory.service';\nimport {JumpbarService} from 'src/app/_services/jumpbar.service';\nimport {ScrollService} from 'src/app/_services/scroll.service';\nimport {LoadingComponent} from \"../../shared/loading/loading.component\";\n\n\nimport {NgbTooltip} from \"@ng-bootstrap/ng-bootstrap\";\nimport {MetadataFilterComponent} from \"../../metadata-filter/metadata-filter.component\";\nimport {TranslocoDirective} from \"@ngneat/transloco\";\nimport {CardActionablesComponent} from \"../../_single-module/card-actionables/card-actionables.component\";\nimport {SeriesFilterV2} from \"../../_models/metadata/v2/series-filter-v2\";\n\n\nconst ANIMATION_TIME_MS = 0;\n\n@Component({\n selector: 'app-card-detail-layout',\n standalone: true,\n imports: [CommonModule, LoadingComponent, VirtualScrollerModule, CardActionablesComponent, NgbTooltip, MetadataFilterComponent, TranslocoDirective],\n templateUrl: './card-detail-layout.component.html',\n styleUrls: ['./card-detail-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardDetailLayoutComponent implements OnInit, OnChanges {\n\n private readonly filterUtilityService = inject(FilterUtilitiesService);\n protected readonly utilityService = inject(UtilityService);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly jumpbarService = inject(JumpbarService);\n private readonly router = inject(Router);\n private readonly scrollService = inject(ScrollService);\n\n @Input() header: string = '';\n @Input() isLoading: boolean = false;\n @Input() items: any[] = [];\n @Input() pagination!: Pagination;\n /**\n * Parent scroll for virtualize pagination\n */\n @Input() parentScroll!: Element | Window;\n\n // Filter Code\n @Input() filterOpen!: EventEmitter;\n /**\n * Should filtering be shown on the page\n */\n @Input() filteringDisabled: boolean = false;\n /**\n * Any actions to exist on the header for the parent collection (library, collection)\n */\n @Input() actions: ActionItem[] = [];\n /**\n * A trackBy to help with rendering. This is required as without it there are issues when scrolling\n */\n @Input({required: true}) trackByIdentity!: TrackByFunction;\n @Input() filterSettings!: FilterSettings;\n @Input() refresh!: EventEmitter;\n\n\n @Input() jumpBarKeys: Array = []; // This is approx 784 pixels tall, original keys\n jumpBarKeysToRender: Array = []; // What is rendered on screen\n\n @Output() itemClicked: EventEmitter = new EventEmitter();\n @Output() applyFilter: EventEmitter = new EventEmitter();\n\n @ContentChild('cardItem') itemTemplate!: TemplateRef;\n @ContentChild('noData') noDataTemplate!: TemplateRef;\n @ViewChild('.jump-bar') jumpBar!: ElementRef;\n\n @ViewChild(VirtualScrollerComponent) private virtualScroller!: VirtualScrollerComponent;\n\n filter: SeriesFilterV2 = this.filterUtilityService.createSeriesV2Filter();\n libraries: Array> = [];\n\n updateApplied: number = 0;\n hasResumedJumpKey: boolean = false;\n bufferAmount: number = 1;\n\n protected readonly Breakpoint = Breakpoint;\n\n constructor(@Inject(DOCUMENT) private document: Document) {}\n\n\n @HostListener('window:resize', ['$event'])\n @HostListener('window:orientationchange', ['$event'])\n resizeJumpBar() {\n const currentSize = (this.document.querySelector('.viewport-container')?.getBoundingClientRect().height || 10) - 30;\n this.jumpBarKeysToRender = this.jumpbarService.generateJumpBar(this.jumpBarKeys, currentSize);\n this.cdRef.markForCheck();\n }\n\n ngOnInit(): void {\n if (this.trackByIdentity === undefined) {\n this.trackByIdentity = (_: number, item: any) => `${this.header}_${this.updateApplied}_${item?.libraryId}`;\n }\n\n if (this.filterSettings === undefined) {\n this.filterSettings = new FilterSettings();\n this.cdRef.markForCheck();\n }\n\n if (this.pagination === undefined) {\n this.pagination = {currentPage: 1, itemsPerPage: this.items.length, totalItems: this.items.length, totalPages: 1};\n this.cdRef.markForCheck();\n }\n\n if (this.refresh) {\n this.refresh.subscribe(() => {\n this.cdRef.markForCheck();\n this.virtualScroller.refresh();\n });\n }\n }\n\n\n ngOnChanges(): void {\n this.jumpBarKeysToRender = [...this.jumpBarKeys];\n this.resizeJumpBar();\n\n // TODO: I wish I had signals so I can tap into when isLoading is false and trigger the scroll code\n\n // Don't resume jump key when there is a custom sort order, as it won't work\n if (!this.hasCustomSort()) {\n if (!this.hasResumedJumpKey && this.jumpBarKeysToRender.length > 0) {\n const resumeKey = this.jumpbarService.getResumeKey(this.router.url);\n if (resumeKey === '') return;\n const keys = this.jumpBarKeysToRender.filter(k => k.key === resumeKey);\n if (keys.length < 1) return;\n\n this.hasResumedJumpKey = true;\n setTimeout(() => this.scrollTo(keys[0]), 100);\n }\n }\n // else {\n // // I will come back and refactor this to work\n // // const scrollPosition = this.jumpbarService.getResumePosition(this.router.url);\n // // console.log('scroll position: ', scrollPosition);\n // // if (scrollPosition > 0) {\n // // setTimeout(() => this.virtualScroller.scrollToIndex(scrollPosition, true, 0, 1000), 100);\n // // }\n // }\n }\n\n hasCustomSort() {\n if (this.filteringDisabled) return false;\n const hasCustomSort = this.filter?.sortOptions?.sortField != SortField.SortName || !this.filter?.sortOptions.isAscending;\n const hasNonDefaultSortField = this.filterSettings?.presetsV2?.sortOptions?.sortField != SortField.SortName;\n\n return hasCustomSort;\n }\n\n performAction(action: ActionItem) {\n if (typeof action.callback === 'function') {\n action.callback(action, undefined);\n }\n }\n\n applyMetadataFilter(event: FilterEvent) {\n this.applyFilter.emit(event);\n this.updateApplied++;\n this.filter = event.filterV2;\n this.cdRef.markForCheck();\n }\n\n\n scrollTo(jumpKey: JumpKey) {\n if (this.hasCustomSort()) return;\n\n let targetIndex = 0;\n for(let i = 0; i < this.jumpBarKeys.length; i++) {\n if (this.jumpBarKeys[i].key === jumpKey.key) break;\n targetIndex += this.jumpBarKeys[i].size;\n }\n\n this.virtualScroller.scrollToIndex(targetIndex, true, 0, ANIMATION_TIME_MS);\n this.jumpbarService.saveResumeKey(this.router.url, jumpKey.key);\n // TODO: This doesn't work, we need the offset from virtual scroller\n this.jumpbarService.saveScrollOffset(this.router.url, this.scrollService.scrollPosition);\n\n this.cdRef.markForCheck();\n }\n\n tryToSaveJumpKey(item: any) {\n let name = '';\n if (item.hasOwnProperty('name')) {\n name = item.name;\n } else if (item.hasOwnProperty('title')) {\n name = item.title;\n }\n this.jumpbarService.saveResumeKey(this.router.url, name.charAt(0));\n }\n}\n", "\n\n
0\">\n
\n

\n 0\" class=\"\">\n  \n \n 0\">\n {{header}} \n {{pagination.totalItems}}\n \n

\n
\n
\n\n \n
\n
\n
\n

\n \n

\n\n \n
\n \n
\n \n
\n
\n
\n
\n
\n\n = 4 && items.length > 0 && scroll.viewPortInfo.maxScrollPosition > 0\" [ngTemplateOutlet]=\"jumpBar\" [ngTemplateOutletContext]=\"{ id: 'jumpbar' }\">\n
\n\n \n \n
\n
\n \n
\n
\n
\n\n
\n

\n \n

\n
\n
\n\n \n\n \n
\n \n \n \n
\n
\n
\n"], "mappings": "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", "names": ["keySize", "JumpbarService", "constructor", "resumeKeys", "resumeScroll", "getResumeKey", "key", "hasOwnProperty", "getResumePosition", "saveResumeKey", "value", "saveScrollOffset", "generateJumpBar", "jumpBarKeys", "currentSize", "fullSize", "length", "jumpBarKeysToRender", "targetNumberOfKeys", "parseInt", "Math", "floor", "removeCount", "removalTimes", "ceil", "midPoint", "push", "_removeFirstPartOfJumpBar", "_removeSecondPartOfJumpBar", "numberOfRemovals", "removedIndexes", "removal", "min", "minIndex", "i", "size", "includes", "getJumpKeys", "data", "keySelector", "keys", "forEach", "obj", "ch", "charAt", "test", "Object", "map", "k", "title", "toUpperCase", "sort", "a", "b", "factory", "\u0275fac", "providedIn", "_JumpbarService", "FilterSettings", "constructor", "sortDisabled", "statementLimit", "saveDisabled", "SortFieldPipe", "constructor", "translocoService", "transform", "value", "SortField", "SortName", "translate", "Created", "LastModified", "LastChapterAdded", "TimeToRead", "ReleaseYear", "ReadProgress", "AverageRating", "\u0275\u0275directiveInject", "TranslocoService", "pure", "standalone", "_SortFieldPipe", "FilterFieldPipe", "transform", "value", "FilterField", "AgeRating", "translate", "Characters", "CollectionTags", "Colorist", "CoverArtist", "Editor", "Formats", "Genres", "Inker", "Imprint", "Team", "Location", "Languages", "Libraries", "Letterer", "PublicationStatus", "Penciller", "Publisher", "ReadProgress", "ReadTime", "ReleaseYear", "SeriesName", "Summary", "Tags", "Translators", "UserRating", "Writers", "Path", "FilePath", "WantToRead", "ReadingDate", "AverageRating", "Error", "pure", "standalone", "_FilterFieldPipe", "FilterComparisonPipe", "transform", "value", "FilterComparison", "BeginsWith", "translate", "Contains", "Equal", "GreaterThan", "GreaterThanEqual", "LessThan", "LessThanEqual", "Matches", "NotContains", "NotEqual", "EndsWith", "IsBefore", "IsAfter", "IsInLast", "IsNotInLast", "MustContains", "Error", "pure", "standalone", "_FilterComparisonPipe", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "field_r1", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "\u0275\u0275pipeBind1", "comparison_r2", "\u0275\u0275elementContainerStart", "\u0275\u0275element", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r3", "ctx_r3", "\u0275\u0275nextContext", "\u0275\u0275resetView", "onDateSelect", "updateIfDateFilled", "d_r5", "\u0275\u0275reference", "toggle", "\u0275\u0275elementContainer", "options_r6", "multipleAllowed_r7", "\u0275\u0275template", "MetadataFilterRowComponent_ng_container_0_ng_container_11_ng_container_6_ng_container_1_ng_container_1_Template", "MetadataFilterRowComponent_ng_container_0_ng_container_11_ng_container_6_ng_container_1_ng_template_2_Template", "\u0275\u0275templateRefExtractor", "dropdown_r9", "\u0275\u0275pureFunction2", "_c1", "opts_r8", "MultipleDropdownAllowed", "MetadataFilterRowComponent_ng_container_0_ng_container_11_ng_container_6_ng_container_1_Template", "dropdownOptions$", "MetadataFilterRowComponent_ng_container_0_ng_container_11_ng_container_2_Template", "MetadataFilterRowComponent_ng_container_0_ng_container_11_ng_container_3_Template", "MetadataFilterRowComponent_ng_container_0_ng_container_11_ng_container_4_Template", "MetadataFilterRowComponent_ng_container_0_ng_container_11_ng_container_5_Template", "MetadataFilterRowComponent_ng_container_0_ng_container_11_ng_container_6_Template", "predicateType_r10", "PredicateType", "Text", "Number", "Boolean", "Date", "Dropdown", "t_r11", "UiLabel", "tooltip", "MetadataFilterRowComponent_ng_container_0_ng_container_14_i_3_Template", "unit", "MetadataFilterRowComponent_ng_container_0_option_5_Template", "MetadataFilterRowComponent_ng_container_0_option_8_Template", "MetadataFilterRowComponent_ng_container_0_ng_container_11_Template", "MetadataFilterRowComponent_ng_container_0_ng_container_14_Template", "\u0275\u0275projection", "formGroup", "availableFields", "validComparisons$", "predicateType$", "FilterRowUi", "constructor", "unitLabels", "Map", "FilterField", "ReadingDate", "AverageRating", "ReadProgress", "StringFields", "SeriesName", "Summary", "Path", "FilePath", "NumberFields", "ReadTime", "ReleaseYear", "UserRating", "DropdownFields", "PublicationStatus", "Languages", "AgeRating", "Translators", "Characters", "Publisher", "Editor", "CoverArtist", "Letterer", "Colorist", "Inker", "Penciller", "Writers", "Genres", "Libraries", "Formats", "CollectionTags", "Tags", "Imprint", "Team", "Location", "BooleanFields", "WantToRead", "DateFields", "DropdownFieldsWithoutMustContains", "DropdownFieldsThatIncludeNumberComparisons", "NumberFieldsThatIncludeDateComparisons", "StringComparisons", "FilterComparison", "Equal", "NotEqual", "BeginsWith", "EndsWith", "Matches", "DateComparisons", "IsBefore", "IsAfter", "NumberComparisons", "LessThan", "LessThanEqual", "GreaterThan", "GreaterThanEqual", "DropdownComparisons", "Contains", "NotContains", "MustContains", "BooleanComparisons", "MetadataFilterRowComponent", "field", "parseInt", "get", "value", "has", "comp", "metadataService", "libraryService", "collectionTagService", "index", "allFields", "filterStatement", "EventEmitter", "cdRef", "inject", "ChangeDetectorRef", "destroyRef", "DestroyRef", "dateParser", "NgbDateParserFormatter", "FormGroup", "FormControl", "BehaviorSubject", "of", "loaded", "ngOnInit", "addControl", "valueChanges", "pipe", "distinctUntilChanged", "takeUntilDestroyed", "subscribe", "val", "handleFieldChange", "populateFromPreset", "startWith", "preset", "filter", "inputVal", "includes", "switchMap", "_", "getDropdownObservable", "propagateFilterUpdate", "markForCheck", "stmt", "comparison", "format", "isNaN", "emit", "patchValue", "parse", "split", "map", "d", "getAllPublicationStatus", "pubs", "pub", "label", "title", "getAllAgeRatings", "ratings", "rating", "getAllGenres", "genres", "genre", "id", "getAllLanguages", "statuses", "status", "isoCode", "mangaFormatFilters", "getLibraries", "libs", "lib", "name", "getAllTags", "allCollections", "getPersonOptions", "PersonRole", "Character", "Translator", "Writer", "role", "getAllPeopleByRole", "people", "person", "next", "comps", "push", "c", "event", "\u0275\u0275directiveInject", "MetadataService", "LibraryService", "CollectionTagService", "selectors", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c0", "decls", "vars", "consts", "template", "rf", "ctx", "MetadataFilterRowComponent_ng_container_0_Template", "ReactiveFormsModule", "\u0275NgNoValidate", "NgSelectOption", "\u0275NgSelectMultipleOption", "DefaultValueAccessor", "NumberValueAccessor", "CheckboxControlValueAccessor", "SelectControlValueAccessor", "NgControlStatus", "NgControlStatusGroup", "MinValidator", "FormGroupDirective", "FormControlName", "AsyncPipe", "FilterFieldPipe", "FilterComparisonPipe", "NgSwitch", "NgSwitchCase", "NgForOf", "NgIf", "Select2Module", "Select2", "NgTemplateOutlet", "NgbTooltip", "TranslocoDirective", "NgbInputDatepicker", "styles", "changeDetection", "_MetadataFilterRowComponent", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "opt_r2", "value", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "title", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r6", "i_r5", "\u0275\u0275nextContext", "index", "ctx_r2", "\u0275\u0275resetView", "removeFilter", "\u0275\u0275element", "t_r7", "\u0275\u0275pureFunction1", "_c0", "$event", "_r4", "updateFilter", "\u0275\u0275template", "MetadataBuilderComponent_ng_container_0_ng_container_1_ng_container_2_div_11_button_4_Template", "filterStmt_r8", "availableFilterFields", "filter", "statements", "length", "\u0275\u0275elementContainerStart", "MetadataBuilderComponent_ng_container_0_ng_container_1_ng_container_2_option_5_Template", "_r1", "addFilter", "MetadataBuilderComponent_ng_container_0_ng_container_1_ng_container_2_div_11_Template", "groupOptions", "statementLimit", "opt_r10", "_r13", "i_r12", "_r11", "MetadataBuilderComponent_ng_container_0_ng_container_1_ng_template_3_div_10_button_4_Template", "filterStmt_r14", "MetadataBuilderComponent_ng_container_0_ng_container_1_ng_template_3_option_4_Template", "_r9", "MetadataBuilderComponent_ng_container_0_ng_container_1_ng_template_3_div_10_Template", "MetadataBuilderComponent_ng_container_0_ng_container_1_ng_container_2_Template", "MetadataBuilderComponent_ng_container_0_ng_container_1_ng_template_3_Template", "\u0275\u0275templateRefExtractor", "formGroup", "utilityService", "getActiveBreakpoint", "Breakpoint", "Desktop", "mobileView_r15", "MetadataBuilderComponent_ng_container_0_ng_container_1_Template", "MetadataBuilderComponent", "constructor", "allFields", "update", "EventEmitter", "apply", "cdRef", "inject", "ChangeDetectorRef", "metadataService", "MetadataService", "UtilityService", "filterUtilityService", "FilterUtilitiesService", "destroyRef", "DestroyRef", "FormGroup", "FilterCombination", "Or", "translate", "And", "ngOnInit", "addControl", "FormControl", "combination", "valueChanges", "pipe", "distinctUntilChanged", "takeUntilDestroyed", "tap", "values", "parseInt", "get", "emit", "subscribe", "createDefaultFilterStatement", "markForCheck", "slice", "concat", "filterStmt", "selectors", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "MetadataBuilderComponent_ng_container_0_Template", "NgIf", "MetadataFilterRowComponent", "NgForOf", "FormsModule", "\u0275NgNoValidate", "NgSelectOption", "\u0275NgSelectMultipleOption", "SelectControlValueAccessor", "NgControlStatus", "NgControlStatusGroup", "NgbTooltip", "ReactiveFormsModule", "FormGroupDirective", "FormControlName", "TranslocoDirective", "changeDetection", "_MetadataBuilderComponent", "\u0275\u0275elementStart", "\u0275\u0275elementContainer", "\u0275\u0275elementEnd", "\u0275\u0275property", "undefined", "\u0275\u0275advance", "filterSection_r2", "\u0275\u0275pureFunction1", "_c1", "isOpen_r1", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r3", "ctx_r3", "\u0275\u0275nextContext", "\u0275\u0275resetView", "toggleService", "set", "\u0275\u0275text", "\u0275\u0275pureFunction0", "_c2", "\u0275\u0275textInterpolate1", "t_r5", "\u0275\u0275elementContainerStart", "\u0275\u0275template", "MetadataFilterComponent_ng_container_0_ng_container_1_ng_container_1_div_1_Template", "MetadataFilterComponent_ng_container_0_ng_container_1_ng_container_1_ng_template_2_Template", "\u0275\u0275templateRefExtractor", "activeBreakpoint_r6", "Breakpoint", "Tablet", "mobileView_r7", "MetadataFilterComponent_ng_container_0_ng_container_1_ng_container_1_Template", "utilityService", "getActiveBreakpoint", "\u0275\u0275element", "field_r9", "\u0275\u0275textInterpolate", "\u0275\u0275pipeBind1", "buttons_r10", "$event", "_r8", "handleFilters", "updateSortOrder", "MetadataFilterComponent_ng_container_0_ng_template_3_div_0_i_14_Template", "MetadataFilterComponent_ng_container_0_ng_template_3_div_0_ng_template_15_Template", "MetadataFilterComponent_ng_container_0_ng_template_3_div_0_option_18_Template", "MetadataFilterComponent_ng_container_0_ng_template_3_div_0_ng_container_23_Template", "MetadataFilterComponent_ng_container_0_ng_template_3_div_0_div_24_Template", "filterV2", "allFilterFields", "filterSettings", "statementLimit", "sortGroup", "sortDisabled", "isAscendingSort", "descSort_r11", "allSortFields", "_c3", "Mobile", "MetadataFilterComponent_ng_container_0_ng_template_3_div_0_Template", "fullyLoaded", "_r12", "clear", "apply", "save", "saveDisabled", "tmp_7_0", "get", "value", "MetadataFilterComponent_ng_container_0_ng_container_1_Template", "MetadataFilterComponent_ng_container_0_ng_template_3_Template", "MetadataFilterComponent_ng_container_0_ng_template_5_Template", "toggleState$", "MetadataFilterComponent", "constructor", "toggleService", "filterService", "filterOpen", "EventEmitter", "filteringDisabled", "applyFilter", "destroyRef", "inject", "DestroyRef", "utilityService", "UtilityService", "filterUtilitiesService", "FilterUtilitiesService", "filteringCollapsed", "libraries", "isAscendingSort", "updateApplied", "fullyLoaded", "allSortFields", "allFilterFields", "allFields", "cdRef", "ChangeDetectorRef", "toastr", "ToastrService", "Breakpoint", "getAllFilters", "subscribe", "res", "smartFilters", "map", "r", "value", "label", "name", "ngOnInit", "filterSettings", "undefined", "FilterSettings", "markForCheck", "pipe", "takeUntilDestroyed", "openState", "set", "loadFromPresetsAndSetup", "close", "emit", "deepClone", "obj", "Array", "item", "clonedObj", "key", "Object", "prototype", "hasOwnProperty", "call", "handleFilters", "filter", "filterV2", "presetsV2", "sortGroup", "FormGroup", "sortField", "FormControl", "sortOptions", "SortField", "SortName", "disabled", "sortDisabled", "limitTo", "isAscending", "valueChanges", "parseInt", "get", "Math", "max", "apply", "updateSortOrder", "clear", "isFirst", "getActiveBreakpoint", "Mobile", "toggleSelected", "save", "saveFilter", "success", "translate", "toggle", "setToggle", "event", "\u0275\u0275directiveInject", "ToggleService", "FilterService", "selectors", "contentQueries", "rf", "ctx", "dirIndex", "\u0275\u0275template", "MetadataFilterComponent_ng_container_0_Template", "\u0275\u0275property", "NgIf", "NgTemplateOutlet", "DrawerComponent", "ReactiveFormsModule", "\u0275NgNoValidate", "NgSelectOption", "\u0275NgSelectMultipleOption", "DefaultValueAccessor", "NumberValueAccessor", "SelectControlValueAccessor", "NgControlStatus", "NgControlStatusGroup", "FormGroupDirective", "FormControlName", "FormsModule", "AsyncPipe", "TranslocoModule", "TranslocoDirective", "SortFieldPipe", "MetadataBuilderComponent", "NgForOf", "Select2Module", "NgClass", "styles", "data", "animation", "trigger", "transition", "style", "height", "opacity", "animate", "changeDetection", "_MetadataFilterComponent", "\u0275\u0275elementStart", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r2", "ctx_r2", "\u0275\u0275nextContext", "\u0275\u0275resetView", "performAction", "\u0275\u0275elementEnd", "\u0275\u0275text", "\u0275\u0275advance", "\u0275\u0275property", "actions", "header", "\u0275\u0275textInterpolate", "pagination", "totalItems", "\u0275\u0275template", "CardDetailLayoutComponent_ng_container_0_div_1_span_4_span_2_Template", "\u0275\u0275textInterpolate1", "undefined", "CardDetailLayoutComponent_ng_container_0_div_1_span_3_Template", "CardDetailLayoutComponent_ng_container_0_div_1_span_4_Template", "length", "\u0275\u0275elementContainer", "noDataTemplate", "item_r6", "_r5", "$implicit", "tryToSaveJumpKey", "\u0275\u0275propertyInterpolate1", "i_r7", "itemTemplate", "\u0275\u0275pureFunction2", "_c5", "scroll_r8", "viewPortInfo", "startIndexWithBuffer", "jumpBar_r9", "\u0275\u0275pureFunction0", "_c6", "item_r11", "_r10", "i_r12", "CardDetailLayoutComponent_ng_container_0_ng_template_13_div_4_Template", "CardDetailLayoutComponent_ng_container_0_ng_template_13_div_5_Template", "items", "bufferAmount", "scroll_r13", "viewPortItems", "trackByIdentity", "isLoading", "\u0275\u0275elementContainerStart", "jumpKey_r15", "_r14", "scrollTo", "\u0275\u0275pureFunction1", "_c7", "hasCustomSort", "t_r4", "_c4", "size", "title", "CardDetailLayoutComponent_ng_container_0_ng_template_16_ng_container_1_Template", "jumpBarKeysToRender", "CardDetailLayoutComponent_ng_container_0_div_1_Template", "_r1", "applyMetadataFilter", "CardDetailLayoutComponent_ng_container_0_p_6_Template", "CardDetailLayoutComponent_ng_container_0_div_11_Template", "CardDetailLayoutComponent_ng_container_0_ng_container_12_Template", "CardDetailLayoutComponent_ng_container_0_ng_template_13_Template", "\u0275\u0275templateRefExtractor", "\u0275\u0275element", "CardDetailLayoutComponent_ng_container_0_ng_template_16_Template", "filterSettings", "filterOpen", "_c3", "parentScroll", "maxScrollPosition", "ANIMATION_TIME_MS", "CardDetailLayoutComponent", "constructor", "document", "filterUtilityService", "inject", "FilterUtilitiesService", "utilityService", "UtilityService", "cdRef", "ChangeDetectorRef", "jumpbarService", "JumpbarService", "router", "Router", "scrollService", "ScrollService", "filteringDisabled", "jumpBarKeys", "itemClicked", "EventEmitter", "applyFilter", "filter", "createSeriesV2Filter", "libraries", "updateApplied", "hasResumedJumpKey", "Breakpoint", "resizeJumpBar", "currentSize", "querySelector", "getBoundingClientRect", "height", "generateJumpBar", "markForCheck", "ngOnInit", "_", "item", "libraryId", "FilterSettings", "currentPage", "itemsPerPage", "totalPages", "refresh", "subscribe", "virtualScroller", "ngOnChanges", "resumeKey", "getResumeKey", "url", "keys", "k", "key", "setTimeout", "sortOptions", "sortField", "SortField", "SortName", "isAscending", "hasNonDefaultSortField", "presetsV2", "action", "callback", "event", "emit", "filterV2", "jumpKey", "targetIndex", "i", "scrollToIndex", "saveResumeKey", "saveScrollOffset", "scrollPosition", "name", "hasOwnProperty", "charAt", "\u0275\u0275directiveInject", "DOCUMENT", "selectors", "contentQueries", "rf", "ctx", "dirIndex", "VirtualScrollerComponent", "\u0275\u0275resolveWindow", "CardDetailLayoutComponent_ng_container_0_Template", "CommonModule", "NgClass", "NgForOf", "NgIf", "NgTemplateOutlet", "LoadingComponent", "VirtualScrollerModule", "CardActionablesComponent", "NgbTooltip", "MetadataFilterComponent", "TranslocoDirective", "styles", "changeDetection", "_CardDetailLayoutComponent"] }