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 c75ab053c7..ad9d30dab9 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 a71072149e..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,29 +15,7 @@ {{'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-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 a8d7471bc5..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,11 +1,6 @@ -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'; -import { Observable } from 'rxjs'; -import { tap } from 'rxjs/operators'; -import { ActivatedRoute, ActivatedRouteSnapshot, Router } from '@angular/router'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; @Component({ @@ -18,39 +13,7 @@ import { ViewMode } from '../../../../core/shared/view-mode.model'; } ] }) -export class AdminNotifyIncomingComponent implements OnInit{ - public selectedSearchConfig$: Observable; - public defaultConfiguration = 'NOTIFY.incoming'; - public isLoading = true; - - - protected readonly context = Context.CoarNotify; - constructor(@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService, - private router: Router, - private route: ActivatedRoute) { - } - - ngOnInit() { - this.selectedSearchConfig$ = this.searchConfigService.getCurrentConfiguration(this.defaultConfiguration).pipe( - tap(() => this.isLoading = false) - ); - } - - 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('/'); +export class AdminNotifyIncomingComponent { + constructor(@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService) { } } 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 7621f3369a..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,29 +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 71e3052e86..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,11 +1,6 @@ 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'; -import { Observable } from 'rxjs'; -import { ActivatedRoute, ActivatedRouteSnapshot, Router } from '@angular/router'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; -import { tap } from 'rxjs/operators'; @Component({ @@ -19,38 +14,6 @@ import { tap } from 'rxjs/operators'; ] }) export class AdminNotifyOutgoingComponent { - public selectedSearchConfig$: Observable; - public defaultConfiguration = 'NOTIFY.outgoing'; - public isLoading = true; - - - protected readonly context = Context.CoarNotify; - constructor(@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService, - private router: Router, - private route: ActivatedRoute) { - } - - ngOnInit() { - this.selectedSearchConfig$ = this.searchConfigService.getCurrentConfiguration(this.defaultConfiguration).pipe( - tap(() => this.isLoading = false) - ); - } - - 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('/'); + 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 5960c0ad3a..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 @@ -13,14 +13,29 @@ export class AdminNotifyMetricsComponent { boxesConfig: AdminNotifyMetricsRow[]; 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; diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.ts index 59fb4ca4e0..d249e58dc0 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.ts @@ -50,6 +50,26 @@ export class AdminNotifySearchResultComponent extends TabulatableResultListEleme private dateTypeKeys: string[] = ['queueLastStartTime', 'queueTimeout']; + /** + * Keys to be not shown in detail + * @private + */ + + private hiddenKeys: string[] = [ + 'target', + 'object', + 'context', + 'origin', + '_links', + 'metadata', + 'thumbnail', + 'item', + 'accessStatus', + 'queueStatus', + 'notificationId', + 'notificationType', + ]; + /** * The format for the date values * @private @@ -87,18 +107,8 @@ export class AdminNotifySearchResultComponent extends TabulatableResultListEleme const modalRef = this.modalService.open(AdminNotifyDetailModalComponent); const messageToOpen = {...message}; // we delete not necessary or not readable keys - delete messageToOpen.target; - delete messageToOpen.object; - delete messageToOpen.context; - delete messageToOpen.origin; - delete messageToOpen._links; - delete messageToOpen.metadata; - delete messageToOpen.thumbnail; - delete messageToOpen.item; - delete messageToOpen.accessStatus; - delete messageToOpen.queueStatus; - const messageKeys = Object.keys(messageToOpen); + const messageKeys = Object.keys(messageToOpen).filter(key => !this.hiddenKeys.includes(key)); messageKeys.forEach(key => { if (this.dateTypeKeys.includes(key)) { messageToOpen[key] = this.datePipe.transform(messageToOpen[key], this.dateFormat); 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 72fe58eacb..07fd66ba67 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/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 9244da53db..1bc95b467b 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -3471,6 +3471,8 @@ "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",