{ "version": 3, "sources": ["src/app/admin/manage-alerts/manage-alerts.component.ts", "src/app/admin/manage-alerts/manage-alerts.component.html"], "sourcesContent": ["import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n ViewChildren,\r\n inject,\r\n DestroyRef\r\n} from '@angular/core';\r\nimport { BehaviorSubject, Observable, filter, shareReplay } from 'rxjs';\r\nimport { SortEvent, SortableHeader, compare } from 'src/app/_single-module/table/_directives/sortable-header.directive';\r\nimport { KavitaMediaError } from '../_models/media-error';\r\nimport { ServerService } from 'src/app/_services/server.service';\r\nimport { EVENTS, MessageHubService } from 'src/app/_services/message-hub.service';\r\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport { FilterPipe } from '../../_pipes/filter.pipe';\r\nimport { LoadingComponent } from '../../shared/loading/loading.component';\r\nimport { NgIf, NgFor } from '@angular/common';\r\nimport {TranslocoDirective} from \"@ngneat/transloco\";\r\nimport {WikiLink} from \"../../_models/wiki\";\r\n\r\n@Component({\r\n selector: 'app-manage-alerts',\r\n templateUrl: './manage-alerts.component.html',\r\n styleUrls: ['./manage-alerts.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [ReactiveFormsModule, NgIf, LoadingComponent, NgFor, FilterPipe, SortableHeader, TranslocoDirective]\r\n})\r\nexport class ManageAlertsComponent implements OnInit {\r\n\r\n @Output() alertCount = new EventEmitter();\r\n @ViewChildren(SortableHeader) headers!: QueryList>;\r\n\r\n private readonly serverService = inject(ServerService);\r\n private readonly messageHub = inject(MessageHubService);\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n private readonly destroyRef = inject(DestroyRef);\r\n protected readonly WikiLink = WikiLink;\r\n\r\n messageHubUpdate$ = this.messageHub.messages$.pipe(takeUntilDestroyed(this.destroyRef), filter(m => m.event === EVENTS.ScanSeries), shareReplay());\r\n currentSort = new BehaviorSubject>({column: 'extension', direction: 'asc'});\r\n currentSort$: Observable> = this.currentSort.asObservable();\r\n\r\n data: Array = [];\r\n isLoading = true;\r\n formGroup = new FormGroup({\r\n filter: new FormControl('', [])\r\n });\r\n\r\n ngOnInit(): void {\r\n\r\n this.loadData();\r\n\r\n this.messageHubUpdate$.subscribe(_ => this.loadData());\r\n\r\n this.currentSort$.subscribe(sortConfig => {\r\n this.data = (sortConfig.column) ? this.data.sort((a: KavitaMediaError, b: KavitaMediaError) => {\r\n if (sortConfig.column === '') return 0;\r\n const res = compare(a[sortConfig.column], b[sortConfig.column]);\r\n return sortConfig.direction === 'asc' ? res : -res;\r\n }) : this.data;\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n\r\n onSort(evt: any) {\r\n //SortEvent\r\n this.currentSort.next(evt);\r\n\r\n // Must clear out headers here\r\n this.headers.forEach((header) => {\r\n if (header.sortable !== evt.column) {\r\n header.direction = '';\r\n }\r\n });\r\n }\r\n\r\n loadData() {\r\n this.isLoading = true;\r\n this.cdRef.markForCheck();\r\n this.serverService.getMediaErrors().subscribe(d => {\r\n this.data = d;\r\n this.isLoading = false;\r\n this.alertCount.emit(d.length);\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n\r\n clear() {\r\n this.serverService.clearMediaAlerts().subscribe(_ => this.loadData());\r\n }\r\n\r\n filterList = (listItem: KavitaMediaError) => {\r\n const query = (this.formGroup.get('filter')?.value || '').toLowerCase();\r\n return listItem.comment.toLowerCase().indexOf(query) >= 0 || listItem.filePath.toLowerCase().indexOf(query) >= 0 || listItem.details.indexOf(query) >= 0;\r\n }\r\n}\r\n", "\r\n

{{t('description-part-1')}} {{t('description-part-2')}}

\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{t('extension-header')}}\r\n \r\n {{t('file-header')}}\r\n \r\n {{t('comment-header')}}\r\n \r\n {{t('details-header')}}\r\n
No issues
\r\n {{item.extension}}\r\n \r\n {{item.filePath}}\r\n \r\n {{item.comment}}\r\n \r\n {{item.details}}\r\n
\r\n\r\n
\r\n"], "mappings": "2pBCgCIA,EAAA,EAAA,IAAA,EAAsB,EAAA,KAAA,EAAA,EAA4CC,EAAA,EAAA,cAAA,EAAA,EAAiDC,EAAA,EAAK,mBAAzCC,EAAA,CAAA,EAAAC,EAAA,UAAAC,EAAAC,SAAA,0BAE7EN,EAAA,EAAA,IAAA,EAAoD,EAAA,KAAA,EAAA,EAA4CO,EAAA,EAAA,WAAA,EAASL,EAAA,EAAK,6BAC9GF,EAAA,EAAA,IAAA,EAAkD,EAAA,IAAA,EAE9CO,EAAA,CAAA,EACFL,EAAA,EACAF,EAAA,EAAA,IAAA,EACEO,EAAA,CAAA,EACFL,EAAA,EACAF,EAAA,EAAA,IAAA,EACEO,EAAA,CAAA,EACFL,EAAA,EACAF,EAAA,EAAA,IAAA,EACEO,EAAA,CAAA,EACFL,EAAA,EAAK,0BAVHC,EAAA,CAAA,EAAAK,EAAA,IAAAC,EAAAC,UAAA,GAAA,EAGAP,EAAA,CAAA,EAAAK,EAAA,IAAAC,EAAAE,SAAA,GAAA,EAGAR,EAAA,CAAA,EAAAK,EAAA,IAAAC,EAAAG,QAAA,GAAA,EAGAT,EAAA,CAAA,EAAAK,EAAA,IAAAC,EAAAI,QAAA,GAAA,6BAbNC,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,KAAA,EAAA,EAAoD,EAAAC,GAAA,EAAA,EAAA,KAAA,EAAA,gCAA/Cd,EAAA,EAAAC,EAAA,OAAAc,EAAAC,SAAA,GAAA,CAAAd,EAAAC,SAAA,EACgBH,EAAA,EAAAC,EAAA,UAAAc,CAAA,sCAnC3BJ,EAAA,CAAA,EACEd,EAAA,EAAA,GAAA,EAAGO,EAAA,CAAA,EAA4BP,EAAA,EAAA,IAAA,CAAA,EAA2EO,EAAA,CAAA,EAA2BL,EAAA,EAAI,EAEzIF,EAAA,EAAA,OAAA,CAAA,EAA8B,EAAA,MAAA,CAAA,EACF,EAAA,MAAA,CAAA,EACD,EAAA,QAAA,CAAA,EACuBO,EAAA,CAAA,EAAqBL,EAAA,EACjEF,EAAA,GAAA,MAAA,CAAA,EACEC,EAAA,GAAA,QAAA,CAAA,EACAD,EAAA,GAAA,SAAA,EAAA,EAA8CoB,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAjB,EAAAkB,EAAA,EAAA,OAAAC,EAASnB,EAAAoB,MAAA,CAAO,CAAA,CAAA,EAAElB,EAAA,EAAA,EAAqBL,EAAA,EAAS,EAC1F,EACF,EACF,EAERF,EAAA,GAAA,QAAA,EAAA,EAAoE,GAAA,QAAA,KAAA,CAAA,EACnD,GAAA,IAAA,EACX,GAAA,KAAA,EAAA,EACmCoB,EAAA,OAAA,SAAAM,EAAA,CAAAL,EAAAC,CAAA,EAAA,IAAAjB,EAAAkB,EAAA,EAAA,OAAAC,EAAQnB,EAAAsB,OAAAD,CAAA,CAAc,CAAA,CAAA,EACzDnB,EAAA,EAAA,EACFL,EAAA,EACAF,EAAA,GAAA,KAAA,EAAA,EAAoCoB,EAAA,OAAA,SAAAM,EAAA,CAAAL,EAAAC,CAAA,EAAA,IAAAjB,EAAAkB,EAAA,EAAA,OAAAC,EAAQnB,EAAAsB,OAAAD,CAAA,CAAc,CAAA,CAAA,EACxDnB,EAAA,EAAA,EACFL,EAAA,EACAF,EAAA,GAAA,KAAA,EAAA,EAAmCoB,EAAA,OAAA,SAAAM,EAAA,CAAAL,EAAAC,CAAA,EAAA,IAAAjB,EAAAkB,EAAA,EAAA,OAAAC,EAAQnB,EAAAsB,OAAAD,CAAA,CAAc,CAAA,CAAA,EACvDnB,EAAA,EAAA,EACFL,EAAA,EACAF,EAAA,GAAA,KAAA,EAAA,EAAmCoB,EAAA,OAAA,SAAAM,EAAA,CAAAL,EAAAC,CAAA,EAAA,IAAAjB,EAAAkB,EAAA,EAAA,OAAAC,EAAQnB,EAAAsB,OAAAD,CAAA,CAAc,CAAA,CAAA,EACvDnB,EAAA,EAAA,EACFL,EAAA,EAAK,EACF,EAELF,EAAA,GAAA,QAAA,KAAA,CAAA,EACAe,EAAA,GAAAa,GAAA,EAAA,EAAA,KAAA,EAAA,EAAsB,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,iBAkBtB3B,EAAA,EAAQ,sCAjDPC,EAAA,CAAA,EAAAK,EAAA,GAAAsB,EAAA,oBAAA,EAAA,GAAA,EAAyE3B,EAAA,EAAAC,EAAA,OAAAC,EAAA0B,SAAAC,YAAAC,CAAA,EAA8B9B,EAAA,EAAA+B,EAAAJ,EAAA,oBAAA,CAAA,EAEpG3B,EAAA,EAAAC,EAAA,YAAAC,EAAA8B,SAAA,EAG4ChC,EAAA,CAAA,EAAA+B,EAAAJ,EAAA,cAAA,CAAA,EAEU3B,EAAA,CAAA,EAAAC,EAAA,cAAA0B,EAAA,cAAA,CAAA,EACY3B,EAAA,CAAA,EAAA+B,EAAAJ,EAAA,cAAA,CAAA,EASlE3B,EAAA,CAAA,EAAAK,EAAA,IAAAsB,EAAA,kBAAA,EAAA,GAAA,EAGA3B,EAAA,CAAA,EAAAK,EAAA,IAAAsB,EAAA,aAAA,EAAA,GAAA,EAGA3B,EAAA,CAAA,EAAAK,EAAA,IAAAsB,EAAA,gBAAA,EAAA,GAAA,EAGA3B,EAAA,CAAA,EAAAK,EAAA,IAAAsB,EAAA,gBAAA,EAAA,GAAA,EAKC3B,EAAA,CAAA,EAAAC,EAAA,OAAAC,EAAAC,SAAA,EACUH,EAAA,EAAAC,EAAA,OAAAgC,EAAA,GAAA,GAAA/B,EAAAgC,KAAAhC,EAAAiC,UAAA,CAAA,GDAnB,IAAaC,IAAqB,IAAA,CAA5B,IAAOA,EAAP,MAAOA,CAAqB,CARlCC,aAAA,CAUY,KAAAC,WAAa,IAAIC,EAGV,KAAAC,cAAgBC,EAAOC,EAAa,EACpC,KAAAC,WAAaF,EAAOG,CAAiB,EACrC,KAAAC,MAAQJ,EAAOK,CAAiB,EAChC,KAAAC,WAAaN,EAAOO,CAAU,EAC5B,KAAApB,SAAWA,GAE9B,KAAAqB,kBAAoB,KAAKN,WAAWO,UAAUC,KAAKC,EAAmB,KAAKL,UAAU,EAAGM,EAAOC,GAAKA,EAAEC,QAAUC,EAAOC,UAAU,EAAGC,EAAW,CAAE,EACjJ,KAAAC,YAAc,IAAIC,EAA6C,CAACC,OAAQ,YAAaC,UAAW,KAAK,CAAC,EACtG,KAAAC,aAAwD,KAAKJ,YAAYK,aAAY,EAErF,KAAA9B,KAAgC,CAAA,EAChC,KAAA/B,UAAY,GACZ,KAAA6B,UAAY,IAAIiC,EAAU,CACxBZ,OAAQ,IAAIa,EAAY,GAAI,CAAA,CAAE,EAC/B,EA6CD,KAAA/B,WAAcgC,GAA8B,CAC1C,IAAMC,GAAS,KAAKpC,UAAUqC,IAAI,QAAQ,GAAGC,OAAS,IAAIC,YAAW,EACrE,OAAOJ,EAAS1D,QAAQ8D,YAAW,EAAGC,QAAQJ,CAAK,GAAK,GAAKD,EAAS3D,SAAS+D,YAAW,EAAGC,QAAQJ,CAAK,GAAK,GAAKD,EAASzD,QAAQ8D,QAAQJ,CAAK,GAAK,CACzJ,EA9CAK,UAAQ,CAEN,KAAKC,SAAQ,EAEb,KAAKzB,kBAAkB0B,UAAUC,GAAK,KAAKF,SAAQ,CAAE,EAErD,KAAKX,aAAaY,UAAUE,GAAa,CACvC,KAAK3C,KAAQ2C,EAAWhB,OAAU,KAAK3B,KAAK4C,KAAK,CAACC,EAAqBC,IAAuB,CAC5F,GAAIH,EAAWhB,SAAW,GAAI,MAAO,GACrC,IAAMoB,EAAMC,GAAQH,EAAEF,EAAWhB,MAAM,EAAGmB,EAAEH,EAAWhB,MAAM,CAAC,EAC9D,OAAOgB,EAAWf,YAAc,MAAQmB,EAAM,CAACA,CACjD,CAAC,EAAI,KAAK/C,KACV,KAAKW,MAAMsC,aAAY,CACzB,CAAC,CACH,CAEA3D,OAAO4D,EAAQ,CAEb,KAAKzB,YAAY0B,KAAKD,CAAG,EAGzB,KAAKE,QAAQC,QAASC,GAAU,CAC1BA,EAAOC,WAAaL,EAAIvB,SAC1B2B,EAAO1B,UAAY,GAEvB,CAAC,CACH,CAEAY,UAAQ,CACN,KAAKvE,UAAY,GACjB,KAAK0C,MAAMsC,aAAY,EACvB,KAAK3C,cAAckD,eAAc,EAAGf,UAAUgB,GAAI,CAChD,KAAKzD,KAAOyD,EACZ,KAAKxF,UAAY,GACjB,KAAKmC,WAAWsD,KAAKD,EAAE3E,MAAM,EAC7B,KAAK6B,MAAMgD,cAAa,CAC1B,CAAC,CACH,CAEAvE,OAAK,CACH,KAAKkB,cAAcsD,iBAAgB,EAAGnB,UAAUC,GAAK,KAAKF,SAAQ,CAAE,CACtE,yCA9DWtC,EAAqB,sBAArBA,EAAqB2D,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,KAGlBE,EAAgC,CAAA,+1BCpChDvF,EAAA,EAAAwF,GAAA,GAAA,GAAA,eAAA,CAAA,OAAiCnG,EAAA,gBAAA,eAAA,iBD+BrBoG,EAAmBC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAEC,EAAMC,GAAkBC,EAAOC,GAAYZ,EAAgBa,CAAkB,EAAAC,gBAAA,CAAA,CAAA,EAExG,IAAO7E,EAAP8E,SAAO9E,CAAqB,GAAA", "names": ["\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275property", "ctx_r1", "isLoading", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "item_r3", "extension", "filePath", "comment", "details", "\u0275\u0275elementContainerStart", "\u0275\u0275template", "ManageAlertsComponent_ng_container_0_ng_container_29_tr_1_Template", "ManageAlertsComponent_ng_container_0_ng_container_29_tr_2_Template", "filteredData_r4", "length", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "clear", "$event", "onSort", "ManageAlertsComponent_ng_container_0_tr_28_Template", "ManageAlertsComponent_ng_container_0_ng_container_29_Template", "t_r5", "WikiLink", "MediaIssues", "\u0275\u0275sanitizeUrl", "\u0275\u0275textInterpolate", "formGroup", "\u0275\u0275pipeBind2", "data", "filterList", "ManageAlertsComponent", "constructor", "alertCount", "EventEmitter", "serverService", "inject", "ServerService", "messageHub", "MessageHubService", "cdRef", "ChangeDetectorRef", "destroyRef", "DestroyRef", "messageHubUpdate$", "messages$", "pipe", "takeUntilDestroyed", "filter", "m", "event", "EVENTS", "ScanSeries", "shareReplay", "currentSort", "BehaviorSubject", "column", "direction", "currentSort$", "asObservable", "FormGroup", "FormControl", "listItem", "query", "get", "value", "toLowerCase", "indexOf", "ngOnInit", "loadData", "subscribe", "_", "sortConfig", "sort", "a", "b", "res", "compare", "markForCheck", "evt", "next", "headers", "forEach", "header", "sortable", "getMediaErrors", "d", "emit", "detectChanges", "clearMediaAlerts", "selectors", "viewQuery", "rf", "ctx", "SortableHeader", "ManageAlertsComponent_ng_container_0_Template", "ReactiveFormsModule", "\u0275NgNoValidate", "DefaultValueAccessor", "NgControlStatus", "NgControlStatusGroup", "FormGroupDirective", "FormControlName", "NgIf", "LoadingComponent", "NgFor", "FilterPipe", "TranslocoDirective", "changeDetection", "_ManageAlertsComponent"] }