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