[CST-5249] Renamed nbevent and nbtopics

This commit is contained in:
Luca Giamminonni
2022-07-06 17:14:12 +02:00
parent a355a15459
commit a7d2278d99
26 changed files with 285 additions and 262 deletions

View File

@@ -23,11 +23,11 @@ import { SourceDataResolver } from './admin-quality-assurance-source-page-compon
pathMatch: 'full', pathMatch: 'full',
resolve: { resolve: {
breadcrumb: I18nBreadcrumbResolver, breadcrumb: I18nBreadcrumbResolver,
openaireBrokerTopicsParams: AdminQualityAssuranceTopicsPageResolver openaireQualityAssuranceTopicsParams: AdminQualityAssuranceTopicsPageResolver
}, },
data: { data: {
title: 'admin.notifications.broker.page.title', title: 'admin.quality-assurance.page.title',
breadcrumbKey: 'admin.notifications.broker', breadcrumbKey: 'admin.quality-assurance',
showBreadcrumbsFluid: false showBreadcrumbsFluid: false
} }
}, },
@@ -38,7 +38,7 @@ import { SourceDataResolver } from './admin-quality-assurance-source-page-compon
pathMatch: 'full', pathMatch: 'full',
resolve: { resolve: {
breadcrumb: I18nBreadcrumbResolver, breadcrumb: I18nBreadcrumbResolver,
openaireBrokerSourceParams: AdminQualityAssuranceSourcePageResolver, openaireQualityAssuranceSourceParams: AdminQualityAssuranceSourcePageResolver,
sourceData: SourceDataResolver sourceData: SourceDataResolver
}, },
data: { data: {
@@ -54,7 +54,7 @@ import { SourceDataResolver } from './admin-quality-assurance-source-page-compon
pathMatch: 'full', pathMatch: 'full',
resolve: { resolve: {
breadcrumb: I18nBreadcrumbResolver, breadcrumb: I18nBreadcrumbResolver,
openaireBrokerEventsParams: AdminQualityAssuranceEventsPageResolver openaireQualityAssuranceEventsParams: AdminQualityAssuranceEventsPageResolver
}, },
data: { data: {
title: 'admin.notifications.event.page.title', title: 'admin.notifications.event.page.title',

View File

@@ -1,7 +1,7 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
@Component({ @Component({
selector: 'ds-notification-broker-page', selector: 'ds-notification-qa-page',
templateUrl: './admin-quality-assurance-topics-page.component.html' templateUrl: './admin-quality-assurance-topics-page.component.html'
}) })
export class AdminQualityAssuranceTopicsPageComponent { export class AdminQualityAssuranceTopicsPageComponent {

View File

@@ -38,15 +38,15 @@ describe('QualityAssuranceEventRestService', () => {
let http: HttpClient; let http: HttpClient;
let comparator: any; let comparator: any;
const endpointURL = 'https://rest.api/rest/api/integration/nbtopics'; const endpointURL = 'https://rest.api/rest/api/integration/qatopics';
const requestUUID = '8b3c913a-5a4b-438b-9181-be1a5b4a1c8a'; const requestUUID = '8b3c913a-5a4b-438b-9181-be1a5b4a1c8a';
const topic = 'ENRICH!MORE!PID'; const topic = 'ENRICH!MORE!PID';
const pageInfo = new PageInfo(); const pageInfo = new PageInfo();
const array = [ qualityAssuranceEventObjectMissingPid, qualityAssuranceEventObjectMissingPid2 ]; const array = [ qualityAssuranceEventObjectMissingPid, qualityAssuranceEventObjectMissingPid2 ];
const paginatedList = buildPaginatedList(pageInfo, array); const paginatedList = buildPaginatedList(pageInfo, array);
const brokerEventObjectRD = createSuccessfulRemoteDataObject(qualityAssuranceEventObjectMissingPid); const qaEventObjectRD = createSuccessfulRemoteDataObject(qualityAssuranceEventObjectMissingPid);
const brokerEventObjectMissingProjectRD = createSuccessfulRemoteDataObject(qualityAssuranceEventObjectMissingProjectFound); const qaEventObjectMissingProjectRD = createSuccessfulRemoteDataObject(qualityAssuranceEventObjectMissingProjectFound);
const paginatedListRD = createSuccessfulRemoteDataObject(paginatedList); const paginatedListRD = createSuccessfulRemoteDataObject(paginatedList);
const status = 'ACCEPTED'; const status = 'ACCEPTED';
@@ -82,7 +82,7 @@ describe('QualityAssuranceEventRestService', () => {
rdbService = jasmine.createSpyObj('rdbService', { rdbService = jasmine.createSpyObj('rdbService', {
buildSingle: cold('(a)', { buildSingle: cold('(a)', {
a: brokerEventObjectRD a: qaEventObjectRD
}), }),
buildList: cold('(a)', { buildList: cold('(a)', {
a: paginatedListRD a: paginatedListRD
@@ -122,7 +122,7 @@ describe('QualityAssuranceEventRestService', () => {
beforeEach(() => { beforeEach(() => {
serviceASAny.requestService.getByHref.and.returnValue(observableOf(responseCacheEntry)); serviceASAny.requestService.getByHref.and.returnValue(observableOf(responseCacheEntry));
serviceASAny.requestService.getByUUID.and.returnValue(observableOf(responseCacheEntry)); serviceASAny.requestService.getByUUID.and.returnValue(observableOf(responseCacheEntry));
serviceASAny.rdbService.buildFromRequestUUID.and.returnValue(observableOf(brokerEventObjectRD)); serviceASAny.rdbService.buildFromRequestUUID.and.returnValue(observableOf(qaEventObjectRD));
}); });
it('should proxy the call to dataservice.searchBy', () => { it('should proxy the call to dataservice.searchBy', () => {
@@ -151,7 +151,7 @@ describe('QualityAssuranceEventRestService', () => {
beforeEach(() => { beforeEach(() => {
serviceASAny.requestService.getByHref.and.returnValue(observableOf(responseCacheEntry)); serviceASAny.requestService.getByHref.and.returnValue(observableOf(responseCacheEntry));
serviceASAny.requestService.getByUUID.and.returnValue(observableOf(responseCacheEntry)); serviceASAny.requestService.getByUUID.and.returnValue(observableOf(responseCacheEntry));
serviceASAny.rdbService.buildFromRequestUUID.and.returnValue(observableOf(brokerEventObjectRD)); serviceASAny.rdbService.buildFromRequestUUID.and.returnValue(observableOf(qaEventObjectRD));
}); });
it('should proxy the call to dataservice.findById', () => { it('should proxy the call to dataservice.findById', () => {
@@ -165,7 +165,7 @@ describe('QualityAssuranceEventRestService', () => {
it('should return a RemoteData<QualityAssuranceEventObject> for the object with the given URL', () => { it('should return a RemoteData<QualityAssuranceEventObject> for the object with the given URL', () => {
const result = service.getEvent(qualityAssuranceEventObjectMissingPid.id); const result = service.getEvent(qualityAssuranceEventObjectMissingPid.id);
const expected = cold('(a)', { const expected = cold('(a)', {
a: brokerEventObjectRD a: qaEventObjectRD
}); });
expect(result).toBeObservable(expected); expect(result).toBeObservable(expected);
}); });
@@ -175,7 +175,7 @@ describe('QualityAssuranceEventRestService', () => {
beforeEach(() => { beforeEach(() => {
serviceASAny.requestService.getByHref.and.returnValue(observableOf(responseCacheEntry)); serviceASAny.requestService.getByHref.and.returnValue(observableOf(responseCacheEntry));
serviceASAny.requestService.getByUUID.and.returnValue(observableOf(responseCacheEntry)); serviceASAny.requestService.getByUUID.and.returnValue(observableOf(responseCacheEntry));
serviceASAny.rdbService.buildFromRequestUUID.and.returnValue(observableOf(brokerEventObjectRD)); serviceASAny.rdbService.buildFromRequestUUID.and.returnValue(observableOf(qaEventObjectRD));
}); });
it('should proxy the call to dataservice.patch', () => { it('should proxy the call to dataservice.patch', () => {
@@ -199,7 +199,7 @@ describe('QualityAssuranceEventRestService', () => {
beforeEach(() => { beforeEach(() => {
serviceASAny.requestService.getByHref.and.returnValue(observableOf(responseCacheEntryB)); serviceASAny.requestService.getByHref.and.returnValue(observableOf(responseCacheEntryB));
serviceASAny.requestService.getByUUID.and.returnValue(observableOf(responseCacheEntryB)); serviceASAny.requestService.getByUUID.and.returnValue(observableOf(responseCacheEntryB));
serviceASAny.rdbService.buildFromRequestUUID.and.returnValue(observableOf(brokerEventObjectMissingProjectRD)); serviceASAny.rdbService.buildFromRequestUUID.and.returnValue(observableOf(qaEventObjectMissingProjectRD));
}); });
it('should proxy the call to dataservice.postOnRelated', () => { it('should proxy the call to dataservice.postOnRelated', () => {

View File

@@ -33,7 +33,7 @@ class DataServiceImpl extends DataService<QualityAssuranceEventObject> {
/** /**
* The REST endpoint. * The REST endpoint.
*/ */
protected linkPath = 'nbevents'; protected linkPath = 'qaevents';
/** /**
* Initialize service variables * Initialize service variables

View File

@@ -6,4 +6,4 @@ import { ResourceType } from '../../../shared/resource-type';
* Needs to be in a separate file to prevent circular * Needs to be in a separate file to prevent circular
* dependencies in webpack. * dependencies in webpack.
*/ */
export const QUALITY_ASSURANCE_EVENT_OBJECT = new ResourceType('nbevent'); export const QUALITY_ASSURANCE_EVENT_OBJECT = new ResourceType('qaevent');

View File

@@ -11,16 +11,16 @@ import { RemoteData } from '../../../data/remote-data';
import {CacheableObject} from '../../../cache/cacheable-object.model'; import {CacheableObject} from '../../../cache/cacheable-object.model';
/** /**
* The interface representing the Notifications Broker event message * The interface representing the Quality Assurance event message
*/ */
export interface QualityAssuranceEventMessageObject { export interface QualityAssuranceEventMessageObject {
} }
/** /**
* The interface representing the Notifications Broker event message * The interface representing the Quality Assurance event message
*/ */
export interface OpenaireBrokerEventMessageObject { export interface OpenaireQualityAssuranceEventMessageObject {
/** /**
* The type of 'value' * The type of 'value'
*/ */
@@ -74,7 +74,7 @@ export interface OpenaireBrokerEventMessageObject {
} }
/** /**
* The interface representing the Notifications Broker event model * The interface representing the Quality Assurance event model
*/ */
@typedObject @typedObject
export class QualityAssuranceEventObject implements CacheableObject { export class QualityAssuranceEventObject implements CacheableObject {
@@ -84,19 +84,19 @@ export class QualityAssuranceEventObject implements CacheableObject {
static type = QUALITY_ASSURANCE_EVENT_OBJECT; static type = QUALITY_ASSURANCE_EVENT_OBJECT;
/** /**
* The Notifications Broker event uuid inside DSpace * The Quality Assurance event uuid inside DSpace
*/ */
@autoserialize @autoserialize
id: string; id: string;
/** /**
* The universally unique identifier of this Notifications Broker event * The universally unique identifier of this Quality Assurance event
*/ */
@autoserializeAs(String, 'id') @autoserializeAs(String, 'id')
uuid: string; uuid: string;
/** /**
* The Notifications Broker event original id (ex.: the source archive OAI-PMH identifier) * The Quality Assurance event original id (ex.: the source archive OAI-PMH identifier)
*/ */
@autoserialize @autoserialize
originalId: string; originalId: string;
@@ -114,13 +114,13 @@ export class QualityAssuranceEventObject implements CacheableObject {
trust: number; trust: number;
/** /**
* The timestamp Notifications Broker event was saved in DSpace * The timestamp Quality Assurance event was saved in DSpace
*/ */
@autoserialize @autoserialize
eventDate: string; eventDate: string;
/** /**
* The Notifications Broker event status (ACCEPTED, REJECTED, DISCARDED, PENDING) * The Quality Assurance event status (ACCEPTED, REJECTED, DISCARDED, PENDING)
*/ */
@autoserialize @autoserialize
status: string; status: string;
@@ -129,7 +129,7 @@ export class QualityAssuranceEventObject implements CacheableObject {
* The suggestion data. Data may vary depending on the source * The suggestion data. Data may vary depending on the source
*/ */
@autoserialize @autoserialize
message: OpenaireBrokerEventMessageObject; message: OpenaireQualityAssuranceEventMessageObject;
/** /**
* The type of this ConfigObject * The type of this ConfigObject

View File

@@ -6,4 +6,4 @@ import { ResourceType } from '../../../shared/resource-type';
* Needs to be in a separate file to prevent circular * Needs to be in a separate file to prevent circular
* dependencies in webpack. * dependencies in webpack.
*/ */
export const QUALITY_ASSURANCE_SOURCE_OBJECT = new ResourceType('nbsource'); export const QUALITY_ASSURANCE_SOURCE_OBJECT = new ResourceType('qasource');

View File

@@ -6,4 +6,4 @@ import { ResourceType } from '../../../shared/resource-type';
* Needs to be in a separate file to prevent circular * Needs to be in a separate file to prevent circular
* dependencies in webpack. * dependencies in webpack.
*/ */
export const QUALITY_ASSURANCE_TOPIC_OBJECT = new ResourceType('nbtopic'); export const QUALITY_ASSURANCE_TOPIC_OBJECT = new ResourceType('qatopic');

View File

@@ -32,13 +32,13 @@ describe('QualityAssuranceSourceRestService', () => {
let http: HttpClient; let http: HttpClient;
let comparator: any; let comparator: any;
const endpointURL = 'https://rest.api/rest/api/integration/nbsources'; const endpointURL = 'https://rest.api/rest/api/integration/qasources';
const requestUUID = '8b3c913a-5a4b-438b-9181-be1a5b4a1c8a'; const requestUUID = '8b3c913a-5a4b-438b-9181-be1a5b4a1c8a';
const pageInfo = new PageInfo(); const pageInfo = new PageInfo();
const array = [ qualityAssuranceSourceObjectMorePid, qualityAssuranceSourceObjectMoreAbstract ]; const array = [ qualityAssuranceSourceObjectMorePid, qualityAssuranceSourceObjectMoreAbstract ];
const paginatedList = buildPaginatedList(pageInfo, array); const paginatedList = buildPaginatedList(pageInfo, array);
const brokerSourceObjectRD = createSuccessfulRemoteDataObject(qualityAssuranceSourceObjectMorePid); const qaSourceObjectRD = createSuccessfulRemoteDataObject(qualityAssuranceSourceObjectMorePid);
const paginatedListRD = createSuccessfulRemoteDataObject(paginatedList); const paginatedListRD = createSuccessfulRemoteDataObject(paginatedList);
beforeEach(() => { beforeEach(() => {
@@ -56,7 +56,7 @@ describe('QualityAssuranceSourceRestService', () => {
rdbService = jasmine.createSpyObj('rdbService', { rdbService = jasmine.createSpyObj('rdbService', {
buildSingle: cold('(a)', { buildSingle: cold('(a)', {
a: brokerSourceObjectRD a: qaSourceObjectRD
}), }),
buildList: cold('(a)', { buildList: cold('(a)', {
a: paginatedListRD a: paginatedListRD
@@ -118,7 +118,7 @@ describe('QualityAssuranceSourceRestService', () => {
it('should return a RemoteData<QualityAssuranceSourceObject> for the object with the given URL', () => { it('should return a RemoteData<QualityAssuranceSourceObject> for the object with the given URL', () => {
const result = service.getSource(qualityAssuranceSourceObjectMorePid.id); const result = service.getSource(qualityAssuranceSourceObjectMorePid.id);
const expected = cold('(a)', { const expected = cold('(a)', {
a: brokerSourceObjectRD a: qaSourceObjectRD
}); });
expect(result).toBeObservable(expected); expect(result).toBeObservable(expected);
}); });

View File

@@ -31,7 +31,7 @@ class DataServiceImpl extends DataService<QualityAssuranceSourceObject> {
/** /**
* The REST endpoint. * The REST endpoint.
*/ */
protected linkPath = 'nbsources'; protected linkPath = 'qasources';
/** /**
* Initialize service variables * Initialize service variables
@@ -100,7 +100,7 @@ export class QualityAssuranceSourceRestService {
* The list of Quality Assurance source. * The list of Quality Assurance source.
*/ */
public getSources(options: FindListOptions = {}, ...linksToFollow: FollowLinkConfig<QualityAssuranceSourceObject>[]): Observable<RemoteData<PaginatedList<QualityAssuranceSourceObject>>> { public getSources(options: FindListOptions = {}, ...linksToFollow: FollowLinkConfig<QualityAssuranceSourceObject>[]): Observable<RemoteData<PaginatedList<QualityAssuranceSourceObject>>> {
return this.dataService.getBrowseEndpoint(options, 'nbsources').pipe( return this.dataService.getBrowseEndpoint(options, 'qasources').pipe(
take(1), take(1),
mergeMap((href: string) => this.dataService.findAllByHref(href, options, true, true, ...linksToFollow)), mergeMap((href: string) => this.dataService.findAllByHref(href, options, true, true, ...linksToFollow)),
); );
@@ -110,7 +110,7 @@ export class QualityAssuranceSourceRestService {
* Clear FindAll source requests from cache * Clear FindAll source requests from cache
*/ */
public clearFindAllSourceRequests() { public clearFindAllSourceRequests() {
this.requestService.setStaleByHrefSubstring('nbsources'); this.requestService.setStaleByHrefSubstring('qasources');
} }
/** /**
@@ -125,7 +125,7 @@ export class QualityAssuranceSourceRestService {
*/ */
public getSource(id: string, ...linksToFollow: FollowLinkConfig<QualityAssuranceSourceObject>[]): Observable<RemoteData<QualityAssuranceSourceObject>> { public getSource(id: string, ...linksToFollow: FollowLinkConfig<QualityAssuranceSourceObject>[]): Observable<RemoteData<QualityAssuranceSourceObject>> {
const options = {}; const options = {};
return this.dataService.getBrowseEndpoint(options, 'nbsources').pipe( return this.dataService.getBrowseEndpoint(options, 'qasources').pipe(
take(1), take(1),
mergeMap((href: string) => this.dataService.findByHref(href + '/' + id, true, true, ...linksToFollow)) mergeMap((href: string) => this.dataService.findByHref(href + '/' + id, true, true, ...linksToFollow))
); );

View File

@@ -32,13 +32,13 @@ describe('QualityAssuranceTopicRestService', () => {
let http: HttpClient; let http: HttpClient;
let comparator: any; let comparator: any;
const endpointURL = 'https://rest.api/rest/api/integration/nbtopics'; const endpointURL = 'https://rest.api/rest/api/integration/qatopics';
const requestUUID = '8b3c913a-5a4b-438b-9181-be1a5b4a1c8a'; const requestUUID = '8b3c913a-5a4b-438b-9181-be1a5b4a1c8a';
const pageInfo = new PageInfo(); const pageInfo = new PageInfo();
const array = [ qualityAssuranceTopicObjectMorePid, qualityAssuranceTopicObjectMoreAbstract ]; const array = [ qualityAssuranceTopicObjectMorePid, qualityAssuranceTopicObjectMoreAbstract ];
const paginatedList = buildPaginatedList(pageInfo, array); const paginatedList = buildPaginatedList(pageInfo, array);
const brokerTopicObjectRD = createSuccessfulRemoteDataObject(qualityAssuranceTopicObjectMorePid); const qaTopicObjectRD = createSuccessfulRemoteDataObject(qualityAssuranceTopicObjectMorePid);
const paginatedListRD = createSuccessfulRemoteDataObject(paginatedList); const paginatedListRD = createSuccessfulRemoteDataObject(paginatedList);
beforeEach(() => { beforeEach(() => {
@@ -56,7 +56,7 @@ describe('QualityAssuranceTopicRestService', () => {
rdbService = jasmine.createSpyObj('rdbService', { rdbService = jasmine.createSpyObj('rdbService', {
buildSingle: cold('(a)', { buildSingle: cold('(a)', {
a: brokerTopicObjectRD a: qaTopicObjectRD
}), }),
buildList: cold('(a)', { buildList: cold('(a)', {
a: paginatedListRD a: paginatedListRD
@@ -118,7 +118,7 @@ describe('QualityAssuranceTopicRestService', () => {
it('should return a RemoteData<QualityAssuranceTopicObject> for the object with the given URL', () => { it('should return a RemoteData<QualityAssuranceTopicObject> for the object with the given URL', () => {
const result = service.getTopic(qualityAssuranceTopicObjectMorePid.id); const result = service.getTopic(qualityAssuranceTopicObjectMorePid.id);
const expected = cold('(a)', { const expected = cold('(a)', {
a: brokerTopicObjectRD a: qaTopicObjectRD
}); });
expect(result).toBeObservable(expected); expect(result).toBeObservable(expected);
}); });

View File

@@ -31,7 +31,7 @@ class DataServiceImpl extends DataService<QualityAssuranceTopicObject> {
/** /**
* The REST endpoint. * The REST endpoint.
*/ */
protected linkPath = 'nbtopics'; protected linkPath = 'qatopics';
/** /**
* Initialize service variables * Initialize service variables
@@ -100,7 +100,7 @@ export class QualityAssuranceTopicRestService {
* The list of Quality Assurance topics. * The list of Quality Assurance topics.
*/ */
public getTopics(options: FindListOptions = {}, ...linksToFollow: FollowLinkConfig<QualityAssuranceTopicObject>[]): Observable<RemoteData<PaginatedList<QualityAssuranceTopicObject>>> { public getTopics(options: FindListOptions = {}, ...linksToFollow: FollowLinkConfig<QualityAssuranceTopicObject>[]): Observable<RemoteData<PaginatedList<QualityAssuranceTopicObject>>> {
return this.dataService.getBrowseEndpoint(options, 'nbtopics').pipe( return this.dataService.getBrowseEndpoint(options, 'qatopics').pipe(
take(1), take(1),
mergeMap((href: string) => this.dataService.findAllByHref(href, options, true, true, ...linksToFollow)), mergeMap((href: string) => this.dataService.findAllByHref(href, options, true, true, ...linksToFollow)),
); );
@@ -110,7 +110,7 @@ export class QualityAssuranceTopicRestService {
* Clear FindAll topics requests from cache * Clear FindAll topics requests from cache
*/ */
public clearFindAllTopicsRequests() { public clearFindAllTopicsRequests() {
this.requestService.setStaleByHrefSubstring('nbtopics'); this.requestService.setStaleByHrefSubstring('qatopics');
} }
/** /**
@@ -125,7 +125,7 @@ export class QualityAssuranceTopicRestService {
*/ */
public getTopic(id: string, ...linksToFollow: FollowLinkConfig<QualityAssuranceTopicObject>[]): Observable<RemoteData<QualityAssuranceTopicObject>> { public getTopic(id: string, ...linksToFollow: FollowLinkConfig<QualityAssuranceTopicObject>[]): Observable<RemoteData<QualityAssuranceTopicObject>> {
const options = {}; const options = {};
return this.dataService.getBrowseEndpoint(options, 'nbtopics').pipe( return this.dataService.getBrowseEndpoint(options, 'qatopics').pipe(
take(1), take(1),
mergeMap((href: string) => this.dataService.findByHref(href + '/' + id, true, true, ...linksToFollow)) mergeMap((href: string) => this.dataService.findByHref(href + '/' + id, true, true, ...linksToFollow))
); );

View File

@@ -507,6 +507,29 @@ export class MenuResolver implements Resolve<boolean> {
createSiteAdministratorMenuSections() { createSiteAdministratorMenuSections() {
this.authorizationService.isAuthorized(FeatureID.AdministratorOf).subscribe((authorized) => { this.authorizationService.isAuthorized(FeatureID.AdministratorOf).subscribe((authorized) => {
const menuList = [ const menuList = [
/* Notifications */
{
id: 'notifications',
active: false,
visible: authorized,
model: {
type: MenuItemType.TEXT,
text: 'menu.section.notifications'
} as TextMenuItemModel,
icon: 'bell',
index: 4
},
{
id: 'notifications_quality-assurance',
parentID: 'notifications',
active: false,
visible: authorized,
model: {
type: MenuItemType.LINK,
text: 'menu.section.quality-assurance',
link: '/admin/notifications/quality-assurance'
} as LinkMenuItemModel,
},
/* Admin Search */ /* Admin Search */
{ {
id: 'admin_search', id: 'admin_search',

View File

@@ -26,7 +26,7 @@ describe('NotificationsStateService', () => {
if (mode === 'empty') { if (mode === 'empty') {
initialState = { initialState = {
notifications: { notifications: {
brokerTopic: { qaTopic: {
topics: [], topics: [],
processing: false, processing: false,
loaded: false, loaded: false,
@@ -40,7 +40,7 @@ describe('NotificationsStateService', () => {
} else { } else {
initialState = { initialState = {
notifications: { notifications: {
brokerTopic: { qaTopic: {
topics: [ topics: [
qualityAssuranceTopicObjectMorePid, qualityAssuranceTopicObjectMorePid,
qualityAssuranceTopicObjectMoreAbstract, qualityAssuranceTopicObjectMoreAbstract,
@@ -284,7 +284,7 @@ describe('NotificationsStateService', () => {
if (mode === 'empty') { if (mode === 'empty') {
initialState = { initialState = {
notifications: { notifications: {
brokerSource: { qaSource: {
source: [], source: [],
processing: false, processing: false,
loaded: false, loaded: false,
@@ -298,7 +298,7 @@ describe('NotificationsStateService', () => {
} else { } else {
initialState = { initialState = {
notifications: { notifications: {
brokerSource: { qaSource: {
source: [ source: [
qualityAssuranceSourceObjectMorePid, qualityAssuranceSourceObjectMorePid,
qualityAssuranceSourceObjectMoreAbstract, qualityAssuranceSourceObjectMoreAbstract,

View File

@@ -6,13 +6,13 @@ import { qualityAssuranceTopicsReducer, QualityAssuranceTopicState, } from './qa
* The OpenAIRE State * The OpenAIRE State
*/ */
export interface NotificationsState { export interface NotificationsState {
'brokerTopic': QualityAssuranceTopicState; 'qaTopic': QualityAssuranceTopicState;
'brokerSource': QualityAssuranceSourceState; 'qaSource': QualityAssuranceSourceState;
} }
export const notificationsReducers: ActionReducerMap<NotificationsState> = { export const notificationsReducers: ActionReducerMap<NotificationsState> = {
brokerTopic: qualityAssuranceTopicsReducer, qaTopic: qualityAssuranceTopicsReducer,
brokerSource: qualityAssuranceSourceReducer qaSource: qualityAssuranceSourceReducer
}; };
export const notificationsSelector = createFeatureSelector<NotificationsState>('notifications'); export const notificationsSelector = createFeatureSelector<NotificationsState>('notifications');

View File

@@ -2,11 +2,11 @@
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h2 class="border-bottom pb-2">{{'notifications.events.title'| translate}}</h2> <h2 class="border-bottom pb-2">{{'notifications.events.title'| translate}}</h2>
<p>{{'notifications.broker.events.description'| translate}}</p> <p>{{'quality-assurance.events.description'| translate}}</p>
<p> <p>
<a class="btn btn-outline-secondary" [routerLink]="['/admin/notifications/quality-assurance']"> <a class="btn btn-outline-secondary" [routerLink]="['/admin/notifications/quality-assurance']">
<i class="fas fa-angle-double-left"></i> <i class="fas fa-angle-double-left"></i>
{{'notifications.broker.events.back' | translate}} {{'quality-assurance.events.back' | translate}}
</a> </a>
</p> </p>
</div> </div>
@@ -14,10 +14,10 @@
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h3 class="border-bottom pb-2"> <h3 class="border-bottom pb-2">
{{'notifications.broker.events.topic' | translate}} {{this.showTopic}} {{'quality-assurance.events.topic' | translate}} {{this.showTopic}}
</h3> </h3>
<ds-loading class="container" *ngIf="(isEventPageLoading | async)" message="{{'notifications.broker.loading' | translate}}"></ds-loading> <ds-loading class="container" *ngIf="(isEventPageLoading | async)" message="{{'quality-assurance.loading' | translate}}"></ds-loading>
<ds-pagination *ngIf="!(isEventPageLoading | async)" <ds-pagination *ngIf="!(isEventPageLoading | async)"
[paginationOptions]="paginationConfig" [paginationOptions]="paginationConfig"
@@ -25,20 +25,20 @@
[sortOptions]="paginationSortConfig" [sortOptions]="paginationSortConfig"
(paginationChange)="getQualityAssuranceEvents()"> (paginationChange)="getQualityAssuranceEvents()">
<ds-loading class="container" *ngIf="(isEventLoading | async)" message="{{'notifications.broker.loading' | translate}}"></ds-loading> <ds-loading class="container" *ngIf="(isEventLoading | async)" message="{{'quality-assurance.loading' | translate}}"></ds-loading>
<ng-container *ngIf="!(isEventLoading | async)"> <ng-container *ngIf="!(isEventLoading | async)">
<div *ngIf="(eventsUpdated$|async)?.length == 0" class="alert alert-info w-100 mb-2 mt-2" role="alert"> <div *ngIf="(eventsUpdated$|async)?.length == 0" class="alert alert-info w-100 mb-2 mt-2" role="alert">
{{'notifications.broker.noEvents' | translate}} {{'quality-assurance.noEvents' | translate}}
</div> </div>
<div *ngIf="(eventsUpdated$|async)?.length != 0" class="table-responsive mt-2"> <div *ngIf="(eventsUpdated$|async)?.length != 0" class="table-responsive mt-2">
<table id="events" class="table table-striped table-hover table-bordered"> <table id="events" class="table table-striped table-hover table-bordered">
<thead> <thead>
<tr> <tr>
<th scope="col">{{'notifications.broker.event.table.trust' | translate}}</th> <th scope="col">{{'quality-assurance.event.table.trust' | translate}}</th>
<th scope="col">{{'notifications.broker.event.table.publication' | translate}}</th> <th scope="col">{{'quality-assurance.event.table.publication' | translate}}</th>
<th *ngIf="hasDetailColumn() && showTopic.indexOf('/PROJECT') == -1" scope="col">{{'notifications.broker.event.table.details' | translate}}</th> <th *ngIf="hasDetailColumn() && showTopic.indexOf('/PROJECT') == -1" scope="col">{{'quality-assurance.event.table.details' | translate}}</th>
<th *ngIf="hasDetailColumn() && showTopic.indexOf('/PROJECT') !== -1" scope="col">{{'notifications.broker.event.table.project-details' | translate}}</th> <th *ngIf="hasDetailColumn() && showTopic.indexOf('/PROJECT') !== -1" scope="col">{{'quality-assurance.event.table.project-details' | translate}}</th>
<th scope="col" class="button-rows">{{'notifications.broker.event.table.actions' | translate}}</th> <th scope="col" class="button-rows">{{'quality-assurance.event.table.actions' | translate}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -51,8 +51,8 @@
<span *ngIf="!eventElement?.target">{{eventElement.title}}</span> <span *ngIf="!eventElement?.target">{{eventElement.title}}</span>
</td> </td>
<td *ngIf="showTopic.indexOf('/PID') !== -1"> <td *ngIf="showTopic.indexOf('/PID') !== -1">
<p><span class="small">{{'notifications.broker.event.table.pidtype' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.type}}</span></p> <p><span class="small">{{'quality-assurance.event.table.pidtype' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.type}}</span></p>
<p><span class="small">{{'notifications.broker.event.table.pidvalue' | translate}}</span><br> <p><span class="small">{{'quality-assurance.event.table.pidvalue' | translate}}</span><br>
<a *ngIf="hasPIDHref(eventElement.event.message); else noPID" href="{{getPIDHref(eventElement.event.message)}}" target="_blank"> <a *ngIf="hasPIDHref(eventElement.event.message); else noPID" href="{{getPIDHref(eventElement.event.message)}}" target="_blank">
{{eventElement.event.message.value}} {{eventElement.event.message.value}}
</a> </a>
@@ -60,37 +60,37 @@
</p> </p>
</td> </td>
<td *ngIf="showTopic.indexOf('/SUBJECT') !== -1"> <td *ngIf="showTopic.indexOf('/SUBJECT') !== -1">
<p><span class="small">{{'notifications.broker.event.table.subjectValue' | translate}}</span><br><span class="badge badge-info">{{eventElement.event.message.value}}</span></p> <p><span class="small">{{'quality-assurance.event.table.subjectValue' | translate}}</span><br><span class="badge badge-info">{{eventElement.event.message.value}}</span></p>
</td> </td>
<td *ngIf="showTopic.indexOf('/ABSTRACT') !== -1"> <td *ngIf="showTopic.indexOf('/ABSTRACT') !== -1">
<p class="abstract-container" [class.show]="showMore"> <p class="abstract-container" [class.show]="showMore">
<span class="small">{{'notifications.broker.event.table.abstract' | translate}}</span><br> <span class="small">{{'quality-assurance.event.table.abstract' | translate}}</span><br>
<span class="text-ellipsis">{{eventElement.event.message.abstract}}</span> <span class="text-ellipsis">{{eventElement.event.message.abstract}}</span>
</p> </p>
<button class="btn btn-outline-primary btn-sm" (click)="showMore = !showMore"> <button class="btn btn-outline-primary btn-sm" (click)="showMore = !showMore">
<i *ngIf="!showMore" class="fas fa-angle-down"></i> <i *ngIf="!showMore" class="fas fa-angle-down"></i>
<i *ngIf="showMore" class="fas fa-angle-up"></i> <i *ngIf="showMore" class="fas fa-angle-up"></i>
{{ (showMore ? 'notifications.broker.event.table.less': 'notifications.broker.event.table.more') | translate }} {{ (showMore ? 'quality-assurance.event.table.less': 'quality-assurance.event.table.more') | translate }}
</button> </button>
</td> </td>
<td *ngIf="showTopic.indexOf('/PROJECT') !== -1"> <td *ngIf="showTopic.indexOf('/PROJECT') !== -1">
<p> <p>
{{'notifications.broker.event.table.suggestedProject' | translate}} {{'quality-assurance.event.table.suggestedProject' | translate}}
</p> </p>
<p> <p>
<span class="small">{{'notifications.broker.event.table.project' | translate}}</span><br> <span class="small">{{'quality-assurance.event.table.project' | translate}}</span><br>
<a href="https://explore.openaire.eu/search/project?projectId={{ eventElement.event.message.openaireId}}" target="_blank">{{eventElement.event.message.title}}</a> <a href="https://explore.openaire.eu/search/project?projectId={{ eventElement.event.message.openaireId}}" target="_blank">{{eventElement.event.message.title}}</a>
</p> </p>
<p> <p>
<span *ngIf="eventElement.event.message.acronym"><span class="small">{{'notifications.broker.event.table.acronym' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.acronym}}</span><br></span> <span *ngIf="eventElement.event.message.acronym"><span class="small">{{'quality-assurance.event.table.acronym' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.acronym}}</span><br></span>
<span *ngIf="eventElement.event.message.code"><span class="small">{{'notifications.broker.event.table.code' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.code}}</span><br></span> <span *ngIf="eventElement.event.message.code"><span class="small">{{'quality-assurance.event.table.code' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.code}}</span><br></span>
<span *ngIf="eventElement.event.message.funder"><span class="small">{{'notifications.broker.event.table.funder' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.funder}}</span><br></span> <span *ngIf="eventElement.event.message.funder"><span class="small">{{'quality-assurance.event.table.funder' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.funder}}</span><br></span>
<span *ngIf="eventElement.event.message.fundingProgram"><span class="small">{{'notifications.broker.event.table.fundingProgram' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.fundingProgram}}</span><br></span> <span *ngIf="eventElement.event.message.fundingProgram"><span class="small">{{'quality-assurance.event.table.fundingProgram' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.fundingProgram}}</span><br></span>
<span *ngIf="eventElement.event.message.jurisdiction"><span class="small">{{'notifications.broker.event.table.jurisdiction' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.jurisdiction}}</span></span> <span *ngIf="eventElement.event.message.jurisdiction"><span class="small">{{'quality-assurance.event.table.jurisdiction' | translate}}</span> <span class="badge badge-info">{{eventElement.event.message.jurisdiction}}</span></span>
</p> </p>
<hr> <hr>
<div> <div>
{{(eventElement.hasProject ? 'notifications.broker.event.project.found' : 'notifications.broker.event.project.notFound') | translate}} {{(eventElement.hasProject ? 'quality-assurance.event.project.found' : 'quality-assurance.event.project.notFound') | translate}}
<a target="_blank" *ngIf="eventElement.hasProject" title="{{eventElement.projectTitle}}" [routerLink]="['/items', eventElement.projectId]">{{eventElement.handle}}</a> <a target="_blank" *ngIf="eventElement.hasProject" title="{{eventElement.projectTitle}}" [routerLink]="['/items', eventElement.projectId]">{{eventElement.handle}}</a>
<div class="btn-group"> <div class="btn-group">
<button class="btn btn-outline-primary btn-sm" <button class="btn btn-outline-primary btn-sm"
@@ -114,19 +114,19 @@
[disabled]="eventElement.isRunning" [disabled]="eventElement.isRunning"
(click)="modalChoice('ACCEPTED', eventElement, acceptModal)"> (click)="modalChoice('ACCEPTED', eventElement, acceptModal)">
<i class="fas fa-check"></i> <i class="fas fa-check"></i>
<span class="d-none d-sm-inline">{{'notifications.broker.event.action.import' | translate}}</span> <span class="d-none d-sm-inline">{{'quality-assurance.event.action.import' | translate}}</span>
</button> </button>
<button *ngIf="showTopic.indexOf('/PROJECT') == -1" class="btn btn-outline-success btn-sm button-width" [disabled]="eventElement.isRunning" (click)="executeAction('ACCEPTED', eventElement)"> <button *ngIf="showTopic.indexOf('/PROJECT') == -1" class="btn btn-outline-success btn-sm button-width" [disabled]="eventElement.isRunning" (click)="executeAction('ACCEPTED', eventElement)">
<i class="fas fa-check"></i> <i class="fas fa-check"></i>
<span class="d-none d-sm-inline">{{'notifications.broker.event.action.accept' | translate}}</span> <span class="d-none d-sm-inline">{{'quality-assurance.event.action.accept' | translate}}</span>
</button> </button>
<button class="btn btn-outline-dark btn-sm button-width" [disabled]="eventElement.isRunning" (click)="openModal('DISCARDED', eventElement, ignoreModal)"> <button class="btn btn-outline-dark btn-sm button-width" [disabled]="eventElement.isRunning" (click)="openModal('DISCARDED', eventElement, ignoreModal)">
<i class="fas fa-trash-alt"></i> <i class="fas fa-trash-alt"></i>
<span class="d-none d-sm-inline">{{'notifications.broker.event.action.ignore' | translate}}</span> <span class="d-none d-sm-inline">{{'quality-assurance.event.action.ignore' | translate}}</span>
</button> </button>
<button class="btn btn-outline-danger btn-sm button-width" [disabled]="eventElement.isRunning" (click)="openModal('REJECTED', eventElement, rejectModal)"> <button class="btn btn-outline-danger btn-sm button-width" [disabled]="eventElement.isRunning" (click)="openModal('REJECTED', eventElement, rejectModal)">
<i class="fas fa-trash-alt"></i> <i class="fas fa-trash-alt"></i>
<span class="d-none d-sm-inline">{{'notifications.broker.event.action.reject' | translate}}</span> <span class="d-none d-sm-inline">{{'quality-assurance.event.action.reject' | translate}}</span>
</button> </button>
</div> </div>
</td> </td>
@@ -142,7 +142,7 @@
<div class="col-md-12"> <div class="col-md-12">
<a class="btn btn-outline-secondary" [routerLink]="['/admin/notifications/quality-assurance']"> <a class="btn btn-outline-secondary" [routerLink]="['/admin/notifications/quality-assurance']">
<i class="fas fa-angle-double-left"></i> <i class="fas fa-angle-double-left"></i>
{{'notifications.broker.events.back' | translate}} {{'quality-assurance.events.back' | translate}}
</a> </a>
</div> </div>
</div> </div>
@@ -150,58 +150,58 @@
<ng-template #acceptModal let-modal> <ng-template #acceptModal let-modal>
<div class="modal-header"> <div class="modal-header">
<h4 class="modal-title" id="acceptModal">{{'notifications.broker.event.sure' | translate}}</h4> <h4 class="modal-title" id="acceptModal">{{'quality-assurance.event.sure' | translate}}</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<p>{{'notifications.broker.event.accept.description' | translate}}</p> <p>{{'quality-assurance.event.accept.description' | translate}}</p>
<button class="btn btn-outline-success float-left" (click)="modal.close('do')"> <button class="btn btn-outline-success float-left" (click)="modal.close('do')">
<i class="fas fa-check"></i> <i class="fas fa-check"></i>
<span class="d-none d-sm-inline">{{'notifications.broker.event.action.import' | translate}}</span> <span class="d-none d-sm-inline">{{'quality-assurance.event.action.import' | translate}}</span>
</button> </button>
<button class="btn btn-outline-secondary float-right" (click)="modal.close('cancel')"> <button class="btn btn-outline-secondary float-right" (click)="modal.close('cancel')">
<i class="fas fa-close"></i> <i class="fas fa-close"></i>
<span class="d-none d-sm-inline">{{'notifications.broker.event.action.cancel' | translate}}</span> <span class="d-none d-sm-inline">{{'quality-assurance.event.action.cancel' | translate}}</span>
</button> </button>
</div> </div>
</ng-template> </ng-template>
<ng-template #ignoreModal let-modal> <ng-template #ignoreModal let-modal>
<div class="modal-header"> <div class="modal-header">
<h4 class="modal-title" id="ignoreModal">{{'notifications.broker.event.sure' | translate}}</h4> <h4 class="modal-title" id="ignoreModal">{{'quality-assurance.event.sure' | translate}}</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<p>{{'notifications.broker.event.ignore.description' | translate}}</p> <p>{{'quality-assurance.event.ignore.description' | translate}}</p>
<!-- textarea class="form-control mb-2" [(ngModel)]="selectedReason" placeholder="{{'notifications.broker.event.reason' |translate}}"></textarea --> <!-- textarea class="form-control mb-2" [(ngModel)]="selectedReason" placeholder="{{'quality-assurance.event.reason' |translate}}"></textarea -->
<button class="btn btn-outline-danger float-left" (click)="modal.close('do')"> <button class="btn btn-outline-danger float-left" (click)="modal.close('do')">
<i class="fas fa-trash-alt"></i> <i class="fas fa-trash-alt"></i>
<span class="d-none d-sm-inline">{{'notifications.broker.event.action.ignore' | translate}}</span> <span class="d-none d-sm-inline">{{'quality-assurance.event.action.ignore' | translate}}</span>
</button> </button>
<button class="btn btn-outline-secondary float-right" (click)="modal.close('cancel')"> <button class="btn btn-outline-secondary float-right" (click)="modal.close('cancel')">
<i class="fas fa-close"></i> <i class="fas fa-close"></i>
<span class="d-none d-sm-inline">{{'notifications.broker.event.action.cancel' | translate}}</span> <span class="d-none d-sm-inline">{{'quality-assurance.event.action.cancel' | translate}}</span>
</button> </button>
</div> </div>
</ng-template> </ng-template>
<ng-template #rejectModal let-modal> <ng-template #rejectModal let-modal>
<div class="modal-header"> <div class="modal-header">
<h4 class="modal-title" id="rejectModal">{{'notifications.broker.event.sure' | translate}}</h4> <h4 class="modal-title" id="rejectModal">{{'quality-assurance.event.sure' | translate}}</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<p>{{'notifications.broker.event.reject.description' | translate}}</p> <p>{{'quality-assurance.event.reject.description' | translate}}</p>
<!-- textarea class="form-control mb-2" [(ngModel)]="selectedReason" placeholder="{{'notifications.broker.event.reason' |translate}}"></textarea --> <!-- textarea class="form-control mb-2" [(ngModel)]="selectedReason" placeholder="{{'quality-assurance.event.reason' |translate}}"></textarea -->
<button class="btn btn-outline-danger float-left" (click)="modal.close('do')"> <button class="btn btn-outline-danger float-left" (click)="modal.close('do')">
<i class="fas fa-trash-alt"></i> <i class="fas fa-trash-alt"></i>
<span class="d-none d-sm-inline">{{'notifications.broker.event.action.reject' | translate}}</span> <span class="d-none d-sm-inline">{{'quality-assurance.event.action.reject' | translate}}</span>
</button> </button>
<button class="btn btn-outline-secondary float-right" (click)="modal.close('cancel')"> <button class="btn btn-outline-secondary float-right" (click)="modal.close('cancel')">
<i class="fas fa-close"></i> <i class="fas fa-close"></i>
<span class="d-none d-sm-inline">{{'notifications.broker.event.action.cancel' | translate}}</span> <span class="d-none d-sm-inline">{{'quality-assurance.event.action.cancel' | translate}}</span>
</button> </button>
</div> </div>
</ng-template> </ng-template>

View File

@@ -11,7 +11,7 @@ import { PaginatedList } from '../../../core/data/paginated-list.model';
import { RemoteData } from '../../../core/data/remote-data'; import { RemoteData } from '../../../core/data/remote-data';
import { import {
QualityAssuranceEventObject, QualityAssuranceEventObject,
OpenaireBrokerEventMessageObject OpenaireQualityAssuranceEventMessageObject
} from '../../../core/notifications/qa/models/quality-assurance-event.model'; } from '../../../core/notifications/qa/models/quality-assurance-event.model';
import { QualityAssuranceEventRestService } from '../../../core/notifications/qa/events/quality-assurance-event-rest.service'; import { QualityAssuranceEventRestService } from '../../../core/notifications/qa/events/quality-assurance-event-rest.service';
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
@@ -242,12 +242,12 @@ export class QualityAssuranceEventsComponent implements OnInit {
.subscribe((rd: RemoteData<QualityAssuranceEventObject>) => { .subscribe((rd: RemoteData<QualityAssuranceEventObject>) => {
if (rd.isSuccess && rd.statusCode === 200) { if (rd.isSuccess && rd.statusCode === 200) {
this.notificationsService.success( this.notificationsService.success(
this.translateService.instant('notifications.broker.event.action.saved') this.translateService.instant('quality-assurance.event.action.saved')
); );
this.getQualityAssuranceEvents(); this.getQualityAssuranceEvents();
} else { } else {
this.notificationsService.error( this.notificationsService.error(
this.translateService.instant('notifications.broker.event.action.error') this.translateService.instant('quality-assurance.event.action.error')
); );
} }
eventData.isRunning = false; eventData.isRunning = false;
@@ -274,7 +274,7 @@ export class QualityAssuranceEventsComponent implements OnInit {
.subscribe((rd: RemoteData<QualityAssuranceEventObject>) => { .subscribe((rd: RemoteData<QualityAssuranceEventObject>) => {
if (rd.isSuccess) { if (rd.isSuccess) {
this.notificationsService.success( this.notificationsService.success(
this.translateService.instant('notifications.broker.event.project.bounded') this.translateService.instant('quality-assurance.event.project.bounded')
); );
eventData.hasProject = true; eventData.hasProject = true;
eventData.projectTitle = projectTitle; eventData.projectTitle = projectTitle;
@@ -282,7 +282,7 @@ export class QualityAssuranceEventsComponent implements OnInit {
eventData.projectId = projectId; eventData.projectId = projectId;
} else { } else {
this.notificationsService.error( this.notificationsService.error(
this.translateService.instant('notifications.broker.event.project.error') this.translateService.instant('quality-assurance.event.project.error')
); );
} }
eventData.isRunning = false; eventData.isRunning = false;
@@ -303,7 +303,7 @@ export class QualityAssuranceEventsComponent implements OnInit {
.subscribe((rd: RemoteData<QualityAssuranceEventObject>) => { .subscribe((rd: RemoteData<QualityAssuranceEventObject>) => {
if (rd.isSuccess) { if (rd.isSuccess) {
this.notificationsService.success( this.notificationsService.success(
this.translateService.instant('notifications.broker.event.project.removed') this.translateService.instant('quality-assurance.event.project.removed')
); );
eventData.hasProject = false; eventData.hasProject = false;
eventData.projectTitle = null; eventData.projectTitle = null;
@@ -311,7 +311,7 @@ export class QualityAssuranceEventsComponent implements OnInit {
eventData.projectId = null; eventData.projectId = null;
} else { } else {
this.notificationsService.error( this.notificationsService.error(
this.translateService.instant('notifications.broker.event.project.error') this.translateService.instant('quality-assurance.event.project.error')
); );
} }
eventData.isRunning = false; eventData.isRunning = false;
@@ -323,7 +323,7 @@ export class QualityAssuranceEventsComponent implements OnInit {
* Check if the event has a valid href. * Check if the event has a valid href.
* @param event * @param event
*/ */
public hasPIDHref(event: OpenaireBrokerEventMessageObject): boolean { public hasPIDHref(event: OpenaireQualityAssuranceEventMessageObject): boolean {
return this.getPIDHref(event) !== null; return this.getPIDHref(event) !== null;
} }
@@ -331,7 +331,7 @@ export class QualityAssuranceEventsComponent implements OnInit {
* Get the event pid href. * Get the event pid href.
* @param event * @param event
*/ */
public getPIDHref(event: OpenaireBrokerEventMessageObject): string { public getPIDHref(event: OpenaireQualityAssuranceEventMessageObject): string {
return this.computePIDHref(event); return this.computePIDHref(event);
} }
@@ -419,7 +419,7 @@ export class QualityAssuranceEventsComponent implements OnInit {
); );
} }
protected computePIDHref(event: OpenaireBrokerEventMessageObject) { protected computePIDHref(event: OpenaireQualityAssuranceEventMessageObject) {
const type = event.type.toLowerCase(); const type = event.type.toLowerCase();
const pid = event.value; const pid = event.value;
let prefix = null; let prefix = null;

View File

@@ -15,7 +15,7 @@ import { DSpaceObject } from '../../../core/shared/dspace-object.model';
import { import {
QualityAssuranceEventObject, QualityAssuranceEventObject,
QualityAssuranceEventMessageObject, QualityAssuranceEventMessageObject,
OpenaireBrokerEventMessageObject, OpenaireQualityAssuranceEventMessageObject,
} from '../../../core/notifications/qa/models/quality-assurance-event.model'; } from '../../../core/notifications/qa/models/quality-assurance-event.model';
import { hasValue, isNotEmpty } from '../../../shared/empty.util'; import { hasValue, isNotEmpty } from '../../../shared/empty.util';
import { Item } from '../../../core/shared/item.model'; import { Item } from '../../../core/shared/item.model';
@@ -98,7 +98,7 @@ export class ProjectEntryImportModalComponent implements OnInit {
/** /**
* The prefix for every i18n key within this modal * The prefix for every i18n key within this modal
*/ */
labelPrefix = 'notifications.broker.event.modal.'; labelPrefix = 'quality-assurance.event.modal.';
/** /**
* The search configuration to retrieve project * The search configuration to retrieve project
*/ */
@@ -181,7 +181,7 @@ export class ProjectEntryImportModalComponent implements OnInit {
public ngOnInit(): void { public ngOnInit(): void {
this.pagination = Object.assign(new PaginationComponentOptions(), { id: 'notifications-project-bound', pageSize: this.pageSize }); this.pagination = Object.assign(new PaginationComponentOptions(), { id: 'notifications-project-bound', pageSize: this.pageSize });
this.projectTitle = (this.externalSourceEntry.projectTitle !== null) ? this.externalSourceEntry.projectTitle this.projectTitle = (this.externalSourceEntry.projectTitle !== null) ? this.externalSourceEntry.projectTitle
: (this.externalSourceEntry.event.message as OpenaireBrokerEventMessageObject).title; : (this.externalSourceEntry.event.message as OpenaireQualityAssuranceEventMessageObject).title;
this.searchOptions = Object.assign(new PaginatedSearchOptions( this.searchOptions = Object.assign(new PaginatedSearchOptions(
{ {
configuration: this.configuration, configuration: this.configuration,

View File

@@ -1,15 +1,15 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h2 class="border-bottom pb-2">{{'notifications.broker.title'| translate}}</h2> <h2 class="border-bottom pb-2">{{'quality-assurance.title'| translate}}</h2>
<p>{{'notifications.broker.source.description'| translate}}</p> <p>{{'quality-assurance.source.description'| translate}}</p>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h3 class="border-bottom pb-2">{{'notifications.broker.source'| translate}}</h3> <h3 class="border-bottom pb-2">{{'quality-assurance.source'| translate}}</h3>
<ds-loading class="container" *ngIf="(isSourceLoading() | async)" message="{{'notifications.broker.loading' | translate}}"></ds-loading> <ds-loading class="container" *ngIf="(isSourceLoading() | async)" message="{{'quality-assurance.loading' | translate}}"></ds-loading>
<ds-pagination *ngIf="!(isSourceLoading() | async)" <ds-pagination *ngIf="!(isSourceLoading() | async)"
[paginationOptions]="paginationConfig" [paginationOptions]="paginationConfig"
[collectionSize]="(totalElements$ | async)" [collectionSize]="(totalElements$ | async)"
@@ -17,18 +17,18 @@
[hideSortOptions]="true" [hideSortOptions]="true"
(paginationChange)="getQualityAssuranceSource()"> (paginationChange)="getQualityAssuranceSource()">
<ds-loading class="container" *ngIf="(isSourceProcessing() | async)" message="'notifications.broker.loading' | translate"></ds-loading> <ds-loading class="container" *ngIf="(isSourceProcessing() | async)" message="'quality-assurance.loading' | translate"></ds-loading>
<ng-container *ngIf="!(isSourceProcessing() | async)"> <ng-container *ngIf="!(isSourceProcessing() | async)">
<div *ngIf="(sources$|async)?.length == 0" class="alert alert-info w-100 mb-2 mt-2" role="alert"> <div *ngIf="(sources$|async)?.length == 0" class="alert alert-info w-100 mb-2 mt-2" role="alert">
{{'notifications.broker.noSource' | translate}} {{'quality-assurance.noSource' | translate}}
</div> </div>
<div *ngIf="(sources$|async)?.length != 0" class="table-responsive mt-2"> <div *ngIf="(sources$|async)?.length != 0" class="table-responsive mt-2">
<table id="epeople" class="table table-striped table-hover table-bordered"> <table id="epeople" class="table table-striped table-hover table-bordered">
<thead> <thead>
<tr> <tr>
<th scope="col">{{'notifications.broker.table.source' | translate}}</th> <th scope="col">{{'quality-assurance.table.source' | translate}}</th>
<th scope="col">{{'notifications.broker.table.last-event' | translate}}</th> <th scope="col">{{'quality-assurance.table.last-event' | translate}}</th>
<th scope="col">{{'notifications.broker.table.actions' | translate}}</th> <th scope="col">{{'quality-assurance.table.actions' | translate}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -39,7 +39,7 @@
<div class="btn-group edit-field"> <div class="btn-group edit-field">
<button <button
class="btn btn-outline-primary btn-sm" class="btn btn-outline-primary btn-sm"
title="{{'notifications.broker.button.detail' | translate }}" title="{{'quality-assurance.button.detail' | translate }}"
[routerLink]="[sourceElement.id]"> [routerLink]="[sourceElement.id]">
<span class="badge badge-info">{{sourceElement.totalEvents}}</span> <span class="badge badge-info">{{sourceElement.totalEvents}}</span>
<i class="fas fa-info fa-fw"></i> <i class="fas fa-info fa-fw"></i>

View File

@@ -53,7 +53,7 @@ export class QualityAssuranceSourceEffects {
@Effect({ dispatch: false }) retrieveAllSourceErrorAction$ = this.actions$.pipe( @Effect({ dispatch: false }) retrieveAllSourceErrorAction$ = this.actions$.pipe(
ofType(QualityAssuranceSourceActionTypes.RETRIEVE_ALL_SOURCE_ERROR), ofType(QualityAssuranceSourceActionTypes.RETRIEVE_ALL_SOURCE_ERROR),
tap(() => { tap(() => {
this.notificationsService.error(null, this.translate.get('notifications.broker.source.error.service.retrieve')); this.notificationsService.error(null, this.translate.get('quality-assurance.source.error.service.retrieve'));
}) })
); );

View File

@@ -1,15 +1,15 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h2 class="border-bottom pb-2">{{'notifications.broker.title'| translate}}</h2> <h2 class="border-bottom pb-2">{{'quality-assurance.title'| translate}}</h2>
<p>{{'notifications.broker.topics.description'| translate:{source: sourceId} }}</p> <p>{{'quality-assurance.topics.description'| translate:{source: sourceId} }}</p>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h3 class="border-bottom pb-2">{{'notifications.broker.topics'| translate}}</h3> <h3 class="border-bottom pb-2">{{'quality-assurance.topics'| translate}}</h3>
<ds-loading class="container" *ngIf="(isTopicsLoading() | async)" message="{{'notifications.broker.loading' | translate}}"></ds-loading> <ds-loading class="container" *ngIf="(isTopicsLoading() | async)" message="{{'quality-assurance.loading' | translate}}"></ds-loading>
<ds-pagination *ngIf="!(isTopicsLoading() | async)" <ds-pagination *ngIf="!(isTopicsLoading() | async)"
[paginationOptions]="paginationConfig" [paginationOptions]="paginationConfig"
[collectionSize]="(totalElements$ | async)" [collectionSize]="(totalElements$ | async)"
@@ -17,18 +17,18 @@
[hideSortOptions]="true" [hideSortOptions]="true"
(paginationChange)="getQualityAssuranceTopics()"> (paginationChange)="getQualityAssuranceTopics()">
<ds-loading class="container" *ngIf="(isTopicsProcessing() | async)" message="'notifications.broker.loading' | translate"></ds-loading> <ds-loading class="container" *ngIf="(isTopicsProcessing() | async)" message="'quality-assurance.loading' | translate"></ds-loading>
<ng-container *ngIf="!(isTopicsProcessing() | async)"> <ng-container *ngIf="!(isTopicsProcessing() | async)">
<div *ngIf="(topics$|async)?.length == 0" class="alert alert-info w-100 mb-2 mt-2" role="alert"> <div *ngIf="(topics$|async)?.length == 0" class="alert alert-info w-100 mb-2 mt-2" role="alert">
{{'notifications.broker.noTopics' | translate}} {{'quality-assurance.noTopics' | translate}}
</div> </div>
<div *ngIf="(topics$|async)?.length != 0" class="table-responsive mt-2"> <div *ngIf="(topics$|async)?.length != 0" class="table-responsive mt-2">
<table id="epeople" class="table table-striped table-hover table-bordered"> <table id="epeople" class="table table-striped table-hover table-bordered">
<thead> <thead>
<tr> <tr>
<th scope="col">{{'notifications.broker.table.topic' | translate}}</th> <th scope="col">{{'quality-assurance.table.topic' | translate}}</th>
<th scope="col">{{'notifications.broker.table.last-event' | translate}}</th> <th scope="col">{{'quality-assurance.table.last-event' | translate}}</th>
<th scope="col">{{'notifications.broker.table.actions' | translate}}</th> <th scope="col">{{'quality-assurance.table.actions' | translate}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -39,7 +39,7 @@
<div class="btn-group edit-field"> <div class="btn-group edit-field">
<button <button
class="btn btn-outline-primary btn-sm" class="btn btn-outline-primary btn-sm"
title="{{'notifications.broker.button.detail' | translate }}" title="{{'quality-assurance.button.detail' | translate }}"
[routerLink]="[topicElement.id]"> [routerLink]="[topicElement.id]">
<span class="badge badge-info">{{topicElement.totalEvents}}</span> <span class="badge badge-info">{{topicElement.totalEvents}}</span>
<i class="fas fa-info fa-fw"></i> <i class="fas fa-info fa-fw"></i>

View File

@@ -53,7 +53,7 @@ export class QualityAssuranceTopicsEffects {
@Effect({ dispatch: false }) retrieveAllTopicsErrorAction$ = this.actions$.pipe( @Effect({ dispatch: false }) retrieveAllTopicsErrorAction$ = this.actions$.pipe(
ofType(QualityAssuranceTopicActionTypes.RETRIEVE_ALL_TOPICS_ERROR), ofType(QualityAssuranceTopicActionTypes.RETRIEVE_ALL_TOPICS_ERROR),
tap(() => { tap(() => {
this.notificationsService.error(null, this.translate.get('notifications.broker.topic.error.service.retrieve')); this.notificationsService.error(null, this.translate.get('quality-assurance.topic.error.service.retrieve'));
}) })
); );

View File

@@ -23,7 +23,7 @@ const _getNotificationsState = createFeatureSelector<NotificationsState>('notifi
* @return {QualityAssuranceTopicState} * @return {QualityAssuranceTopicState}
*/ */
export function qualityAssuranceTopicsStateSelector(): MemoizedSelector<NotificationsState, QualityAssuranceTopicState> { export function qualityAssuranceTopicsStateSelector(): MemoizedSelector<NotificationsState, QualityAssuranceTopicState> {
return subStateSelector<NotificationsState,QualityAssuranceTopicState>(notificationsSelector, 'brokerTopic'); return subStateSelector<NotificationsState,QualityAssuranceTopicState>(notificationsSelector, 'qaTopic');
} }
/** /**
@@ -41,7 +41,7 @@ export function qualityAssuranceTopicsObjectSelector(): MemoizedSelector<Notific
* @return {boolean} * @return {boolean}
*/ */
export const isQualityAssuranceTopicsLoadedSelector = createSelector(_getNotificationsState, export const isQualityAssuranceTopicsLoadedSelector = createSelector(_getNotificationsState,
(state: NotificationsState) => state.brokerTopic.loaded (state: NotificationsState) => state.qaTopic.loaded
); );
/** /**
@@ -50,7 +50,7 @@ export const isQualityAssuranceTopicsLoadedSelector = createSelector(_getNotific
* @return {boolean} * @return {boolean}
*/ */
export const isQualityAssuranceTopicsProcessingSelector = createSelector(_getNotificationsState, export const isQualityAssuranceTopicsProcessingSelector = createSelector(_getNotificationsState,
(state: NotificationsState) => state.brokerTopic.processing (state: NotificationsState) => state.qaTopic.processing
); );
/** /**
@@ -59,7 +59,7 @@ export const isQualityAssuranceTopicsProcessingSelector = createSelector(_getNot
* @return {number} * @return {number}
*/ */
export const getQualityAssuranceTopicsTotalPagesSelector = createSelector(_getNotificationsState, export const getQualityAssuranceTopicsTotalPagesSelector = createSelector(_getNotificationsState,
(state: NotificationsState) => state.brokerTopic.totalPages (state: NotificationsState) => state.qaTopic.totalPages
); );
/** /**
@@ -68,7 +68,7 @@ export const getQualityAssuranceTopicsTotalPagesSelector = createSelector(_getNo
* @return {number} * @return {number}
*/ */
export const getQualityAssuranceTopicsCurrentPageSelector = createSelector(_getNotificationsState, export const getQualityAssuranceTopicsCurrentPageSelector = createSelector(_getNotificationsState,
(state: NotificationsState) => state.brokerTopic.currentPage (state: NotificationsState) => state.qaTopic.currentPage
); );
/** /**
@@ -77,7 +77,7 @@ export const getQualityAssuranceTopicsCurrentPageSelector = createSelector(_getN
* @return {number} * @return {number}
*/ */
export const getQualityAssuranceTopicsTotalsSelector = createSelector(_getNotificationsState, export const getQualityAssuranceTopicsTotalsSelector = createSelector(_getNotificationsState,
(state: NotificationsState) => state.brokerTopic.totalElements (state: NotificationsState) => state.qaTopic.totalElements
); );
// Quality Assurance source // Quality Assurance source
@@ -89,7 +89,7 @@ export const getQualityAssuranceTopicsTotalsSelector = createSelector(_getNotifi
* @return {QualityAssuranceSourceState} * @return {QualityAssuranceSourceState}
*/ */
export function qualityAssuranceSourceStateSelector(): MemoizedSelector<NotificationsState, QualityAssuranceSourceState> { export function qualityAssuranceSourceStateSelector(): MemoizedSelector<NotificationsState, QualityAssuranceSourceState> {
return subStateSelector<NotificationsState,QualityAssuranceSourceState>(notificationsSelector, 'brokerSource'); return subStateSelector<NotificationsState,QualityAssuranceSourceState>(notificationsSelector, 'qaSource');
} }
/** /**
@@ -107,7 +107,7 @@ export function qualityAssuranceSourceObjectSelector(): MemoizedSelector<Notific
* @return {boolean} * @return {boolean}
*/ */
export const isQualityAssuranceSourceLoadedSelector = createSelector(_getNotificationsState, export const isQualityAssuranceSourceLoadedSelector = createSelector(_getNotificationsState,
(state: NotificationsState) => state.brokerSource.loaded (state: NotificationsState) => state.qaSource.loaded
); );
/** /**
@@ -116,7 +116,7 @@ export const isQualityAssuranceSourceLoadedSelector = createSelector(_getNotific
* @return {boolean} * @return {boolean}
*/ */
export const isQualityAssuranceSourceProcessingSelector = createSelector(_getNotificationsState, export const isQualityAssuranceSourceProcessingSelector = createSelector(_getNotificationsState,
(state: NotificationsState) => state.brokerSource.processing (state: NotificationsState) => state.qaSource.processing
); );
/** /**
@@ -125,7 +125,7 @@ export const isQualityAssuranceSourceProcessingSelector = createSelector(_getNot
* @return {number} * @return {number}
*/ */
export const getQualityAssuranceSourceTotalPagesSelector = createSelector(_getNotificationsState, export const getQualityAssuranceSourceTotalPagesSelector = createSelector(_getNotificationsState,
(state: NotificationsState) => state.brokerSource.totalPages (state: NotificationsState) => state.qaSource.totalPages
); );
/** /**
@@ -134,7 +134,7 @@ export const getQualityAssuranceSourceTotalPagesSelector = createSelector(_getNo
* @return {number} * @return {number}
*/ */
export const getQualityAssuranceSourceCurrentPageSelector = createSelector(_getNotificationsState, export const getQualityAssuranceSourceCurrentPageSelector = createSelector(_getNotificationsState,
(state: NotificationsState) => state.brokerSource.currentPage (state: NotificationsState) => state.qaSource.currentPage
); );
/** /**
@@ -143,5 +143,5 @@ export const getQualityAssuranceSourceCurrentPageSelector = createSelector(_getN
* @return {number} * @return {number}
*/ */
export const getQualityAssuranceSourceTotalsSelector = createSelector(_getNotificationsState, export const getQualityAssuranceSourceTotalsSelector = createSelector(_getNotificationsState,
(state: NotificationsState) => state.brokerSource.totalElements (state: NotificationsState) => state.qaSource.totalElements
); );

View File

@@ -1334,37 +1334,37 @@ export const NotificationsMockDspaceObject: SearchResult<DSpaceObject> = Object.
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
export const qualityAssuranceSourceObjectMorePid: QualityAssuranceSourceObject = { export const qualityAssuranceSourceObjectMorePid: QualityAssuranceSourceObject = {
type: new ResourceType('nbsource'), type: new ResourceType('qasource'),
id: 'ENRICH!MORE!PID', id: 'ENRICH!MORE!PID',
lastEvent: '2020/10/09 10:11 UTC', lastEvent: '2020/10/09 10:11 UTC',
totalEvents: 33, totalEvents: 33,
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbsources/ENRICH!MORE!PID' href: 'https://rest.api/rest/api/integration/qasources/ENRICH!MORE!PID'
} }
} }
}; };
export const qualityAssuranceSourceObjectMoreAbstract: QualityAssuranceSourceObject = { export const qualityAssuranceSourceObjectMoreAbstract: QualityAssuranceSourceObject = {
type: new ResourceType('nbsource'), type: new ResourceType('qasource'),
id: 'ENRICH!MORE!ABSTRACT', id: 'ENRICH!MORE!ABSTRACT',
lastEvent: '2020/09/08 21:14 UTC', lastEvent: '2020/09/08 21:14 UTC',
totalEvents: 5, totalEvents: 5,
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbsources/ENRICH!MORE!ABSTRACT' href: 'https://rest.api/rest/api/integration/qasources/ENRICH!MORE!ABSTRACT'
} }
} }
}; };
export const qualityAssuranceSourceObjectMissingPid: QualityAssuranceSourceObject = { export const qualityAssuranceSourceObjectMissingPid: QualityAssuranceSourceObject = {
type: new ResourceType('nbsource'), type: new ResourceType('qasource'),
id: 'ENRICH!MISSING!PID', id: 'ENRICH!MISSING!PID',
lastEvent: '2020/10/01 07:36 UTC', lastEvent: '2020/10/01 07:36 UTC',
totalEvents: 4, totalEvents: 4,
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbsources/ENRICH!MISSING!PID' href: 'https://rest.api/rest/api/integration/qasources/ENRICH!MISSING!PID'
} }
} }
}; };
@@ -1373,79 +1373,79 @@ export const qualityAssuranceSourceObjectMissingPid: QualityAssuranceSourceObjec
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
export const qualityAssuranceTopicObjectMorePid: QualityAssuranceTopicObject = { export const qualityAssuranceTopicObjectMorePid: QualityAssuranceTopicObject = {
type: new ResourceType('nbtopic'), type: new ResourceType('qatopic'),
id: 'ENRICH!MORE!PID', id: 'ENRICH!MORE!PID',
name: 'ENRICH/MORE/PID', name: 'ENRICH/MORE/PID',
lastEvent: '2020/10/09 10:11 UTC', lastEvent: '2020/10/09 10:11 UTC',
totalEvents: 33, totalEvents: 33,
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbtopics/ENRICH!MORE!PID' href: 'https://rest.api/rest/api/integration/qatopics/ENRICH!MORE!PID'
} }
} }
}; };
export const qualityAssuranceTopicObjectMoreAbstract: QualityAssuranceTopicObject = { export const qualityAssuranceTopicObjectMoreAbstract: QualityAssuranceTopicObject = {
type: new ResourceType('nbtopic'), type: new ResourceType('qatopic'),
id: 'ENRICH!MORE!ABSTRACT', id: 'ENRICH!MORE!ABSTRACT',
name: 'ENRICH/MORE/ABSTRACT', name: 'ENRICH/MORE/ABSTRACT',
lastEvent: '2020/09/08 21:14 UTC', lastEvent: '2020/09/08 21:14 UTC',
totalEvents: 5, totalEvents: 5,
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbtopics/ENRICH!MORE!ABSTRACT' href: 'https://rest.api/rest/api/integration/qatopics/ENRICH!MORE!ABSTRACT'
} }
} }
}; };
export const qualityAssuranceTopicObjectMissingPid: QualityAssuranceTopicObject = { export const qualityAssuranceTopicObjectMissingPid: QualityAssuranceTopicObject = {
type: new ResourceType('nbtopic'), type: new ResourceType('qatopic'),
id: 'ENRICH!MISSING!PID', id: 'ENRICH!MISSING!PID',
name: 'ENRICH/MISSING/PID', name: 'ENRICH/MISSING/PID',
lastEvent: '2020/10/01 07:36 UTC', lastEvent: '2020/10/01 07:36 UTC',
totalEvents: 4, totalEvents: 4,
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbtopics/ENRICH!MISSING!PID' href: 'https://rest.api/rest/api/integration/qatopics/ENRICH!MISSING!PID'
} }
} }
}; };
export const qualityAssuranceTopicObjectMissingAbstract: QualityAssuranceTopicObject = { export const qualityAssuranceTopicObjectMissingAbstract: QualityAssuranceTopicObject = {
type: new ResourceType('nbtopic'), type: new ResourceType('qatopic'),
id: 'ENRICH!MISSING!ABSTRACT', id: 'ENRICH!MISSING!ABSTRACT',
name: 'ENRICH/MISSING/ABSTRACT', name: 'ENRICH/MISSING/ABSTRACT',
lastEvent: '2020/10/08 16:14 UTC', lastEvent: '2020/10/08 16:14 UTC',
totalEvents: 71, totalEvents: 71,
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbtopics/ENRICH!MISSING!ABSTRACT' href: 'https://rest.api/rest/api/integration/qatopics/ENRICH!MISSING!ABSTRACT'
} }
} }
}; };
export const qualityAssuranceTopicObjectMissingAcm: QualityAssuranceTopicObject = { export const qualityAssuranceTopicObjectMissingAcm: QualityAssuranceTopicObject = {
type: new ResourceType('nbtopic'), type: new ResourceType('qatopic'),
id: 'ENRICH!MISSING!SUBJECT!ACM', id: 'ENRICH!MISSING!SUBJECT!ACM',
name: 'ENRICH/MISSING/SUBJECT/ACM', name: 'ENRICH/MISSING/SUBJECT/ACM',
lastEvent: '2020/09/21 17:51 UTC', lastEvent: '2020/09/21 17:51 UTC',
totalEvents: 18, totalEvents: 18,
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbtopics/ENRICH!MISSING!SUBJECT!ACM' href: 'https://rest.api/rest/api/integration/qatopics/ENRICH!MISSING!SUBJECT!ACM'
} }
} }
}; };
export const qualityAssuranceTopicObjectMissingProject: QualityAssuranceTopicObject = { export const qualityAssuranceTopicObjectMissingProject: QualityAssuranceTopicObject = {
type: new ResourceType('nbtopic'), type: new ResourceType('qatopic'),
id: 'ENRICH!MISSING!PROJECT', id: 'ENRICH!MISSING!PROJECT',
name: 'ENRICH/MISSING/PROJECT', name: 'ENRICH/MISSING/PROJECT',
lastEvent: '2020/09/17 10:28 UTC', lastEvent: '2020/09/17 10:28 UTC',
totalEvents: 6, totalEvents: 6,
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbtopics/ENRICH!MISSING!PROJECT' href: 'https://rest.api/rest/api/integration/qatopics/ENRICH!MISSING!PROJECT'
} }
} }
}; };
@@ -1456,7 +1456,7 @@ export const qualityAssuranceTopicObjectMissingProject: QualityAssuranceTopicObj
export const qualityAssuranceEventObjectMissingPid: QualityAssuranceEventObject = { export const qualityAssuranceEventObjectMissingPid: QualityAssuranceEventObject = {
id: '123e4567-e89b-12d3-a456-426614174001', id: '123e4567-e89b-12d3-a456-426614174001',
uuid: '123e4567-e89b-12d3-a456-426614174001', uuid: '123e4567-e89b-12d3-a456-426614174001',
type: new ResourceType('nbevent'), type: new ResourceType('qaevent'),
originalId: 'oai:www.openstarts.units.it:10077/21486', originalId: 'oai:www.openstarts.units.it:10077/21486',
title: 'Index nominum et rerum', title: 'Index nominum et rerum',
trust: 0.375, trust: 0.375,
@@ -1476,13 +1476,13 @@ export const qualityAssuranceEventObjectMissingPid: QualityAssuranceEventObject
}, },
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174001', href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174001',
}, },
target: { target: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174001/target' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174001/target'
}, },
related: { related: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174001/related' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174001/related'
} }
}, },
target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid1)), target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid1)),
@@ -1512,13 +1512,13 @@ export const qualityAssuranceEventObjectMissingPid2: QualityAssuranceEventObject
}, },
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174004' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174004'
}, },
target: { target: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174004/target' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174004/target'
}, },
related: { related: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174004/related' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174004/related'
} }
}, },
target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid2)), target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid2)),
@@ -1548,13 +1548,13 @@ export const qualityAssuranceEventObjectMissingPid3: QualityAssuranceEventObject
}, },
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174005' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174005'
}, },
target: { target: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174005/target' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174005/target'
}, },
related: { related: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174005/related' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174005/related'
} }
}, },
target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid3)), target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid3)),
@@ -1584,13 +1584,13 @@ export const qualityAssuranceEventObjectMissingPid4: QualityAssuranceEventObject
}, },
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174006' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174006'
}, },
target: { target: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174006/target' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174006/target'
}, },
related: { related: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174006/related' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174006/related'
} }
}, },
target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid4)), target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid4)),
@@ -1620,13 +1620,13 @@ export const qualityAssuranceEventObjectMissingPid5: QualityAssuranceEventObject
}, },
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174007' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174007'
}, },
target: { target: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174007/target' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174007/target'
}, },
related: { related: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174007/related' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174007/related'
} }
}, },
target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid5)), target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid5)),
@@ -1656,13 +1656,13 @@ export const qualityAssuranceEventObjectMissingPid6: QualityAssuranceEventObject
}, },
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174008' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174008'
}, },
target: { target: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174008/target' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174008/target'
}, },
related: { related: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174008/related' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174008/related'
} }
}, },
target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid6)), target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid6)),
@@ -1692,13 +1692,13 @@ export const qualityAssuranceEventObjectMissingAbstract: QualityAssuranceEventOb
}, },
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174009' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174009'
}, },
target: { target: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174009/target' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174009/target'
}, },
related: { related: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174009/related' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174009/related'
} }
}, },
target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid7)), target: observableOf(createSuccessfulRemoteDataObject(ItemMockPid7)),
@@ -1728,13 +1728,13 @@ export const qualityAssuranceEventObjectMissingProjectFound: QualityAssuranceEve
}, },
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174002' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174002'
}, },
target: { target: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174002/target' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174002/target'
}, },
related: { related: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174002/related' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174002/related'
} }
}, },
target: createSuccessfulRemoteDataObject$(ItemMockPid8), target: createSuccessfulRemoteDataObject$(ItemMockPid8),
@@ -1764,13 +1764,13 @@ export const qualityAssuranceEventObjectMissingProjectNotFound: QualityAssurance
}, },
_links: { _links: {
self: { self: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174003' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174003'
}, },
target: { target: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174003/target' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174003/target'
}, },
related: { related: {
href: 'https://rest.api/rest/api/integration/nbevents/123e4567-e89b-12d3-a456-426614174003/related' href: 'https://rest.api/rest/api/integration/qaevents/123e4567-e89b-12d3-a456-426614174003/related'
} }
}, },
target: createSuccessfulRemoteDataObject$(ItemMockPid9), target: createSuccessfulRemoteDataObject$(ItemMockPid9),

View File

@@ -4,7 +4,7 @@ import { hasValue } from './empty.util';
/** /**
* Export a function to return a subset of the state by key * Export a function to return a subset of the state by key
*/ */
export function keySelector<T, V>(parentSelector: Selector<any, any>, subState: string, key: string): MemoizedSelector<T, V> { export function keySelector<T, V>(parentSelector, subState: string, key: string): MemoizedSelector<T, V> {
return createSelector(parentSelector, (state: T) => { return createSelector(parentSelector, (state: T) => {
if (hasValue(state) && hasValue(state[subState])) { if (hasValue(state) && hasValue(state[subState])) {
return state[subState][key]; return state[subState][key];
@@ -16,7 +16,7 @@ export function keySelector<T, V>(parentSelector: Selector<any, any>, subState:
/** /**
* Export a function to return a subset of the state * Export a function to return a subset of the state
*/ */
export function subStateSelector<T, V>(parentSelector: Selector<any, any>, subState: string): MemoizedSelector<T, V> { export function subStateSelector<T, V>(parentSelector, subState: string): MemoizedSelector<T, V> {
return createSelector(parentSelector, (state: T) => { return createSelector(parentSelector, (state: T) => {
if (hasValue(state) && hasValue(state[subState])) { if (hasValue(state) && hasValue(state[subState])) {
return state[subState]; return state[subState];

View File

@@ -499,15 +499,15 @@
"admin.access-control.groups.form.return": "Back", "admin.access-control.groups.form.return": "Back",
"admin.notifications.broker.breadcrumbs": "Quality Assurance", "admin.quality-assurance.breadcrumbs": "Quality Assurance",
"admin.notifications.event.breadcrumbs": "Broker Suggestions", "admin.notifications.event.breadcrumbs": "Quality Assurance Suggestions",
"admin.notifications.event.page.title": "Broker Suggestions", "admin.notifications.event.page.title": "Quality Assurance Suggestions",
"admin.notifications.broker.page.title": "Quality Assurance", "admin.quality-assurance.page.title": "Quality Assurance",
"admin.notifications.source.breadcrumbs": "Notifications Source", "admin.notifications.source.breadcrumbs": "Quality Assurance Source",
"admin.search.breadcrumbs": "Administrative Search", "admin.search.breadcrumbs": "Administrative Search",
@@ -2687,7 +2687,7 @@
"menu.section.notifications": "Notifications", "menu.section.notifications": "Notifications",
"menu.section.notifications_broker": "Quality Assurance", "menu.section.quality-assurance": "Quality Assurance",
"menu.section.notifications_reciter": "Publication Claim", "menu.section.notifications_reciter": "Publication Claim",
@@ -2863,135 +2863,135 @@
"none.listelement.badge": "Item", "none.listelement.badge": "Item",
"notifications.broker.title": "Notifications", "quality-assurance.title": "Quality Assurance",
"notifications.broker.topics.description": "Below you can see all the topics received from the subscriptions to {{source}}.", "quality-assurance.topics.description": "Below you can see all the topics received from the subscriptions to {{source}}.",
"notifications.broker.source.description": "Below you can see all the notification's sources.", "quality-assurance.source.description": "Below you can see all the notification's sources.",
"notifications.broker.topics": "Current Topics", "quality-assurance.topics": "Current Topics",
"notifications.broker.source": "Current Sources", "quality-assurance.source": "Current Sources",
"notifications.broker.table.topic": "Topic", "quality-assurance.table.topic": "Topic",
"notifications.broker.table.source": "Source", "quality-assurance.table.source": "Source",
"notifications.broker.table.last-event": "Last Event", "quality-assurance.table.last-event": "Last Event",
"notifications.broker.table.actions": "Actions", "quality-assurance.table.actions": "Actions",
"notifications.broker.button.detail": "Show details", "quality-assurance.button.detail": "Show details",
"notifications.broker.noTopics": "No topics found.", "quality-assurance.noTopics": "No topics found.",
"notifications.broker.noSource": "No sources found.", "quality-assurance.noSource": "No sources found.",
"notifications.events.title": "Broker Suggestions", "notifications.events.title": "Quality Assurance Suggestions",
"notifications.broker.topic.error.service.retrieve": "An error occurred while loading the Quality Assurance topics", "quality-assurance.topic.error.service.retrieve": "An error occurred while loading the Quality Assurance topics",
"notifications.broker.source.error.service.retrieve": "An error occurred while loading the Quality Assurance source", "quality-assurance.source.error.service.retrieve": "An error occurred while loading the Quality Assurance source",
"notifications.broker.events.description": "Below the list of all the suggestions for the selected topic.", "quality-assurance.events.description": "Below the list of all the suggestions for the selected topic.",
"notifications.broker.loading": "Loading ...", "quality-assurance.loading": "Loading ...",
"notifications.broker.events.topic": "Topic:", "quality-assurance.events.topic": "Topic:",
"notifications.broker.noEvents": "No suggestions found.", "quality-assurance.noEvents": "No suggestions found.",
"notifications.broker.event.table.trust": "Trust", "quality-assurance.event.table.trust": "Trust",
"notifications.broker.event.table.publication": "Publication", "quality-assurance.event.table.publication": "Publication",
"notifications.broker.event.table.details": "Details", "quality-assurance.event.table.details": "Details",
"notifications.broker.event.table.project-details": "Project details", "quality-assurance.event.table.project-details": "Project details",
"notifications.broker.event.table.actions": "Actions", "quality-assurance.event.table.actions": "Actions",
"notifications.broker.event.action.accept": "Accept suggestion", "quality-assurance.event.action.accept": "Accept suggestion",
"notifications.broker.event.action.ignore": "Ignore suggestion", "quality-assurance.event.action.ignore": "Ignore suggestion",
"notifications.broker.event.action.reject": "Reject suggestion", "quality-assurance.event.action.reject": "Reject suggestion",
"notifications.broker.event.action.import": "Import project and accept suggestion", "quality-assurance.event.action.import": "Import project and accept suggestion",
"notifications.broker.event.table.pidtype": "PID Type:", "quality-assurance.event.table.pidtype": "PID Type:",
"notifications.broker.event.table.pidvalue": "PID Value:", "quality-assurance.event.table.pidvalue": "PID Value:",
"notifications.broker.event.table.subjectValue": "Subject Value:", "quality-assurance.event.table.subjectValue": "Subject Value:",
"notifications.broker.event.table.abstract": "Abstract:", "quality-assurance.event.table.abstract": "Abstract:",
"notifications.broker.event.table.suggestedProject": "OpenAIRE Suggested Project data", "quality-assurance.event.table.suggestedProject": "OpenAIRE Suggested Project data",
"notifications.broker.event.table.project": "Project title:", "quality-assurance.event.table.project": "Project title:",
"notifications.broker.event.table.acronym": "Acronym:", "quality-assurance.event.table.acronym": "Acronym:",
"notifications.broker.event.table.code": "Code:", "quality-assurance.event.table.code": "Code:",
"notifications.broker.event.table.funder": "Funder:", "quality-assurance.event.table.funder": "Funder:",
"notifications.broker.event.table.fundingProgram": "Funding program:", "quality-assurance.event.table.fundingProgram": "Funding program:",
"notifications.broker.event.table.jurisdiction": "Jurisdiction:", "quality-assurance.event.table.jurisdiction": "Jurisdiction:",
"notifications.broker.events.back": "Back to topics", "quality-assurance.events.back": "Back to topics",
"notifications.broker.event.table.less": "Show less", "quality-assurance.event.table.less": "Show less",
"notifications.broker.event.table.more": "Show more", "quality-assurance.event.table.more": "Show more",
"notifications.broker.event.project.found": "Bound to the local record:", "quality-assurance.event.project.found": "Bound to the local record:",
"notifications.broker.event.project.notFound": "No local record found", "quality-assurance.event.project.notFound": "No local record found",
"notifications.broker.event.sure": "Are you sure?", "quality-assurance.event.sure": "Are you sure?",
"notifications.broker.event.ignore.description": "This operation can't be undone. Ignore this suggestion?", "quality-assurance.event.ignore.description": "This operation can't be undone. Ignore this suggestion?",
"notifications.broker.event.reject.description": "This operation can't be undone. Reject this suggestion?", "quality-assurance.event.reject.description": "This operation can't be undone. Reject this suggestion?",
"notifications.broker.event.accept.description": "No DSpace project selected. A new project will be created based on the suggestion data.", "quality-assurance.event.accept.description": "No DSpace project selected. A new project will be created based on the suggestion data.",
"notifications.broker.event.action.cancel": "Cancel", "quality-assurance.event.action.cancel": "Cancel",
"notifications.broker.event.action.saved": "Your decision has been saved successfully.", "quality-assurance.event.action.saved": "Your decision has been saved successfully.",
"notifications.broker.event.action.error": "An error has occurred. Your decision has not been saved.", "quality-assurance.event.action.error": "An error has occurred. Your decision has not been saved.",
"notifications.broker.event.modal.project.title": "Choose a project to bound", "quality-assurance.event.modal.project.title": "Choose a project to bound",
"notifications.broker.event.modal.project.publication": "Publication:", "quality-assurance.event.modal.project.publication": "Publication:",
"notifications.broker.event.modal.project.bountToLocal": "Bound to the local record:", "quality-assurance.event.modal.project.bountToLocal": "Bound to the local record:",
"notifications.broker.event.modal.project.select": "Project search", "quality-assurance.event.modal.project.select": "Project search",
"notifications.broker.event.modal.project.search": "Search", "quality-assurance.event.modal.project.search": "Search",
"notifications.broker.event.modal.project.clear": "Clear", "quality-assurance.event.modal.project.clear": "Clear",
"notifications.broker.event.modal.project.cancel": "Cancel", "quality-assurance.event.modal.project.cancel": "Cancel",
"notifications.broker.event.modal.project.bound": "Bound project", "quality-assurance.event.modal.project.bound": "Bound project",
"notifications.broker.event.modal.project.placeholder": "Enter a project name", "quality-assurance.event.modal.project.placeholder": "Enter a project name",
"notifications.broker.event.modal.project.notFound": "No project found.", "quality-assurance.event.modal.project.notFound": "No project found.",
"notifications.broker.event.project.bounded": "The project has been linked successfully.", "quality-assurance.event.project.bounded": "The project has been linked successfully.",
"notifications.broker.event.project.removed": "The project has been successfully unlinked.", "quality-assurance.event.project.removed": "The project has been successfully unlinked.",
"notifications.broker.event.project.error": "An error has occurred. No operation performed.", "quality-assurance.event.project.error": "An error has occurred. No operation performed.",
"notifications.broker.event.reason": "Reason", "quality-assurance.event.reason": "Reason",
"orgunit.listelement.badge": "Organizational Unit", "orgunit.listelement.badge": "Organizational Unit",