mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
clean up, fix tests, add missing translations
This commit is contained in:
@@ -8,10 +8,10 @@ import {
|
|||||||
} from '../../core/data/feature-authorization/feature-authorization-guard/site-administrator.guard';
|
} from '../../core/data/feature-authorization/feature-authorization-guard/site-administrator.guard';
|
||||||
import {
|
import {
|
||||||
AdminNotifyIncomingComponent
|
AdminNotifyIncomingComponent
|
||||||
} from "./admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component";
|
} from './admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component';
|
||||||
import {
|
import {
|
||||||
AdminNotifyOutgoingComponent
|
AdminNotifyOutgoingComponent
|
||||||
} from "./admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component";
|
} from './admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { Component, InjectionToken, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { SearchService } from '../../core/shared/search/search.service';
|
import { SearchService } from '../../core/shared/search/search.service';
|
||||||
import { environment } from '../../../environments/environment';
|
import { environment } from '../../../environments/environment';
|
||||||
import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model';
|
||||||
@@ -12,7 +12,7 @@ import { DSpaceObject } from '../../core/shared/dspace-object.model';
|
|||||||
import { SEARCH_CONFIG_SERVICE } from '../../my-dspace-page/my-dspace-page.component';
|
import { SEARCH_CONFIG_SERVICE } from '../../my-dspace-page/my-dspace-page.component';
|
||||||
import { ViewMode } from '../../core/shared/view-mode.model';
|
import { ViewMode } from '../../core/shared/view-mode.model';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { SearchConfigurationService } from "../../core/shared/search/search-configuration.service";
|
import { SearchConfigurationService } from '../../core/shared/search/search-configuration.service';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@@ -14,8 +14,8 @@ import {
|
|||||||
import { AdminNotifyDetailModalComponent } from './admin-notify-detail-modal/admin-notify-detail-modal.component';
|
import { AdminNotifyDetailModalComponent } from './admin-notify-detail-modal/admin-notify-detail-modal.component';
|
||||||
import {
|
import {
|
||||||
AdminNotifySearchResultComponent
|
AdminNotifySearchResultComponent
|
||||||
} from "./admin-notify-search-result/admin-notify-search-result.component";
|
} from './admin-notify-search-result/admin-notify-search-result.component';
|
||||||
import { AdminNotifyMessagesService } from "./services/admin-notify-messages.service";
|
import { AdminNotifyMessagesService } from './services/admin-notify-messages.service';
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
<div *ngFor="let key of notifyMessageKeys">
|
<div *ngFor="let key of notifyMessageKeys">
|
||||||
<div class="row mb-4">
|
<div class="row mb-4">
|
||||||
<div class="font-weight-bold col-sm">{{ key + '.notify-detail-modal' | translate}}</div>
|
<div class="font-weight-bold col-sm">{{ key + '.notify-detail-modal' | translate}}</div>
|
||||||
<div class="text-nowrap col-sm text-right">{{ notifyMessage[key] }}</div>
|
<div class="text-nowrap col-sm text-right">{{ notifyMessage[key] | translate }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -1,7 +1,8 @@
|
|||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
import { AdminNotifyDetailModalComponent } from './admin-notify-detail-modal.component';
|
import { AdminNotifyDetailModalComponent } from './admin-notify-detail-modal.component';
|
||||||
import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap";
|
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
|
||||||
describe('AdminNotifyDetailModalComponent', () => {
|
describe('AdminNotifyDetailModalComponent', () => {
|
||||||
let component: AdminNotifyDetailModalComponent;
|
let component: AdminNotifyDetailModalComponent;
|
||||||
@@ -9,6 +10,7 @@ describe('AdminNotifyDetailModalComponent', () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await TestBed.configureTestingModule({
|
await TestBed.configureTestingModule({
|
||||||
|
imports: [TranslateModule.forRoot()],
|
||||||
declarations: [ AdminNotifyDetailModalComponent ],
|
declarations: [ AdminNotifyDetailModalComponent ],
|
||||||
providers: [NgbActiveModal]
|
providers: [NgbActiveModal]
|
||||||
})
|
})
|
||||||
|
@@ -2,18 +2,17 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|||||||
|
|
||||||
import { AdminNotifyIncomingComponent } from './admin-notify-incoming.component';
|
import { AdminNotifyIncomingComponent } from './admin-notify-incoming.component';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { ActivatedRoute } from "@angular/router";
|
import { ActivatedRoute } from '@angular/router';
|
||||||
import { MockActivatedRoute } from "../../../../shared/mocks/active-router.mock";
|
import { MockActivatedRoute } from '../../../../shared/mocks/active-router.mock';
|
||||||
import { provideMockStore } from "@ngrx/store/testing";
|
import { provideMockStore } from '@ngrx/store/testing';
|
||||||
import { HALEndpointService } from "../../../../core/shared/hal-endpoint.service";
|
import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service';
|
||||||
import { SEARCH_CONFIG_SERVICE } from "../../../../my-dspace-page/my-dspace-page.component";
|
import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-page.component';
|
||||||
import { FILTER_CONFIG, SearchFilterService } from "../../../../core/shared/search/search-filter.service";
|
import { RouteService } from '../../../../core/services/route.service';
|
||||||
import { RouteService } from "../../../../core/services/route.service";
|
import { routeServiceStub } from '../../../../shared/testing/route-service.stub';
|
||||||
import { routeServiceStub } from "../../../../shared/testing/route-service.stub";
|
import { RequestService } from '../../../../core/data/request.service';
|
||||||
import { RequestService } from "../../../../core/data/request.service";
|
import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service';
|
||||||
import { RemoteDataBuildService } from "../../../../core/cache/builders/remote-data-build.service";
|
import { getMockRemoteDataBuildService } from '../../../../shared/mocks/remote-data-build.service.mock';
|
||||||
import { getMockRemoteDataBuildService } from "../../../../shared/mocks/remote-data-build.service.mock";
|
import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service';
|
||||||
import { SearchConfigurationService } from "../../../../core/shared/search/search-configuration.service";
|
|
||||||
|
|
||||||
describe('AdminNotifyIncomingComponent', () => {
|
describe('AdminNotifyIncomingComponent', () => {
|
||||||
let component: AdminNotifyIncomingComponent;
|
let component: AdminNotifyIncomingComponent;
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-page.component';
|
import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-page.component';
|
||||||
import { Context } from '../../../../core/shared/context.model';
|
import { Context } from '../../../../core/shared/context.model';
|
||||||
import { SearchConfigurationService } from "../../../../core/shared/search/search-configuration.service";
|
import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@@ -2,18 +2,17 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|||||||
|
|
||||||
import { AdminNotifyOutgoingComponent } from './admin-notify-outgoing.component';
|
import { AdminNotifyOutgoingComponent } from './admin-notify-outgoing.component';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { ActivatedRoute } from "@angular/router";
|
import { ActivatedRoute } from '@angular/router';
|
||||||
import { MockActivatedRoute } from "../../../../shared/mocks/active-router.mock";
|
import { MockActivatedRoute } from '../../../../shared/mocks/active-router.mock';
|
||||||
import { provideMockStore } from "@ngrx/store/testing";
|
import { provideMockStore } from '@ngrx/store/testing';
|
||||||
import { HALEndpointService } from "../../../../core/shared/hal-endpoint.service";
|
import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service';
|
||||||
import { SEARCH_CONFIG_SERVICE } from "../../../../my-dspace-page/my-dspace-page.component";
|
import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-page.component';
|
||||||
import { FILTER_CONFIG } from "../../../../core/shared/search/search-filter.service";
|
import { RouteService } from '../../../../core/services/route.service';
|
||||||
import { RouteService } from "../../../../core/services/route.service";
|
import { routeServiceStub } from '../../../../shared/testing/route-service.stub';
|
||||||
import { routeServiceStub } from "../../../../shared/testing/route-service.stub";
|
import { RequestService } from '../../../../core/data/request.service';
|
||||||
import { RequestService } from "../../../../core/data/request.service";
|
import { getMockRemoteDataBuildService } from '../../../../shared/mocks/remote-data-build.service.mock';
|
||||||
import { getMockRemoteDataBuildService } from "../../../../shared/mocks/remote-data-build.service.mock";
|
import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service';
|
||||||
import { RemoteDataBuildService } from "../../../../core/cache/builders/remote-data-build.service";
|
import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service';
|
||||||
import { SearchConfigurationService } from "../../../../core/shared/search/search-configuration.service";
|
|
||||||
|
|
||||||
describe('AdminNotifyOutgoingComponent', () => {
|
describe('AdminNotifyOutgoingComponent', () => {
|
||||||
let component: AdminNotifyOutgoingComponent;
|
let component: AdminNotifyOutgoingComponent;
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-page.component';
|
import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-page.component';
|
||||||
import { Context } from '../../../../core/shared/context.model';
|
import { Context } from '../../../../core/shared/context.model';
|
||||||
import { SearchConfigurationService } from "../../../../core/shared/search/search-configuration.service";
|
import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@@ -13,21 +13,21 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let message of (messagesSubject$ | async)">
|
<tr *ngFor="let message of (messagesSubject$ | async)">
|
||||||
<td>
|
<td>
|
||||||
<div>{{message.queueTimeout}}</div>
|
<div>{{ message.queueTimeout }}</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div *ngIf="isInbound">{{message.context}}</div>
|
<div *ngIf="isInbound">{{ message.context }}</div>
|
||||||
<div *ngIf="!isInbound">{{message.object}}</div>
|
<div *ngIf="!isInbound">{{ message.object }}</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div *ngIf="isInbound">{{message.origin}}</div>
|
<div *ngIf="isInbound">{{ message.origin }}</div>
|
||||||
<div *ngIf="!isInbound">{{message.target}}</div>
|
<div *ngIf="!isInbound">{{ message.target }}</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div>{{message.coarNotifyType}}</div>
|
<div>{{ message.coarNotifyType }}</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div>{{message.queueStatusLabel}}</div>
|
<div>{{ message.queueStatusLabel | translate}}</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="d-flex flex-column">
|
<div class="d-flex flex-column">
|
||||||
|
@@ -1,13 +1,68 @@
|
|||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
import { AdminNotifySearchResultComponent } from './admin-notify-search-result.component';
|
import { AdminNotifySearchResultComponent } from './admin-notify-search-result.component';
|
||||||
|
import { AdminNotifyMessagesService } from '../services/admin-notify-messages.service';
|
||||||
|
import { ObjectCacheService } from '../../../core/cache/object-cache.service';
|
||||||
|
import { RequestService } from '../../../core/data/request.service';
|
||||||
|
import { HALEndpointService } from '../../../core/shared/hal-endpoint.service';
|
||||||
|
import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service';
|
||||||
|
import { cold } from 'jasmine-marbles';
|
||||||
|
import { ConfigurationProperty } from '../../../core/shared/configuration-property.model';
|
||||||
|
import { RouteService } from '../../../core/services/route.service';
|
||||||
|
import { routeServiceStub } from '../../../shared/testing/route-service.stub';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { RouterStub } from '../../../shared/testing/router.stub';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { EMPTY } from 'rxjs';
|
||||||
|
|
||||||
describe('AdminNotifySearchResultComponent', () => {
|
describe('AdminNotifySearchResultComponent', () => {
|
||||||
let component: AdminNotifySearchResultComponent;
|
let component: AdminNotifySearchResultComponent;
|
||||||
let fixture: ComponentFixture<AdminNotifySearchResultComponent>;
|
let fixture: ComponentFixture<AdminNotifySearchResultComponent>;
|
||||||
|
let objectCache: ObjectCacheService;
|
||||||
|
let requestService: RequestService;
|
||||||
|
let halService: HALEndpointService;
|
||||||
|
let rdbService: RemoteDataBuildService;
|
||||||
|
let adminNotifyMessageService: AdminNotifyMessagesService;
|
||||||
|
const requestUUID = '34cfed7c-f597-49ef-9cbe-ea351f0023c2';
|
||||||
|
const testObject = {
|
||||||
|
uuid: 'test-property',
|
||||||
|
name: 'test-property',
|
||||||
|
values: ['value-1', 'value-2']
|
||||||
|
} as ConfigurationProperty;
|
||||||
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
|
halService = jasmine.createSpyObj('halService', {
|
||||||
|
getEndpoint: cold('a', { a: '' })
|
||||||
|
});
|
||||||
|
adminNotifyMessageService = jasmine.createSpyObj('adminNotifyMessageService', {
|
||||||
|
getDetailedMessages: EMPTY
|
||||||
|
});
|
||||||
|
requestService = jasmine.createSpyObj('requestService', {
|
||||||
|
generateRequestId: requestUUID,
|
||||||
|
send: true
|
||||||
|
});
|
||||||
|
rdbService = jasmine.createSpyObj('rdbService', {
|
||||||
|
buildSingle: cold('a', {
|
||||||
|
a: {
|
||||||
|
payload: testObject
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
objectCache = {} as ObjectCacheService;
|
||||||
|
|
||||||
|
|
||||||
await TestBed.configureTestingModule({
|
await TestBed.configureTestingModule({
|
||||||
declarations: [ AdminNotifySearchResultComponent ]
|
imports: [TranslateModule.forRoot()],
|
||||||
|
declarations: [ AdminNotifySearchResultComponent ],
|
||||||
|
providers: [
|
||||||
|
{provide: AdminNotifyMessagesService, useValue: adminNotifyMessageService},
|
||||||
|
{ provide: RouteService, useValue: routeServiceStub },
|
||||||
|
{ provide: ActivatedRoute, useValue: new RouterStub() },
|
||||||
|
{ provide: HALEndpointService, useValue: halService },
|
||||||
|
{ provide: ObjectCacheService, useValue: objectCache },
|
||||||
|
{ provide: RequestService, useValue: requestService },
|
||||||
|
{ provide: RemoteDataBuildService, useValue: rdbService },
|
||||||
|
]
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { ChangeDetectorRef, Component, Inject, OnDestroy, OnInit } from '@angular/core';
|
import { Component, Inject, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { AdminNotifySearchResult } from '../models/admin-notify-message-search-result.model';
|
import { AdminNotifySearchResult } from '../models/admin-notify-message-search-result.model';
|
||||||
import { ViewMode } from '../../../core/shared/view-mode.model';
|
import { ViewMode } from '../../../core/shared/view-mode.model';
|
||||||
import { Context } from '../../../core/shared/context.model';
|
import { Context } from '../../../core/shared/context.model';
|
||||||
@@ -12,14 +12,10 @@ import {
|
|||||||
import { PaginatedList } from '../../../core/data/paginated-list.model';
|
import { PaginatedList } from '../../../core/data/paginated-list.model';
|
||||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
||||||
import { AdminNotifyDetailModalComponent } from '../admin-notify-detail-modal/admin-notify-detail-modal.component';
|
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, Subscription } from 'rxjs';
|
||||||
import { BehaviorSubject, from, Observable, of, scan, Subscription, switchMap } from "rxjs";
|
import { AdminNotifyMessagesService } from '../services/admin-notify-messages.service';
|
||||||
import { combineLatest, filter, map, mergeMap, tap } from "rxjs/operators";
|
import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service';
|
||||||
import { getAllSucceededRemoteDataPayload } from "../../../core/shared/operators";
|
import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-page.component';
|
||||||
import { ItemDataService } from "../../../core/data/item-data.service";
|
|
||||||
import { AdminNotifyMessagesService } from "../services/admin-notify-messages.service";
|
|
||||||
import { SearchConfigurationService } from "../../../core/shared/search/search-configuration.service";
|
|
||||||
import { SEARCH_CONFIG_SERVICE } from "../../../my-dspace-page/my-dspace-page.component";
|
|
||||||
|
|
||||||
@tabulatableObjectsComponent(PaginatedList<AdminNotifySearchResult>, ViewMode.Table, Context.CoarNotify)
|
@tabulatableObjectsComponent(PaginatedList<AdminNotifySearchResult>, ViewMode.Table, Context.CoarNotify)
|
||||||
@Component({
|
@Component({
|
||||||
@@ -55,7 +51,7 @@ export class AdminNotifySearchResultComponent extends TabulatableResultListEleme
|
|||||||
* Map messages on init for readable representation
|
* Map messages on init for readable representation
|
||||||
*/
|
*/
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.mapDetailsToMessages()
|
this.mapDetailsToMessages();
|
||||||
this.subs.push(this.searchConfigService.getCurrentConfiguration('')
|
this.subs.push(this.searchConfigService.getCurrentConfiguration('')
|
||||||
.subscribe(configuration => {
|
.subscribe(configuration => {
|
||||||
this.isInbound = configuration === 'NOTIFY.incoming';
|
this.isInbound = configuration === 'NOTIFY.incoming';
|
||||||
@@ -102,10 +98,10 @@ export class AdminNotifySearchResultComponent extends TabulatableResultListEleme
|
|||||||
this.subs.push(
|
this.subs.push(
|
||||||
this.adminNotifyMessagesService.reprocessMessage(message, this.messagesSubject$)
|
this.adminNotifyMessagesService.reprocessMessage(message, this.messagesSubject$)
|
||||||
.subscribe(response => {
|
.subscribe(response => {
|
||||||
this.messagesSubject$.next(response)
|
this.messagesSubject$.next(response);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -116,7 +112,7 @@ export class AdminNotifySearchResultComponent extends TabulatableResultListEleme
|
|||||||
private mapDetailsToMessages() {
|
private mapDetailsToMessages() {
|
||||||
this.subs.push(this.adminNotifyMessagesService.getDetailedMessages(this.objects?.page.map(pageResult => pageResult.indexableObject))
|
this.subs.push(this.adminNotifyMessagesService.getDetailedMessages(this.objects?.page.map(pageResult => pageResult.indexableObject))
|
||||||
.subscribe(response => {
|
.subscribe(response => {
|
||||||
this.messagesSubject$.next(response)
|
this.messagesSubject$.next(response);
|
||||||
}))
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,21 +1,21 @@
|
|||||||
import { autoserialize, autoserializeAs, deserialize, inheritSerialization } from 'cerialize';
|
import { autoserialize, deserialize, inheritSerialization } from 'cerialize';
|
||||||
import { typedObject } from '../../../core/cache/builders/build-decorators';
|
import { typedObject } from '../../../core/cache/builders/build-decorators';
|
||||||
import { ADMIN_NOTIFY_MESSAGE } from './admin-notify-message.resource-type';
|
import { ADMIN_NOTIFY_MESSAGE } from './admin-notify-message.resource-type';
|
||||||
import { excludeFromEquals } from '../../../core/utilities/equals.decorators';
|
import { excludeFromEquals } from '../../../core/utilities/equals.decorators';
|
||||||
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
||||||
import { GenericConstructor } from '../../../core/shared/generic-constructor';
|
import { GenericConstructor } from '../../../core/shared/generic-constructor';
|
||||||
import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model';
|
import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model';
|
||||||
import { Observable } from "rxjs";
|
import { Observable } from 'rxjs';
|
||||||
|
|
||||||
export enum QueueStatusMap {
|
export enum QueueStatusMap {
|
||||||
QUEUE_STATUS_PROCESSED = 'Processed',
|
QUEUE_STATUS_PROCESSED = 'notify-queue-status.processed',
|
||||||
QUEUE_STATUS_FAILED = 'Failed',
|
QUEUE_STATUS_FAILED = 'notify-queue-status.processed',
|
||||||
QUEUE_STATUS_UNMAPPED_ACTION = 'Unmapped action',
|
QUEUE_STATUS_UNMAPPED_ACTION = 'notify-queue-status.unmapped_action',
|
||||||
QUEUE_STATUS_QUEUED_FOR_RETRY = 'Queued for retry',
|
QUEUE_STATUS_QUEUED_FOR_RETRY = 'notify-queue-status.queue_retry',
|
||||||
QUEUE_STATUS_PROCESSING = 'Processing',
|
QUEUE_STATUS_PROCESSING = 'notify-queue-status.processing',
|
||||||
QUEUE_STATUS_QUEUED = 'Queued',
|
QUEUE_STATUS_QUEUED = 'notify-queue-status.queued',
|
||||||
QUEUE_STATUS_UNTRUSTED = 'Untrusted',
|
QUEUE_STATUS_UNTRUSTED = 'notify-queue-status.untrusted',
|
||||||
};
|
}
|
||||||
/**
|
/**
|
||||||
* A message that includes admin notify info
|
* A message that includes admin notify info
|
||||||
*/
|
*/
|
||||||
|
@@ -1,33 +1,18 @@
|
|||||||
import {Injectable} from '@angular/core';
|
import {Injectable} from '@angular/core';
|
||||||
import {dataService} from '../../../core/data/base/data-service.decorator';
|
import {dataService} from '../../../core/data/base/data-service.decorator';
|
||||||
import {IdentifiableDataService} from '../../../core/data/base/identifiable-data.service';
|
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 {RequestService} from '../../../core/data/request.service';
|
||||||
import {RemoteDataBuildService} from '../../../core/cache/builders/remote-data-build.service';
|
import {RemoteDataBuildService} from '../../../core/cache/builders/remote-data-build.service';
|
||||||
import {ObjectCacheService} from '../../../core/cache/object-cache.service';
|
import {ObjectCacheService} from '../../../core/cache/object-cache.service';
|
||||||
import {HALEndpointService} from '../../../core/shared/hal-endpoint.service';
|
import {HALEndpointService} from '../../../core/shared/hal-endpoint.service';
|
||||||
import {NotificationsService} from '../../../shared/notifications/notifications.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 { BehaviorSubject, from, Observable, of, scan } from 'rxjs';
|
import { BehaviorSubject, from, Observable, of, scan } from 'rxjs';
|
||||||
import {RemoteData} from '../../../core/data/remote-data';
|
import { ADMIN_NOTIFY_MESSAGE } from '../models/admin-notify-message.resource-type';
|
||||||
import {PaginatedList} from '../../../core/data/paginated-list.model';
|
import { AdminNotifyMessage, QueueStatusMap } from '../models/admin-notify-message.model';
|
||||||
import {NoContent} from '../../../core/shared/NoContent.model';
|
import { map, mergeMap } from 'rxjs/operators';
|
||||||
import {PatchData, PatchDataImpl} from '../../../core/data/base/patch-data';
|
import { getAllSucceededRemoteDataPayload } from '../../../core/shared/operators';
|
||||||
import {ChangeAnalyzer} from '../../../core/data/change-analyzer';
|
import { LdnServicesService } from '../../admin-ldn-services/ldn-services-data/ldn-services-data.service';
|
||||||
import {Operation} from 'fast-json-patch';
|
import { ItemDataService } from '../../../core/data/item-data.service';
|
||||||
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, QueueStatusMap } from "../models/admin-notify-message.model";
|
|
||||||
import { SearchResult } from "../../../shared/search/models/search-result.model";
|
|
||||||
import { map, mergeMap } from "rxjs/operators";
|
|
||||||
import { getAllSucceededRemoteDataPayload } from "../../../core/shared/operators";
|
|
||||||
import { AdminNotifySearchResult } from "../models/admin-notify-message-search-result.model";
|
|
||||||
import { LdnServicesService } from "../../admin-ldn-services/ldn-services-data/ldn-services-data.service";
|
|
||||||
import { ItemDataService } from "../../../core/data/item-data.service";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Injectable service responsible for fetching/sending data from/to the REST API on the messages endpoint.
|
* Injectable service responsible for fetching/sending data from/to the REST API on the messages endpoint.
|
||||||
@@ -55,7 +40,7 @@ export class AdminNotifyMessagesService extends IdentifiableDataService<AdminNot
|
|||||||
* Map labels to readable info for user
|
* Map labels to readable info for user
|
||||||
* @param message the message to which map the labels
|
* @param message the message to which map the labels
|
||||||
*/
|
*/
|
||||||
public formatMessageLabels(message: AdminNotifyMessage) : AdminNotifyMessage {
|
public formatMessageLabels(message: AdminNotifyMessage): AdminNotifyMessage {
|
||||||
message.coarNotifyType = message.coarNotifyType?.split(':')[1];
|
message.coarNotifyType = message.coarNotifyType?.split(':')[1];
|
||||||
message.queueStatusLabel = QueueStatusMap[message.queueStatusLabel];
|
message.queueStatusLabel = QueueStatusMap[message.queueStatusLabel];
|
||||||
return message;
|
return message;
|
||||||
@@ -65,7 +50,7 @@ export class AdminNotifyMessagesService extends IdentifiableDataService<AdminNot
|
|||||||
* Add detailed information to each message
|
* Add detailed information to each message
|
||||||
* @param messages the messages to which add detailded info
|
* @param messages the messages to which add detailded info
|
||||||
*/
|
*/
|
||||||
public getDetailedMessages(messages: AdminNotifyMessage[]) : Observable<AdminNotifyMessage[]> {
|
public getDetailedMessages(messages: AdminNotifyMessage[]): Observable<AdminNotifyMessage[]> {
|
||||||
return from(messages.map(message => this.formatMessageLabels(message))).pipe(
|
return from(messages.map(message => this.formatMessageLabels(message))).pipe(
|
||||||
mergeMap(message =>
|
mergeMap(message =>
|
||||||
message.target ? this.ldnServicesService.findById(message.target.toString()).pipe(
|
message.target ? this.ldnServicesService.findById(message.target.toString()).pipe(
|
||||||
@@ -92,7 +77,7 @@ export class AdminNotifyMessagesService extends IdentifiableDataService<AdminNot
|
|||||||
) : of(message),
|
) : of(message),
|
||||||
),
|
),
|
||||||
scan((acc: any, value: any) => [...acc, value], []),
|
scan((acc: any, value: any) => [...acc, value], []),
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -100,7 +85,7 @@ export class AdminNotifyMessagesService extends IdentifiableDataService<AdminNot
|
|||||||
* @param message the message to reprocess
|
* @param message the message to reprocess
|
||||||
* @param messageSubject the current visualised messages source
|
* @param messageSubject the current visualised messages source
|
||||||
*/
|
*/
|
||||||
public reprocessMessage(message: AdminNotifyMessage, messageSubject: BehaviorSubject<AdminNotifyMessage[]>) : Observable<AdminNotifyMessage[]> {
|
public reprocessMessage(message: AdminNotifyMessage, messageSubject: BehaviorSubject<AdminNotifyMessage[]>): Observable<AdminNotifyMessage[]> {
|
||||||
return this.findById(message.id).pipe(
|
return this.findById(message.id).pipe(
|
||||||
getAllSucceededRemoteDataPayload(),
|
getAllSucceededRemoteDataPayload(),
|
||||||
map(reprocessedMessage => this.formatMessageLabels(reprocessedMessage)),
|
map(reprocessedMessage => this.formatMessageLabels(reprocessedMessage)),
|
||||||
@@ -113,9 +98,9 @@ export class AdminNotifyMessagesService extends IdentifiableDataService<AdminNot
|
|||||||
newMessage.origin = messageToUpdate.origin;
|
newMessage.origin = messageToUpdate.origin;
|
||||||
newMessage.context = messageToUpdate.context;
|
newMessage.context = messageToUpdate.context;
|
||||||
messages[indexOfMessageToUpdate] = newMessage;
|
messages[indexOfMessageToUpdate] = newMessage;
|
||||||
return messages
|
return messages;
|
||||||
})
|
})
|
||||||
)),
|
)),
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -64,7 +64,6 @@ export class SearchNavbarComponent {
|
|||||||
const queryParams = Object.assign({}, data);
|
const queryParams = Object.assign({}, data);
|
||||||
const linkToNavigateTo = [this.searchService.getSearchLink().replace('/', '')];
|
const linkToNavigateTo = [this.searchService.getSearchLink().replace('/', '')];
|
||||||
this.searchForm.reset();
|
this.searchForm.reset();
|
||||||
|
|
||||||
this.router.navigate(linkToNavigateTo, {
|
this.router.navigate(linkToNavigateTo, {
|
||||||
queryParams: queryParams,
|
queryParams: queryParams,
|
||||||
queryParamsHandling: 'merge'
|
queryParamsHandling: 'merge'
|
||||||
|
@@ -18,7 +18,7 @@ const testType = 'TestType';
|
|||||||
const testContext = Context.Search;
|
const testContext = Context.Search;
|
||||||
const testViewMode = ViewMode.StandalonePage;
|
const testViewMode = ViewMode.StandalonePage;
|
||||||
|
|
||||||
class TestType extends ListableObject {
|
export class TestType extends ListableObject {
|
||||||
getRenderTypes(): (string | GenericConstructor<ListableObject>)[] {
|
getRenderTypes(): (string | GenericConstructor<ListableObject>)[] {
|
||||||
return [testType];
|
return [testType];
|
||||||
}
|
}
|
||||||
|
@@ -1,31 +1,24 @@
|
|||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
import { TabulatableObjectsLoaderComponent } from './tabulatable-objects-loader.component';
|
import { TabulatableObjectsLoaderComponent } from './tabulatable-objects-loader.component';
|
||||||
import { ThemeService } from "../../../theme-support/theme.service";
|
import { ThemeService } from '../../../theme-support/theme.service';
|
||||||
import { provideMockStore } from "@ngrx/store/testing";
|
import { provideMockStore } from '@ngrx/store/testing';
|
||||||
import { ListableObject } from "../listable-object.model";
|
import { ListableObject } from '../listable-object.model';
|
||||||
import { PaginatedList } from "../../../../core/data/paginated-list.model";
|
import { PaginatedList } from '../../../../core/data/paginated-list.model';
|
||||||
import { Context } from "../../../../core/shared/context.model";
|
import { Context } from '../../../../core/shared/context.model';
|
||||||
import { GenericConstructor } from "../../../../core/shared/generic-constructor";
|
import { TabulatableObjectsDirective } from './tabulatable-objects.directive';
|
||||||
import { TabulatableObjectsDirective } from "./tabulatable-objects.directive";
|
import { ChangeDetectionStrategy } from '@angular/core';
|
||||||
import { ListableObjectComponentLoaderComponent } from "../listable-object/listable-object-component-loader.component";
|
|
||||||
import { ChangeDetectionStrategy } from "@angular/core";
|
|
||||||
import {
|
|
||||||
ItemListElementComponent
|
|
||||||
} from "../../../object-list/item-list-element/item-types/item/item-list-element.component";
|
|
||||||
import {
|
import {
|
||||||
TabulatableResultListElementsComponent
|
TabulatableResultListElementsComponent
|
||||||
} from "../../../object-list/search-result-list-element/tabulatable-search-result/tabulatable-result-list-elements.component";
|
} from '../../../object-list/search-result-list-element/tabulatable-search-result/tabulatable-result-list-elements.component';
|
||||||
|
import { TestType } from '../listable-object/listable-object-component-loader.component.spec';
|
||||||
|
|
||||||
const testType = 'TestType';
|
const testType = 'TestType';
|
||||||
class TestType extends ListableObject {
|
|
||||||
getRenderTypes(): (string | GenericConstructor<ListableObject>)[] {
|
|
||||||
return [testType];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class TestTypes extends PaginatedList<ListableObject> {
|
class TestTypes extends PaginatedList<ListableObject> {
|
||||||
page: TestType[] = [new TestType()]
|
page: TestType[] = [new TestType()];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { combineLatest as observableCombineLatest, Observable, Subscription } from 'rxjs';
|
import { combineLatest as observableCombineLatest, Observable, Subscription } from 'rxjs';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';
|
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { FacetValue } from '../../../../models/facet-value.model';
|
import { FacetValue } from '../../../../models/facet-value.model';
|
||||||
import { SearchFilterConfig } from '../../../../models/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../../models/search-filter-config.model';
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { Observable, Subscription } from 'rxjs';
|
import { Observable, Subscription } from 'rxjs';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';
|
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { FacetValue } from '../../../../models/facet-value.model';
|
import { FacetValue } from '../../../../models/facet-value.model';
|
||||||
import { SearchFilterConfig } from '../../../../models/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../../models/search-filter-config.model';
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { combineLatest as observableCombineLatest, Observable, Subscription } from 'rxjs';
|
import { combineLatest as observableCombineLatest, Observable, Subscription } from 'rxjs';
|
||||||
import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';
|
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { SearchFilterConfig } from '../../../../models/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../../models/search-filter-config.model';
|
||||||
import { SearchService } from '../../../../../../core/shared/search/search.service';
|
import { SearchService } from '../../../../../../core/shared/search/search.service';
|
||||||
|
@@ -3573,6 +3573,20 @@
|
|||||||
|
|
||||||
"notify-message-result.reprocess": "Reprocess",
|
"notify-message-result.reprocess": "Reprocess",
|
||||||
|
|
||||||
|
"notify-queue-status.processed": "Processed",
|
||||||
|
|
||||||
|
"notify-queue-status.failed": "Failed",
|
||||||
|
|
||||||
|
"notify-queue-status.queue_retry": "Queued for retry",
|
||||||
|
|
||||||
|
"notify-queue-status.unmapped_action": "Unmapped action",
|
||||||
|
|
||||||
|
"notify-queue-status.processing": "Processing",
|
||||||
|
|
||||||
|
"notify-queue-status.queued": "Queued",
|
||||||
|
|
||||||
|
"notify-queue-status.untrusted": "Untrusted",
|
||||||
|
|
||||||
"orgunit.listelement.badge": "Repository Item",
|
"orgunit.listelement.badge": "Repository Item",
|
||||||
|
|
||||||
"orgunit.listelement.no-title": "Untitled",
|
"orgunit.listelement.no-title": "Untitled",
|
||||||
|
Reference in New Issue
Block a user