diff --git a/comixed-webui/src/app/components/side-navigation/side-navigation.component.html b/comixed-webui/src/app/components/side-navigation/side-navigation.component.html index bce8209f8..0ee2cb7c9 100644 --- a/comixed-webui/src/app/components/side-navigation/side-navigation.component.html +++ b/comixed-webui/src/app/components/side-navigation/side-navigation.component.html @@ -14,6 +14,18 @@

{{ "navigation.option.all-comics" | translate }} + + + +

{{ "navigation.heading.account" | translate }}

@@ -223,7 +237,7 @@

{{ "navigation.option.user-preferences" | translate }} - +

{{ "navigation.heading.admin" | translate }} diff --git a/comixed-webui/src/app/library/library.routing.ts b/comixed-webui/src/app/library/library.routing.ts index 0a94994d5..c480a5bcf 100644 --- a/comixed-webui/src/app/library/library.routing.ts +++ b/comixed-webui/src/app/library/library.routing.ts @@ -30,6 +30,12 @@ const routes: Routes = [ component: LibraryPageComponent, canActivate: [ReaderGuard] }, + { + path: 'library/unprocessed', + component: LibraryPageComponent, + canActivate: [AdminGuard], + data: { unprocessed: true } + }, { path: 'library/unread', component: LibraryPageComponent, @@ -39,13 +45,13 @@ const routes: Routes = [ { path: 'library/unscraped', component: LibraryPageComponent, - canActivate: [ReaderGuard], + canActivate: [AdminGuard], data: { unscraped: true } }, { path: 'library/deleted', component: LibraryPageComponent, - canActivate: [ReaderGuard], + canActivate: [AdminGuard], data: { deleted: true } }, { diff --git a/comixed-webui/src/app/library/pages/library-page/library-page.component.spec.ts b/comixed-webui/src/app/library/pages/library-page/library-page.component.spec.ts index 37fd4eb58..8edc8b738 100644 --- a/comixed-webui/src/app/library/pages/library-page/library-page.component.spec.ts +++ b/comixed-webui/src/app/library/pages/library-page/library-page.component.spec.ts @@ -157,12 +157,23 @@ describe('LibraryPageComponent', () => { describe('loading page data', () => { beforeEach(() => { + component.unprocessedOnly = false; component.unreadOnly = false; component.unscrapedOnly = false; component.deletedOnly = false; component.unscrapedOnly = false; }); + describe('when showing unprocessed comics', () => { + beforeEach(() => { + (activatedRoute.data as BehaviorSubject<{}>).next({ unprocessed: true }); + }); + + it('sets the unread only flag', () => { + expect(component.unprocessedOnly).toBeTrue(); + }); + }); + describe('when showing unread comics', () => { beforeEach(() => { (activatedRoute.data as BehaviorSubject<{}>).next({ unread: true }); @@ -206,6 +217,7 @@ describe('LibraryPageComponent', () => { describe('when the language changes', () => { beforeEach(() => { + component.unprocessedOnly = false; component.unreadOnly = false; component.unscrapedOnly = false; component.deletedOnly = false; @@ -216,6 +228,12 @@ describe('LibraryPageComponent', () => { expect(titleService.setTitle).toHaveBeenCalledWith(jasmine.any(String)); }); + it('updates the page title for unprocessed comic', () => { + component.unreadOnly = true; + translateService.use('fr'); + expect(titleService.setTitle).toHaveBeenCalledWith(jasmine.any(String)); + }); + it('updates the page title for unread comic', () => { component.unreadOnly = true; translateService.use('fr'); diff --git a/comixed-webui/src/app/library/pages/library-page/library-page.component.ts b/comixed-webui/src/app/library/pages/library-page/library-page.component.ts index e49fbe8d0..5b263affd 100644 --- a/comixed-webui/src/app/library/pages/library-page/library-page.component.ts +++ b/comixed-webui/src/app/library/pages/library-page/library-page.component.ts @@ -58,6 +58,7 @@ export class LibraryPageComponent implements OnInit, OnDestroy { unreadOnly = false; unscrapedOnly = false; deletedOnly = false; + unprocessedOnly = false; queryParamSubscription: Subscription; archiveTypeFilter = null; lastReadDatesSubscription: Subscription; @@ -77,6 +78,7 @@ export class LibraryPageComponent implements OnInit, OnDestroy { this.unreadOnly = !!data.unread && data.unread === true; this.unscrapedOnly = !!data.unscraped && data.unscraped === true; this.deletedOnly = !!data.deleted && data.deleted === true; + this.unprocessedOnly = !!data.unprocessed && data.unprocessed === true; this.showConsolidate = !this.unreadOnly && !this.unscrapedOnly && !this.deletedOnly; }); @@ -139,7 +141,8 @@ export class LibraryPageComponent implements OnInit, OnDestroy { this._comics = comics.filter( comic => (!this.unscrapedOnly || !comic.comicVineId) && - (!this.deletedOnly || !!comic.deletedDate) + (!this.deletedOnly || !!comic.deletedDate) && + (!this.unprocessedOnly || !comic.fileDetails) ); } @@ -169,7 +172,13 @@ export class LibraryPageComponent implements OnInit, OnDestroy { private loadTranslations(): void { this.logger.trace('Setting page title'); - if (this.deletedOnly) { + if (this.unprocessedOnly) { + this.titleService.setTitle( + this.translateService.instant( + 'library.all-comics.tab-title-unprocessed' + ) + ); + } else if (this.deletedOnly) { this.titleService.setTitle( this.translateService.instant('library.all-comics.tab-title-deleted') ); diff --git a/comixed-webui/src/assets/i18n/de/app.json b/comixed-webui/src/assets/i18n/de/app.json index 6aaeb7f0e..5128fc576 100644 --- a/comixed-webui/src/assets/i18n/de/app.json +++ b/comixed-webui/src/assets/i18n/de/app.json @@ -119,6 +119,7 @@ "story-collection": "Stories", "story-names": "Stories", "team-collection": "Teams", + "unprocessed-comics": "Unprocessed Imports", "unread-comics": "Unread Comics", "unscraped-comics": "Unscraped Comics", "user-preferences": "Preferences", diff --git a/comixed-webui/src/assets/i18n/de/library.json b/comixed-webui/src/assets/i18n/de/library.json index d26c95f04..ab1338c3d 100644 --- a/comixed-webui/src/assets/i18n/de/library.json +++ b/comixed-webui/src/assets/i18n/de/library.json @@ -50,6 +50,7 @@ "all-comics": { "tab-title": "All Comics", "tab-title-deleted": "Deleted Comics", + "tab-title-unprocessed": "Unprocessed Comics", "tab-title-unread": "Unread Comics", "tab-title-unscraped": "Unscraped Comics" }, diff --git a/comixed-webui/src/assets/i18n/en/app.json b/comixed-webui/src/assets/i18n/en/app.json index 6aaeb7f0e..5128fc576 100644 --- a/comixed-webui/src/assets/i18n/en/app.json +++ b/comixed-webui/src/assets/i18n/en/app.json @@ -119,6 +119,7 @@ "story-collection": "Stories", "story-names": "Stories", "team-collection": "Teams", + "unprocessed-comics": "Unprocessed Imports", "unread-comics": "Unread Comics", "unscraped-comics": "Unscraped Comics", "user-preferences": "Preferences", diff --git a/comixed-webui/src/assets/i18n/en/library.json b/comixed-webui/src/assets/i18n/en/library.json index d26c95f04..4d824322d 100644 --- a/comixed-webui/src/assets/i18n/en/library.json +++ b/comixed-webui/src/assets/i18n/en/library.json @@ -51,6 +51,7 @@ "tab-title": "All Comics", "tab-title-deleted": "Deleted Comics", "tab-title-unread": "Unread Comics", + "tab-title-unprocessed": "Unprocessed Comics", "tab-title-unscraped": "Unscraped Comics" }, "comic-group": { diff --git a/comixed-webui/src/assets/i18n/es/app.json b/comixed-webui/src/assets/i18n/es/app.json index 13570c971..bae643dc8 100644 --- a/comixed-webui/src/assets/i18n/es/app.json +++ b/comixed-webui/src/assets/i18n/es/app.json @@ -119,6 +119,7 @@ "story-collection": "Historias", "story-names": "Stories", "team-collection": "Equipos", + "unprocessed-comics": "Unprocessed Imports", "unread-comics": "Cómics no leídos", "unscraped-comics": "Unscraped Comics", "user-preferences": "Preferencias", diff --git a/comixed-webui/src/assets/i18n/es/library.json b/comixed-webui/src/assets/i18n/es/library.json index e9cf4a13d..78f0ca5de 100644 --- a/comixed-webui/src/assets/i18n/es/library.json +++ b/comixed-webui/src/assets/i18n/es/library.json @@ -50,6 +50,7 @@ "all-comics": { "tab-title": "Todos los cómics", "tab-title-deleted": "Cómics eliminados", + "tab-title-unprocessed": "Unprocessed Comics", "tab-title-unread": "Cómics no leídos", "tab-title-unscraped": "Unscraped Comics" }, diff --git a/comixed-webui/src/assets/i18n/fr/app.json b/comixed-webui/src/assets/i18n/fr/app.json index 753288075..057b23e9e 100644 --- a/comixed-webui/src/assets/i18n/fr/app.json +++ b/comixed-webui/src/assets/i18n/fr/app.json @@ -134,6 +134,7 @@ "series-collection": "Séries", "story-collection": "Histoires", "team-collection": "Équipes", + "unprocessed-comics": "Unprocessed Imports", "unread-comics": "Bandes Dessinées non lues", "unscraped-comics": "Bandes Dessinées sans détails récupérés", "user-preferences": "Préférences", diff --git a/comixed-webui/src/assets/i18n/fr/library.json b/comixed-webui/src/assets/i18n/fr/library.json index dd7e26f87..f20f29c1a 100644 --- a/comixed-webui/src/assets/i18n/fr/library.json +++ b/comixed-webui/src/assets/i18n/fr/library.json @@ -50,6 +50,7 @@ "all-comics": { "tab-title": "Toutes les Bandes Dessinées", "tab-title-deleted": "Bandes dessinées supprimées", + "tab-title-unprocessed": "Unprocessed Comics", "tab-title-unread": "Bandes dessinées non lues", "tab-title-unscraped": "Unscraped Comics" }, diff --git a/comixed-webui/src/assets/i18n/pt/app.json b/comixed-webui/src/assets/i18n/pt/app.json index 6aaeb7f0e..5128fc576 100644 --- a/comixed-webui/src/assets/i18n/pt/app.json +++ b/comixed-webui/src/assets/i18n/pt/app.json @@ -119,6 +119,7 @@ "story-collection": "Stories", "story-names": "Stories", "team-collection": "Teams", + "unprocessed-comics": "Unprocessed Imports", "unread-comics": "Unread Comics", "unscraped-comics": "Unscraped Comics", "user-preferences": "Preferences", diff --git a/comixed-webui/src/assets/i18n/pt/library.json b/comixed-webui/src/assets/i18n/pt/library.json index d26c95f04..ab1338c3d 100644 --- a/comixed-webui/src/assets/i18n/pt/library.json +++ b/comixed-webui/src/assets/i18n/pt/library.json @@ -50,6 +50,7 @@ "all-comics": { "tab-title": "All Comics", "tab-title-deleted": "Deleted Comics", + "tab-title-unprocessed": "Unprocessed Comics", "tab-title-unread": "Unread Comics", "tab-title-unscraped": "Unscraped Comics" },