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 index b917116216..345dc31ce3 100644 --- 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 @@ -6,6 +6,12 @@ import { AdminNotifyDashboardComponent } from './admin-notify-dashboard.componen import { SiteAdministratorGuard } from '../../core/data/feature-authorization/feature-authorization-guard/site-administrator.guard'; +import { + AdminNotifyIncomingComponent +} from "./admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component"; +import { + AdminNotifyOutgoingComponent +} from "./admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component"; @NgModule({ imports: [ @@ -22,8 +28,18 @@ import { title: 'admin.notify.dashboard.page.title', breadcrumbKey: 'admin.notify.dashboard', showBreadcrumbsFluid: false - } + }, }, + { + path: 'inbound', + component: AdminNotifyIncomingComponent, + canActivate: [SiteAdministratorGuard], + }, + { + path: 'outbound', + component: AdminNotifyOutgoingComponent, + canActivate: [SiteAdministratorGuard], + } ]) ], providers: [ 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 0184141112..17d9bf884d 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 @@ -3,35 +3,19 @@

{{'admin-notify-dashboard.title'| translate}}

-
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.ts index ba88ce4e6d..3d4f35a54c 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.ts @@ -9,15 +9,11 @@ import { map } from 'rxjs/operators'; import { SearchObjects } from '../../shared/search/models/search-objects.model'; import { AdminNotifyMetricsBox, AdminNotifyMetricsRow } from './admin-notify-metrics/admin-notify-metrics.model'; import { DSpaceObject } from '../../core/shared/dspace-object.model'; -import { FILTER_CONFIG, SearchFilterService } from '../../core/shared/search/search-filter.service'; import { SEARCH_CONFIG_SERVICE } from '../../my-dspace-page/my-dspace-page.component'; -import { AdminNotifySearchConfigurationService } from './config/admin-notify-search-configuration.service'; -import { AdminNotifySearchFilterService } from './config/admin-notify-filter-service'; -import { AdminNotifySearchFilterConfig } from './config/admin-notify-search-filter-config'; import { ViewMode } from '../../core/shared/view-mode.model'; import { Router } from '@angular/router'; +import { SearchConfigurationService } from "../../core/shared/search/search-configuration.service"; -export const FILTER_SEARCH: InjectionToken = new InjectionToken('searchFilterService'); @Component({ selector: 'ds-admin-notify-dashboard', @@ -26,15 +22,7 @@ export const FILTER_SEARCH: InjectionToken = new InjectionT providers: [ { provide: SEARCH_CONFIG_SERVICE, - useClass: AdminNotifySearchConfigurationService - }, - { - provide: FILTER_SEARCH, - useClass: AdminNotifySearchFilterService - }, - { - provide: FILTER_CONFIG, - useClass: AdminNotifySearchFilterConfig + useClass: SearchConfigurationService } ] }) 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 23200bb9fc..498c40a58d 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 @@ -8,11 +8,15 @@ import { AdminNotifyIncomingComponent } from './admin-notify-logs/admin-notify-i import { SharedModule } from '../../shared/shared.module'; import { SearchModule } from '../../shared/search/search.module'; import { SearchPageModule } from '../../search-page/search-page.module'; -import { AdminNotifySearchResultComponent } from './admin-notify-search-result/admin-notify-search-result.component'; +import { AdminNotifyIncomingSearchResultComponent } from './admin-notify-search-result/incoming/admin-notify-incoming-search-result.component'; import { AdminNotifyOutgoingComponent } from './admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component'; import { AdminNotifyDetailModalComponent } from './admin-notify-detail-modal/admin-notify-detail-modal.component'; +import { + AdminNotifyOutgoingSearchResultComponent +} from "./admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component"; +import { AdminNotifyMessagesService } from "./services/admin-notify-messages.service"; @NgModule({ @@ -24,12 +28,16 @@ import { AdminNotifyDetailModalComponent } from './admin-notify-detail-modal/adm SearchModule, SearchPageModule, ], + providers: [ + AdminNotifyMessagesService + ], declarations: [ AdminNotifyDashboardComponent, AdminNotifyMetricsComponent, AdminNotifyIncomingComponent, AdminNotifyOutgoingComponent, - AdminNotifySearchResultComponent, + AdminNotifyIncomingSearchResultComponent, + AdminNotifyOutgoingSearchResultComponent, AdminNotifyDetailModalComponent ] }) 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 868469ad55..3b7272186a 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 @@ -1,9 +1,30 @@ - +
+
+
+

{{'admin-notify-dashboard.title'| translate}}

