diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard-routing.module.ts b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard-routing.module.ts
new file mode 100644
index 0000000000..447a1fe39a
--- /dev/null
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard-routing.module.ts
@@ -0,0 +1,37 @@
+import { NgModule } from '@angular/core';
+import { RouterModule } from '@angular/router';
+import { I18nBreadcrumbResolver } from '../../core/breadcrumbs/i18n-breadcrumb.resolver';
+import { I18nBreadcrumbsService } from '../../core/breadcrumbs/i18n-breadcrumbs.service';
+import { AuthenticatedGuard } from "../../core/auth/authenticated.guard";
+import { AdminNotifyDashboardComponent } from "./admin-notify-dashboard.component";
+
+@NgModule({
+ imports: [
+ RouterModule.forChild([
+ {
+ canActivate: [ AuthenticatedGuard ],
+ path: '',
+ component: AdminNotifyDashboardComponent,
+ pathMatch: 'full',
+ resolve: {
+ breadcrumb: I18nBreadcrumbResolver,
+ },
+ data: {
+ title: 'admin.notify.dashboard.page.title',
+ breadcrumbKey: 'admin.notify.dashboard',
+ showBreadcrumbsFluid: false
+ }
+ },
+ ])
+ ],
+ providers: [
+ I18nBreadcrumbResolver,
+ I18nBreadcrumbsService,
+ ]
+})
+/**
+ * Routing module for the Notifications section of the admin sidebar
+ */
+export class AdminNotifyDashboardRoutingModule {
+
+}
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html
index 90fa077e91..4b432adb38 100644
--- a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html
@@ -1 +1,28 @@
-
admin-notify-dashboard works!
+
+
+
+
{{'admin-notify-dashboard.title'| translate}}
+
+
+
+
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.module.ts b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.module.ts
new file mode 100644
index 0000000000..0074d13ce0
--- /dev/null
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.module.ts
@@ -0,0 +1,25 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { RouterModule } from '@angular/router';
+import { SharedModule } from '../../shared/shared.module';
+import { AdminNotifyDashboardComponent } from "./admin-notify-dashboard.component";
+import { AdminNotifyDashboardRoutingModule } from "./admin-notify-dashboard-routing.module";
+import { AdminNotifyMetricsComponent } from './admin-notify-metrics/admin-notify-metrics.component';
+import { AdminNotifyLogsComponent } from './admin-notify-logs/admin-notify-logs.component';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ SharedModule,
+ RouterModule,
+ AdminNotifyDashboardRoutingModule,
+ ],
+ declarations: [
+ AdminNotifyDashboardComponent,
+ AdminNotifyMetricsComponent,
+ AdminNotifyLogsComponent
+ ]
+})
+export class AdminNotifyDashboardModule {
+
+}
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs.component.html b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs.component.html
new file mode 100644
index 0000000000..494e082ddf
--- /dev/null
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs.component.html
@@ -0,0 +1 @@
+admin-notify-logs works!
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs.component.scss b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs.component.spec.ts b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs.component.spec.ts
new file mode 100644
index 0000000000..12a0feae64
--- /dev/null
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AdminNotifyLogsComponent } from './admin-notify-logs.component';
+
+describe('AdminNotifyLogsComponent', () => {
+ let component: AdminNotifyLogsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ AdminNotifyLogsComponent ]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(AdminNotifyLogsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs.component.ts
new file mode 100644
index 0000000000..67552130a0
--- /dev/null
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ds-admin-notify-logs',
+ templateUrl: './admin-notify-logs.component.html',
+ styleUrls: ['./admin-notify-logs.component.scss']
+})
+export class AdminNotifyLogsComponent {
+
+}
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.html b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.html
new file mode 100644
index 0000000000..f4e0e45279
--- /dev/null
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+
0
+
{{ box.title | translate }}
+
+
+
+
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.scss b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.spec.ts b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.spec.ts
new file mode 100644
index 0000000000..10e256a701
--- /dev/null
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AdminNotifyMetricsComponent } from './admin-notify-metrics.component';
+
+describe('AdminNotifyMetricsComponent', () => {
+ let component: AdminNotifyMetricsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ AdminNotifyMetricsComponent ]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(AdminNotifyMetricsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.ts
new file mode 100644
index 0000000000..d1d7ca4bd5
--- /dev/null
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.ts
@@ -0,0 +1,13 @@
+import { Component } from '@angular/core';
+import { AdminNotifyMetricsRow } from "./admin-notify-metrics.model";
+import { AdminNotifyMetricsRowsConfig } from "./admin-notify-metrics.config";
+
+@Component({
+ selector: 'ds-admin-notify-metrics',
+ templateUrl: './admin-notify-metrics.component.html',
+ styleUrls: ['./admin-notify-metrics.component.scss']
+})
+export class AdminNotifyMetricsComponent {
+
+ boxesConfig: AdminNotifyMetricsRow[] = AdminNotifyMetricsRowsConfig;
+}
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.config.ts b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.config.ts
new file mode 100644
index 0000000000..7880e78ebf
--- /dev/null
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.config.ts
@@ -0,0 +1,64 @@
+import { AdminNotifyMetricsRow } from "./admin-notify-metrics.model";
+
+export const AdminNotifyMetricsRowsConfig: AdminNotifyMetricsRow[] = [
+ {
+ title: 'Number of received LDN',
+ boxes: [
+ {
+ color: 'blue',
+ title: 'Accepted',
+ index: 0
+ },
+ {
+ color: 'green',
+ title: 'Processed LDN',
+ index: 1
+ },
+ {
+ color: 'red',
+ title: 'Failure',
+ index: 2
+ },
+ {
+ color: 'red',
+ title: 'Untrusted',
+ index: 3
+ },
+ {
+ color: 'grey',
+ title: 'Incoming LDM messages',
+ index: 4
+ },
+ ]
+ },
+ {
+ title: 'Number of generated LDN',
+ boxes: [
+ {
+ color: 'green',
+ title: 'Delivered',
+ index: 0
+ },
+ {
+ color: 'blue',
+ title: 'Queued',
+ index: 1
+ },
+ {
+ color: 'yellow',
+ title: 'Queued for retry',
+ index: 2
+ },
+ {
+ color: 'red',
+ title: 'Failure',
+ index: 3
+ },
+ {
+ color: 'grey',
+ title: 'Outgoing LDM messages',
+ index: 4
+ },
+ ]
+ }
+]
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model.ts b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model.ts
new file mode 100644
index 0000000000..3b47deffa1
--- /dev/null
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model.ts
@@ -0,0 +1,10 @@
+export interface AdminNotifyMetricsBox {
+ color: string;
+ title: string;
+ index: number
+}
+
+export interface AdminNotifyMetricsRow {
+ title: string;
+ boxes: AdminNotifyMetricsBox[]
+}
diff --git a/src/app/admin/admin-routing-paths.ts b/src/app/admin/admin-routing-paths.ts
index 511680bfd8..c08139bd87 100644
--- a/src/app/admin/admin-routing-paths.ts
+++ b/src/app/admin/admin-routing-paths.ts
@@ -4,6 +4,8 @@ import { getAdminModuleRoute } from '../app-routing-paths';
export const REGISTRIES_MODULE_PATH = 'registries';
export const NOTIFICATIONS_MODULE_PATH = 'notifications';
+export const NOTIFY_DASHBOARD_MODULE_PATH = 'notify-dashboard';
+
export const LDN_PATH = 'ldn';
export function getRegistriesModuleRoute() {
@@ -13,7 +15,6 @@ export function getRegistriesModuleRoute() {
export function getNotificationsModuleRoute() {
return new URLCombiner(getAdminModuleRoute(), NOTIFICATIONS_MODULE_PATH).toString();
}
-
export function getLdnServicesModuleRoute() {
return new URLCombiner(getAdminModuleRoute(), LDN_PATH).toString();
}
diff --git a/src/app/admin/admin-routing.module.ts b/src/app/admin/admin-routing.module.ts
index ecafa0232f..e30a5b20fb 100644
--- a/src/app/admin/admin-routing.module.ts
+++ b/src/app/admin/admin-routing.module.ts
@@ -6,7 +6,12 @@ import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.reso
import { AdminWorkflowPageComponent } from './admin-workflow-page/admin-workflow-page.component';
import { I18nBreadcrumbsService } from '../core/breadcrumbs/i18n-breadcrumbs.service';
import { AdminCurationTasksComponent } from './admin-curation-tasks/admin-curation-tasks.component';
-import { LDN_PATH, REGISTRIES_MODULE_PATH, NOTIFICATIONS_MODULE_PATH } from './admin-routing-paths';
+import {
+ LDN_PATH,
+ REGISTRIES_MODULE_PATH,
+ NOTIFICATIONS_MODULE_PATH,
+ NOTIFY_DASHBOARD_MODULE_PATH
+} from './admin-routing-paths';
import { BatchImportPageComponent } from './admin-import-batch-page/batch-import-page.component';
import { AdminNotifyDashboardComponent } from "./admin-notify-dashboard/admin-notify-dashboard.component";
@@ -71,10 +76,9 @@ import { AdminNotifyDashboardComponent } from "./admin-notify-dashboard/admin-no
data: {title: 'admin.system-wide-alert.title', breadcrumbKey: 'admin.system-wide-alert'}
},
{
- path: 'notify-dashboard',
- resolve: { breadcrumb: I18nBreadcrumbResolver },
- component: AdminNotifyDashboardComponent,
- data: {title: 'todo', breadcrumbKey: 'todo'}
+ path: NOTIFY_DASHBOARD_MODULE_PATH,
+ loadChildren: () => import('./admin-notify-dashboard/admin-notify-dashboard.module')
+ .then((m) => m.AdminNotifyDashboardModule),
},
]),
],
diff --git a/src/app/admin/admin.module.ts b/src/app/admin/admin.module.ts
index ee0d3b0d4e..d77c3213b3 100644
--- a/src/app/admin/admin.module.ts
+++ b/src/app/admin/admin.module.ts
@@ -12,7 +12,6 @@ import { ExpandableAdminSidebarSectionComponent } from './admin-sidebar/expandab
import { BatchImportPageComponent } from './admin-import-batch-page/batch-import-page.component';
import { UiSwitchModule } from 'ngx-ui-switch';
import { UploadModule } from '../shared/upload/upload.module';
-import { AdminNotifyDashboardComponent } from './admin-notify-dashboard/admin-notify-dashboard.component';
const ENTRY_COMPONENTS = [
// put only entry components that use custom decorator
@@ -36,7 +35,6 @@ const ENTRY_COMPONENTS = [
AdminCurationTasksComponent,
MetadataImportPageComponent,
BatchImportPageComponent,
- AdminNotifyDashboardComponent
]
})
export class AdminModule {
diff --git a/src/app/menu.resolver.ts b/src/app/menu.resolver.ts
index 671440d48d..15848963c9 100644
--- a/src/app/menu.resolver.ts
+++ b/src/app/menu.resolver.ts
@@ -362,19 +362,6 @@ export class MenuResolver implements Resolve {
icon: 'terminal',
index: 10
},
- /* LDN Services */
- {
- id: 'ldn_services',
- active: false,
- visible: isSiteAdmin,
- model: {
- type: MenuItemType.LINK,
- text: 'menu.section.services',
- link: '/admin/ldn/services'
- } as LinkMenuItemModel,
- icon: 'inbox',
- index: 14
- },
{
id: 'health',
active: false,
@@ -679,17 +666,40 @@ export class MenuResolver implements Resolve {
icon: 'exclamation-circle',
index: 12
},
+ /* COAR Notify section */
{
- id: 'notify_dashboard',
+ id: 'coar_notify',
active: false,
visible: authorized,
+ model: {
+ type: MenuItemType.TEXT,
+ text: 'menu.section.coar_notify'
+ } as TextMenuItemModel,
+ icon: 'inbox',
+ index: 13
+ },
+ {
+ id: 'notify_dashboard',
+ active: false,
+ parentID: 'coar_notify',
+ visible: authorized,
model: {
type: MenuItemType.LINK,
- text: 'menu.section.notify-dashboard',
+ text: 'menu.section.notify_dashboard',
link: '/admin/notify-dashboard'
} as LinkMenuItemModel,
- icon: 'gauge',
- index: 13
+ },
+ /* LDN Services */
+ {
+ id: 'ldn_services',
+ active: false,
+ parentID: 'coar_notify',
+ visible: authorized,
+ model: {
+ type: MenuItemType.LINK,
+ text: 'menu.section.services',
+ link: '/admin/ldn/services'
+ } as LinkMenuItemModel,
},
];
diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5
index 8a504fac47..0acbba29c7 100644
--- a/src/assets/i18n/en.json5
+++ b/src/assets/i18n/en.json5
@@ -28,6 +28,8 @@
"admin.notifications.recitersuggestion.page.title": "Suggestions",
+ "admin.notify.dashboard": "Dashboard",
+
"error-page.description.401": "unauthorized",
"error-page.description.403": "forbidden",
@@ -3075,7 +3077,9 @@
"menu.section.icon.export": "Export menu section",
- "menu.section.notify-dashboard": "Notify Dashboard",
+ "menu.section.notify_dashboard": "Dashboard",
+
+ "menu.section.coar_notify": "COAR Notify",
"menu.section.icon.find": "Find menu section",
@@ -3439,6 +3443,14 @@
"quality-assurance.event.reason": "Reason",
+ "admin-notify-dashboard.title": "Notify Dashboard",
+
+ "admin-notify-dashboard.metrics": "Notify metrics",
+
+ "admin-notify-dashboard.logs": "Notify logs",
+
+ "admin.notify.dashboard.breadcrumbs": "Dashboard",
+
"orgunit.listelement.badge": "Organizational Unit",
"orgunit.listelement.no-title": "Untitled",