{ "version": 3, "sources": ["src/app/library-detail/library-detail.component.ts", "src/app/library-detail/library-detail.component.html", "src/app/_routes/library-detail-routing.module.ts"], "sourcesContent": ["import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DestroyRef,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n OnInit\r\n} from '@angular/core';\r\nimport {Title} from '@angular/platform-browser';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {take} from 'rxjs/operators';\r\nimport {BulkSelectionService} from '../cards/bulk-selection.service';\r\nimport {KEY_CODES, UtilityService} from '../shared/_services/utility.service';\r\nimport {SeriesAddedEvent} from '../_models/events/series-added-event';\r\nimport {Library} from '../_models/library/library';\r\nimport {Pagination} from '../_models/pagination';\r\nimport {Series} from '../_models/series';\r\nimport {FilterEvent} from '../_models/metadata/series-filter';\r\nimport {Action, ActionFactoryService, ActionItem} from '../_services/action-factory.service';\r\nimport {ActionService} from '../_services/action.service';\r\nimport {LibraryService} from '../_services/library.service';\r\nimport {EVENTS, MessageHubService} from '../_services/message-hub.service';\r\nimport {SeriesService} from '../_services/series.service';\r\nimport {NavService} from '../_services/nav.service';\r\nimport {FilterUtilitiesService} from '../shared/_services/filter-utilities.service';\r\nimport {FilterSettings} from '../metadata-filter/filter-settings';\r\nimport {JumpKey} from '../_models/jumpbar/jump-key';\r\nimport {SeriesRemovedEvent} from '../_models/events/series-removed-event';\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {SentenceCasePipe} from '../_pipes/sentence-case.pipe';\r\nimport {BulkOperationsComponent} from '../cards/bulk-operations/bulk-operations.component';\r\nimport {SeriesCardComponent} from '../cards/series-card/series-card.component';\r\nimport {CardDetailLayoutComponent} from '../cards/card-detail-layout/card-detail-layout.component';\r\nimport {DecimalPipe, NgFor, NgIf} from '@angular/common';\r\nimport {NgbNav, NgbNavContent, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavOutlet} from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n SideNavCompanionBarComponent\r\n} from '../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component';\r\nimport {TranslocoDirective} from \"@ngneat/transloco\";\r\nimport {SeriesFilterV2} from \"../_models/metadata/v2/series-filter-v2\";\r\nimport {MetadataService} from \"../_services/metadata.service\";\r\nimport {FilterComparison} from \"../_models/metadata/v2/filter-comparison\";\r\nimport {FilterField} from \"../_models/metadata/v2/filter-field\";\r\nimport {CardActionablesComponent} from \"../_single-module/card-actionables/card-actionables.component\";\r\nimport {LoadingComponent} from \"../shared/loading/loading.component\";\r\n\r\n@Component({\r\n selector: 'app-library-detail',\r\n templateUrl: './library-detail.component.html',\r\n styleUrls: ['./library-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [SideNavCompanionBarComponent, CardActionablesComponent, NgbNav, NgFor, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, NgIf\r\n , CardDetailLayoutComponent, SeriesCardComponent, BulkOperationsComponent, NgbNavOutlet, DecimalPipe, SentenceCasePipe, TranslocoDirective, LoadingComponent]\r\n})\r\nexport class LibraryDetailComponent implements OnInit {\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly metadataService = inject(MetadataService);\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n\r\n libraryId!: number;\r\n libraryName = '';\r\n series: Series[] = [];\r\n loadingSeries = false;\r\n pagination: Pagination = {currentPage: 0, totalPages: 0, totalItems: 0, itemsPerPage: 0};\r\n actions: ActionItem[] = [];\r\n filter: SeriesFilterV2 | undefined = undefined;\r\n filterSettings: FilterSettings = new FilterSettings();\r\n filterOpen: EventEmitter = new EventEmitter();\r\n filterActive: boolean = false;\r\n filterActiveCheck!: SeriesFilterV2;\r\n refresh: EventEmitter = new EventEmitter();\r\n jumpKeys: Array = [];\r\n bulkLoader: boolean = false;\r\n\r\n tabs: Array<{title: string, fragment: string, icon: string}> = [\r\n {title: 'library-tab', fragment: '', icon: 'fa-landmark'},\r\n {title: 'recommended-tab', fragment: 'recommended', icon: 'fa-award'},\r\n ];\r\n active = this.tabs[0];\r\n\r\n\r\n bulkActionCallback = async (action: ActionItem, data: any) => {\r\n const selectedSeriesIndices = this.bulkSelectionService.getSelectedCardsForSource('series');\r\n const selectedSeries = this.series.filter((series, index: number) => selectedSeriesIndices.includes(index + ''));\r\n\r\n switch (action.action) {\r\n case Action.AddToReadingList:\r\n this.actionService.addMultipleSeriesToReadingList(selectedSeries, (success) => {\r\n if (success) this.bulkSelectionService.deselectAll();\r\n this.cdRef.markForCheck();\r\n });\r\n break;\r\n case Action.AddToWantToReadList:\r\n this.actionService.addMultipleSeriesToWantToReadList(selectedSeries.map(s => s.id), () => {\r\n this.bulkSelectionService.deselectAll();\r\n this.cdRef.markForCheck();\r\n });\r\n break;\r\n case Action.RemoveFromWantToReadList:\r\n this.actionService.removeMultipleSeriesFromWantToReadList(selectedSeries.map(s => s.id), () => {\r\n this.bulkSelectionService.deselectAll();\r\n this.cdRef.markForCheck();\r\n });\r\n break;\r\n case Action.AddToCollection:\r\n this.actionService.addMultipleSeriesToCollectionTag(selectedSeries, (success) => {\r\n if (success) this.bulkSelectionService.deselectAll();\r\n this.cdRef.markForCheck();\r\n });\r\n break;\r\n case Action.MarkAsRead:\r\n this.actionService.markMultipleSeriesAsRead(selectedSeries, () => {\r\n this.bulkSelectionService.deselectAll();\r\n this.loadPage();\r\n });\r\n\r\n break;\r\n case Action.MarkAsUnread:\r\n this.actionService.markMultipleSeriesAsUnread(selectedSeries, () => {\r\n this.bulkSelectionService.deselectAll();\r\n this.loadPage();\r\n });\r\n break;\r\n case Action.Delete:\r\n if (selectedSeries.length > 25) {\r\n this.bulkLoader = true;\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n await this.actionService.deleteMultipleSeries(selectedSeries, (successful) => {\r\n this.bulkLoader = false;\r\n this.cdRef.markForCheck();\r\n if (!successful) return;\r\n this.bulkSelectionService.deselectAll();\r\n this.loadPage();\r\n });\r\n break;\r\n }\r\n }\r\n\r\n constructor(private route: ActivatedRoute, private router: Router, private seriesService: SeriesService,\r\n private libraryService: LibraryService, private titleService: Title, private actionFactoryService: ActionFactoryService,\r\n private actionService: ActionService, public bulkSelectionService: BulkSelectionService, private hubService: MessageHubService,\r\n private utilityService: UtilityService, public navService: NavService, private filterUtilityService: FilterUtilitiesService) {\r\n const routeId = this.route.snapshot.paramMap.get('libraryId');\r\n if (routeId === null) {\r\n this.router.navigateByUrl('/home');\r\n return;\r\n }\r\n\r\n this.actions = this.actionFactoryService.getLibraryActions(this.handleAction.bind(this));\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.libraryId = parseInt(routeId, 10);\r\n this.libraryService.getLibraryNames().pipe(take(1)).subscribe(names => {\r\n this.libraryName = names[this.libraryId];\r\n this.titleService.setTitle('Kavita - ' + this.libraryName);\r\n this.cdRef.markForCheck();\r\n });\r\n\r\n this.libraryService.getJumpBar(this.libraryId).subscribe(barDetails => {\r\n this.jumpKeys = barDetails;\r\n this.cdRef.markForCheck();\r\n });\r\n\r\n this.actions = this.actionFactoryService.getLibraryActions(this.handleAction.bind(this));\r\n\r\n this.filterUtilityService.filterPresetsFromUrl(this.route.snapshot).subscribe(filter => {\r\n this.filter = filter;\r\n\r\n if (this.filter.statements.filter(stmt => stmt.field === FilterField.Libraries).length === 0) {\r\n this.filter!.statements.push({field: FilterField.Libraries, value: this.libraryId + '', comparison: FilterComparison.Equal});\r\n }\r\n\r\n this.filterActiveCheck = this.filterUtilityService.createSeriesV2Filter();\r\n this.filterActiveCheck.statements.push({field: FilterField.Libraries, value: this.libraryId + '', comparison: FilterComparison.Equal});\r\n\r\n this.filterSettings.presetsV2 = this.filter;\r\n\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n this.hubService.messages$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\r\n if (event.event === EVENTS.SeriesAdded) {\r\n const seriesAdded = event.payload as SeriesAddedEvent;\r\n if (seriesAdded.libraryId !== this.libraryId) return;\r\n if (!this.utilityService.deepEqual(this.filter, this.filterActiveCheck)) {\r\n this.loadPage();\r\n return;\r\n }\r\n this.seriesService.getSeries(seriesAdded.seriesId).subscribe(s => {\r\n if (this.series.filter(sObj => s.id === sObj.id).length > 0) return;\r\n this.series = [...this.series, s].sort((s1: Series, s2: Series) => {\r\n if (s1.sortName < s2.sortName) return -1;\r\n if (s1.sortName > s2.sortName) return 1;\r\n return 0;\r\n });\r\n this.pagination.totalItems++;\r\n this.cdRef.markForCheck();\r\n this.refresh.emit();\r\n });\r\n\r\n\r\n } else if (event.event === EVENTS.SeriesRemoved) {\r\n const seriesRemoved = event.payload as SeriesRemovedEvent;\r\n if (seriesRemoved.libraryId !== this.libraryId) return;\r\n if (!this.utilityService.deepEqual(this.filter, this.filterActiveCheck)) {\r\n this.loadPage();\r\n return;\r\n }\r\n\r\n this.series = this.series.filter(s => s.id != seriesRemoved.seriesId);\r\n this.pagination.totalItems--;\r\n this.cdRef.markForCheck();\r\n this.refresh.emit();\r\n }\r\n });\r\n }\r\n\r\n\r\n @HostListener('document:keydown.shift', ['$event'])\r\n handleKeypress(event: KeyboardEvent) {\r\n if (event.key === KEY_CODES.SHIFT) {\r\n this.bulkSelectionService.isShiftDown = true;\r\n }\r\n }\r\n\r\n @HostListener('document:keyup.shift', ['$event'])\r\n handleKeyUp(event: KeyboardEvent) {\r\n if (event.key === KEY_CODES.SHIFT) {\r\n this.bulkSelectionService.isShiftDown = false;\r\n }\r\n }\r\n\r\n async handleAction(action: ActionItem, library: Library) {\r\n let lib: Partial = library;\r\n if (library === undefined) {\r\n //lib = {id: this.libraryId, name: this.libraryName}; // BUG: We need the whole library for editLibrary\r\n this.libraryService.getLibrary(this.libraryId).subscribe(async library => {\r\n switch (action.action) {\r\n case(Action.Scan):\r\n await this.actionService.scanLibrary(library);\r\n break;\r\n case(Action.RefreshMetadata):\r\n await this.actionService.refreshMetadata(library);\r\n break;\r\n case(Action.Edit):\r\n this.actionService.editLibrary(library);\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n return\r\n }\r\n switch (action.action) {\r\n case(Action.Scan):\r\n await this.actionService.scanLibrary(lib);\r\n break;\r\n case(Action.RefreshMetadata):\r\n await this.actionService.refreshMetadata(lib);\r\n break;\r\n case(Action.Edit):\r\n this.actionService.editLibrary(lib);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n\r\n\r\n performAction(action: ActionItem) {\r\n if (typeof action.callback === 'function') {\r\n action.callback(action, undefined);\r\n }\r\n }\r\n\r\n updateFilter(data: FilterEvent) {\r\n if (data.filterV2 === undefined) return;\r\n this.filter = data.filterV2;\r\n\r\n if (data.isFirst) {\r\n this.loadPage();\r\n return;\r\n }\r\n\r\n this.filterUtilityService.updateUrlFromFilter(this.filter).subscribe((encodedFilter) => {\r\n this.loadPage();\r\n });\r\n }\r\n\r\n loadPage() {\r\n this.loadingSeries = true;\r\n this.filterActive = !this.utilityService.deepEqual(this.filter, this.filterActiveCheck);\r\n this.cdRef.markForCheck();\r\n\r\n this.seriesService.getSeriesForLibraryV2(undefined, undefined, this.filter)\r\n .subscribe(series => {\r\n this.series = series.result;\r\n this.pagination = series.pagination;\r\n this.loadingSeries = false;\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n\r\n trackByIdentity = (index: number, item: Series) => `${item.id}_${item.name}_${item.localizedName}_${item.pagesRead}`;\r\n}\r\n", "\r\n \r\n

\r\n \r\n {{libraryName}}\r\n

\r\n
{{t('common.series-count', {num: pagination.totalItems | number})}}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n", "import { Routes } from '@angular/router';\r\nimport { AuthGuard } from '../_guards/auth.guard';\r\nimport { LibraryAccessGuard } from '../_guards/library-access.guard';\r\nimport { LibraryDetailComponent } from '../library-detail/library-detail.component';\r\n\r\n\r\nexport const routes: Routes = [\r\n {\r\n path: ':libraryId',\r\n runGuardsAndResolvers: 'always',\r\n canActivate: [AuthGuard, LibraryAccessGuard],\r\n component: LibraryDetailComponent\r\n },\r\n {\r\n path: '',\r\n runGuardsAndResolvers: 'always',\r\n canActivate: [AuthGuard, LibraryAccessGuard],\r\n component: LibraryDetailComponent\r\n }\r\n];\r\n"], "mappings": "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", "names": ["\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "t_r3", "\u0275\u0275pureFunction1", "_c0", "\u0275\u0275pipeBind1", "ctx_r1", "pagination", "totalItems", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r5", "\u0275\u0275nextContext", "\u0275\u0275resetView", "loadPage", "$event", "position_r6", "idx", "bulkSelectionService", "handleCardSelection", "series", "length", "\u0275\u0275property", "item_r7", "libraryId", "isCardSelected", "_r4", "updateFilter", "\u0275\u0275template", "LibraryDetailComponent_ng_container_0_app_card_detail_layout_9_ng_template_1_Template", "\u0275\u0275templateRefExtractor", "loadingSeries", "filterSettings", "trackByIdentity", "filterOpen", "jumpKeys", "refresh", "\u0275\u0275elementContainerStart", "_r1", "emit", "performAction", "LibraryDetailComponent_ng_container_0_h6_6_Template", "\u0275\u0275element", "LibraryDetailComponent_ng_container_0_app_card_detail_layout_9_Template", "filterActive", "actions", "\u0275\u0275textInterpolate", "libraryName", "active", "fragment", "bulkActionCallback", "bulkLoader", "filter", "LibraryDetailComponent", "constructor", "route", "router", "seriesService", "libraryService", "titleService", "actionFactoryService", "actionService", "hubService", "utilityService", "navService", "filterUtilityService", "destroyRef", "inject", "DestroyRef", "metadataService", "MetadataService", "cdRef", "ChangeDetectorRef", "currentPage", "totalPages", "itemsPerPage", "undefined", "FilterSettings", "EventEmitter", "tabs", "title", "icon", "action", "data", "__async", "selectedSeriesIndices", "getSelectedCardsForSource", "selectedSeries", "index", "includes", "Action", "AddToReadingList", "addMultipleSeriesToReadingList", "success", "deselectAll", "markForCheck", "AddToWantToReadList", "addMultipleSeriesToWantToReadList", "map", "s", "id", "RemoveFromWantToReadList", "removeMultipleSeriesFromWantToReadList", "AddToCollection", "addMultipleSeriesToCollectionTag", "MarkAsRead", "markMultipleSeriesAsRead", "MarkAsUnread", "markMultipleSeriesAsUnread", "Delete", "deleteMultipleSeries", "successful", "item", "name", "localizedName", "pagesRead", "routeId", "snapshot", "paramMap", "get", "navigateByUrl", "getLibraryActions", "handleAction", "bind", "routeReuseStrategy", "shouldReuseRoute", "parseInt", "getLibraryNames", "pipe", "take", "subscribe", "names", "setTitle", "getJumpBar", "barDetails", "filterPresetsFromUrl", "statements", "stmt", "field", "FilterField", "Libraries", "push", "value", "comparison", "FilterComparison", "Equal", "filterActiveCheck", "createSeriesV2Filter", "presetsV2", "ngOnInit", "messages$", "takeUntilDestroyed", "event", "EVENTS", "SeriesAdded", "seriesAdded", "payload", "deepEqual", "getSeries", "seriesId", "sObj", "sort", "s1", "s2", "sortName", "SeriesRemoved", "seriesRemoved", "handleKeypress", "key", "KEY_CODES", "SHIFT", "isShiftDown", "handleKeyUp", "library", "lib", "getLibrary", "Scan", "scanLibrary", "RefreshMetadata", "refreshMetadata", "Edit", "editLibrary", "callback", "filterV2", "isFirst", "updateUrlFromFilter", "encodedFilter", "getSeriesForLibraryV2", "result", "\u0275\u0275directiveInject", "ActivatedRoute", "Router", "SeriesService", "LibraryService", "Title", "ActionFactoryService", "ActionService", "BulkSelectionService", "MessageHubService", "UtilityService", "NavService", "FilterUtilitiesService", "selectors", "hostBindings", "rf", "ctx", "\u0275\u0275resolveDocument", "LibraryDetailComponent_ng_container_0_Template", "SideNavCompanionBarComponent", "CardActionablesComponent", "NgIf", "CardDetailLayoutComponent", "SeriesCardComponent", "BulkOperationsComponent", "DecimalPipe", "TranslocoDirective", "LoadingComponent", "styles", "changeDetection", "_LibraryDetailComponent", "routes", "path", "runGuardsAndResolvers", "canActivate", "AuthGuard", "LibraryAccessGuard", "component", "LibraryDetailComponent"] }