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 index e111ad005f..0598fc3304 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.module.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.module.ts @@ -16,6 +16,7 @@ import { AdminNotifySearchResultComponent } from './admin-notify-search-result/admin-notify-search-result.component'; import { AdminNotifyMessagesService } from './services/admin-notify-messages.service'; +import { AdminNotifyLogsResultComponent } from './admin-notify-logs/admin-notify-logs-result/admin-notify-logs-result.component'; const ENTRY_COMPONENTS = [ @@ -40,7 +41,9 @@ const ENTRY_COMPONENTS = [ AdminNotifyMetricsComponent, AdminNotifyIncomingComponent, AdminNotifyOutgoingComponent, - AdminNotifyDetailModalComponent + AdminNotifyDetailModalComponent, + AdminNotifySearchResultComponent, + AdminNotifyLogsResultComponent ] }) export class AdminNotifyDashboardModule { diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.html b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.html index 4b72854bc0..fbd7b8b5d0 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.html +++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.html @@ -15,20 +15,7 @@ {{'admin.notify.dashboard.outbound-logs' | translate}} -
-
-
{{'admin.notify.dashboard.inbound' | translate}}
-
- -
-
-
- + diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.ts index 9f3afaf298..b259d9a13c 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.ts @@ -1,6 +1,5 @@ -import { Component, Inject, OnInit } from '@angular/core'; +import { Component, Inject } from '@angular/core'; import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-page.component'; -import { Context } from '../../../../core/shared/context.model'; import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; @@ -14,14 +13,7 @@ import { SearchConfigurationService } from '../../../../core/shared/search/searc } ] }) -export class AdminNotifyIncomingComponent implements OnInit{ - public defaultConfiguration = 'NOTIFY.incoming'; - protected readonly context = Context.CoarNotify; +export class AdminNotifyIncomingComponent { constructor(@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService) { } - - ngOnInit() { - this.searchConfigService.getCurrentConfiguration('').subscribe(x => console.log(x)); - } - } diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs-result/admin-notify-logs-result.component.html b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs-result/admin-notify-logs-result.component.html new file mode 100644 index 0000000000..325dae72c7 --- /dev/null +++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs-result/admin-notify-logs-result.component.html @@ -0,0 +1,25 @@ +
+
+
{{'admin.notify.dashboard.outbound' | translate}}
+
+ +
+ +
+
+
+
+ + +
+ +
+ diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs-result/admin-notify-logs-result.component.spec.ts b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs-result/admin-notify-logs-result.component.spec.ts new file mode 100644 index 0000000000..4359bd3cf9 --- /dev/null +++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs-result/admin-notify-logs-result.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AdminNotifyLogsResultComponent } from './admin-notify-logs-result.component'; + +describe('AdminNotifyLogsComponent', () => { + let component: AdminNotifyLogsResultComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AdminNotifyLogsResultComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(AdminNotifyLogsResultComponent); + 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-result/admin-notify-logs-result.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs-result/admin-notify-logs-result.component.ts new file mode 100644 index 0000000000..a5dc37289a --- /dev/null +++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-logs-result/admin-notify-logs-result.component.ts @@ -0,0 +1,58 @@ +import { Component, Inject, Input, OnInit } from '@angular/core'; +import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-page.component'; +import { Context } from '../../../../core/shared/context.model'; +import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; +import { Observable } from 'rxjs'; +import { ActivatedRoute, ActivatedRouteSnapshot, Router } from '@angular/router'; +import { ViewMode } from '../../../../core/shared/view-mode.model'; + +@Component({ + selector: 'ds-admin-notify-logs-result', + templateUrl: './admin-notify-logs-result.component.html', + providers: [ + { + provide: SEARCH_CONFIG_SERVICE, + useClass: SearchConfigurationService + } + ] +}) +export class AdminNotifyLogsResultComponent implements OnInit{ + + @Input() + defaultConfiguration: string; + + public selectedSearchConfig$: Observable; + + protected readonly context = Context.CoarNotify; + constructor(@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService, + private router: Router, + private route: ActivatedRoute) { + } + + ngOnInit() { + // override the route reuse strategy to prevent issue on result loading + this.router.routeReuseStrategy.shouldReuseRoute = () => { + return false; + }; + + this.selectedSearchConfig$ = this.searchConfigService.getCurrentConfiguration(this.defaultConfiguration); + } + + public resetDefaultConfiguration() { + this.router.navigate([this.getResolvedUrl(this.route.snapshot)], { + queryParams: { + configuration: this.defaultConfiguration, + view: ViewMode.Table, + }, + }); + } + + /** + * + * @param route url path + * @returns url path + */ + private getResolvedUrl(route: ActivatedRouteSnapshot): string { + return route.pathFromRoot.map(v => v.url.map(segment => segment.toString()).join('/')).join('/'); + } +} diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.html b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.html index a0f298371e..cb58050229 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.html +++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.html @@ -15,22 +15,8 @@ {{'admin.notify.dashboard.outbound-logs' | translate}} -
-
-
{{'admin.notify.dashboard.outbound' | translate}}
-
- -
-
-
+ - - diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.ts index 290c8ace76..a37ddc3bd6 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.ts @@ -1,6 +1,5 @@ import { Component, Inject } from '@angular/core'; import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-page.component'; -import { Context } from '../../../../core/shared/context.model'; import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; @@ -15,8 +14,6 @@ import { SearchConfigurationService } from '../../../../core/shared/search/searc ] }) export class AdminNotifyOutgoingComponent { - protected readonly context = Context.CoarNotify; - constructor(@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService) { } } 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 index a1f7cdbaf1..c7aebc0ea8 100644 --- 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 @@ -1,5 +1,7 @@ import { Component, Input } from '@angular/core'; import { AdminNotifyMetricsRow } from './admin-notify-metrics.model'; +import { Router } from '@angular/router'; +import { ViewMode } from '../../../core/shared/view-mode.model'; @Component({ selector: 'ds-admin-notify-metrics', @@ -10,7 +12,38 @@ export class AdminNotifyMetricsComponent { @Input() boxesConfig: AdminNotifyMetricsRow[]; - public navigateToSelectedSearchConfig($event: string) { - console.log($event); + private incomingConfiguration = 'NOTIFY.incoming'; + private involvedItemsSuffix = 'involvedItems'; + private inboundPath = '/inbound'; + private outboundPath = '/outbound'; + private adminSearchPath = '/admin/search'; + + constructor(private router: Router) { + } + + + public navigateToSelectedSearchConfig(searchConfig: string) { + const isRelatedItemsConfig = searchConfig.endsWith(this.involvedItemsSuffix); + + if (isRelatedItemsConfig) { + this.router.navigate([this.adminSearchPath], { + queryParams: { + configuration: searchConfig, + view: ViewMode.ListElement + }, + }); + + return; + } + + const isIncomingConfig = searchConfig.startsWith(this.incomingConfiguration); + const selectedPath = isIncomingConfig ? this.inboundPath : this.outboundPath; + + this.router.navigate([`${this.router.url}${selectedPath}`], { + queryParams: { + configuration: searchConfig, + view: ViewMode.Table + }, + }); } } diff --git a/src/app/admin/admin-notify-dashboard/models/admin-notify-message.model.ts b/src/app/admin/admin-notify-dashboard/models/admin-notify-message.model.ts index 4e81dd3f2d..cca26f0fb6 100644 --- a/src/app/admin/admin-notify-dashboard/models/admin-notify-message.model.ts +++ b/src/app/admin/admin-notify-dashboard/models/admin-notify-message.model.ts @@ -26,6 +26,18 @@ export class AdminNotifyMessage extends DSpaceObject { @autoserialize id: string; + /** + * The id of the notification + */ + @autoserialize + notificationId: string; + + /** + * The type of the notification + */ + @autoserialize + notificationType: string; + /** * The type of the notification */ diff --git a/src/app/shared/notification-box/notification-box.component.html b/src/app/shared/notification-box/notification-box.component.html index c5368137a7..2323bd630a 100644 --- a/src/app/shared/notification-box/notification-box.component.html +++ b/src/app/shared/notification-box/notification-box.component.html @@ -1,4 +1,9 @@ -
+
{{ boxConfig.count ?? 0 }}
{{ boxConfig.title | translate }}
diff --git a/src/app/shared/notification-box/notification-box.component.scss b/src/app/shared/notification-box/notification-box.component.scss index 9813f4aa7a..3bc1d23248 100644 --- a/src/app/shared/notification-box/notification-box.component.scss +++ b/src/app/shared/notification-box/notification-box.component.scss @@ -1,6 +1,7 @@ .box-container { min-width: max-content; } + .box-counter { font-size: calc(var(--bs-font-size-lg) * 1.5); } diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 8121bbb971..47a30533a6 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -3469,6 +3469,10 @@ "admin.notify.dashboard.inbound-logs": "Logs/Inbound", + "admin.notify.dashboard.configuration": "Configuration: ", + + "search.filters.applied.f.relateditem": "Related items", + "admin.notify.dashboard.outbound": "Outbound messages", "admin.notify.dashboard.outbound-logs": "Logs/Outbound",