+ +
+
+
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.spec.ts b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.spec.ts index 44ef519164..14d6c6a1eb 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.spec.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component.spec.ts @@ -7,15 +7,13 @@ import { MockActivatedRoute } from "../../../../shared/mocks/active-router.mock" import { provideMockStore } from "@ngrx/store/testing"; import { HALEndpointService } from "../../../../core/shared/hal-endpoint.service"; import { SEARCH_CONFIG_SERVICE } from "../../../../my-dspace-page/my-dspace-page.component"; -import { AdminNotifySearchConfigurationService } from "../../config/admin-notify-search-configuration.service"; -import { FILTER_SEARCH } from "../../admin-notify-dashboard.component"; -import { AdminNotifySearchFilterService } from "../../config/admin-notify-filter-service"; -import { FILTER_CONFIG } from "../../../../core/shared/search/search-filter.service"; +import { FILTER_CONFIG, SearchFilterService } from "../../../../core/shared/search/search-filter.service"; import { RouteService } from "../../../../core/services/route.service"; import { routeServiceStub } from "../../../../shared/testing/route-service.stub"; import { RequestService } from "../../../../core/data/request.service"; import { RemoteDataBuildService } from "../../../../core/cache/builders/remote-data-build.service"; import { getMockRemoteDataBuildService } from "../../../../shared/mocks/remote-data-build.service.mock"; +import { SearchConfigurationService } from "../../../../core/shared/search/search-configuration.service"; describe('AdminNotifyIncomingComponent', () => { let component: AdminNotifyIncomingComponent; @@ -39,9 +37,7 @@ describe('AdminNotifyIncomingComponent', () => { imports: [TranslateModule.forRoot()], declarations: [ AdminNotifyIncomingComponent ], providers: [ - { provide: SEARCH_CONFIG_SERVICE, useValue: AdminNotifySearchConfigurationService }, - { provide: FILTER_SEARCH, useValue: AdminNotifySearchFilterService }, - { provide: FILTER_CONFIG, useValue: AdminNotifySearchConfigurationService }, + { provide: SEARCH_CONFIG_SERVICE, useValue: SearchConfigurationService }, { provide: RouteService, useValue: routeServiceStub }, { provide: ActivatedRoute, useValue: new MockActivatedRoute() }, { provide: HALEndpointService, useValue: halService }, 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 b43866dc82..ffb5306643 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,7 @@ 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 { AdminNotifySearchConfigurationService } from '../../config/admin-notify-search-configuration.service'; -import { FILTER_SEARCH } from '../../admin-notify-dashboard.component'; -import { AdminNotifySearchFilterService } from '../../config/admin-notify-filter-service'; -import { FILTER_CONFIG } from '../../../../core/shared/search/search-filter.service'; -import { AdminNotifySearchFilterConfig } from '../../config/admin-notify-search-filter-config'; +import { SearchConfigurationService } from "../../../../core/shared/search/search-configuration.service"; @Component({ @@ -15,26 +11,12 @@ import { AdminNotifySearchFilterConfig } from '../../config/admin-notify-search- providers: [ { provide: SEARCH_CONFIG_SERVICE, - useClass: AdminNotifySearchConfigurationService - }, - { - provide: FILTER_SEARCH, - useClass: AdminNotifySearchFilterService - }, - { - provide: FILTER_CONFIG, - useClass: AdminNotifySearchFilterConfig + useClass: SearchConfigurationService } ] }) export class AdminNotifyIncomingComponent { - protected readonly context = Context.CoarNotify; - constructor(@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: AdminNotifySearchConfigurationService, - @Inject(FILTER_SEARCH) public searchFilterService: AdminNotifySearchFilterService, - @Inject(FILTER_CONFIG) public filterConfig: AdminNotifySearchFilterConfig) { - const incomingPrefix = 'incoming.f'; - this.searchConfigService.setParamPrefix(incomingPrefix); - this.searchFilterService.setParamPrefix(incomingPrefix); - this.filterConfig.paramNamePrefix = incomingPrefix; + protected readonly context = Context.CoarNotifyIncoming; + constructor(@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService) { } } 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 af64c69e7a..050e25c241 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 @@ -1,9 +1,30 @@ - +
+
+
+

{{'admin-notify-dashboard.title'| translate}}

+ +
+
+
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.spec.ts b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.spec.ts index 0fd565fbf3..9d3ab2fe46 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.spec.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component.spec.ts @@ -7,15 +7,13 @@ import { MockActivatedRoute } from "../../../../shared/mocks/active-router.mock" import { provideMockStore } from "@ngrx/store/testing"; import { HALEndpointService } from "../../../../core/shared/hal-endpoint.service"; import { SEARCH_CONFIG_SERVICE } from "../../../../my-dspace-page/my-dspace-page.component"; -import { AdminNotifySearchConfigurationService } from "../../config/admin-notify-search-configuration.service"; -import { FILTER_SEARCH } from "../../admin-notify-dashboard.component"; -import { AdminNotifySearchFilterService } from "../../config/admin-notify-filter-service"; import { FILTER_CONFIG } from "../../../../core/shared/search/search-filter.service"; import { RouteService } from "../../../../core/services/route.service"; import { routeServiceStub } from "../../../../shared/testing/route-service.stub"; import { RequestService } from "../../../../core/data/request.service"; import { getMockRemoteDataBuildService } from "../../../../shared/mocks/remote-data-build.service.mock"; import { RemoteDataBuildService } from "../../../../core/cache/builders/remote-data-build.service"; +import { SearchConfigurationService } from "../../../../core/shared/search/search-configuration.service"; describe('AdminNotifyOutgoingComponent', () => { let component: AdminNotifyOutgoingComponent; @@ -38,9 +36,7 @@ describe('AdminNotifyOutgoingComponent', () => { imports: [TranslateModule.forRoot()], declarations: [ AdminNotifyOutgoingComponent ], providers: [ - { provide: SEARCH_CONFIG_SERVICE, useValue: AdminNotifySearchConfigurationService }, - { provide: FILTER_SEARCH, useValue: AdminNotifySearchFilterService }, - { provide: FILTER_CONFIG, useValue: AdminNotifySearchConfigurationService }, + { provide: SEARCH_CONFIG_SERVICE, useValue: SearchConfigurationService }, { provide: RouteService, useValue: routeServiceStub }, { provide: ActivatedRoute, useValue: new MockActivatedRoute() }, { provide: HALEndpointService, useValue: halService }, 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 ae8cd0f13b..ac7a5cfafa 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,7 @@ 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 { AdminNotifySearchConfigurationService } from '../../config/admin-notify-search-configuration.service'; -import { FILTER_SEARCH } from '../../admin-notify-dashboard.component'; -import { AdminNotifySearchFilterService } from '../../config/admin-notify-filter-service'; -import { FILTER_CONFIG } from '../../../../core/shared/search/search-filter.service'; -import { AdminNotifySearchFilterConfig } from '../../config/admin-notify-search-filter-config'; +import { SearchConfigurationService } from "../../../../core/shared/search/search-configuration.service"; @Component({ @@ -15,27 +11,13 @@ import { AdminNotifySearchFilterConfig } from '../../config/admin-notify-search- providers: [ { provide: SEARCH_CONFIG_SERVICE, - useClass: AdminNotifySearchConfigurationService - }, - { - provide: FILTER_SEARCH, - useClass: AdminNotifySearchFilterService - }, - { - provide: FILTER_CONFIG, - useClass: AdminNotifySearchFilterConfig + useClass: SearchConfigurationService } ] }) export class AdminNotifyOutgoingComponent { - protected readonly context = Context.CoarNotify; + protected readonly context = Context.CoarNotifyOutgoing; - constructor(@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: AdminNotifySearchConfigurationService, - @Inject(FILTER_SEARCH) public searchFilterService: AdminNotifySearchFilterService, - @Inject(FILTER_CONFIG) public filterConfig: AdminNotifySearchFilterConfig) { - const outgoingPrefix = 'outgoing.f'; - this.searchConfigService.setParamPrefix(outgoingPrefix); - this.searchFilterService.setParamPrefix(outgoingPrefix); - this.filterConfig.paramNamePrefix = outgoingPrefix; + constructor(@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService) { } } diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.spec.ts b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.spec.ts deleted file mode 100644 index b17a03274f..0000000000 --- a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { AdminNotifySearchResultComponent } from './admin-notify-search-result.component'; - -describe('AdminNotifySearchResultComponent', () => { - let component: AdminNotifySearchResultComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ AdminNotifySearchResultComponent ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(AdminNotifySearchResultComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); 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 deleted file mode 100644 index 23d15002a8..0000000000 --- a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { AdminNotifySearchResult } from '../models/admin-notify-message-search-result.model'; -import { ViewMode } from '../../../core/shared/view-mode.model'; -import { Context } from '../../../core/shared/context.model'; -import { AdminNotifyMessage, QueueStatusMap } from '../models/admin-notify-message.model'; -import { - tabulatableObjectsComponent -} from '../../../shared/object-collection/shared/tabulatable-objects/tabulatable-objects.decorator'; -import { - TabulatableResultListElementsComponent -} from '../../../shared/object-list/search-result-list-element/tabulatable-search-result/tabulatable-result-list-elements.component'; -import { PaginatedList } from '../../../core/data/paginated-list.model'; -import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; -import { AdminNotifyDetailModalComponent } from '../admin-notify-detail-modal/admin-notify-detail-modal.component'; - -@tabulatableObjectsComponent(PaginatedList, ViewMode.Table, Context.CoarNotify) -@Component({ - selector: 'ds-admin-notify-search-result', - templateUrl: './admin-notify-search-result.component.html', - styleUrls: ['./admin-notify-search-result.component.scss'] -}) -export class AdminNotifySearchResultComponent extends TabulatableResultListElementsComponent, AdminNotifySearchResult> implements OnInit{ - public notifyMessages: AdminNotifyMessage[]; - public reprocessStatus = QueueStatusMap.QUEUE_STATUS_QUEUED_FOR_RETRY; - - constructor(private modalService: NgbModal) { - super(); - } - - /** - * Map messages on init for readable representation - */ - ngOnInit() { - this.notifyMessages = this.objects?.page.map(object => { - const indexableObject = object.indexableObject; - indexableObject.coarNotifyType = indexableObject.coarNotifyType.split(':')[1]; - indexableObject.queueStatusLabel = QueueStatusMap[indexableObject.queueStatusLabel]; - return indexableObject; - }); - } - - /** - * Open modal for details visualization - * @param message the message to be displayed - */ - openDetailModal(message: AdminNotifyMessage) { - const modalRef = this.modalService.open(AdminNotifyDetailModalComponent); - const messageKeys = Object.keys(message); - const keysToRead = []; - messageKeys.forEach((key) => { - if (typeof message[key] !== 'object') { - keysToRead.push(key); - } - }); - modalRef.componentInstance.notifyMessage = message; - modalRef.componentInstance.notifyMessageKeys = keysToRead; - } -} diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/incoming/admin-notify-incoming-search-result.component.html b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/incoming/admin-notify-incoming-search-result.component.html new file mode 100644 index 0000000000..06aa551a44 --- /dev/null +++ b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/incoming/admin-notify-incoming-search-result.component.html @@ -0,0 +1,40 @@ + +
+ + + + + + + + + + + + + + + + + + + + + +
TimestampLDN ServiceRepository ItemTypeStatusAction
+
{{message.queueTimeout}}
+
+
{{message.origin}}
+
+
{{message.context}}
+
+
{{message.coarNotifyType}}
+
+
{{message.queueStatusLabel}}
+
+
+ + +
+
+
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.scss b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/incoming/admin-notify-incoming-search-result.component.scss similarity index 100% rename from src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.scss rename to src/app/admin/admin-notify-dashboard/admin-notify-search-result/incoming/admin-notify-incoming-search-result.component.scss diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/incoming/admin-notify-incoming-search-result.component.spec.ts b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/incoming/admin-notify-incoming-search-result.component.spec.ts new file mode 100644 index 0000000000..2db8920d7f --- /dev/null +++ b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/incoming/admin-notify-incoming-search-result.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { AdminNotifyIncomingSearchResultComponent } from './admin-notify-incoming-search-result.component'; + +describe('AdminNotifySearchResultComponent', () => { + let component: AdminNotifyIncomingSearchResultComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AdminNotifyIncomingSearchResultComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(AdminNotifyIncomingSearchResultComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/incoming/admin-notify-incoming-search-result.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/incoming/admin-notify-incoming-search-result.component.ts new file mode 100644 index 0000000000..11e94c05c5 --- /dev/null +++ b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/incoming/admin-notify-incoming-search-result.component.ts @@ -0,0 +1,97 @@ +import { Component, OnInit } from '@angular/core'; +import { AdminNotifySearchResult } from '../../models/admin-notify-message-search-result.model'; +import { ViewMode } from '../../../../core/shared/view-mode.model'; +import { Context } from '../../../../core/shared/context.model'; +import { AdminNotifyMessage, QueueStatusMap } from '../../models/admin-notify-message.model'; +import { + tabulatableObjectsComponent +} from '../../../../shared/object-collection/shared/tabulatable-objects/tabulatable-objects.decorator'; +import { + TabulatableResultListElementsComponent +} from '../../../../shared/object-list/search-result-list-element/tabulatable-search-result/tabulatable-result-list-elements.component'; +import { PaginatedList } from '../../../../core/data/paginated-list.model'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { AdminNotifyDetailModalComponent } from '../../admin-notify-detail-modal/admin-notify-detail-modal.component'; +import { LdnServicesService } from "../../../admin-ldn-services/ldn-services-data/ldn-services-data.service"; +import { BehaviorSubject, concatMap, from, Observable, of, scan, switchMap } from "rxjs"; +import { RemoteData } from "../../../../core/data/remote-data"; +import { LdnService } from "../../../admin-ldn-services/ldn-services-model/ldn-services.model"; +import { filter, map, mergeMap, take, tap, toArray } from "rxjs/operators"; +import { getAllSucceededRemoteDataPayload } from "../../../../core/shared/operators"; +import { ItemDataService } from "../../../../core/data/item-data.service"; +import { AdminNotifyMessagesService } from "../../services/admin-notify-messages.service"; + +@tabulatableObjectsComponent(PaginatedList, ViewMode.Table, Context.CoarNotifyIncoming) +@Component({ + selector: 'ds-admin-notify-search-result', + templateUrl: './admin-notify-incoming-search-result.component.html', + styleUrls: ['./admin-notify-incoming-search-result.component.scss'] +}) +export class AdminNotifyIncomingSearchResultComponent extends TabulatableResultListElementsComponent, AdminNotifySearchResult> implements OnInit{ + public notifyMessages: AdminNotifyMessage[]; + public notifyMessages$: Observable; + public reprocessStatus = QueueStatusMap.QUEUE_STATUS_QUEUED_FOR_RETRY; + + + + constructor(private modalService: NgbModal, + private ldnServicesService: LdnServicesService, + private itemDataService: ItemDataService, + private adminNotifyMessagesService: AdminNotifyMessagesService) { + super(); + } + + /** + * Map messages on init for readable representation + */ + ngOnInit() { + this.notifyMessages = this.objects?.page.map(object => { + const indexableObject = object.indexableObject; + indexableObject.coarNotifyType = indexableObject.coarNotifyType.split(':')[1]; + indexableObject.queueStatusLabel = QueueStatusMap[indexableObject.queueStatusLabel]; + return indexableObject; + }); + + this.notifyMessages$ = from(this.notifyMessages).pipe( + mergeMap(message => of(message)), + mergeMap(message => + message.origin ? this.ldnServicesService.findById(message.origin.toString()).pipe( + getAllSucceededRemoteDataPayload(), + map(detail => ({...message, origin: detail.name})) + ) : of(message), + ), + mergeMap(message => + message.context ? this.itemDataService.findById(message.context.toString()).pipe( + getAllSucceededRemoteDataPayload(), + map(detail => ({...message, context: detail.name})) + ) : of(message), + ), + scan((acc: any, value: any) => [...acc, value], []), + ) + } + + /** + * Open modal for details visualization + * @param message the message to be displayed + */ + openDetailModal(message: AdminNotifyMessage) { + const modalRef = this.modalService.open(AdminNotifyDetailModalComponent); + const messageKeys = Object.keys(message); + const keysToRead = []; + messageKeys.forEach((key) => { + if (typeof message[key] !== 'object') { + keysToRead.push(key); + } + }); + modalRef.componentInstance.notifyMessage = message; + modalRef.componentInstance.notifyMessageKeys = keysToRead; + } + + /** + * Reprocess message in status QUEUE_STATUS_QUEUED_FOR_RETRY and update results + * @param message + */ + reprocessMessage(message: AdminNotifyMessage) { + // TODO implement reprocess + } +} diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.html b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component.html similarity index 73% rename from src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.html rename to src/app/admin/admin-notify-dashboard/admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component.html index a1ba0670bc..639d66a1f3 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.html +++ b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component.html @@ -3,20 +3,20 @@ Timestamp - Origin - Target + Repository Item + LDN Service Type Status Action - + -
{{message.queueTimeout}}
+
{{message.queueTimeout}}
-
{{message.origin}}
+
{{message.object}}
{{message.target}}
@@ -30,7 +30,7 @@
- +
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component.scss b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component.spec.ts b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component.spec.ts new file mode 100644 index 0000000000..110feb2e0c --- /dev/null +++ b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { AdminNotifyOutgoingSearchResultComponent } from './admin-notify-outgoing-search-result.component'; + +describe('AdminNotifySearchResultComponent', () => { + let component: AdminNotifyOutgoingSearchResultComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AdminNotifyOutgoingSearchResultComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(AdminNotifyOutgoingSearchResultComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component.ts new file mode 100644 index 0000000000..b5b49a8a71 --- /dev/null +++ b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/outgoing/admin-notify-outgoing-search-result.component.ts @@ -0,0 +1,98 @@ +import { Component, OnInit } from '@angular/core'; +import { AdminNotifySearchResult } from '../../models/admin-notify-message-search-result.model'; +import { ViewMode } from '../../../../core/shared/view-mode.model'; +import { Context } from '../../../../core/shared/context.model'; +import { AdminNotifyMessage, QueueStatusMap } from '../../models/admin-notify-message.model'; +import { + tabulatableObjectsComponent +} from '../../../../shared/object-collection/shared/tabulatable-objects/tabulatable-objects.decorator'; +import { + TabulatableResultListElementsComponent +} from '../../../../shared/object-list/search-result-list-element/tabulatable-search-result/tabulatable-result-list-elements.component'; +import { PaginatedList } from '../../../../core/data/paginated-list.model'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { AdminNotifyDetailModalComponent } from '../../admin-notify-detail-modal/admin-notify-detail-modal.component'; +import { LdnServicesService } from "../../../admin-ldn-services/ldn-services-data/ldn-services-data.service"; +import { from, Observable, of, scan, switchMap } from "rxjs"; +import { combineLatest, filter, map, mergeMap } from "rxjs/operators"; +import { getAllSucceededRemoteDataPayload } from "../../../../core/shared/operators"; +import { ItemDataService } from "../../../../core/data/item-data.service"; +import { AdminNotifyMessagesService } from "../../services/admin-notify-messages.service"; + +@tabulatableObjectsComponent(PaginatedList, ViewMode.Table, Context.CoarNotifyOutgoing) +@Component({ + selector: 'ds-admin-notify-search-result', + templateUrl: './admin-notify-outgoing-search-result.component.html', + styleUrls: ['./admin-notify-outgoing-search-result.component.scss'] +}) +export class AdminNotifyOutgoingSearchResultComponent extends TabulatableResultListElementsComponent, AdminNotifySearchResult> implements OnInit{ + public notifyMessages: AdminNotifyMessage[]; + public notifyMessages$: Observable; + public reprocessStatus = QueueStatusMap.QUEUE_STATUS_QUEUED_FOR_RETRY; + + constructor(private modalService: NgbModal, + private ldnServicesService: LdnServicesService, + private itemDataService: ItemDataService, + private adminNotifyMessagesService: AdminNotifyMessagesService) { + super(); + } + + /** + * Map messages on init for readable representation + */ + ngOnInit() { + this.mapDetailsToMessages() + } + + /** + * Open modal for details visualization + * @param message the message to be displayed + */ + openDetailModal(message: AdminNotifyMessage) { + const modalRef = this.modalService.open(AdminNotifyDetailModalComponent); + const messageKeys = Object.keys(message); + modalRef.componentInstance.notifyMessage = message; + modalRef.componentInstance.notifyMessageKeys = messageKeys; + } + + /** + * Reprocess message in status QUEUE_STATUS_QUEUED_FOR_RETRY and update results + * @param message + */ + reprocessMessage(message: AdminNotifyMessage) { + this.adminNotifyMessagesService.findById(message.id).pipe(getAllSucceededRemoteDataPayload()).subscribe(response => { + console.log(response); + }) + } + + + /** + * Map readable results to messages + * @private + */ + private mapDetailsToMessages() { + this.notifyMessages = this.objects?.page.map(object => { + const indexableObject = object.indexableObject; + indexableObject.coarNotifyType = indexableObject.coarNotifyType.split(':')[1]; + indexableObject.queueStatusLabel = QueueStatusMap[indexableObject.queueStatusLabel]; + return indexableObject; + }); + + this.notifyMessages$ = from(this.notifyMessages).pipe( + mergeMap(message => of(message)), + mergeMap(message => + message.target ? this.ldnServicesService.findById(message.target.toString()).pipe( + getAllSucceededRemoteDataPayload(), + map(detail => ({...message, target: detail.name})) + ) : of(message), + ), + mergeMap(message => + message.object ? this.itemDataService.findById(message.object.toString()).pipe( + getAllSucceededRemoteDataPayload(), + map(detail => ({...message, object: detail.name})) + ) : of(message), + ), + scan((acc: any, value: any) => [...acc, value], []), + ) + } +} diff --git a/src/app/admin/admin-notify-dashboard/config/admin-notify-facet-config-response.model.ts b/src/app/admin/admin-notify-dashboard/config/admin-notify-facet-config-response.model.ts deleted file mode 100644 index d9f9460a65..0000000000 --- a/src/app/admin/admin-notify-dashboard/config/admin-notify-facet-config-response.model.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; -import { deserialize } from 'cerialize'; -import { HALLink } from '../../../core/shared/hal-link.model'; -import { CacheableObject } from '../../../core/cache/cacheable-object.model'; -import { AdminNotifySearchFilterConfig } from './admin-notify-search-filter-config'; -import { FACET_CONFIG_RESPONSE } from '../../../shared/search/models/types/facet-config-response.resouce-type'; - -/** - * The response from the discover/facets endpoint - */ -@typedObject -export class AdminNotifyFacetConfigResponse implements CacheableObject { - static type = FACET_CONFIG_RESPONSE; - - /** - * The object type, - * hardcoded because rest doesn't a unique one. - */ - @excludeFromEquals - type = FACET_CONFIG_RESPONSE; - - /** - * the filters in this response - */ - filters: AdminNotifySearchFilterConfig[]; - - /** - * The {@link HALLink}s for this SearchFilterConfig - */ - @deserialize - _links: { - self: HALLink; - }; -} diff --git a/src/app/admin/admin-notify-dashboard/config/admin-notify-facet-response-parsing.service.ts b/src/app/admin/admin-notify-dashboard/config/admin-notify-facet-response-parsing.service.ts deleted file mode 100644 index 16c986fef6..0000000000 --- a/src/app/admin/admin-notify-dashboard/config/admin-notify-facet-response-parsing.service.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Injectable } from '@angular/core'; -import { FacetConfigResponseParsingService } from '../../../core/data/facet-config-response-parsing.service'; -import { RestRequest } from '../../../core/data/rest-request.model'; -import { RawRestResponse } from '../../../core/dspace-rest/raw-rest-response.model'; -import { ParsedResponse } from '../../../core/cache/response.models'; -import { DSpaceSerializer } from '../../../core/dspace-rest/dspace.serializer'; -import { AdminNotifySearchFilterConfig } from './admin-notify-search-filter-config'; -import { FacetConfigResponse } from '../../../shared/search/models/facet-config-response.model'; - -@Injectable() -export class AdminNotifyFacetResponseParsingService extends FacetConfigResponseParsingService { - parse(request: RestRequest, data: RawRestResponse): ParsedResponse { - - const config = data.payload._embedded.facets; - const serializer = new DSpaceSerializer(AdminNotifySearchFilterConfig); - const filters = serializer.deserializeArray(config); - - const _links = { - self: data.payload._links.self - }; - - // fill in the missing links section - filters.forEach((filterConfig: AdminNotifySearchFilterConfig) => { - _links[filterConfig.name] = { - href: filterConfig._links.self.href - }; - }); - - const facetConfigResponse = Object.assign(new FacetConfigResponse(), { - filters, - _links - }); - - this.addToObjectCache(facetConfigResponse, request, data); - - return new ParsedResponse(data.statusCode, facetConfigResponse._links.self); - } -} diff --git a/src/app/admin/admin-notify-dashboard/config/admin-notify-filter-service.ts b/src/app/admin/admin-notify-dashboard/config/admin-notify-filter-service.ts deleted file mode 100644 index ca421957b8..0000000000 --- a/src/app/admin/admin-notify-dashboard/config/admin-notify-filter-service.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Injectable } from '@angular/core'; -import { SearchFilterService } from '../../../core/shared/search/search-filter.service'; -import { Store } from '@ngrx/store'; -import { SearchFiltersState } from '../../../shared/search/search-filters/search-filter/search-filter.reducer'; -import { RouteService } from '../../../core/services/route.service'; - - -/** - * Service that performs all actions that have to do with search filters and facets - */ -@Injectable() -export class AdminNotifySearchFilterService extends SearchFilterService { - - public filterPrefix: string; - constructor(protected store: Store, - protected routeService: RouteService) { - super(store, routeService); - } - - /** - * Fetch the current active filters from the query parameters - * @returns {Observable} - */ - getCurrentFilters() { - return this.routeService.getQueryParamsWithPrefix(`${this.filterPrefix}.`); - } - - /** - * Set prefix to be used for route filters - * @param prefix - */ - setParamPrefix(prefix: string): void { - this.filterPrefix = prefix; - } -} diff --git a/src/app/admin/admin-notify-dashboard/config/admin-notify-search-configuration.service.ts b/src/app/admin/admin-notify-dashboard/config/admin-notify-search-configuration.service.ts deleted file mode 100644 index 127aa2a5a1..0000000000 --- a/src/app/admin/admin-notify-dashboard/config/admin-notify-search-configuration.service.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { Injectable } from '@angular/core'; -import { ActivatedRoute, Params } from '@angular/router'; -import { Observable } from 'rxjs'; -import { map, take } from 'rxjs/operators'; -import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service'; -import { RouteService } from '../../../core/services/route.service'; -import { LinkService } from '../../../core/cache/builders/link.service'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; -import { RequestService } from '../../../core/data/request.service'; -import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service'; -import { PaginationService } from '../../../core/pagination/pagination.service'; -import { RemoteData } from '../../../core/data/remote-data'; -import { GetRequest } from '../../../core/data/request.models'; -import { GenericConstructor } from '../../../core/shared/generic-constructor'; -import { ResponseParsingService } from '../../../core/data/parsing.service'; -import { hasNoValue, isNotEmpty } from '../../../shared/empty.util'; -import { AdminNotifyFacetResponseParsingService } from './admin-notify-facet-response-parsing.service'; -import { AdminNotifySearchFilterConfig } from './admin-notify-search-filter-config'; -import { AdminNotifyFacetConfigResponse } from './admin-notify-facet-config-response.model'; -import { SearchFilter } from '../../../shared/search/models/search-filter.model'; - - - -/** - * Service that performs all actions that have to do with the current admin notify configuration - */ -@Injectable() -export class AdminNotifySearchConfigurationService extends SearchConfigurationService { - - public paramPrefix: string; - /** - * Initialize class - * - * @param {RouteService} routeService - * @param {PaginationService} paginationService - * @param {ActivatedRoute} route - * @param linkService - * @param halService - * @param requestService - * @param rdb - */ - constructor(protected routeService: RouteService, - protected paginationService: PaginationService, - protected route: ActivatedRoute, - protected linkService: LinkService, - protected halService: HALEndpointService, - protected requestService: RequestService, - protected rdb: RemoteDataBuildService) { - super(routeService, paginationService, route, linkService, halService, requestService, rdb); - } - - /** - * @returns {Observable} Emits the current active filters with their values as they are displayed in the frontend URL - */ - getCurrentFrontendFilters(): Observable { - return this.routeService.getQueryParamsWithPrefix(`${this.paramPrefix}.`); - } - - /** - * Set prefix to be used for route filters - * @param prefix - */ - setParamPrefix(prefix: string): void { - this.paramPrefix = prefix; - } - - /** - * Request the filter configuration for a given scope or the whole repository - * @param {string} scope UUID of the object for which config the filter config is requested, when no scope is provided the configuration for the whole repository is loaded - * @param {string} configurationName the name of the configuration - * @returns {Observable>} The found filter configuration - */ - getConfig(scope?: string, configurationName?: string): Observable> { - const href$ = this.halService.getEndpoint(this.facetLinkPathPrefix).pipe( - map((url: string) => this.getConfigUrl(url, scope, configurationName)), - ); - - href$.pipe(take(1)).subscribe((url: string) => { - let request = new GetRequest(this.requestService.generateRequestId(), url); - request = Object.assign(request, { - getResponseParser(): GenericConstructor { - return AdminNotifyFacetResponseParsingService; - } - }); - this.requestService.send(request, true); - }); - - return this.rdb.buildFromHref(href$).pipe( - map((rd: RemoteData) => { - if (rd.hasSucceeded) { - let filters: AdminNotifySearchFilterConfig[]; - if (isNotEmpty(rd.payload.filters)) { - filters = rd.payload.filters - .map((filter: any) => Object.assign(new AdminNotifySearchFilterConfig(), filter)); - filters.forEach(filter => filter.namePrefix = this.paramPrefix); - } else { - filters = []; - } - - return new RemoteData( - rd.timeCompleted, - rd.msToLive, - rd.lastUpdated, - rd.state, - rd.errorMessage, - filters, - rd.statusCode, - ); - } else { - return rd as any as RemoteData; - } - }) - ); - } - - /** - * @returns {Observable} Emits the current active filters with their values as they are sent to the backend - */ - getCurrentFilters(): Observable { - return this.getCurrentFrontendFilters().pipe(map((filterParams) => { - if (isNotEmpty(filterParams)) { - const filters = []; - Object.keys(filterParams).forEach((key) => { - // we add one to keep in account the point at the end of the prefix and set back the prefix f. - const updatedKey = `f.${key.substring(this.paramPrefix.length + 1, key.length)}`; - - delete Object.assign(filterParams, {[updatedKey]: filterParams[key] })[key]; - key = updatedKey; - if (key.endsWith('.min') || key.endsWith('.max')) { - const realKey = key.slice(0, -4); - if (hasNoValue(filters.find((f) => f.key === realKey))) { - const min = filterParams[realKey + '.min'] ? filterParams[realKey + '.min'][0] : '*'; - const max = filterParams[realKey + '.max'] ? filterParams[realKey + '.max'][0] : '*'; - filters.push(new SearchFilter(realKey, ['[' + min + ' TO ' + max + ']'], 'equals')); - } - } else { - filters.push(new SearchFilter(key, filterParams[key])); - } - }); - return filters; - } - return []; - })); - } -} diff --git a/src/app/admin/admin-notify-dashboard/config/admin-notify-search-filter-config.ts b/src/app/admin/admin-notify-dashboard/config/admin-notify-search-filter-config.ts deleted file mode 100644 index 2372313c0d..0000000000 --- a/src/app/admin/admin-notify-dashboard/config/admin-notify-search-filter-config.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { SearchFilterConfig } from '../../../shared/search/models/search-filter-config.model'; -import { autoserialize, autoserializeAs, deserialize } from 'cerialize'; -import { HALLink } from '../../../core/shared/hal-link.model'; -import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; -import { SEARCH_FILTER_CONFIG } from '../../../shared/search/models/types/search-filter-config.resource-type'; -import { FilterType } from '../../../shared/search/models/filter-type.model'; - -/** - * The configuration for a search filter - */ -@typedObject -export class AdminNotifySearchFilterConfig implements SearchFilterConfig { - static type = SEARCH_FILTER_CONFIG; - - /** - * The prefix of this filter - */ - @autoserialize - namePrefix: string; - - /** - * The object type, - * hardcoded because rest doesn't set one. - */ - @excludeFromEquals - type = SEARCH_FILTER_CONFIG; - - /** - * The name of this filter - */ - @autoserialize - name: string; - - /** - * The FilterType of this filter - */ - @autoserializeAs(String, 'facetType') - filterType: FilterType; - - /** - * True if the filter has facets - */ - @autoserialize - hasFacets: boolean; - - /** - * @type {number} The page size used for this facet - */ - @autoserializeAs(String, 'facetLimit') - pageSize = 5; - - /** - * Defines if the item facet is collapsed by default or not on the search page - */ - @autoserialize - isOpenByDefault: boolean; - - /** - * Minimum value possible for this facet in the repository - */ - @autoserialize - maxValue: string; - - /** - * Maximum value possible for this facet in the repository - */ - @autoserialize - minValue: string; - - /** - * The {@link HALLink}s for this SearchFilterConfig - */ - @deserialize - _links: { - self: HALLink; - }; - - /** - * Set prefix to be used for route filters - * @param namePrefix - */ - set paramNamePrefix(namePrefix: string) { - this.namePrefix = namePrefix; - } - - /** - * Name of this configuration that can be used in a url - * @returns Parameter name - */ - get paramName(): string { - return `${this.namePrefix}.${this.name}`; - } -} 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 6114ab6084..1fda25d1ef 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 @@ -29,6 +29,12 @@ export class AdminNotifyMessage extends DSpaceObject { @excludeFromEquals type = ADMIN_NOTIFY_MESSAGE; + /** + * The id of the message + */ + @autoserialize + id: string; + /** * The type of the notification */ @@ -47,6 +53,18 @@ export class AdminNotifyMessage extends DSpaceObject { @autoserialize inReplyTo: string; + /** + * The object the message relates to + */ + @autoserialize + object: string; + + /** + * The context of the message + */ + @autoserialize + context: string; + /** * The attempts of the queue */ @@ -63,13 +81,13 @@ export class AdminNotifyMessage extends DSpaceObject { * The type of the activity stream */ @autoserialize - origin: number; + origin: number | string; /** * The type of the activity stream */ @autoserialize - target: number; + target: number | string; /** * The label for the status of the queue diff --git a/src/app/admin/admin-notify-dashboard/services/admin-notify-messages.service.ts b/src/app/admin/admin-notify-dashboard/services/admin-notify-messages.service.ts new file mode 100644 index 0000000000..8f710d987d --- /dev/null +++ b/src/app/admin/admin-notify-dashboard/services/admin-notify-messages.service.ts @@ -0,0 +1,45 @@ +import {Injectable} from '@angular/core'; +import {dataService} from '../../../core/data/base/data-service.decorator'; +import {IdentifiableDataService} from '../../../core/data/base/identifiable-data.service'; +import {FindAllData, FindAllDataImpl} from '../../../core/data/base/find-all-data'; +import {DeleteData, DeleteDataImpl} from '../../../core/data/base/delete-data'; +import {RequestService} from '../../../core/data/request.service'; +import {RemoteDataBuildService} from '../../../core/cache/builders/remote-data-build.service'; +import {ObjectCacheService} from '../../../core/cache/object-cache.service'; +import {HALEndpointService} from '../../../core/shared/hal-endpoint.service'; +import {NotificationsService} from '../../../shared/notifications/notifications.service'; +import {FindListOptions} from '../../../core/data/find-list-options.model'; +import {FollowLinkConfig} from '../../../shared/utils/follow-link-config.model'; +import {Observable} from 'rxjs'; +import {RemoteData} from '../../../core/data/remote-data'; +import {PaginatedList} from '../../../core/data/paginated-list.model'; +import {NoContent} from '../../../core/shared/NoContent.model'; +import {PatchData, PatchDataImpl} from '../../../core/data/base/patch-data'; +import {ChangeAnalyzer} from '../../../core/data/change-analyzer'; +import {Operation} from 'fast-json-patch'; +import {RestRequestMethod} from '../../../core/data/rest-request-method'; +import {CreateData, CreateDataImpl} from '../../../core/data/base/create-data'; +import {SearchDataImpl} from '../../../core/data/base/search-data'; +import { ADMIN_NOTIFY_MESSAGE } from "../models/admin-notify-message.resource-type"; +import { AdminNotifyMessage } from "../models/admin-notify-message.model"; + +/** + * Injectable service responsible for fetching/sending data from/to the REST API on the messages endpoint. + * + * @export + * @class AdminNotifyMessagesService + * @extends {IdentifiableDataService} + */ +@Injectable() +@dataService(ADMIN_NOTIFY_MESSAGE) +export class AdminNotifyMessagesService extends IdentifiableDataService { + constructor( + protected requestService: RequestService, + protected rdbService: RemoteDataBuildService, + protected objectCache: ObjectCacheService, + protected halService: HALEndpointService, + protected notificationsService: NotificationsService, + ) { + super('messages', requestService, rdbService, objectCache, halService); + } +} diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts index abfd303799..26e32d34e7 100644 --- a/src/app/core/core.module.ts +++ b/src/app/core/core.module.ts @@ -198,11 +198,6 @@ import { SubmissionCoarNotifyConfig } from '../submission/sections/section-coar- import { NotifyRequestsStatus } from '../item-page/simple/notify-requests-status/notify-requests-status.model'; import { NotifyRequestsStatusDataService } from './data/notify-services-status-data.service'; import { AdminNotifyMessage } from '../admin/admin-notify-dashboard/models/admin-notify-message.model'; -import { - AdminNotifyFacetResponseParsingService -} from '../admin/admin-notify-dashboard/config/admin-notify-facet-response-parsing.service'; -import { FILTER_SEARCH } from '../admin/admin-notify-dashboard/admin-notify-dashboard.component'; -import { AdminNotifySearchFilterService } from '../admin/admin-notify-dashboard/config/admin-notify-filter-service'; /** @@ -235,10 +230,6 @@ const PROVIDERS = [ DSOResponseParsingService, { provide: MOCK_RESPONSE_MAP, useValue: mockResponseMap }, { provide: DspaceRestService, useFactory: restServiceFactory, deps: [MOCK_RESPONSE_MAP, HttpClient] }, - { - provide: FILTER_SEARCH, - useClass: SearchFilterService - }, EPersonDataService, LinkHeadService, HALEndpointService, @@ -254,7 +245,6 @@ const PROVIDERS = [ EndpointMapResponseParsingService, FacetValueResponseParsingService, FacetConfigResponseParsingService, - AdminNotifyFacetResponseParsingService, DebugResponseParsingService, SearchResponseParsingService, MyDSpaceResponseParsingService, @@ -294,7 +284,6 @@ const PROVIDERS = [ SearchService, SidebarService, SearchFilterService, - AdminNotifySearchFilterService, SearchConfigurationService, SelectableListService, RelationshipTypeDataService, diff --git a/src/app/core/shared/context.model.ts b/src/app/core/shared/context.model.ts index deb7bbeca3..1526be1033 100644 --- a/src/app/core/shared/context.model.ts +++ b/src/app/core/shared/context.model.ts @@ -40,5 +40,6 @@ export enum Context { Bitstream = 'bitstream', - CoarNotify = 'coarNotify' + CoarNotifyIncoming = 'coarNotifyIncoming', + CoarNotifyOutgoing = 'coarNotifyOutgoing', } diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.spec.ts b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.spec.ts index 8c27774f99..53acb1d911 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.spec.ts +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.spec.ts @@ -19,7 +19,6 @@ import { PaginationComponentOptions } from '../../../../../pagination/pagination import { PaginationService } from '../../../../../../core/pagination/pagination.service'; import { PaginationServiceStub } from '../../../../../testing/pagination-service.stub'; import { ShortNumberPipe } from '../../../../../utils/short-number.pipe'; -import { FILTER_SEARCH } from "../../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component"; describe('SearchFacetOptionComponent', () => { let comp: SearchFacetOptionComponent; @@ -103,7 +102,7 @@ describe('SearchFacetOptionComponent', () => { } }, { - provide: FILTER_SEARCH, useValue: { + provide: SearchFilterService, useValue: { getSelectedValuesForFilter: () => selectedValues, isFilterActiveWithValue: (paramName: string, filterValue: string) => observableOf(true), getPage: (paramName: string) => page, diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.ts b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.ts index fcf8b334e9..b14d3187d7 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.ts +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.ts @@ -11,7 +11,6 @@ import { hasValue } from '../../../../../empty.util'; import { currentPath } from '../../../../../utils/route.utils'; import { getFacetValueForType } from '../../../../search.utils'; import { PaginationService } from '../../../../../../core/pagination/pagination.service'; -import { FILTER_SEARCH } from '../../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component'; @Component({ selector: 'ds-search-facet-option', @@ -65,7 +64,7 @@ export class SearchFacetOptionComponent implements OnInit, OnDestroy { paginationId: string; constructor(protected searchService: SearchService, - @Inject(FILTER_SEARCH) protected filterService: SearchFilterService, + protected filterService: SearchFilterService, protected searchConfigService: SearchConfigurationService, protected router: Router, protected paginationService: PaginationService diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.spec.ts b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.spec.ts index 0f9655c1d5..b0acf43c32 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.spec.ts +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.spec.ts @@ -23,7 +23,6 @@ import { PaginationComponentOptions } from '../../../../../pagination/pagination import { PaginationService } from '../../../../../../core/pagination/pagination.service'; import { PaginationServiceStub } from '../../../../../testing/pagination-service.stub'; import { ShortNumberPipe } from '../../../../../utils/short-number.pipe'; -import { FILTER_SEARCH } from "../../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component"; describe('SearchFacetRangeOptionComponent', () => { let comp: SearchFacetRangeOptionComponent; @@ -77,7 +76,7 @@ describe('SearchFacetRangeOptionComponent', () => { } }, { - provide: FILTER_SEARCH, useValue: { + provide: SearchFilterService, useValue: { isFilterActiveWithValue: (paramName: string, filterValue: string) => observableOf(true), getPage: (paramName: string) => page, /* eslint-disable no-empty,@typescript-eslint/no-empty-function */ diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.ts b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.ts index 7d0a575c25..6afe994f2f 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.ts +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.ts @@ -14,7 +14,6 @@ import { SearchConfigurationService } from '../../../../../../core/shared/search import { hasValue } from '../../../../../empty.util'; import { currentPath } from '../../../../../utils/route.utils'; import { PaginationService } from '../../../../../../core/pagination/pagination.service'; -import { FILTER_SEARCH } from '../../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component'; const rangeDelimiter = '-'; @@ -65,7 +64,7 @@ export class SearchFacetRangeOptionComponent implements OnInit, OnDestroy { searchLink: string; constructor(protected searchService: SearchService, - @Inject(FILTER_SEARCH) protected filterService: SearchFilterService, + protected filterService: SearchFilterService, protected searchConfigService: SearchConfigurationService, protected router: Router, protected paginationService: PaginationService diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.spec.ts b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.spec.ts index aa58d25d31..15e418842f 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.spec.ts +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.spec.ts @@ -17,7 +17,6 @@ import { SearchFacetSelectedOptionComponent } from './search-facet-selected-opti import { PaginationComponentOptions } from '../../../../../pagination/pagination-component-options.model'; import { PaginationService } from '../../../../../../core/pagination/pagination.service'; import { PaginationServiceStub } from '../../../../../testing/pagination-service.stub'; -import { FILTER_SEARCH } from "../../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component"; describe('SearchFacetSelectedOptionComponent', () => { let comp: SearchFacetSelectedOptionComponent; @@ -127,7 +126,7 @@ describe('SearchFacetSelectedOptionComponent', () => { } }, { - provide: FILTER_SEARCH, useValue: { + provide: SearchFilterService, useValue: { getSelectedValuesForFilter: () => selectedValues, isFilterActiveWithValue: (paramName: string, filterValue: string) => observableOf(true), getPage: (paramName: string) => page, diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.ts b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.ts index 25f5883a00..8479417c57 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.ts +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.ts @@ -10,7 +10,6 @@ import { FacetValue } from '../../../../models/facet-value.model'; import { currentPath } from '../../../../../utils/route.utils'; import { getFacetValueForType } from '../../../../search.utils'; import { PaginationService } from '../../../../../../core/pagination/pagination.service'; -import { FILTER_SEARCH } from '../../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component'; @Component({ selector: 'ds-search-facet-selected-option', @@ -58,7 +57,7 @@ export class SearchFacetSelectedOptionComponent implements OnInit, OnDestroy { searchLink: string; constructor(protected searchService: SearchService, - @Inject(FILTER_SEARCH) protected filterService: SearchFilterService, + protected filterService: SearchFilterService, protected searchConfigService: SearchConfigurationService, protected router: Router, protected paginationService: PaginationService diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.spec.ts b/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.spec.ts index 40852f275d..92d2e5265b 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.spec.ts +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.spec.ts @@ -24,7 +24,6 @@ import { RemoteDataBuildService } from '../../../../../core/cache/builders/remot import { SearchConfigurationServiceStub } from '../../../../testing/search-configuration-service.stub'; import { SEARCH_CONFIG_SERVICE } from '../../../../../my-dspace-page/my-dspace-page.component'; import { createSuccessfulRemoteDataObject$ } from '../../../../remote-data.utils'; -import { FILTER_SEARCH } from "../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component"; describe('SearchFacetFilterComponent', () => { let comp: SearchFacetFilterComponent; @@ -101,7 +100,7 @@ describe('SearchFacetFilterComponent', () => { { provide: IN_PLACE_SEARCH, useValue: false }, { provide: REFRESH_FILTER, useValue: new BehaviorSubject(false) }, { - provide: FILTER_SEARCH, useValue: { + provide: SearchFilterService, useValue: { getSelectedValuesForFilter: () => observableOf(selectedValues), isFilterActiveWithValue: (paramName: string, filterValue: string) => true, getPage: (paramName: string) => page, diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts b/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts index 37a540a39c..2b2eb9b11a 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts @@ -35,7 +35,6 @@ import { currentPath } from '../../../../utils/route.utils'; import { getFacetValueForType, stripOperatorFromFilterValue } from '../../../search.utils'; import { createPendingRemoteDataObject } from '../../../../remote-data.utils'; import { FacetValues } from '../../../models/facet-values.model'; -import { FILTER_SEARCH } from '../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component'; @Component({ selector: 'ds-search-facet-filter', @@ -99,7 +98,7 @@ export class SearchFacetFilterComponent implements OnInit, OnDestroy { currentUrl: string; constructor(protected searchService: SearchService, - @Inject(FILTER_SEARCH) protected filterService: SearchFilterService, + protected filterService: SearchFilterService, protected rdbs: RemoteDataBuildService, protected router: Router, @Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService, diff --git a/src/app/shared/search/search-filters/search-filter/search-filter.component.spec.ts b/src/app/shared/search/search-filters/search-filter/search-filter.component.spec.ts index 8747747ec7..7abe45ca8c 100644 --- a/src/app/shared/search/search-filters/search-filter/search-filter.component.spec.ts +++ b/src/app/shared/search/search-filters/search-filter/search-filter.component.spec.ts @@ -14,7 +14,6 @@ import { SearchConfigurationServiceStub } from '../../../testing/search-configur import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-page.component'; import { SequenceService } from '../../../../core/shared/sequence.service'; import { BrowserOnlyMockPipe } from '../../../testing/browser-only-mock.pipe'; -import { FILTER_SEARCH } from "../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component"; describe('SearchFilterComponent', () => { let comp: SearchFilterComponent; @@ -71,7 +70,7 @@ describe('SearchFilterComponent', () => { providers: [ { provide: SearchService, useValue: searchServiceStub }, { - provide: FILTER_SEARCH, + provide: SearchFilterService, useValue: mockFilterService }, { provide: SEARCH_CONFIG_SERVICE, useValue: new SearchConfigurationServiceStub() }, diff --git a/src/app/shared/search/search-filters/search-filter/search-filter.component.ts b/src/app/shared/search/search-filters/search-filter/search-filter.component.ts index d7967e6642..d1d3bd729d 100644 --- a/src/app/shared/search/search-filters/search-filter/search-filter.component.ts +++ b/src/app/shared/search/search-filters/search-filter/search-filter.component.ts @@ -11,7 +11,6 @@ import { SearchService } from '../../../../core/shared/search/search.service'; import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-page.component'; import { SequenceService } from '../../../../core/shared/sequence.service'; -import { FILTER_SEARCH } from '../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component'; @Component({ selector: 'ds-search-filter', @@ -72,7 +71,7 @@ export class SearchFilterComponent implements OnInit { private readonly sequenceId: number; constructor( - @Inject(FILTER_SEARCH) private filterService: SearchFilterService, + private filterService: SearchFilterService, private searchService: SearchService, @Inject(SEARCH_CONFIG_SERVICE) private searchConfigService: SearchConfigurationService, private sequenceService: SequenceService, diff --git a/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.spec.ts b/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.spec.ts index 6ca5c62334..e6c74d8047 100644 --- a/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.spec.ts +++ b/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.spec.ts @@ -26,7 +26,6 @@ import { SearchConfigurationServiceStub } from '../../../../testing/search-confi import { VocabularyEntryDetail } from '../../../../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; import { FacetValue} from '../../../models/facet-value.model'; import { SearchFilterConfig } from '../../../models/search-filter-config.model'; -import { FILTER_SEARCH } from "../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component"; describe('SearchHierarchyFilterComponent', () => { @@ -68,7 +67,7 @@ describe('SearchHierarchyFilterComponent', () => { ], providers: [ { provide: SearchService, useValue: searchService }, - { provide: FILTER_SEARCH, useValue: searchFilterService }, + { provide: SearchFilterService, useValue: searchFilterService }, { provide: RemoteDataBuildService, useValue: {} }, { provide: Router, useValue: router }, { provide: NgbModal, useValue: ngbModal }, diff --git a/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.ts b/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.ts index fd62e49e32..f9b3f2bff9 100644 --- a/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.ts +++ b/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.ts @@ -26,7 +26,6 @@ import { PageInfo } from '../../../../../core/shared/page-info.model'; import { environment } from '../../../../../../environments/environment'; import { addOperatorToFilterValue } from '../../../search.utils'; import { VocabularyTreeviewModalComponent } from '../../../../form/vocabulary-treeview-modal/vocabulary-treeview-modal.component'; -import { FILTER_SEARCH } from '../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component'; @Component({ selector: 'ds-search-hierarchy-filter', @@ -42,7 +41,7 @@ import { FILTER_SEARCH } from '../../../../../admin/admin-notify-dashboard/admin export class SearchHierarchyFilterComponent extends SearchFacetFilterComponent implements OnInit { constructor(protected searchService: SearchService, - @Inject(FILTER_SEARCH) protected filterService: SearchFilterService, + protected filterService: SearchFilterService, protected rdbs: RemoteDataBuildService, protected router: Router, protected modalService: NgbModal, diff --git a/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.spec.ts b/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.spec.ts index 7569a33214..3a146f5059 100644 --- a/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.spec.ts +++ b/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.spec.ts @@ -25,7 +25,6 @@ import { SEARCH_CONFIG_SERVICE } from '../../../../../my-dspace-page/my-dspace-p import { SearchConfigurationServiceStub } from '../../../../testing/search-configuration-service.stub'; import { createSuccessfulRemoteDataObject$ } from '../../../../remote-data.utils'; import { RouteService } from '../../../../../core/services/route.service'; -import { FILTER_SEARCH } from "../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component"; describe('SearchRangeFilterComponent', () => { let comp: SearchRangeFilterComponent; @@ -107,7 +106,7 @@ describe('SearchRangeFilterComponent', () => { { provide: IN_PLACE_SEARCH, useValue: false }, { provide: REFRESH_FILTER, useValue: new BehaviorSubject(false) }, { - provide: FILTER_SEARCH, useValue: { + provide: SearchFilterService, useValue: { getSelectedValuesForFilter: () => selectedValues, isFilterActiveWithValue: (paramName: string, filterValue: string) => true, getPage: (paramName: string) => page, diff --git a/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.ts b/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.ts index 788971b4cb..ed20e63c52 100644 --- a/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.ts +++ b/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.ts @@ -21,7 +21,6 @@ import { SearchConfigurationService } from '../../../../../core/shared/search/se import { RouteService } from '../../../../../core/services/route.service'; import { hasValue } from '../../../../empty.util'; import { yearFromString } from 'src/app/shared/date.util'; -import { FILTER_SEARCH } from '../../../../../admin/admin-notify-dashboard/admin-notify-dashboard.component'; /** * The suffix for a range filters' minimum in the frontend URL @@ -93,7 +92,7 @@ export class SearchRangeFilterComponent extends SearchFacetFilterComponent imple keyboardControl: boolean; constructor(protected searchService: SearchService, - @Inject(FILTER_SEARCH) protected filterService: SearchFilterService, + protected filterService: SearchFilterService, protected router: Router, protected rdbs: RemoteDataBuildService, private translateService: TranslateService, diff --git a/src/app/shared/search/search-filters/search-filters.component.spec.ts b/src/app/shared/search/search-filters/search-filters.component.spec.ts index 212174d241..522459b603 100644 --- a/src/app/shared/search/search-filters/search-filters.component.spec.ts +++ b/src/app/shared/search/search-filters/search-filters.component.spec.ts @@ -9,7 +9,6 @@ import { SearchFiltersComponent } from './search-filters.component'; import { SearchService } from '../../../core/shared/search/search.service'; import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-page.component'; import { SearchConfigurationServiceStub } from '../../testing/search-configuration-service.stub'; -import { FILTER_SEARCH } from "../../../admin/admin-notify-dashboard/admin-notify-dashboard.component"; describe('SearchFiltersComponent', () => { let comp: SearchFiltersComponent; @@ -37,7 +36,7 @@ describe('SearchFiltersComponent', () => { providers: [ { provide: SearchService, useValue: searchServiceStub }, { provide: SEARCH_CONFIG_SERVICE, useValue: new SearchConfigurationServiceStub() }, - { provide: FILTER_SEARCH, useValue: searchFiltersStub }, + { provide: SearchFilterService, useValue: searchFiltersStub }, ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/shared/search/search-filters/search-filters.component.ts b/src/app/shared/search/search-filters/search-filters.component.ts index e7bedbb30a..63235b3e57 100644 --- a/src/app/shared/search/search-filters/search-filters.component.ts +++ b/src/app/shared/search/search-filters/search-filters.component.ts @@ -12,7 +12,6 @@ import { SearchFilterService } from '../../../core/shared/search/search-filter.s import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-page.component'; import { currentPath } from '../../utils/route.utils'; import { hasValue } from '../../empty.util'; -import { FILTER_SEARCH } from '../../../admin/admin-notify-dashboard/admin-notify-dashboard.component'; @Component({ selector: 'ds-search-filters', @@ -72,7 +71,7 @@ export class SearchFiltersComponent implements OnInit, OnDestroy { */ constructor( private searchService: SearchService, - @Inject(FILTER_SEARCH) protected filterService: SearchFilterService, + protected filterService: SearchFilterService, private router: Router, @Inject(SEARCH_CONFIG_SERVICE) private searchConfigService: SearchConfigurationService) { } diff --git a/src/app/shared/search/search.component.ts b/src/app/shared/search/search.component.ts index 184dc2fb21..61f3a119c8 100644 --- a/src/app/shared/search/search.component.ts +++ b/src/app/shared/search/search.component.ts @@ -101,11 +101,6 @@ export class SearchComponent implements OnInit { */ @Input() searchEnabled = true; - /** - * Config param for route service - */ - @Input() routeConfigParam: string; - /** * The width of the sidebar (bootstrap columns) */ @@ -297,12 +292,8 @@ export class SearchComponent implements OnInit { this.searchConfigService.setPaginationId(this.paginationId); - if (this.routeConfigParam) { - this.searchConfigService.setRouteConfigurationParamName(this.routeConfigParam); - } - if (hasValue(this.configuration)) { - this.routeService.setParameter(this.routeConfigParam ?? 'configuration', this.configuration); + this.routeService.setParameter('configuration', this.configuration); } if (hasValue(this.fixedFilterQuery)) { this.routeService.setParameter('fixedFilterQuery', this.fixedFilterQuery); diff --git a/src/app/shared/search/themed-search.component.ts b/src/app/shared/search/themed-search.component.ts index 555056eacc..03f6f37e25 100644 --- a/src/app/shared/search/themed-search.component.ts +++ b/src/app/shared/search/themed-search.component.ts @@ -20,7 +20,7 @@ import { ListableObject } from '../object-collection/shared/listable-object.mode }) export class ThemedSearchComponent extends ThemedComponent { - protected inAndOutputNames: (keyof SearchComponent & keyof this)[] = ['configurationList', 'context', 'configuration', 'fixedFilterQuery', 'routeConfigParam', 'useCachedVersionIfAvailable', 'inPlaceSearch', 'linkType', 'paginationId', 'searchEnabled', 'sideBarWidth', 'searchFormPlaceholder', 'selectable', 'selectionConfig', 'showCsvExport', 'showSidebar', 'showThumbnails', 'showViewModes', 'useUniquePageId', 'viewModeList', 'showScopeSelector', 'resultFound', 'deselectObject', 'selectObject', 'trackStatistics', 'query']; + protected inAndOutputNames: (keyof SearchComponent & keyof this)[] = ['configurationList', 'context', 'configuration', 'fixedFilterQuery', 'useCachedVersionIfAvailable', 'inPlaceSearch', 'linkType', 'paginationId', 'searchEnabled', 'sideBarWidth', 'searchFormPlaceholder', 'selectable', 'selectionConfig', 'showCsvExport', 'showSidebar', 'showThumbnails', 'showViewModes', 'useUniquePageId', 'viewModeList', 'showScopeSelector', 'resultFound', 'deselectObject', 'selectObject', 'trackStatistics', 'query']; @Input() configurationList: SearchConfigurationOption[]; @@ -30,8 +30,6 @@ export class ThemedSearchComponent extends ThemedComponent { @Input() fixedFilterQuery: string; - @Input() routeConfigParam: string; - @Input() useCachedVersionIfAvailable: boolean; @Input() inPlaceSearch: boolean;