Fix merge conflicts

This commit is contained in:
FrancescoMolinaro
2024-02-16 13:10:38 +01:00
parent a249cf5986
commit 6380abc759
38 changed files with 538 additions and 347 deletions

View File

@@ -4,11 +4,7 @@ import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/r
/**
* Interface for the route parameters.
*/
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page-resolver.service.ts
export interface NotificationsSuggestionTargetsPageParams {
========
export interface AdminNotificationsPublicationClaimPageParams {
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page-resolver.service.ts
pageId?: string;
pageSize?: number;
currentPage?: number;
@@ -18,11 +14,7 @@ export interface AdminNotificationsPublicationClaimPageParams {
* This class represents a resolver that retrieve the route data before the route is activated.
*/
@Injectable()
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page-resolver.service.ts
export class NotificationsSuggestionTargetsPageResolver implements Resolve<NotificationsSuggestionTargetsPageParams> {
========
export class AdminNotificationsPublicationClaimPageResolver implements Resolve<AdminNotificationsPublicationClaimPageParams> {
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page-resolver.service.ts
/**
* Method for resolving the parameters in the current route.
@@ -30,11 +22,7 @@ export class AdminNotificationsPublicationClaimPageResolver implements Resolve<A
* @param {RouterStateSnapshot} state The current RouterStateSnapshot
* @returns AdminNotificationsSuggestionTargetsPageParams Emits the route parameters
*/
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page-resolver.service.ts
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): NotificationsSuggestionTargetsPageParams {
========
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): AdminNotificationsPublicationClaimPageParams {
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page-resolver.service.ts
return {
pageId: route.queryParams.pageId,
pageSize: parseInt(route.queryParams.pageSize, 10),

View File

@@ -1,23 +1,15 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page.component.spec.ts
import { NotificationsSuggestionTargetsPageComponent } from './notifications-suggestion-targets-page.component';
========
import { AdminNotificationsPublicationClaimPageComponent } from './admin-notifications-publication-claim-page.component';
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page.component.spec.ts
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import {
NotificationsSuggestionTargetsPageComponent
} from '../../../quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page.component';
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page.component.spec.ts
describe('NotificationsSuggestionTargetsPageComponent', () => {
let component: NotificationsSuggestionTargetsPageComponent;
let fixture: ComponentFixture<NotificationsSuggestionTargetsPageComponent>;
========
describe('AdminNotificationsPublicationClaimPageComponent', () => {
let component: AdminNotificationsPublicationClaimPageComponent;
let fixture: ComponentFixture<AdminNotificationsPublicationClaimPageComponent>;
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page.component.spec.ts
beforeEach(async(() => {
TestBed.configureTestingModule({
@@ -26,17 +18,10 @@ describe('AdminNotificationsPublicationClaimPageComponent', () => {
TranslateModule.forRoot()
],
declarations: [
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page.component.spec.ts
NotificationsSuggestionTargetsPageComponent
],
providers: [
NotificationsSuggestionTargetsPageComponent
========
AdminNotificationsPublicationClaimPageComponent
],
providers: [
AdminNotificationsPublicationClaimPageComponent
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page.component.spec.ts
],
schemas: [NO_ERRORS_SCHEMA]
})
@@ -44,11 +29,7 @@ describe('AdminNotificationsPublicationClaimPageComponent', () => {
}));
beforeEach(() => {
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page.component.spec.ts
fixture = TestBed.createComponent(NotificationsSuggestionTargetsPageComponent);
========
fixture = TestBed.createComponent(AdminNotificationsPublicationClaimPageComponent);
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page.component.spec.ts
component = fixture.componentInstance;
fixture.detectChanges();
});

View File

@@ -6,19 +6,34 @@ import { I18nBreadcrumbResolver } from '../../core/breadcrumbs/i18n-breadcrumb.r
import { I18nBreadcrumbsService } from '../../core/breadcrumbs/i18n-breadcrumbs.service';
import { PUBLICATION_CLAIMS_PATH } from './admin-notifications-routing-paths';
import { AdminNotificationsPublicationClaimPageComponent } from './admin-notifications-publication-claim-page/admin-notifications-publication-claim-page.component';
import { AdminNotificationsPublicationClaimPageResolver } from './admin-notifications-publication-claim-page/admin-notifications-publication-claim-page-resolver.service';
import { QUALITY_ASSURANCE_EDIT_PATH } from './admin-notifications-routing-paths';
import { AdminQualityAssuranceTopicsPageComponent } from './admin-quality-assurance-topics-page/admin-quality-assurance-topics-page.component';
import { AdminQualityAssuranceEventsPageComponent } from './admin-quality-assurance-events-page/admin-quality-assurance-events-page.component';
import { AdminQualityAssuranceTopicsPageResolver } from './admin-quality-assurance-topics-page/admin-quality-assurance-topics-page-resolver.service';
import { AdminQualityAssuranceEventsPageResolver } from './admin-quality-assurance-events-page/admin-quality-assurance-events-page.resolver';
import { AdminQualityAssuranceSourcePageComponent } from './admin-quality-assurance-source-page-component/admin-quality-assurance-source-page.component';
import { AdminQualityAssuranceSourcePageResolver } from './admin-quality-assurance-source-page-component/admin-quality-assurance-source-page-resolver.service';
import { QualityAssuranceBreadcrumbResolver } from '../../core/breadcrumbs/quality-assurance-breadcrumb.resolver';
import { QualityAssuranceBreadcrumbService } from '../../core/breadcrumbs/quality-assurance-breadcrumb.service';
import {
AdminNotificationsPublicationClaimPageResolver
} from '../../quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page-resolver.service';
import {
QualityAssuranceTopicsPageComponent
} from '../../quality-assurance-notifications-pages/quality-assurance-topics-page/quality-assurance-topics-page.component';
import {
QualityAssuranceTopicsPageResolver
} from '../../quality-assurance-notifications-pages/quality-assurance-topics-page/quality-assurance-topics-page-resolver.service';
import {
SourceDataResolver
} from './admin-quality-assurance-source-page-component/admin-quality-assurance-source-data.resolver';
} from '../../quality-assurance-notifications-pages/quality-assurance-source-page-component/quality-assurance-source-data.resolver';
import {
QualityAssuranceEventsPageResolver
} from '../../quality-assurance-notifications-pages/quality-assurance-events-page/quality-assurance-events-page.resolver';
import {
QualityAssuranceEventsPageComponent
} from '../../quality-assurance-notifications-pages/quality-assurance-events-page/quality-assurance-events-page.component';
import {
QualityAssuranceSourcePageResolver
} from '../../quality-assurance-notifications-pages/quality-assurance-source-page-component/quality-assurance-source-page-resolver.service';
import {
QualityAssuranceSourcePageComponent
} from '../../quality-assurance-notifications-pages/quality-assurance-source-page-component/quality-assurance-source-page.component';
@NgModule({
imports: [
@@ -41,11 +56,11 @@ import {
{
canActivate: [ AuthenticatedGuard ],
path: `${QUALITY_ASSURANCE_EDIT_PATH}/:sourceId`,
component: AdminQualityAssuranceTopicsPageComponent,
component: QualityAssuranceTopicsPageComponent,
pathMatch: 'full',
resolve: {
breadcrumb: QualityAssuranceBreadcrumbResolver,
openaireQualityAssuranceTopicsParams: AdminQualityAssuranceTopicsPageResolver
openaireQualityAssuranceTopicsParams: QualityAssuranceTopicsPageResolver
},
data: {
title: 'admin.quality-assurance.page.title',
@@ -56,11 +71,11 @@ import {
{
canActivate: [ AuthenticatedGuard ],
path: `${QUALITY_ASSURANCE_EDIT_PATH}`,
component: AdminQualityAssuranceSourcePageComponent,
component: QualityAssuranceSourcePageComponent,
pathMatch: 'full',
resolve: {
breadcrumb: I18nBreadcrumbResolver,
openaireQualityAssuranceSourceParams: AdminQualityAssuranceSourcePageResolver,
openaireQualityAssuranceSourceParams: QualityAssuranceSourcePageResolver,
sourceData: SourceDataResolver
},
data: {
@@ -72,11 +87,11 @@ import {
{
canActivate: [ AuthenticatedGuard ],
path: `${QUALITY_ASSURANCE_EDIT_PATH}/:sourceId/:topicId`,
component: AdminQualityAssuranceEventsPageComponent,
component: QualityAssuranceEventsPageComponent,
pathMatch: 'full',
resolve: {
breadcrumb: QualityAssuranceBreadcrumbResolver,
openaireQualityAssuranceEventsParams: AdminQualityAssuranceEventsPageResolver
openaireQualityAssuranceEventsParams: QualityAssuranceEventsPageResolver
},
data: {
title: 'admin.notifications.event.page.title',
@@ -91,10 +106,10 @@ import {
I18nBreadcrumbsService,
AdminNotificationsPublicationClaimPageResolver,
SourceDataResolver,
AdminQualityAssuranceSourcePageResolver,
AdminQualityAssuranceTopicsPageResolver,
AdminQualityAssuranceEventsPageResolver,
AdminQualityAssuranceSourcePageResolver,
QualityAssuranceSourcePageResolver,
QualityAssuranceTopicsPageResolver,
QualityAssuranceEventsPageResolver,
QualityAssuranceSourcePageResolver,
QualityAssuranceBreadcrumbResolver,
QualityAssuranceBreadcrumbService
]

View File

@@ -4,11 +4,14 @@ import { CoreModule } from '../../core/core.module';
import { SharedModule } from '../../shared/shared.module';
import { AdminNotificationsRoutingModule } from './admin-notifications-routing.module';
import { AdminNotificationsPublicationClaimPageComponent } from './admin-notifications-publication-claim-page/admin-notifications-publication-claim-page.component';
import { AdminQualityAssuranceTopicsPageComponent } from './admin-quality-assurance-topics-page/admin-quality-assurance-topics-page.component';
import { AdminQualityAssuranceEventsPageComponent } from './admin-quality-assurance-events-page/admin-quality-assurance-events-page.component';
import { AdminQualityAssuranceSourcePageComponent } from './admin-quality-assurance-source-page-component/admin-quality-assurance-source-page.component';
import { NotificationsModule } from '../../notifications/notifications.module';
@NgModule({
imports: [
CommonModule,
@@ -19,9 +22,6 @@ import { NotificationsModule } from '../../notifications/notifications.module';
],
declarations: [
AdminNotificationsPublicationClaimPageComponent,
AdminQualityAssuranceTopicsPageComponent,
AdminQualityAssuranceEventsPageComponent,
AdminQualityAssuranceSourcePageComponent
],
entryComponents: []
})

View File

@@ -18,3 +18,8 @@ export function getLdnServicesModuleRoute() {
export function getNotificatioQualityAssuranceRoute() {
return new URLCombiner(`/${NOTIFICATIONS_MODULE_PATH}`, getQualityAssuranceEditRoute()).toString();
}
export function getNotificationsModuleRoute() {
return new URLCombiner(getAdminModuleRoute(), NOTIFICATIONS_MODULE_PATH).toString();
}

View File

@@ -6,12 +6,17 @@ import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.reso
import { AdminWorkflowPageComponent } from './admin-workflow-page/admin-workflow-page.component';
import { I18nBreadcrumbsService } from '../core/breadcrumbs/i18n-breadcrumbs.service';
import { AdminCurationTasksComponent } from './admin-curation-tasks/admin-curation-tasks.component';
import { LDN_PATH, REGISTRIES_MODULE_PATH } from './admin-routing-paths';
import { LDN_PATH, NOTIFICATIONS_MODULE_PATH, REGISTRIES_MODULE_PATH } from './admin-routing-paths';
import { BatchImportPageComponent } from './admin-import-batch-page/batch-import-page.component';
@NgModule({
imports: [
RouterModule.forChild([
{
path: NOTIFICATIONS_MODULE_PATH,
loadChildren: () => import('./admin-notifications/admin-notifications.module')
.then((m) => m.AdminNotificationsModule),
},
{
path: REGISTRIES_MODULE_PATH,
loadChildren: () => import('./admin-registries/admin-registries.module')

View File

@@ -185,8 +185,6 @@ import { FlatBrowseDefinition } from './shared/flat-browse-definition.model';
import { ValueListBrowseDefinition } from './shared/value-list-browse-definition.model';
import { NonHierarchicalBrowseDefinition } from './shared/non-hierarchical-browse-definition';
import { BulkAccessConditionOptions } from './config/models/bulk-access-condition-options.model';
import { SuggestionTarget } from './notifications/reciter-suggestions/models/suggestion-target.model';
import { SuggestionSource } from './notifications/reciter-suggestions/models/suggestion-source.model';
import { LdnServicesService } from '../admin/admin-ldn-services/ldn-services-data/ldn-services-data.service';
import { LdnService } from '../admin/admin-ldn-services/ldn-services-model/ldn-services.model';
import { LdnItemfiltersService } from '../admin/admin-ldn-services/ldn-services-data/ldn-itemfilters-data.service';
@@ -197,6 +195,8 @@ import {
import { SubmissionCoarNotifyConfig } from '../submission/sections/section-coar-notify/submission-coar-notify.config';
import { NotifyRequestsStatus } from '../item-page/simple/notify-requests-status/notify-requests-status.model';
import { NotifyRequestsStatusDataService } from './data/notify-services-status-data.service';
import { SuggestionTarget } from './notifications/models/suggestion-target.model';
import { SuggestionSource } from './notifications/models/suggestion-source.model';
/**

View File

@@ -110,19 +110,6 @@ export class WorkspaceitemDataService extends IdentifiableDataService<WorkspaceI
return this.rdbService.buildFromRequestUUID(requestId);
}
/**
* Delete an existing object on the server
* @param href The self link of the object to be removed
* @param copyVirtualMetadata (optional parameter) the identifiers of the relationship types for which the virtual
* metadata should be saved as real metadata
* @return A RemoteData observable with an empty payload, but still representing the state of the request: statusCode,
* errorMessage, timeCompleted, etc
* Only emits once all request related to the DSO has been invalidated.
*/
deleteByHref(href: string, copyVirtualMetadata?: string[]): Observable<RemoteData<NoContent>> {
return this.deleteData.deleteByHref(href, copyVirtualMetadata);
}
/**
* Make a new FindListRequest with given search method
*

View File

@@ -5,6 +5,7 @@ import { BrowseDefinition } from '../../../core/shared/browse-definition.model';
import { hasValue } from '../../../shared/empty.util';
import { VALUE_LIST_BROWSE_DEFINITION } from '../../../core/shared/value-list-browse-definition.resource-type';
import { ImageField } from '../../simple/field-components/specific-field/item-page-field.component';
import { environment } from '../../../../environments/environment';
/**
* This component renders the configured 'values' into the ds-metadata-field-wrapper component.
@@ -96,4 +97,14 @@ export class MetadataValuesComponent implements OnChanges {
}
return queryParams;
}
/**
* Checks if the given link value is an internal link.
* @param linkValue - The link value to check.
* @returns True if the link value starts with the base URL defined in the environment configuration, false otherwise.
*/
hasInternalLink(linkValue: string): boolean {
return linkValue.startsWith(environment.ui.baseUrl);
}
}

View File

@@ -47,7 +47,7 @@ import {
import {
ExportBatchSelectorComponent
} from './shared/dso-selector/modal-wrappers/export-batch-selector/export-batch-selector.component';
import { NOTIFICATIONS_RECITER_SUGGESTION_PATH } from './quality-assurance-notifications-pages/notifications-pages-routing-paths';
import { PUBLICATION_CLAIMS_PATH } from './admin/admin-notifications/admin-notifications-routing-paths';
/**
* Creates all of the app's menus
@@ -171,7 +171,8 @@ export class MenuResolver implements Resolve<boolean> {
this.authorizationService.isAuthorized(FeatureID.AdministratorOf),
this.authorizationService.isAuthorized(FeatureID.CanSubmit),
this.authorizationService.isAuthorized(FeatureID.CanEditItem),
]).subscribe(([isCollectionAdmin, isCommunityAdmin, isSiteAdmin, canSubmit, canEditItem]) => {
this.authorizationService.isAuthorized(FeatureID.CanSeeQA)
]).subscribe(([isCollectionAdmin, isCommunityAdmin, isSiteAdmin, canSubmit, canEditItem, canSeeQa]) => {
const newSubMenuList = [
{
id: 'new_community',
@@ -387,6 +388,41 @@ export class MenuResolver implements Resolve<boolean> {
icon: 'heartbeat',
index: 11
},
/* Notifications */
{
id: 'notifications',
active: false,
visible: canSeeQa || isSiteAdmin,
model: {
type: MenuItemType.TEXT,
text: 'menu.section.notifications'
} as TextMenuItemModel,
icon: 'bell',
index: 4
},
{
id: 'notifications_quality-assurance',
parentID: 'notifications',
active: false,
visible: canSeeQa,
model: {
type: MenuItemType.LINK,
text: 'menu.section.quality-assurance',
link: '/notifications/quality-assurance'
} as LinkMenuItemModel,
},
{
id: 'notifications_publication-claim',
parentID: 'notifications',
active: false,
visible: isSiteAdmin,
model: {
type: MenuItemType.LINK,
text: 'menu.section.notifications_publication-claim',
link: '/admin/notifications/' + PUBLICATION_CLAIMS_PATH
} as LinkMenuItemModel,
},
/* Admin Search */
];
menuList.forEach((menuSection) => this.menuService.addSection(MenuID.ADMIN, Object.assign(menuSection, {
shouldPersistOnRouteChange: true
@@ -556,47 +592,9 @@ export class MenuResolver implements Resolve<boolean> {
* Create menu sections dependent on whether or not the current user is a site administrator
*/
createSiteAdministratorMenuSections() {
combineLatest([
this.authorizationService.isAuthorized(FeatureID.AdministratorOf),
this.authorizationService.isAuthorized(FeatureID.CanSeeQA)
])
.subscribe(([authorized, canSeeQA]) => {
this.authorizationService.isAuthorized(FeatureID.AdministratorOf)
.subscribe((authorized) => {
const menuList = [
/* Notifications */
{
id: 'notifications',
active: false,
visible: authorized && canSeeQA,
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: '/notifications/quality-assurance'
} as LinkMenuItemModel,
},
{
id: 'notifications_reciter',
parentID: 'notifications',
active: false,
visible: authorized,
model: {
type: MenuItemType.LINK,
text: 'menu.section.notifications_reciter',
link: '/notifications/' + NOTIFICATIONS_RECITER_SUGGESTION_PATH
} as LinkMenuItemModel,
},
/* Admin Search */
{
id: 'admin_search',
active: false,

View File

@@ -1,6 +1,6 @@
import { QualityAssuranceSourceEffects } from './qa/source/quality-assurance-source.effects';
import { QualityAssuranceTopicsEffects } from './qa/topics/quality-assurance-topics.effects';
import { SuggestionTargetsEffects } from '../suggestion-notifications/suggestion-targets/suggestion-targets.effects';
import { SuggestionTargetsEffects } from './suggestion-targets/suggestion-targets.effects';
export const notificationsEffects = [
QualityAssuranceTopicsEffects,

View File

@@ -26,29 +26,23 @@ import { QualityAssuranceSourceService } from './qa/source/quality-assurance-sou
import {
QualityAssuranceSourceDataService
} from '../core/notifications/qa/source/quality-assurance-source-data.service';
import { PublicationClaimComponent } from '../suggestion-notifications/suggestion-targets/publication-claim/publication-claim.component';
import { SuggestionActionsComponent } from '../suggestion-notifications/suggestion-actions/suggestion-actions.component';
import {
SuggestionListElementComponent
} from '../suggestion-notifications/suggestion-list-element/suggestion-list-element.component';
import { SuggestionsPopupComponent } from './suggestions-popup/suggestions-popup.component';
import { SuggestionSourceDataService } from '../core/notifications/source/suggestion-source-data.service';
import { SuggestionTargetDataService } from '../core/notifications/target/suggestion-target-data.service';
import { SuggestionsDataService } from '../core/notifications/suggestions-data.service';
import { PublicationClaimComponent } from '../notifications/suggestion-targets/publication-claim/publication-claim.component';
import { SuggestionsNotificationComponent } from './suggestions-notification/suggestions-notification.component';
import { SuggestionsService } from './suggestions.service';
import { SuggestionTargetsStateService } from './suggestion-targets/suggestion-targets.state.service';
import { SuggestionActionsComponent } from './suggestion-actions/suggestion-actions.component';
import { SuggestionListElementComponent } from './suggestion-list-element/suggestion-list-element.component';
import {
SuggestionEvidencesComponent
} from '../suggestion-notifications/suggestion-list-element/suggestion-evidences/suggestion-evidences.component';
import { SuggestionsPopupComponent } from '../suggestion-notifications/suggestions-popup/suggestions-popup.component';
import {
SuggestionsNotificationComponent
} from '../suggestion-notifications/suggestions-notification/suggestions-notification.component';
import { SuggestionsService } from '../suggestion-notifications/suggestions.service';
import { SuggestionsDataService } from '../core/suggestion-notifications/suggestions-data.service';
import {
SuggestionSourceDataService
} from '../core/suggestion-notifications/source/suggestion-source-data.service';
import {
SuggestionTargetDataService
} from '../core/suggestion-notifications/target/suggestion-target-data.service';
import {
SuggestionTargetsStateService
} from '../suggestion-notifications/suggestion-targets/suggestion-targets.state.service';
} from './suggestion-list-element/suggestion-evidences/suggestion-evidences.component';
const MODULES = [

View File

@@ -1,7 +1,7 @@
import { ActionReducerMap, createFeatureSelector } from '@ngrx/store';
import { qualityAssuranceSourceReducer, QualityAssuranceSourceState } from './qa/source/quality-assurance-source.reducer';
import { qualityAssuranceTopicsReducer, QualityAssuranceTopicState, } from './qa/topics/quality-assurance-topics.reducer';
import { SuggestionTargetsReducer, SuggestionTargetState } from '../suggestion-notifications/suggestion-targets/suggestion-targets.reducer';
import { SuggestionTargetsReducer, SuggestionTargetState } from './suggestion-targets/suggestion-targets.reducer';
/**
* The OpenAIRE State

View File

@@ -1,15 +1,12 @@
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { ItemType } from '../../core/shared/item-relationships/item-type.model';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestion-actions/suggestion-actions.component.ts
import { Suggestion } from '../../../core/notifications/reciter-suggestions/models/suggestion.model';
========
import { Suggestion } from '../../core/suggestion-notifications/models/suggestion.model';
>>>>>>>> main:src/app/notifications/suggestion-actions/suggestion-actions.component.ts
import { SuggestionApproveAndImport } from '../suggestion-list-element/suggestion-list-element.component';
import { Collection } from '../../core/shared/collection.model';
import { take } from 'rxjs/operators';
import { CreateItemParentSelectorComponent } from '../../shared/dso-selector/modal-wrappers/create-item-parent-selector/create-item-parent-selector.component';
import { Suggestion } from '../../core/notifications/models/suggestion.model';
import { SuggestionApproveAndImport } from '../suggestion-list-element/suggestion-list-element.component';
/**
* Show and trigger the actions to submit for a suggestion

View File

@@ -1,11 +1,7 @@
import { Component, Input } from '@angular/core';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestion-list-element/suggestion-evidences/suggestion-evidences.component.ts
import { fadeIn } from '../../../../shared/animations/fade';
import { SuggestionEvidences } from '../../../../core/notifications/reciter-suggestions/models/suggestion.model';
========
import { fadeIn } from '../../../shared/animations/fade';
import { SuggestionEvidences } from '../../../core/suggestion-notifications/models/suggestion.model';
>>>>>>>> main:src/app/notifications/suggestion-list-element/suggestion-evidences/suggestion-evidences.component.ts
import { SuggestionEvidences } from '../../../core/notifications/models/suggestion.model';
/**
* Show suggestion evidences such as score (authorScore, dateScore)

View File

@@ -1,18 +1,12 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestion-list-element/suggestion-list-element.component.ts
import { fadeIn } from '../../../shared/animations/fade';
import { Suggestion } from '../../../core/notifications/reciter-suggestions/models/suggestion.model';
import { Item } from '../../../core/shared/item.model';
import { isNotEmpty } from '../../../shared/empty.util';
========
import { Suggestion } from 'src/app/core/notifications/models/suggestion.model';
import { fadeIn } from '../../shared/animations/fade';
import { Suggestion } from '../../core/suggestion-notifications/models/suggestion.model';
import { Item } from '../../core/shared/item.model';
import { isNotEmpty } from '../../shared/empty.util';
>>>>>>>> main:src/app/notifications/suggestion-list-element/suggestion-list-element.component.ts
/**
* A simple interface to unite a specific suggestion and the id of the chosen collection

View File

@@ -4,17 +4,14 @@ import { Router } from '@angular/router';
import { Observable, Subscription } from 'rxjs';
import { distinctUntilChanged, take } from 'rxjs/operators';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestion-targets/suggestion-targets.component.ts
import { SuggestionTarget } from '../../../core/notifications/reciter-suggestions/models/suggestion-target.model';
========
import { SuggestionTarget } from '../../../core/suggestion-notifications/models/suggestion-target.model';
>>>>>>>> main:src/app/notifications/suggestion-targets/publication-claim/publication-claim.component.ts
import { hasValue } from '../../../shared/empty.util';
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
import { SuggestionTargetsStateService } from '../suggestion-targets.state.service';
import { getSuggestionPageRoute } from '../../../suggestions-page/suggestions-page-routing-paths';
import { SuggestionsService } from '../../suggestions.service';
import { PaginationService } from '../../../core/pagination/pagination.service';
import { SuggestionTarget } from '../../../core/notifications/models/suggestion-target.model';
import { SuggestionTargetsStateService } from '../suggestion-targets.state.service';
import { SuggestionsService } from '../../suggestions.service';
/**
* Component to display the Suggestion Target list.

View File

@@ -1,12 +1,8 @@
/* eslint-disable max-classes-per-file */
import { Action } from '@ngrx/store';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestion-targets/suggestion-targets.actions.ts
import { type } from '../../../shared/ngrx/type';
import { SuggestionTarget } from '../../../core/notifications/reciter-suggestions/models/suggestion-target.model';
========
import { type } from '../../shared/ngrx/type';
import { SuggestionTarget } from '../../core/suggestion-notifications/models/suggestion-target.model';
>>>>>>>> main:src/app/notifications/suggestion-targets/suggestion-targets.actions.ts
import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model';
/**
* For each action type in an action group, make a simple

View File

@@ -15,13 +15,9 @@ import {
} from './suggestion-targets.actions';
import { PaginatedList } from '../../core/data/paginated-list.model';
import { SuggestionsService } from '../suggestions.service';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestion-targets/suggestion-targets.effects.ts
import { NotificationsService } from '../../../shared/notifications/notifications.service';
import { SuggestionTarget } from '../../../core/notifications/reciter-suggestions/models/suggestion-target.model';
========
import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { SuggestionTarget } from '../../core/suggestion-notifications/models/suggestion-target.model';
>>>>>>>> main:src/app/notifications/suggestion-targets/suggestion-targets.effects.ts
/**
* Provides effect methods for the Suggestion Targets actions.
@@ -80,12 +76,8 @@ export class SuggestionTargetsEffects {
}),
catchError((errors) => of(errors))
);
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestion-targets/suggestion-targets.effects.ts
})), { dispatch: false });
========
}))
);
>>>>>>>> main:src/app/notifications/suggestion-targets/suggestion-targets.effects.ts
/**
* Initialize the effect class variables.

View File

@@ -1,9 +1,6 @@
import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model';
import { SuggestionTargetActionTypes, SuggestionTargetsActions } from './suggestion-targets.actions';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestion-targets/suggestion-targets.reducer.ts
import { SuggestionTarget } from '../../../core/notifications/reciter-suggestions/models/suggestion-target.model';
========
import { SuggestionTarget } from '../../core/suggestion-notifications/models/suggestion-target.model';
>>>>>>>> main:src/app/notifications/suggestion-targets/suggestion-targets.reducer.ts
/**
* The interface representing the OpenAIRE suggestion targets state.

View File

@@ -4,31 +4,23 @@ import { select, Store } from '@ngrx/store';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import {
getCurrentUserSuggestionTargetsSelector,
getCurrentUserSuggestionTargetsVisitedSelector,
getSuggestionTargetCurrentPageSelector,
getSuggestionTargetTotalsSelector,
isSuggestionTargetLoadedSelector,
isReciterSuggestionTargetProcessingSelector,
suggestionTargetObjectSelector
} from '../selectors';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestion-targets/suggestion-targets.state.service.ts
import { SuggestionTarget } from '../../../core/notifications/reciter-suggestions/models/suggestion-target.model';
========
import { SuggestionTarget } from '../../core/suggestion-notifications/models/suggestion-target.model';
>>>>>>>> main:src/app/notifications/suggestion-targets/suggestion-targets.state.service.ts
import {
ClearSuggestionTargetsAction,
MarkUserSuggestionsAsVisitedAction,
RefreshUserSuggestionsAction,
RetrieveTargetsBySourceAction
} from './suggestion-targets.actions';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestion-targets/suggestion-targets.state.service.ts
import { SuggestionNotificationsState } from '../../notifications.reducer';
========
import { SuggestionNotificationsState } from '../../notifications/notifications.reducer';
>>>>>>>> main:src/app/notifications/suggestion-targets/suggestion-targets.state.service.ts
import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model';
import {
getCurrentUserSuggestionTargetsSelector, getCurrentUserSuggestionTargetsVisitedSelector,
getSuggestionTargetCurrentPageSelector,
getSuggestionTargetTotalsSelector,
isReciterSuggestionTargetProcessingSelector,
isSuggestionTargetLoadedSelector,
suggestionTargetObjectSelector
} from '../../suggestion-notifications/selectors';
/**
* The service handling the Suggestion targets State.

View File

@@ -1,13 +1,6 @@
import { SuggestionsService } from './suggestions.service';
import { ResearcherProfileDataService } from '../core/profile/researcher-profile-data.service';
import {
SuggestionsDataService
} from '../core/suggestion-notifications/suggestions-data.service';
import {
SuggestionTargetDataService
} from '../core/suggestion-notifications/target/suggestion-target-data.service';
import { TestScheduler } from 'rxjs/testing';
import { getTestScheduler } from 'jasmine-marbles';
import { of as observableOf } from 'rxjs';
@@ -18,11 +11,11 @@ import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils';
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
import { mockSuggestionPublicationOne } from '../shared/mocks/publication-claim.mock';
import { ResourceType } from '../core/shared/resource-type';
import { SuggestionsDataService } from '../core/notifications/suggestions-data.service';
import { SuggestionTargetDataService } from '../core/notifications/target/suggestion-target-data.service';
import { SuggestionTarget } from '../core/notifications/models/suggestion-target.model';
import {
SuggestionTarget
} from '../core/suggestion-notifications/models/suggestion-target.model';
describe('SuggestionsService test', () => {
let scheduler: TestScheduler;

View File

@@ -1,13 +1,9 @@
import { Component, OnInit } from '@angular/core';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestions-notification/suggestions-notification.component.ts
import { SuggestionTarget } from '../../../core/notifications/reciter-suggestions/models/suggestion-target.model';
import { TranslateService } from '@ngx-translate/core';
========
import { SuggestionTarget } from '../../core/suggestion-notifications/models/suggestion-target.model';
>>>>>>>> main:src/app/notifications/suggestions-notification/suggestions-notification.component.ts
import { SuggestionTargetsStateService } from '../suggestion-targets/suggestion-targets.state.service';
import { SuggestionsService } from '../suggestions.service';
import { Observable } from 'rxjs';
import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model';
/**
* Show suggestions notification, used on myDSpace and Profile pages

View File

@@ -2,13 +2,13 @@ import { Component, OnDestroy, OnInit } from '@angular/core';
import { SuggestionTargetsStateService } from '../suggestion-targets/suggestion-targets.state.service';
import { SuggestionsService } from '../suggestions.service';
import { take, takeUntil } from 'rxjs/operators';
import { SuggestionTarget } from '../../core/suggestion-notifications/models/suggestion-target.model';
import { isNotEmpty } from '../../shared/empty.util';
import { combineLatest, Observable, of, Subject } from 'rxjs';
import { trigger } from '@angular/animations';
import { fromTopEnter } from '../../shared/animations/fromTop';
import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model';
/**
* Show suggestions on a popover window, used on the homepage

View File

@@ -1,68 +1,27 @@
import { Injectable } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { of, forkJoin, Observable } from 'rxjs';
import { catchError, map, mergeMap, take } from 'rxjs/operators';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestions.service.ts
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
import { RemoteData } from '../../core/data/remote-data';
import { PaginatedList } from '../../core/data/paginated-list.model';
import { SuggestionTarget } from '../../core/notifications/reciter-suggestions/models/suggestion-target.model';
import { AuthService } from '../../core/auth/auth.service';
import { hasValue, isNotEmpty } from '../../shared/empty.util';
import { ResearcherProfile } from '../../core/profile/model/researcher-profile.model';
========
import { SortDirection, SortOptions } from '../core/cache/models/sort-options.model';
import { RemoteData } from '../core/data/remote-data';
import { FindListOptions } from '../core/data/find-list-options.model';
import { PaginatedList } from '../core/data/paginated-list.model';
import { SuggestionTarget } from '../core/suggestion-notifications/models/suggestion-target.model';
import { hasValue, isNotEmpty } from '../shared/empty.util';
import { ResearcherProfile } from '../core/profile/model/researcher-profile.model';
>>>>>>>> main:src/app/notifications/suggestions.service.ts
import {
getAllSucceededRemoteDataPayload,
getFinishedRemoteData,
getFirstSucceededRemoteDataPayload,
getFirstSucceededRemoteListPayload
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/suggestions.service.ts
} from '../../core/shared/operators';
import { Suggestion } from '../../core/notifications/reciter-suggestions/models/suggestion.model';
import { WorkspaceitemDataService } from '../../core/submission/workspaceitem-data.service';
import { TranslateService } from '@ngx-translate/core';
import { NoContent } from '../../core/shared/NoContent.model';
import { environment } from '../../../environments/environment';
import { WorkspaceItem } from '../../core/submission/models/workspaceitem.model';
import {FindListOptions} from '../../core/data/find-list-options.model';
import {SuggestionConfig} from '../../../config/layout-config.interfaces';
import { ResearcherProfileDataService } from '../../core/profile/researcher-profile-data.service';
import {
SuggestionSourceDataService
} from '../../core/notifications/reciter-suggestions/source/suggestion-source-data.service';
import {
SuggestionTargetDataService
} from '../../core/notifications/reciter-suggestions/target/suggestion-target-data.service';
import {
SuggestionsDataService
} from '../../core/notifications/reciter-suggestions/suggestions-data.service';
========
} from '../core/shared/operators';
import { Suggestion } from '../core/suggestion-notifications/models/suggestion.model';
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
import { TranslateService } from '@ngx-translate/core';
import { NoContent } from '../core/shared/NoContent.model';
import { environment } from '../../environments/environment';
import { WorkspaceItem } from '../core/submission/models/workspaceitem.model';
import {FindListOptions} from '../core/data/find-list-options.model';
import {SuggestionConfig} from '../../config/suggestion-config.interfaces';
import { RemoteData } from '../core/data/remote-data';
import { SuggestionTarget } from '../core/notifications/models/suggestion-target.model';
import { SuggestionsDataService } from '../core/notifications/suggestions-data.service';
import { SuggestionTargetDataService } from '../core/notifications/target/suggestion-target-data.service';
import { ResearcherProfileDataService } from '../core/profile/researcher-profile-data.service';
import {
SuggestionTargetDataService
} from '../core/suggestion-notifications/target/suggestion-target-data.service';
import {
SuggestionsDataService
} from '../core/suggestion-notifications/suggestions-data.service';
import { NoContent } from '../core/shared/NoContent.model';
import { getFirstSucceededRemoteListPayload, getFirstSucceededRemoteDataPayload, getAllSucceededRemoteDataPayload, getFinishedRemoteData } from '../core/shared/operators';
import { getSuggestionPageRoute } from '../suggestions-page/suggestions-page-routing-paths';
>>>>>>>> main:src/app/notifications/suggestions.service.ts
import { environment } from '../../environments/environment';
import { SuggestionConfig } from '../../config/suggestion-config.interfaces';
import { Suggestion } from '../core/notifications/models/suggestion.model';
import { ResearcherProfile } from '../core/profile/model/researcher-profile.model';
import { hasValue, isNotEmpty } from '../shared/empty.util';
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
import { WorkspaceItem } from '../core/submission/models/workspaceitem.model';
/**
* useful for multiple approvals and ignores operation

View File

@@ -6,7 +6,7 @@ import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.reso
import { I18nBreadcrumbsService } from '../core/breadcrumbs/i18n-breadcrumbs.service';
import { NOTIFICATIONS_RECITER_SUGGESTION_PATH } from './notifications-pages-routing-paths';
import { NotificationsSuggestionTargetsPageComponent } from './notifications-suggestion-targets-page/notifications-suggestion-targets-page.component';
import { NotificationsSuggestionTargetsPageResolver } from './notifications-suggestion-targets-page/notifications-suggestion-targets-page-resolver.service';
import { AdminNotificationsPublicationClaimPageResolver } from './notifications-suggestion-targets-page/notifications-suggestion-targets-page-resolver.service';
import { QUALITY_ASSURANCE_EDIT_PATH } from './notifications-pages-routing-paths';
import { QualityAssuranceTopicsPageComponent } from './quality-assurance-topics-page/quality-assurance-topics-page.component';
import { QualityAssuranceEventsPageComponent } from './quality-assurance-events-page/quality-assurance-events-page.component';
@@ -30,7 +30,7 @@ import {
pathMatch: 'full',
resolve: {
breadcrumb: I18nBreadcrumbResolver,
reciterSuggestionTargetParams: NotificationsSuggestionTargetsPageResolver
reciterSuggestionTargetParams: AdminNotificationsPublicationClaimPageResolver
},
data: {
title: 'admin.notifications.recitersuggestion.page.title',
@@ -104,7 +104,7 @@ import {
providers: [
I18nBreadcrumbResolver,
I18nBreadcrumbsService,
NotificationsSuggestionTargetsPageResolver,
AdminNotificationsPublicationClaimPageResolver,
SourceDataResolver,
QualityAssuranceSourcePageResolver,
QualityAssuranceTopicsPageResolver,

View File

@@ -4,11 +4,8 @@ import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/r
/**
* Interface for the route parameters.
*/
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page-resolver.service.ts
export interface NotificationsSuggestionTargetsPageParams {
========
export interface AdminNotificationsPublicationClaimPageParams {
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page-resolver.service.ts
pageId?: string;
pageSize?: number;
currentPage?: number;
@@ -18,11 +15,8 @@ export interface AdminNotificationsPublicationClaimPageParams {
* This class represents a resolver that retrieve the route data before the route is activated.
*/
@Injectable()
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page-resolver.service.ts
export class NotificationsSuggestionTargetsPageResolver implements Resolve<NotificationsSuggestionTargetsPageParams> {
========
export class AdminNotificationsPublicationClaimPageResolver implements Resolve<AdminNotificationsPublicationClaimPageParams> {
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page-resolver.service.ts
/**
* Method for resolving the parameters in the current route.
@@ -30,11 +24,8 @@ export class AdminNotificationsPublicationClaimPageResolver implements Resolve<A
* @param {RouterStateSnapshot} state The current RouterStateSnapshot
* @returns AdminNotificationsSuggestionTargetsPageParams Emits the route parameters
*/
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page-resolver.service.ts
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): NotificationsSuggestionTargetsPageParams {
========
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): AdminNotificationsPublicationClaimPageParams {
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page-resolver.service.ts
return {
pageId: route.queryParams.pageId,
pageSize: parseInt(route.queryParams.pageSize, 10),

View File

@@ -1 +1 @@
<ds-suggestion-target [source]="'oaire'"></ds-suggestion-target>
<ds-publication-claim [source]="'oaire'"></ds-publication-claim>

View File

@@ -1,23 +1,16 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page.component.spec.ts
import { NotificationsSuggestionTargetsPageComponent } from './notifications-suggestion-targets-page.component';
========
import { AdminNotificationsPublicationClaimPageComponent } from './admin-notifications-publication-claim-page.component';
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page.component.spec.ts
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import {
AdminNotificationsPublicationClaimPageComponent
} from '../../admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page.component';
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page.component.spec.ts
describe('NotificationsSuggestionTargetsPageComponent', () => {
let component: NotificationsSuggestionTargetsPageComponent;
let fixture: ComponentFixture<NotificationsSuggestionTargetsPageComponent>;
========
describe('AdminNotificationsPublicationClaimPageComponent', () => {
let component: AdminNotificationsPublicationClaimPageComponent;
let fixture: ComponentFixture<AdminNotificationsPublicationClaimPageComponent>;
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page.component.spec.ts
beforeEach(async(() => {
TestBed.configureTestingModule({
@@ -26,29 +19,18 @@ describe('AdminNotificationsPublicationClaimPageComponent', () => {
TranslateModule.forRoot()
],
declarations: [
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page.component.spec.ts
NotificationsSuggestionTargetsPageComponent
],
providers: [
NotificationsSuggestionTargetsPageComponent
========
AdminNotificationsPublicationClaimPageComponent
],
providers: [
AdminNotificationsPublicationClaimPageComponent
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page.component.spec.ts
],
schemas: [NO_ERRORS_SCHEMA]
})
.compileComponents();
}));
beforeEach(() => {
<<<<<<<< HEAD:src/app/quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page.component.spec.ts
fixture = TestBed.createComponent(NotificationsSuggestionTargetsPageComponent);
========
fixture = TestBed.createComponent(AdminNotificationsPublicationClaimPageComponent);
>>>>>>>> main:src/app/admin/admin-notifications/admin-notifications-publication-claim-page/admin-notifications-publication-claim-page.component.spec.ts
component = fixture.componentInstance;
fixture.detectChanges();
});

View File

@@ -1,5 +1,5 @@
import { ResourceType } from '../../core/shared/resource-type';
import { SuggestionTarget } from '../../core/suggestion-notifications/models/suggestion-target.model';
import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model';
// REST Mock ---------------------------------------------------------------------
// -------------------------------------------------------------------------------

View File

@@ -2,8 +2,9 @@
// REST Mock ---------------------------------------------------------------------
// -------------------------------------------------------------------------------
import { Suggestion } from '../../core/suggestion-notifications/models/suggestion.model';
import { SUGGESTION } from '../../core/suggestion-notifications/models/suggestion-objects.resource-type';
import { Suggestion } from '../../core/notifications/models/suggestion.model';
import { SUGGESTION } from '../../core/notifications/models/suggestion-objects.resource-type';
export const mockSuggestionPublicationOne: Suggestion = {
id: '24694773',

View File

@@ -1,13 +1,9 @@
import {createFeatureSelector, createSelector, MemoizedSelector} from '@ngrx/store';
<<<<<<<< HEAD:src/app/notifications/reciter-suggestions/selectors.ts
import { suggestionNotificationsSelector, SuggestionNotificationsState } from '../notifications.reducer';
import { SuggestionTarget } from '../../core/notifications/reciter-suggestions/models/suggestion-target.model';
========
import { suggestionNotificationsSelector, SuggestionNotificationsState } from '../notifications/notifications.reducer';
import { SuggestionTarget } from '../core/suggestion-notifications/models/suggestion-target.model';
>>>>>>>> main:src/app/suggestion-notifications/selectors.ts
import { SuggestionTargetState } from './suggestion-targets/suggestion-targets.reducer';
import {subStateSelector} from '../submission/selectors';
import { SuggestionTargetState } from '../notifications/suggestion-targets/suggestion-targets.reducer';
import { SuggestionTarget } from '../core/notifications/models/suggestion-target.model';
/**
* Returns the Reciter Suggestion Target state.

View File

@@ -7,14 +7,9 @@ import { TranslateModule, TranslateService } from '@ngx-translate/core';
import { of as observableOf } from 'rxjs';
import { SuggestionsPageComponent } from './suggestions-page.component';
import {
SuggestionApproveAndImport,
SuggestionListElementComponent
} from '../suggestion-notifications/suggestion-list-element/suggestion-list-element.component';
import { SuggestionsService } from '../suggestion-notifications/suggestions.service';
import { getMockSuggestionNotificationsStateService, getMockSuggestionsService } from '../shared/mocks/suggestion.mock';
import { mockSuggestionPublicationOne, mockSuggestionPublicationTwo } from '../shared/mocks/publication-claim.mock';
import { SuggestionEvidencesComponent } from '../suggestion-notifications/suggestion-list-element/suggestion-evidences/suggestion-evidences.component';
import { ObjectKeysPipe } from '../shared/utils/object-keys-pipe';
import { VarDirective } from '../shared/utils/var.directive';
import { ActivatedRoute, Router } from '@angular/router';
@@ -24,13 +19,21 @@ import { AuthService } from '../core/auth/auth.service';
import { NotificationsService } from '../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../shared/testing/notifications-service.stub';
import { getMockTranslateService } from '../shared/mocks/translate.service.mock';
import { SuggestionTargetsStateService } from '../suggestion-notifications/suggestion-targets/suggestion-targets.state.service';
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
import { createSuccessfulRemoteDataObject } from '../shared/remote-data.utils';
import { TestScheduler } from 'rxjs/testing';
import { getTestScheduler } from 'jasmine-marbles';
import { PaginationServiceStub } from '../shared/testing/pagination-service.stub';
import { PaginationService } from '../core/pagination/pagination.service';
import {
SuggestionEvidencesComponent
} from '../notifications/suggestion-list-element/suggestion-evidences/suggestion-evidences.component';
import {
SuggestionApproveAndImport,
SuggestionListElementComponent
} from '../notifications/suggestion-list-element/suggestion-list-element.component';
import { SuggestionsService } from '../notifications/suggestions.service';
import { SuggestionTargetsStateService } from '../notifications/suggestion-targets/suggestion-targets.state.service';
describe('SuggestionPageComponent', () => {
let component: SuggestionsPageComponent;

View File

@@ -9,14 +9,9 @@ import { SortDirection, SortOptions, } from '../core/cache/models/sort-options.m
import { PaginatedList } from '../core/data/paginated-list.model';
import { RemoteData } from '../core/data/remote-data';
import { getFirstSucceededRemoteDataPayload } from '../core/shared/operators';
import { SuggestionBulkResult, SuggestionsService } from '../suggestion-notifications/suggestions.service';
import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model';
import { Suggestion } from '../core/suggestion-notifications/models/suggestion.model';
import { SuggestionTarget } from '../core/suggestion-notifications/models/suggestion-target.model';
import { AuthService } from '../core/auth/auth.service';
import { SuggestionApproveAndImport } from '../suggestion-notifications/suggestion-list-element/suggestion-list-element.component';
import { NotificationsService } from '../shared/notifications/notifications.service';
import { SuggestionTargetsStateService } from '../suggestion-notifications/suggestion-targets/suggestion-targets.state.service';
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
import { PaginationService } from '../core/pagination/pagination.service';
import { WorkspaceItem } from '../core/submission/models/workspaceitem.model';
@@ -25,6 +20,11 @@ import {redirectOn4xx} from '../core/shared/authorized.operators';
import {
getWorkspaceItemEditRoute
} from '../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
import { Suggestion } from '../core/notifications/models/suggestion.model';
import { SuggestionTarget } from '../core/notifications/models/suggestion-target.model';
import { SuggestionBulkResult, SuggestionsService } from '../notifications/suggestions.service';
import { SuggestionTargetsStateService } from '../notifications/suggestion-targets/suggestion-targets.state.service';
import { SuggestionApproveAndImport } from '../notifications/suggestion-list-element/suggestion-list-element.component';
@Component({
selector: 'ds-suggestion-page',

View File

@@ -4,9 +4,9 @@ import { CommonModule } from '@angular/common';
import { SuggestionsPageComponent } from './suggestions-page.component';
import { SharedModule } from '../shared/shared.module';
import { SuggestionsPageRoutingModule } from './suggestions-page-routing.module';
import { SuggestionsService } from '../suggestion-notifications/suggestions.service';
import { SuggestionsDataService } from '../core/suggestion-notifications/suggestions-data.service';
import { NotificationsModule } from '../notifications/notifications.module';
import { SuggestionsDataService } from '../core/notifications/suggestions-data.service';
import { SuggestionsService } from '../notifications/suggestions.service';
@NgModule({
declarations: [SuggestionsPageComponent],

View File

@@ -6,10 +6,9 @@ import { find } from 'rxjs/operators';
import { RemoteData } from '../core/data/remote-data';
import { hasValue } from '../shared/empty.util';
import { SuggestionTarget } from '../core/suggestion-notifications/models/suggestion-target.model';
import {
SuggestionTargetDataService
} from '../core/suggestion-notifications/target/suggestion-target-data.service';
import { SuggestionTarget } from '../core/notifications/models/suggestion-target.model';
import { SuggestionTargetDataService } from '../core/notifications/target/suggestion-target-data.service';
/**
* This class represents a resolver that requests a specific collection before the route is activated

View File

@@ -5639,4 +5639,332 @@
"admin.notifications.publicationclaim.breadcrumbs": "Publication Claim",
"admin.notifications.publicationclaim.page.title": "Publication Claim",
"coar-notify-support.title": "COAR Notify Protocol",
"coar-notify-support-title.content": "Here, we fully support the COAR Notify protocol, which is designed to enhance the communication between repositories. To learn more about the COAR Notify protocol, you can visit their official website <a href=\"https://notify.coar-repositories.org/\">here</a>.",
"coar-notify-support.ldn-inbox.title": "LDN InBox",
"coar-notify-support.ldn-inbox.content": "For your convenience, our LDN (Linked Data Notifications) InBox is easily accessible at {ldnInboxUrl}. The LDN InBox enables seamless communication and data exchange, ensuring efficient and effective collaboration.",
"coar-notify-support.message-moderation.title": "Message Moderation",
"coar-notify-support.message-moderation.content": "To ensure a secure and productive environment, all incoming LDN messages are moderated. If you are planning to exchange information with us, kindly reach out via our dedicated Feedback form. You can access the Feedback form by clicking <a href=\"info/feedback\">here</a>.",
"service.overview.delete.header": "Delete Service",
"ldn-registered-services.title": "Registered Services",
"ldn-registered-services.table.name": "Name",
"ldn-registered-services.table.description": "Description",
"ldn-registered-services.table.status": "Status",
"ldn-registered-services.table.action": "Action",
"ldn-registered-services.new": "NEW",
"ldn-registered-services.new.breadcrumbs": "Registered Services",
"ldn-service.overview.table.enabled": "Enabled",
"ldn-service.overview.table.disabled": "Disabled",
"ldn-service.overview.table.clickToEnable": "Click to enable",
"ldn-service.overview.table.clickToDisable": "Click to disable",
"ldn-edit-registered-service.title": "Edit Service",
"ldn-create-service.title": "Create service",
"service.overview.create.modal": "Create Service",
"service.overview.create.body": "Please confirm the creation of this service.",
"ldn-service-status": "Status",
"service.confirm.create": "Create",
"service.refuse.create": "Cancel",
"ldn-register-new-service.title": "Register a new service",
"ldn-new-service.form.label.submit": "Save",
"ldn-new-service.form.label.name": "Name",
"ldn-new-service.form.label.description": "Description",
"ldn-new-service.form.label.url": "Service URL",
"ldn-new-service.form.label.ip-range": "Service IP range",
"ldn-new-service.form.label.score": "Level of trust",
"ldn-new-service.form.label.ldnUrl": "LDN Inbox URL",
"ldn-new-service.form.placeholder.name": "Please provide service name",
"ldn-new-service.form.placeholder.description": "Please provide a description regarding your service",
"ldn-new-service.form.placeholder.url": "Please input the URL for users to check out more information about the service",
"ldn-new-service.form.placeholder.lowerIp": "IPv4 range lower bound",
"ldn-new-service.form.placeholder.upperIp": "IPv4 range upper bound",
"ldn-new-service.form.placeholder.ldnUrl": "Please specify the URL of the LDN Inbox",
"ldn-new-service.form.placeholder.score": "Please enter a value between 0 and 1. Use the “.” as decimal separator",
"ldn-service.form.label.placeholder.default-select": "Select a pattern",
"ldn-service.form.pattern.ack-accept.label": "Acknowledge and Accept",
"ldn-service.form.pattern.ack-accept.description": "This pattern is used to acknowledge and accept a request (offer). It implies an intention to act on the request.",
"ldn-service.form.pattern.ack-accept.category": "Acknowledgements",
"ldn-service.form.pattern.ack-reject.label": "Acknowledge and Reject",
"ldn-service.form.pattern.ack-reject.description": "This pattern is used to acknowledge and reject a request (offer). It signifies no further action regarding the request.",
"ldn-service.form.pattern.ack-reject.category": "Acknowledgements",
"ldn-service.form.pattern.ack-tentative-accept.label": "Acknowledge and Tentatively Accept",
"ldn-service.form.pattern.ack-tentative-accept.description": "This pattern is used to acknowledge and tentatively accept a request (offer). It implies an intention to act, which may change.",
"ldn-service.form.pattern.ack-tentative-accept.category": "Acknowledgements",
"ldn-service.form.pattern.ack-tentative-reject.label": "Acknowledge and Tentatively Reject",
"ldn-service.form.pattern.ack-tentative-reject.description": "This pattern is used to acknowledge and tentatively reject a request (offer). It signifies no further action, subject to change.",
"ldn-service.form.pattern.ack-tentative-reject.category": "Acknowledgements",
"ldn-service.form.pattern.announce-endorsement.label": "Announce Endorsement",
"ldn-service.form.pattern.announce-endorsement.description": "This pattern is used to announce the existence of an endorsement, referencing the endorsed resource.",
"ldn-service.form.pattern.announce-endorsement.category": "Announcements",
"ldn-service.form.pattern.announce-ingest.label": "Announce Ingest",
"ldn-service.form.pattern.announce-ingest.description": "This pattern is used to announce that a resource has been ingested.",
"ldn-service.form.pattern.announce-ingest.category": "Announcements",
"ldn-service.form.pattern.announce-relationship.label": "Announce Relationship",
"ldn-service.form.pattern.announce-relationship.description": "This pattern is used to announce a relationship between two resources.",
"ldn-service.form.pattern.announce-relationship.category": "Announcements",
"ldn-service.form.pattern.announce-review.label": "Announce Review",
"ldn-service.form.pattern.announce-review.description": "This pattern is used to announce the existence of a review, referencing the reviewed resource.",
"ldn-service.form.pattern.announce-review.category": "Announcements",
"ldn-service.form.pattern.announce-service-result.label": "Announce Service Result",
"ldn-service.form.pattern.announce-service-result.description": "This pattern is used to announce the existence of a 'service result', referencing the relevant resource.",
"ldn-service.form.pattern.announce-service-result.category": "Announcements",
"ldn-service.form.pattern.request-endorsement.label": "Request Endorsement",
"ldn-service.form.pattern.request-endorsement.description": "This pattern is used to request endorsement of a resource owned by the origin system.",
"ldn-service.form.pattern.request-endorsement.category": "Requests",
"ldn-service.form.pattern.request-ingest.label": "Request Ingest",
"ldn-service.form.pattern.request-ingest.description": "This pattern is used to request that the target system ingest a resource.",
"ldn-service.form.pattern.request-ingest.category": "Requests",
"ldn-service.form.pattern.request-review.label": "Request Review",
"ldn-service.form.pattern.request-review.description": "This pattern is used to request a review of a resource owned by the origin system.",
"ldn-service.form.pattern.request-review.category": "Requests",
"ldn-service.form.pattern.undo-offer.label": "Undo Offer",
"ldn-service.form.pattern.undo-offer.description": "This pattern is used to undo (retract) an offer previously made.",
"ldn-service.form.pattern.undo-offer.category": "Undo",
"ldn-new-service.form.label.placeholder.selectedItemFilter": "No Item Filter Selected",
"ldn-new-service.form.label.ItemFilter": "Item Filter",
"ldn-new-service.form.label.automatic": "Automatic",
"ldn-new-service.form.error.name": "Name is required",
"ldn-new-service.form.error.url": "URL is required",
"ldn-new-service.form.error.ipRange": "Please enter a valid IP range",
"ldn-new-service.form.hint.ipRange": "Please enter a valid IpV4 in both range bounds (note: for single IP, please enter the same value in both fields)",
"ldn-new-service.form.error.ldnurl": "LDN URL is required",
"ldn-new-service.form.error.patterns": "At least a pattern is required",
"ldn-new-service.form.error.score": "Please enter a valid score (between 0 and 1). Use the “.” as decimal separator",
"ldn-new-service.form.label.inboundPattern": "Inbound Pattern",
"ldn-new-service.form.label.addPattern": "+ Add more",
"ldn-new-service.form.label.removeItemFilter": "Remove",
"ldn-register-new-service.breadcrumbs": "New Service",
"service.overview.delete.body": "Are you sure you want to delete this service?",
"service.overview.edit.body": "Do you confirm the changes?",
"service.overview.edit.modal": "Edit Service",
"service.detail.update": "Confirm",
"service.detail.return": "Cancel",
"service.overview.reset-form.body": "Are you sure you want to discard the changes and leave?",
"service.overview.reset-form.modal": "Discard Changes",
"service.overview.reset-form.reset-confirm": "Discard",
"admin.registries.services-formats.modify.success.head": "Successful Edit",
"admin.registries.services-formats.modify.success.content": "The service has been edited",
"admin.registries.services-formats.modify.failure.head": "Failed Edit",
"admin.registries.services-formats.modify.failure.content": "The service has not been edited",
"ldn-service-notification.created.success.title": "Successful Create",
"ldn-service-notification.created.success.body": "The service has been created",
"ldn-service-notification.created.failure.title": "Failed Create",
"ldn-service-notification.created.failure.body": "The service has not been created",
"ldn-service-notification.created.warning.title": "Please select at least one Inbound Pattern",
"ldn-enable-service.notification.success.title": "Successful status updated",
"ldn-enable-service.notification.success.content": "The service status has been updated",
"ldn-service-delete.notification.success.title": "Successful Deletion",
"ldn-service-delete.notification.success.content": "The service has been deleted",
"ldn-service-delete.notification.error.title": "Failed Deletion",
"ldn-service-delete.notification.error.content": "The service has not been deleted",
"service.overview.reset-form.reset-return": "Cancel",
"service.overview.delete": "Delete service",
"ldn-edit-service.title": "Edit service",
"ldn-edit-service.form.label.name": "Name",
"ldn-edit-service.form.label.description": "Description",
"ldn-edit-service.form.label.url": "Service URL",
"ldn-edit-service.form.label.ldnUrl": "LDN Inbox URL",
"ldn-edit-service.form.label.inboundPattern": "Inbound Pattern",
"ldn-edit-service.form.label.noInboundPatternSelected": "No Inbound Pattern",
"ldn-edit-service.form.label.selectedItemFilter": "Selected Item Filter",
"ldn-edit-service.form.label.selectItemFilter": "No Item Filter",
"ldn-edit-service.form.label.automatic": "Automatic",
"ldn-edit-service.form.label.addInboundPattern": "+ Add more",
"ldn-edit-service.form.label.submit": "Save",
"ldn-edit-service.breadcrumbs": "Edit Service",
"ldn-service.control-constaint-select-none": "Select none",
"ldn-register-new-service.notification.error.title": "Error",
"ldn-register-new-service.notification.error.content": "An error occurred while creating this process",
"ldn-register-new-service.notification.success.title": "Success",
"ldn-register-new-service.notification.success.content": "The process was successfully created",
"info.coar-notify-support.title": "Notify Support",
"info.coar-notify.breadcrumbs": "Notify Support",
"submission.sections.notify.info": "The selected service is compatible with the item according to its current status. {{ service.name }}: {{ service.description }}",
"item.qa-event-notification.check.notification-info": "There are {{num}} pending review to check",
"item.qa-event-notification-info.check.button": "Check",
"mydspace.qa-event-notification.check.notification-info": "There are {{num}} pending review to check",
"mydspace.qa-event-notification-info.check.button": "Check",
"item.page.endorsed-by": "Endorsement",
"item.page.is-reviewed-by": "Review",
"item.page.is-supplemented-by": "Dataset",
"item.page.endorsment": "Endorsment",
"item.page.review": "Review",
"item.page.dataset": "Dataset",
"menu.section.icon.ldn_services": "LDN Services overview",
"menu.section.services": "LDN Services",
"menu.section.services_new": "LDN Service",
"mydspace.import": "Import",
"mydspace.notification.suggestion": "We found <b>{{count}} publications</b><br> in the {{source}} that seems to be related to your profile.<br> Please <a href='/suggestions/{{suggestionId}}'>review the suggestions</a>",
"mydspace.notification.suggestion.page": "We found <b>{{count}} {{type}}</b> in the {{source}} that seems to be related to your profile. Please <a href='/suggestions/{{suggestionId}}'>review the suggestions.</a>",
"quality-assurance.topics.description-with-target": "Below you can see all the topics received from the subscriptions to {{source}} in regards to the",
"quality-assurance.events.description": "Below the list of all the suggestions for the selected topic <b>{{topic}}</b>, related to <b>{{source}}</b>.",
"quality-assurance.events.description-with-topic-and-target": "Below the list of all the suggestions for the selected topic <b>{{topic}}</b>, related to <b>{{source}}</b> and ",
"quality-assurance.event.table.event.message.serviceUrl": "Service URL:",
"quality-assurance.event.table.event.message.link": "Link:",
"service.detail.delete.cancel": "Cancel",
"service.detail.delete.button": "Delete service",
"service.detail.delete.header": "Delete service",
"service.detail.delete.body": "Are you sure you want to delete the current service?",
"service.detail.delete.confirm": "Delete service",
"service.detail.delete.success": "The service was successfully deleted.",
"service.detail.delete.error": "Something went wrong when deleting the service",
"service.overview.table.id": "Services ID",
"service.overview.table.name": "Name",
"service.overview.table.start": "Start time (UTC)",
"service.overview.table.status": "Status",
"service.overview.table.user": "User",
"service.overview.title": "Services Overview",
"service.overview.breadcrumbs": "Services Overview",
"service.overview.table.actions": "Actions",
"service.overview.table.description": "Description",
"reciter.suggestion.loading": "Loading ...",
"reciter.suggestion.title": "Suggestions",
"reciter.suggestion.targets.description": "Below you can see all the suggestions ",
"reciter.suggestion.targets": "Current Suggestions",
"reciter.suggestion.table.name": "Researcher Name",
"reciter.suggestion.table.actions": "Actions",
"reciter.suggestion.button.review": "Review {{ total }} suggestion(s)",
"reciter.suggestion.noTargets": "No target found.",
"reciter.suggestion.target.error.service.retrieve": "An error occurred while loading the Suggestion targets",
"reciter.suggestion.evidence.type": "Type",
"reciter.suggestion.evidence.score": "Score",
"reciter.suggestion.evidence.notes": "Notes",
"reciter.suggestion.approveAndImport": "Approve & import",
"reciter.suggestion.approveAndImport.success": "The suggestion has been imported successfully. <a href='/workspaceitems/{{workspaceItemId}}/edit'>View.</a>",
"reciter.suggestion.approveAndImport.bulk": "Approve & import Selected",
"reciter.suggestion.approveAndImport.bulk.success": "{{ count }} suggestions have been imported successfully ",
"reciter.suggestion.approveAndImport.bulk.error": "{{ count }} suggestions haven't been imported due to unexpected server errors",
"reciter.suggestion.notMine": "Not mine",
"reciter.suggestion.notMine.success": "The suggestion has been discarded",
"reciter.suggestion.notMine.bulk": "Not mine Selected",
"reciter.suggestion.notMine.bulk.success": "{{ count }} suggestions have been discarded ",
"reciter.suggestion.notMine.bulk.error": "{{ count }} suggestions haven't been discarded due to unexpected server errors",
"reciter.suggestion.seeEvidence": "See evidence",
"reciter.suggestion.hideEvidence": "Hide evidence",
"reciter.suggestion.suggestionFor": "Suggestion for",
"reciter.suggestion.source.oaire": "OpenAIRE Graph",
"reciter.suggestion.from.source": "from the ",
"reciter.suggestion.totalScore": "Total Score",
"reciter.suggestion.type.oaire": "OpenAIRE",
"submission.sections.submit.progressbar.coarnotify": "COAR Notify",
"submission.section.section-coar-notify.control.request-review.label": "You can request a review to one of the following services",
"submission.section.section-coar-notify.control.request-endorsement.label": "You can request an Endorsement to one of the following overlay journals",
"submission.section.section-coar-notify.control.request-ingest.label": "You can request to ingest a copy of your submission to one of the following services",
"submission.section.section-coar-notify.dropdown.no-data": "No data available",
"submission.section.section-coar-notify.dropdown.select-none": "Select none",
"submission.section.section-coar-notify.small.notification": "Select a service for {{ pattern }} of this item",
"submission.section.section-coar-notify.selection.description": "Selected service's description:",
"submission.section.section-coar-notify.selection.no-description": "No further information is available",
"submission.section.section-coar-notify.notification.error": "The selected service is not suitable for the current item. Please check the description for details about which record can be managed by this service.",
"submission.section.section-coar-notify.info.no-pattern": "No patterns found in the submission.",
"error.validation.coarnotify.invalidfilter": "Invalid filter, try to select another service or none.",
"request-status-alert-box.accepted": "The requested {{ offerType }} for <a href='{{serviceUrl}}' target='_blank'> {{ serviceName }} </a> has been taken in charge.",
"request-status-alert-box.rejected": "The requested {{ offerType }} for <a href='{{serviceUrl}}' target='_blank'> {{ serviceName }} </a> has been rejected.",
"request-status-alert-box.requested": "The requested {{ offerType }} for <a href='{{serviceUrl}}' target='_blank'> {{ serviceName }} </a> is pending.",
}

View File

@@ -324,6 +324,4 @@ export const environment: BuildConfig = {
enabled: true
}
],
suggestion: []
};