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"
},