{ "version": 3, "sources": ["src/app/_models/metadata/v2/filter-comparison.ts", "src/app/_models/metadata/v2/filter-field.ts", "src/app/_models/metadata/series-filter.ts", "src/app/_models/metadata/v2/filter-combination.ts", "src/app/_services/metadata.service.ts"], "sourcesContent": ["export enum FilterComparison {\n Equal = 0,\n GreaterThan =1,\n GreaterThanEqual = 2,\n LessThan = 3,\n LessThanEqual = 4,\n /// \n ///\n /// \n /// Only works with IList\n Contains = 5,\n MustContains = 6,\n /// \n /// Performs a LIKE %value%\n /// \n Matches = 7,\n NotContains = 8,\n /// \n /// Not Equal to\n /// \n NotEqual = 9,\n /// \n /// String starts with\n /// \n BeginsWith = 10,\n /// \n /// String ends with\n /// \n EndsWith = 11,\n /// \n /// Is Date before X\n /// \n IsBefore = 12,\n /// \n /// Is Date after X\n /// \n IsAfter = 13,\n /// \n /// Is Date between now and X seconds ago\n /// \n IsInLast = 14,\n /// \n /// Is Date not between now and X seconds ago\n /// \n IsNotInLast = 15,\n}\n", "export enum FilterField\n{\n None = -1,\n Summary = 0,\n SeriesName = 1,\n PublicationStatus = 2,\n Languages = 3,\n AgeRating = 4,\n UserRating = 5,\n Tags = 6,\n CollectionTags = 7,\n Translators = 8,\n Characters = 9,\n Publisher = 10,\n Editor = 11,\n CoverArtist = 12,\n Letterer = 13,\n Colorist = 14,\n Inker = 15,\n Penciller = 16,\n Writers = 17,\n Genres = 18,\n Libraries = 19,\n ReadProgress = 20,\n Formats = 21,\n ReleaseYear = 22,\n ReadTime = 23,\n Path = 24,\n FilePath = 25,\n WantToRead = 26,\n ReadingDate = 27,\n AverageRating = 28,\n Imprint = 29,\n Team = 30,\n Location = 31\n}\n\n\nconst enumArray = Object.keys(FilterField)\n .filter(key => !isNaN(Number(key)) && parseInt(key, 10) >= 0)\n .map(key => {\n // @ts-ignore\n return ({key: key, value: FilterField[key]});\n });\n\nenumArray.sort((a, b) => a.value.localeCompare(b.value));\n\nexport const allFields = enumArray\n .map(key => parseInt(key.key, 10))as FilterField[];\n", "import { MangaFormat } from \"../manga-format\";\nimport { SeriesFilterV2 } from \"./v2/series-filter-v2\";\nimport {FilterField} from \"./v2/filter-field\";\n\nexport interface FilterItem {\n title: string;\n value: T;\n selected: boolean;\n}\n\nexport interface SortOptions {\n sortField: SortField;\n isAscending: boolean;\n}\n\nexport enum SortField {\n SortName = 1,\n Created = 2,\n LastModified = 3,\n LastChapterAdded = 4,\n TimeToRead = 5,\n ReleaseYear = 6,\n ReadProgress = 7,\n /**\n * Kavita+ only\n */\n AverageRating = 8,\n Random = 9\n}\n\nexport const allSortFields = Object.keys(SortField)\n .filter(key => !isNaN(Number(key)) && parseInt(key, 10) >= 0)\n .map(key => parseInt(key, 10)) as SortField[];\n\nexport const mangaFormatFilters = [\n {\n title: 'Images',\n value: MangaFormat.IMAGE,\n selected: false\n },\n {\n title: 'EPUB',\n value: MangaFormat.EPUB,\n selected: false\n },\n {\n title: 'PDF',\n value: MangaFormat.PDF,\n selected: false\n },\n {\n title: 'ARCHIVE',\n value: MangaFormat.ARCHIVE,\n selected: false\n }\n];\n\nexport interface FilterEvent {\n filterV2: SeriesFilterV2;\n isFirst: boolean;\n}\n\n", "export enum FilterCombination {\n Or = 0,\n And = 1\n}\n", "import {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {tap} from 'rxjs/operators';\nimport {of} from 'rxjs';\nimport {environment} from 'src/environments/environment';\nimport {Genre} from '../_models/metadata/genre';\nimport {AgeRatingDto} from '../_models/metadata/age-rating-dto';\nimport {Language} from '../_models/metadata/language';\nimport {PublicationStatusDto} from '../_models/metadata/publication-status-dto';\nimport {Person, PersonRole} from '../_models/metadata/person';\nimport {Tag} from '../_models/tag';\nimport {FilterComparison} from '../_models/metadata/v2/filter-comparison';\nimport {FilterField} from '../_models/metadata/v2/filter-field';\nimport {Router} from \"@angular/router\";\nimport {SortField} from \"../_models/metadata/series-filter\";\nimport {FilterCombination} from \"../_models/metadata/v2/filter-combination\";\nimport {SeriesFilterV2} from \"../_models/metadata/v2/series-filter-v2\";\nimport {FilterStatement} from \"../_models/metadata/v2/filter-statement\";\nimport {SeriesDetailPlus} from \"../_models/series-detail/series-detail-plus\";\nimport {LibraryType} from \"../_models/library/library\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MetadataService {\n\n baseUrl = environment.apiUrl;\n private validLanguages: Array = [];\n\n constructor(private httpClient: HttpClient) { }\n\n getSeriesMetadataFromPlus(seriesId: number, libraryType: LibraryType) {\n return this.httpClient.get(this.baseUrl + 'metadata/series-detail-plus?seriesId=' + seriesId + '&libraryType=' + libraryType);\n }\n\n forceRefreshFromPlus(seriesId: number) {\n return this.httpClient.post(this.baseUrl + 'metadata/force-refresh?seriesId=' + seriesId, {});\n }\n\n getAllAgeRatings(libraries?: Array) {\n let method = 'metadata/age-ratings'\n if (libraries != undefined && libraries.length > 0) {\n method += '?libraryIds=' + libraries.join(',');\n }\n return this.httpClient.get>(this.baseUrl + method);\n }\n\n getAllPublicationStatus(libraries?: Array) {\n let method = 'metadata/publication-status'\n if (libraries != undefined && libraries.length > 0) {\n method += '?libraryIds=' + libraries.join(',');\n }\n return this.httpClient.get>(this.baseUrl + method);\n }\n\n getAllTags(libraries?: Array) {\n let method = 'metadata/tags'\n if (libraries != undefined && libraries.length > 0) {\n method += '?libraryIds=' + libraries.join(',');\n }\n return this.httpClient.get>(this.baseUrl + method);\n }\n\n getAllGenres(libraries?: Array) {\n let method = 'metadata/genres'\n if (libraries != undefined && libraries.length > 0) {\n method += '?libraryIds=' + libraries.join(',');\n }\n return this.httpClient.get>(this.baseUrl + method);\n }\n\n getAllLanguages(libraries?: Array) {\n let method = 'metadata/languages'\n if (libraries != undefined && libraries.length > 0) {\n method += '?libraryIds=' + libraries.join(',');\n }\n return this.httpClient.get>(this.baseUrl + method);\n }\n\n\n /**\n * All the potential language tags there can be\n */\n getAllValidLanguages() {\n if (this.validLanguages != undefined && this.validLanguages.length > 0) {\n return of(this.validLanguages);\n }\n return this.httpClient.get>(this.baseUrl + 'metadata/all-languages')\n .pipe(tap(l => this.validLanguages = l));\n }\n\n getAllPeople(libraries?: Array) {\n let method = 'metadata/people'\n if (libraries != undefined && libraries.length > 0) {\n method += '?libraryIds=' + libraries.join(',');\n }\n return this.httpClient.get>(this.baseUrl + method);\n }\n\n getAllPeopleByRole(role: PersonRole) {\n return this.httpClient.get>(this.baseUrl + 'metadata/people-by-role?role=' + role);\n }\n\n createDefaultFilterDto(): SeriesFilterV2 {\n return {\n statements: [] as FilterStatement[],\n combination: FilterCombination.And,\n limitTo: 0,\n sortOptions: {\n isAscending: true,\n sortField: SortField.SortName\n }\n };\n }\n\n createDefaultFilterStatement(field: FilterField = FilterField.SeriesName, comparison = FilterComparison.Equal, value = '') {\n return {\n comparison: comparison,\n field: field,\n value: value\n };\n }\n\n updateFilter(arr: Array, index: number, filterStmt: FilterStatement) {\n arr[index].comparison = filterStmt.comparison;\n arr[index].field = filterStmt.field;\n arr[index].value = filterStmt.value ? filterStmt.value + '' : '';\n }\n}\n"], "mappings": "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", "names": ["FilterComparison", "FilterField", "enumArray", "Object", "keys", "filter", "key", "isNaN", "Number", "parseInt", "map", "value", "sort", "a", "b", "localeCompare", "allFields", "SortField", "allSortFields", "Object", "keys", "filter", "key", "isNaN", "Number", "parseInt", "map", "mangaFormatFilters", "title", "value", "MangaFormat", "IMAGE", "selected", "EPUB", "PDF", "ARCHIVE", "FilterCombination", "MetadataService", "constructor", "httpClient", "baseUrl", "environment", "apiUrl", "validLanguages", "getSeriesMetadataFromPlus", "seriesId", "libraryType", "get", "forceRefreshFromPlus", "post", "getAllAgeRatings", "libraries", "method", "undefined", "length", "join", "getAllPublicationStatus", "getAllTags", "getAllGenres", "getAllLanguages", "getAllValidLanguages", "of", "pipe", "tap", "l", "getAllPeople", "getAllPeopleByRole", "role", "createDefaultFilterDto", "statements", "combination", "FilterCombination", "And", "limitTo", "sortOptions", "isAscending", "sortField", "SortField", "SortName", "createDefaultFilterStatement", "field", "FilterField", "SeriesName", "comparison", "FilterComparison", "Equal", "value", "updateFilter", "arr", "index", "filterStmt", "\u0275\u0275inject", "HttpClient", "factory", "\u0275fac", "providedIn", "_MetadataService"] }