mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-14 21:43:04 +00:00
feat: migrate everything to standalone and fix build errors
This commit is contained in:
@@ -9,25 +9,23 @@ describe('AdvancedWorkflowActionPageComponent', () => {
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [
|
||||
imports: [
|
||||
TranslateModule.forRoot(),
|
||||
],
|
||||
declarations: [
|
||||
AdvancedWorkflowActionPageComponent,
|
||||
],
|
||||
providers: [
|
||||
AdvancedWorkflowActionPageComponent
|
||||
],
|
||||
providers: [
|
||||
{
|
||||
provide: ActivatedRoute,
|
||||
useValue: {
|
||||
snapshot: {
|
||||
queryParams: {
|
||||
workflow: 'testaction',
|
||||
},
|
||||
provide: ActivatedRoute,
|
||||
useValue: {
|
||||
snapshot: {
|
||||
queryParams: {
|
||||
workflow: 'testaction',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
}).compileComponents();
|
||||
]
|
||||
}).compileComponents();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
|
@@ -1,5 +1,9 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import {
|
||||
AdvancedWorkflowActionsLoaderComponent
|
||||
} from '../advanced-workflow-actions-loader/advanced-workflow-actions-loader.component';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
|
||||
/**
|
||||
* The Advanced Workflow page containing the correct {@link AdvancedWorkflowActionComponent}
|
||||
@@ -8,7 +12,12 @@ import { ActivatedRoute } from '@angular/router';
|
||||
@Component({
|
||||
selector: 'ds-advanced-workflow-action-page',
|
||||
templateUrl: './advanced-workflow-action-page.component.html',
|
||||
styleUrls: ['./advanced-workflow-action-page.component.scss']
|
||||
styleUrls: ['./advanced-workflow-action-page.component.scss'],
|
||||
imports: [
|
||||
AdvancedWorkflowActionsLoaderComponent,
|
||||
TranslateModule
|
||||
],
|
||||
standalone: true
|
||||
})
|
||||
export class AdvancedWorkflowActionPageComponent implements OnInit {
|
||||
|
||||
|
@@ -52,31 +52,29 @@ describe('AdvancedWorkflowActionRatingComponent', () => {
|
||||
workflowItemDataService = new WorkflowItemDataServiceStub();
|
||||
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [
|
||||
imports: [
|
||||
FormsModule,
|
||||
NgbModule,
|
||||
ReactiveFormsModule,
|
||||
TranslateModule.forRoot(),
|
||||
],
|
||||
declarations: [
|
||||
AdvancedWorkflowActionRatingComponent,
|
||||
VarDirective,
|
||||
],
|
||||
providers: [
|
||||
VarDirective
|
||||
],
|
||||
providers: [
|
||||
{
|
||||
provide: ActivatedRoute,
|
||||
useValue: {
|
||||
data: observableOf({
|
||||
id: workflowId,
|
||||
wfi: createSuccessfulRemoteDataObject(workflowItem),
|
||||
}),
|
||||
snapshot: {
|
||||
queryParams: {
|
||||
claimedTask: claimedTaskId,
|
||||
workflow: 'testaction',
|
||||
},
|
||||
provide: ActivatedRoute,
|
||||
useValue: {
|
||||
data: observableOf({
|
||||
id: workflowId,
|
||||
wfi: createSuccessfulRemoteDataObject(workflowItem),
|
||||
}),
|
||||
snapshot: {
|
||||
queryParams: {
|
||||
claimedTask: claimedTaskId,
|
||||
workflow: 'testaction',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{ provide: ClaimedTaskDataService, useValue: claimedTaskDataService },
|
||||
{ provide: Location, useValue: new LocationStub() },
|
||||
@@ -86,9 +84,9 @@ describe('AdvancedWorkflowActionRatingComponent', () => {
|
||||
{ provide: WorkflowActionDataService, useValue: workflowActionDataService },
|
||||
{ provide: WorkflowItemDataService, useValue: workflowItemDataService },
|
||||
{ provide: RequestService, useClass: RequestServiceStub },
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA],
|
||||
}).compileComponents();
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
}).compileComponents();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
|
@@ -3,9 +3,16 @@ import {
|
||||
rendersAdvancedWorkflowTaskOption
|
||||
} from '../../../shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator';
|
||||
import { AdvancedWorkflowActionComponent } from '../advanced-workflow-action/advanced-workflow-action.component';
|
||||
import { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';
|
||||
import { UntypedFormGroup, UntypedFormControl, Validators, ReactiveFormsModule } from '@angular/forms';
|
||||
import { WorkflowAction } from '../../../core/tasks/models/workflow-action-object.model';
|
||||
import { RatingAdvancedWorkflowInfo } from '../../../core/tasks/models/rating-advanced-workflow-info.model';
|
||||
import {
|
||||
ModifyItemOverviewComponent
|
||||
} from '../../../item-page/edit-item-page/modify-item-overview/modify-item-overview.component';
|
||||
import { AsyncPipe, NgClass, NgIf } from '@angular/common';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { NgbRatingModule } from '@ng-bootstrap/ng-bootstrap';
|
||||
import { VarDirective } from '../../../shared/utils/var.directive';
|
||||
|
||||
export const ADVANCED_WORKFLOW_TASK_OPTION_RATING = 'submit_score';
|
||||
export const ADVANCED_WORKFLOW_ACTION_RATING = 'scorereviewaction';
|
||||
@@ -19,6 +26,17 @@ export const ADVANCED_WORKFLOW_ACTION_RATING = 'scorereviewaction';
|
||||
templateUrl: './advanced-workflow-action-rating.component.html',
|
||||
styleUrls: ['./advanced-workflow-action-rating.component.scss'],
|
||||
preserveWhitespaces: false,
|
||||
imports: [
|
||||
ModifyItemOverviewComponent,
|
||||
NgIf,
|
||||
AsyncPipe,
|
||||
TranslateModule,
|
||||
NgbRatingModule,
|
||||
NgClass,
|
||||
ReactiveFormsModule,
|
||||
VarDirective
|
||||
],
|
||||
standalone: true
|
||||
})
|
||||
export class AdvancedWorkflowActionRatingComponent extends AdvancedWorkflowActionComponent implements OnInit {
|
||||
|
||||
|
@@ -53,28 +53,26 @@ describe('AdvancedWorkflowActionSelectReviewerComponent', () => {
|
||||
workflowItemDataService = new WorkflowItemDataServiceStub();
|
||||
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [
|
||||
imports: [
|
||||
TranslateModule.forRoot(),
|
||||
],
|
||||
declarations: [
|
||||
AdvancedWorkflowActionSelectReviewerComponent,
|
||||
],
|
||||
providers: [
|
||||
AdvancedWorkflowActionSelectReviewerComponent
|
||||
],
|
||||
providers: [
|
||||
{
|
||||
provide: ActivatedRoute,
|
||||
useValue: {
|
||||
data: observableOf({
|
||||
id: workflowId,
|
||||
wfi: createSuccessfulRemoteDataObject(workflowItem),
|
||||
}),
|
||||
snapshot: {
|
||||
queryParams: {
|
||||
claimedTask: claimedTaskId,
|
||||
workflow: 'testaction',
|
||||
previousSearchQuery: 'Thor%20Love%20and%20Thunder',
|
||||
},
|
||||
provide: ActivatedRoute,
|
||||
useValue: {
|
||||
data: observableOf({
|
||||
id: workflowId,
|
||||
wfi: createSuccessfulRemoteDataObject(workflowItem),
|
||||
}),
|
||||
snapshot: {
|
||||
queryParams: {
|
||||
claimedTask: claimedTaskId,
|
||||
workflow: 'testaction',
|
||||
previousSearchQuery: 'Thor%20Love%20and%20Thunder',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{ provide: ClaimedTaskDataService, useValue: claimedTaskDataService },
|
||||
{ provide: Location, useValue: location },
|
||||
@@ -84,9 +82,9 @@ describe('AdvancedWorkflowActionSelectReviewerComponent', () => {
|
||||
{ provide: WorkflowActionDataService, useValue: workflowActionDataService },
|
||||
{ provide: WorkflowItemDataService, useValue: workflowItemDataService },
|
||||
{ provide: RequestService, useClass: RequestServiceStub },
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA],
|
||||
}).compileComponents();
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
}).compileComponents();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
||||
import { Location } from '@angular/common';
|
||||
import { Component, OnDestroy, OnInit } from '@angular/core';
|
||||
import { CommonModule, Location } from '@angular/common';
|
||||
import {
|
||||
rendersAdvancedWorkflowTaskOption
|
||||
} from '../../../shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator';
|
||||
@@ -17,11 +17,15 @@ import { ActivatedRoute, Params, Router } from '@angular/router';
|
||||
import { WorkflowItemDataService } from '../../../core/submission/workflowitem-data.service';
|
||||
import { RouteService } from '../../../core/services/route.service';
|
||||
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||
import { WorkflowActionDataService } from '../../../core/data/workflow-action-data.service';
|
||||
import { ClaimedTaskDataService } from '../../../core/tasks/claimed-task-data.service';
|
||||
import { RequestService } from '../../../core/data/request.service';
|
||||
import { hasValue } from '../../../shared/empty.util';
|
||||
import {
|
||||
ModifyItemOverviewComponent
|
||||
} from '../../../item-page/edit-item-page/modify-item-overview/modify-item-overview.component';
|
||||
import { ReviewersListComponent } from './reviewers-list/reviewers-list.component';
|
||||
|
||||
export const ADVANCED_WORKFLOW_TASK_OPTION_SELECT_REVIEWER = 'submit_select_reviewer';
|
||||
export const ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER = 'selectrevieweraction';
|
||||
@@ -34,6 +38,13 @@ export const ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER = 'selectrevieweraction';
|
||||
selector: 'ds-advanced-workflow-action-select-reviewer',
|
||||
templateUrl: './advanced-workflow-action-select-reviewer.component.html',
|
||||
styleUrls: ['./advanced-workflow-action-select-reviewer.component.scss'],
|
||||
imports: [
|
||||
CommonModule,
|
||||
ModifyItemOverviewComponent,
|
||||
TranslateModule,
|
||||
ReviewersListComponent,
|
||||
],
|
||||
standalone: true
|
||||
})
|
||||
export class AdvancedWorkflowActionSelectReviewerComponent extends AdvancedWorkflowActionComponent implements OnInit, OnDestroy {
|
||||
|
||||
|
@@ -136,25 +136,23 @@ describe('ReviewersListComponent', () => {
|
||||
|
||||
paginationService = new PaginationServiceStub();
|
||||
TestBed.configureTestingModule({
|
||||
imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule,
|
||||
imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule,
|
||||
TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useClass: TranslateLoaderMock
|
||||
}
|
||||
}),
|
||||
],
|
||||
declarations: [ReviewersListComponent],
|
||||
providers: [ReviewersListComponent,
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useClass: TranslateLoaderMock
|
||||
}
|
||||
}), ReviewersListComponent],
|
||||
providers: [ReviewersListComponent,
|
||||
{ provide: EPersonDataService, useValue: ePersonDataServiceStub },
|
||||
{ provide: GroupDataService, useValue: groupsDataServiceStub },
|
||||
{ provide: NotificationsService, useValue: new NotificationsServiceStub() },
|
||||
{ provide: FormBuilderService, useValue: builderService },
|
||||
{ provide: Router, useValue: new RouterMock() },
|
||||
{ provide: PaginationService, useValue: paginationService },
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
}).compileComponents();
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
}).compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import { Component, OnDestroy, OnInit, Input, OnChanges, SimpleChanges, EventEmitter, Output } from '@angular/core';
|
||||
import { UntypedFormBuilder } from '@angular/forms';
|
||||
import { Router } from '@angular/router';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';
|
||||
import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms';
|
||||
import { Router, RouterLink } from '@angular/router';
|
||||
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||
import { EPersonDataService } from '../../../../core/eperson/eperson-data.service';
|
||||
import { GroupDataService } from '../../../../core/eperson/group-data.service';
|
||||
import { NotificationsService } from '../../../../shared/notifications/notifications.service';
|
||||
@@ -14,10 +14,13 @@ import { Observable, of as observableOf } from 'rxjs';
|
||||
import { hasValue } from '../../../../shared/empty.util';
|
||||
import { PaginatedList } from '../../../../core/data/paginated-list.model';
|
||||
import {
|
||||
MembersListComponent,
|
||||
EPersonListActionConfig,
|
||||
MembersListComponent,
|
||||
} from '../../../../access-control/group-registry/group-form/members-list/members-list.component';
|
||||
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
|
||||
import { ContextHelpDirective } from '../../../../shared/context-help.directive';
|
||||
import { PaginationComponent } from '../../../../shared/pagination/pagination.component';
|
||||
import { AsyncPipe, NgClass, NgForOf, NgIf } from '@angular/common';
|
||||
|
||||
/**
|
||||
* Keys to keep track of specific subscriptions
|
||||
@@ -35,6 +38,18 @@ enum SubKey {
|
||||
selector: 'ds-reviewers-list',
|
||||
// templateUrl: './reviewers-list.component.html',
|
||||
templateUrl: '../../../../access-control/group-registry/group-form/members-list/members-list.component.html',
|
||||
standalone: true,
|
||||
imports: [
|
||||
TranslateModule,
|
||||
ContextHelpDirective,
|
||||
ReactiveFormsModule,
|
||||
PaginationComponent,
|
||||
NgIf,
|
||||
AsyncPipe,
|
||||
RouterLink,
|
||||
NgClass,
|
||||
NgForOf
|
||||
],
|
||||
})
|
||||
export class ReviewersListComponent extends MembersListComponent implements OnInit, OnChanges, OnDestroy {
|
||||
|
||||
|
@@ -43,27 +43,25 @@ describe('AdvancedWorkflowActionComponent', () => {
|
||||
workflowItemDataService = new WorkflowItemDataServiceStub();
|
||||
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [
|
||||
imports: [
|
||||
TranslateModule.forRoot(),
|
||||
RouterTestingModule,
|
||||
],
|
||||
declarations: [
|
||||
TestComponent,
|
||||
MockComponent(DSOSelectorComponent),
|
||||
],
|
||||
providers: [
|
||||
MockComponent(DSOSelectorComponent)
|
||||
],
|
||||
providers: [
|
||||
{
|
||||
provide: ActivatedRoute,
|
||||
useValue: {
|
||||
data: observableOf({
|
||||
id: workflowId,
|
||||
}),
|
||||
snapshot: {
|
||||
queryParams: {
|
||||
workflow: 'testaction',
|
||||
},
|
||||
provide: ActivatedRoute,
|
||||
useValue: {
|
||||
data: observableOf({
|
||||
id: workflowId,
|
||||
}),
|
||||
snapshot: {
|
||||
queryParams: {
|
||||
workflow: 'testaction',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{ provide: ClaimedTaskDataService, useValue: claimedTaskDataService },
|
||||
{ provide: Location, useValue: location },
|
||||
@@ -72,8 +70,8 @@ describe('AdvancedWorkflowActionComponent', () => {
|
||||
{ provide: WorkflowActionDataService, useValue: workflowActionDataService },
|
||||
{ provide: WorkflowItemDataService, useValue: workflowItemDataService },
|
||||
{ provide: RequestService, useClass: RequestServiceStub },
|
||||
],
|
||||
}).compileComponents();
|
||||
]
|
||||
}).compileComponents();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -115,9 +113,11 @@ describe('AdvancedWorkflowActionComponent', () => {
|
||||
});
|
||||
|
||||
@Component({
|
||||
// eslint-disable-next-line @angular-eslint/component-selector
|
||||
selector: '',
|
||||
template: ''
|
||||
// eslint-disable-next-line @angular-eslint/component-selector
|
||||
selector: '',
|
||||
template: '',
|
||||
standalone: true,
|
||||
imports: [RouterTestingModule]
|
||||
})
|
||||
class TestComponent extends AdvancedWorkflowActionComponent {
|
||||
|
||||
|
@@ -3,7 +3,7 @@ import { WorkflowAction } from '../../../core/tasks/models/workflow-action-objec
|
||||
import { WorkflowActionDataService } from '../../../core/data/workflow-action-data.service';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { Observable } from 'rxjs';
|
||||
import { WorkflowItemActionPageComponent } from '../../workflow-item-action-page.component';
|
||||
import { WorkflowItemActionPageDirective } from '../../workflow-item-action-page.component';
|
||||
import { WorkflowItemDataService } from '../../../core/submission/workflowitem-data.service';
|
||||
import { RouteService } from '../../../core/services/route.service';
|
||||
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
||||
@@ -25,7 +25,7 @@ import { Location } from '@angular/common';
|
||||
selector: 'ds-advanced-workflow-action',
|
||||
template: '',
|
||||
})
|
||||
export abstract class AdvancedWorkflowActionComponent extends WorkflowItemActionPageComponent implements OnInit {
|
||||
export abstract class AdvancedWorkflowActionComponent extends WorkflowItemActionPageDirective implements OnInit {
|
||||
|
||||
workflowAction$: Observable<WorkflowAction>;
|
||||
|
||||
|
@@ -22,14 +22,12 @@ describe('AdvancedWorkflowActionsLoaderComponent', () => {
|
||||
router = new RouterStub();
|
||||
|
||||
await TestBed.configureTestingModule({
|
||||
declarations: [
|
||||
AdvancedWorkflowActionsDirective,
|
||||
AdvancedWorkflowActionsLoaderComponent,
|
||||
],
|
||||
providers: [
|
||||
imports: [AdvancedWorkflowActionsDirective,
|
||||
AdvancedWorkflowActionsLoaderComponent],
|
||||
providers: [
|
||||
{ provide: Router, useValue: router },
|
||||
],
|
||||
}).overrideComponent(AdvancedWorkflowActionsLoaderComponent, {
|
||||
]
|
||||
}).overrideComponent(AdvancedWorkflowActionsLoaderComponent, {
|
||||
set: {
|
||||
changeDetection: ChangeDetectionStrategy.Default,
|
||||
entryComponents: [AdvancedWorkflowActionTestComponent],
|
||||
|
@@ -11,9 +11,10 @@ import { PAGE_NOT_FOUND_PATH } from '../../../app-routing-paths';
|
||||
* Component for loading a {@link AdvancedWorkflowActionComponent} depending on the "{@link type}" input
|
||||
*/
|
||||
@Component({
|
||||
selector: 'ds-advanced-workflow-actions-loader',
|
||||
templateUrl: './advanced-workflow-actions-loader.component.html',
|
||||
styleUrls: ['./advanced-workflow-actions-loader.component.scss'],
|
||||
selector: 'ds-advanced-workflow-actions-loader',
|
||||
templateUrl: './advanced-workflow-actions-loader.component.html',
|
||||
styleUrls: ['./advanced-workflow-actions-loader.component.scss'],
|
||||
standalone: true
|
||||
})
|
||||
export class AdvancedWorkflowActionsLoaderComponent implements OnInit {
|
||||
|
||||
|
@@ -1,7 +1,8 @@
|
||||
import { Directive, ViewContainerRef } from '@angular/core';
|
||||
|
||||
@Directive({
|
||||
selector: '[dsAdvancedWorkflowActions]',
|
||||
selector: '[dsAdvancedWorkflowActions]',
|
||||
standalone: true
|
||||
})
|
||||
/**
|
||||
* Directive used as a hook to know where to inject the dynamic Advanced Claimed Task Actions component
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||
import { WorkflowItemActionPageComponent } from './workflow-item-action-page.component';
|
||||
import { WorkflowItemActionPageDirective } from './workflow-item-action-page.component';
|
||||
import { NotificationsService } from '../shared/notifications/notifications.service';
|
||||
import { RouteService } from '../core/services/route.service';
|
||||
import { Component, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||
@@ -18,13 +18,16 @@ import { RouterStub } from '../shared/testing/router.stub';
|
||||
import { NotificationsServiceStub } from '../shared/testing/notifications-service.stub';
|
||||
import { RequestService } from '../core/data/request.service';
|
||||
import { RequestServiceStub } from '../shared/testing/request-service.stub';
|
||||
import { Location } from '@angular/common';
|
||||
import { CommonModule, Location } from '@angular/common';
|
||||
import { LocationStub } from '../shared/testing/location.stub';
|
||||
import {
|
||||
ModifyItemOverviewComponent
|
||||
} from '../item-page/edit-item-page/modify-item-overview/modify-item-overview.component';
|
||||
|
||||
const type = 'testType';
|
||||
describe('WorkflowItemActionPageComponent', () => {
|
||||
let component: WorkflowItemActionPageComponent;
|
||||
let fixture: ComponentFixture<WorkflowItemActionPageComponent>;
|
||||
let component: WorkflowItemActionPageDirective;
|
||||
let fixture: ComponentFixture<WorkflowItemActionPageDirective>;
|
||||
let wfiService;
|
||||
let wfi;
|
||||
let itemRD$;
|
||||
@@ -43,14 +46,13 @@ describe('WorkflowItemActionPageComponent', () => {
|
||||
beforeEach(waitForAsync(() => {
|
||||
init();
|
||||
TestBed.configureTestingModule({
|
||||
imports: [TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useClass: TranslateLoaderMock
|
||||
}
|
||||
})],
|
||||
declarations: [TestComponent, VarDirective],
|
||||
providers: [
|
||||
imports: [TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useClass: TranslateLoaderMock
|
||||
}
|
||||
}), TestComponent, VarDirective],
|
||||
providers: [
|
||||
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub({}, { wfi: createSuccessfulRemoteDataObject(wfi) }) },
|
||||
{ provide: Router, useClass: RouterStub },
|
||||
{ provide: RouteService, useValue: {} },
|
||||
@@ -58,9 +60,9 @@ describe('WorkflowItemActionPageComponent', () => {
|
||||
{ provide: NotificationsService, useClass: NotificationsServiceStub },
|
||||
{ provide: WorkflowItemDataService, useValue: wfiService },
|
||||
{ provide: RequestService, useClass: RequestServiceStub },
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
})
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
@@ -106,11 +108,12 @@ describe('WorkflowItemActionPageComponent', () => {
|
||||
});
|
||||
|
||||
@Component({
|
||||
selector: 'ds-workflow-item-test-action-page',
|
||||
templateUrl: 'workflow-item-action-page.component.html'
|
||||
}
|
||||
)
|
||||
class TestComponent extends WorkflowItemActionPageComponent {
|
||||
selector: 'ds-workflow-item-test-action-page',
|
||||
templateUrl: 'workflow-item-action-page.component.html',
|
||||
imports: [VarDirective, TranslateModule, CommonModule, ModifyItemOverviewComponent],
|
||||
standalone: true
|
||||
})
|
||||
class TestComponent extends WorkflowItemActionPageDirective {
|
||||
constructor(protected route: ActivatedRoute,
|
||||
protected workflowItemService: WorkflowItemDataService,
|
||||
protected router: Router,
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { Directive, OnInit } from '@angular/core';
|
||||
import { Location } from '@angular/common';
|
||||
import { Observable, combineLatest } from 'rxjs';
|
||||
import { map, switchMap, take } from 'rxjs/operators';
|
||||
@@ -17,11 +17,12 @@ import { RequestService } from '../core/data/request.service';
|
||||
/**
|
||||
* Abstract component representing a page to perform an action on a workflow item
|
||||
*/
|
||||
@Component({
|
||||
@Directive({
|
||||
// eslint-disable-next-line @angular-eslint/directive-selector
|
||||
selector: 'ds-workflowitem-action-page',
|
||||
template: ''
|
||||
standalone: true
|
||||
})
|
||||
export abstract class WorkflowItemActionPageComponent implements OnInit {
|
||||
export abstract class WorkflowItemActionPageDirective implements OnInit {
|
||||
public type;
|
||||
public wfi$: Observable<WorkflowItem>;
|
||||
public item$: Observable<Item>;
|
||||
|
@@ -7,9 +7,10 @@ import { Component } from '@angular/core';
|
||||
*/
|
||||
|
||||
@Component({
|
||||
selector: 'ds-themed-workflow-item-delete',
|
||||
styleUrls: [],
|
||||
templateUrl: './../../shared/theme-support/themed.component.html'
|
||||
selector: 'ds-themed-workflow-item-delete',
|
||||
styleUrls: [],
|
||||
templateUrl: './../../shared/theme-support/themed.component.html',
|
||||
standalone: true
|
||||
})
|
||||
export class ThemedWorkflowItemDeleteComponent extends ThemedComponent<WorkflowItemDeleteComponent> {
|
||||
protected getComponentName(): string {
|
||||
|
@@ -40,14 +40,13 @@ describe('WorkflowItemDeleteComponent', () => {
|
||||
beforeEach(waitForAsync(() => {
|
||||
init();
|
||||
TestBed.configureTestingModule({
|
||||
imports: [TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useClass: TranslateLoaderMock
|
||||
}
|
||||
})],
|
||||
declarations: [WorkflowItemDeleteComponent, VarDirective],
|
||||
providers: [
|
||||
imports: [TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useClass: TranslateLoaderMock
|
||||
}
|
||||
}), WorkflowItemDeleteComponent, VarDirective],
|
||||
providers: [
|
||||
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub({}, { wfi: createSuccessfulRemoteDataObject(wfi) }) },
|
||||
{ provide: Router, useClass: RouterStub },
|
||||
{ provide: RouteService, useValue: {} },
|
||||
@@ -55,9 +54,9 @@ describe('WorkflowItemDeleteComponent', () => {
|
||||
{ provide: NotificationsService, useClass: NotificationsServiceStub },
|
||||
{ provide: WorkflowItemDataService, useValue: wfiService },
|
||||
{ provide: RequestService, useValue: getMockRequestService() },
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
})
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
|
@@ -1,26 +1,32 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { Observable } from 'rxjs';
|
||||
import { WorkflowItemActionPageComponent } from '../workflow-item-action-page.component';
|
||||
import { WorkflowItemActionPageDirective } from '../workflow-item-action-page.component';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { WorkflowItemDataService } from '../../core/submission/workflowitem-data.service';
|
||||
import { RouteService } from '../../core/services/route.service';
|
||||
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||
import { RequestService } from '../../core/data/request.service';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { RemoteData } from '../../core/data/remote-data';
|
||||
import { NoContent } from '../../core/shared/NoContent.model';
|
||||
import { getFirstCompletedRemoteData } from '../../core/shared/operators';
|
||||
import { Location } from '@angular/common';
|
||||
import { CommonModule, Location } from '@angular/common';
|
||||
import { VarDirective } from '../../shared/utils/var.directive';
|
||||
import {
|
||||
ModifyItemOverviewComponent
|
||||
} from '../../item-page/edit-item-page/modify-item-overview/modify-item-overview.component';
|
||||
|
||||
@Component({
|
||||
selector: 'ds-workflow-item-delete',
|
||||
templateUrl: '../workflow-item-action-page.component.html'
|
||||
templateUrl: '../workflow-item-action-page.component.html',
|
||||
standalone: true,
|
||||
imports: [VarDirective, TranslateModule, CommonModule, ModifyItemOverviewComponent]
|
||||
})
|
||||
/**
|
||||
* Component representing a page to delete a workflow item
|
||||
*/
|
||||
export class WorkflowItemDeleteComponent extends WorkflowItemActionPageComponent {
|
||||
export class WorkflowItemDeleteComponent extends WorkflowItemActionPageDirective {
|
||||
constructor(protected route: ActivatedRoute,
|
||||
protected workflowItemService: WorkflowItemDataService,
|
||||
protected router: Router,
|
||||
|
@@ -7,9 +7,10 @@ import { WorkflowItemSendBackComponent } from './workflow-item-send-back.compone
|
||||
*/
|
||||
|
||||
@Component({
|
||||
selector: 'ds-themed-workflow-item-send-back',
|
||||
styleUrls: [],
|
||||
templateUrl: './../../shared/theme-support/themed.component.html'
|
||||
selector: 'ds-themed-workflow-item-send-back',
|
||||
styleUrls: [],
|
||||
templateUrl: './../../shared/theme-support/themed.component.html',
|
||||
standalone: true
|
||||
})
|
||||
export class ThemedWorkflowItemSendBackComponent extends ThemedComponent<WorkflowItemSendBackComponent> {
|
||||
protected getComponentName(): string {
|
||||
|
@@ -40,14 +40,13 @@ describe('WorkflowItemSendBackComponent', () => {
|
||||
beforeEach(waitForAsync(() => {
|
||||
init();
|
||||
TestBed.configureTestingModule({
|
||||
imports: [TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useClass: TranslateLoaderMock
|
||||
}
|
||||
})],
|
||||
declarations: [WorkflowItemSendBackComponent, VarDirective],
|
||||
providers: [
|
||||
imports: [TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useClass: TranslateLoaderMock
|
||||
}
|
||||
}), WorkflowItemSendBackComponent, VarDirective],
|
||||
providers: [
|
||||
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub({}, { wfi: createSuccessfulRemoteDataObject(wfi) }) },
|
||||
{ provide: Router, useClass: RouterStub },
|
||||
{ provide: RouteService, useValue: {} },
|
||||
@@ -55,9 +54,9 @@ describe('WorkflowItemSendBackComponent', () => {
|
||||
{ provide: NotificationsService, useClass: NotificationsServiceStub },
|
||||
{ provide: WorkflowItemDataService, useValue: wfiService },
|
||||
{ provide: RequestService, useValue: getMockRequestService() },
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
})
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
|
@@ -1,22 +1,28 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { WorkflowItemActionPageComponent } from '../workflow-item-action-page.component';
|
||||
import { WorkflowItemActionPageDirective } from '../workflow-item-action-page.component';
|
||||
import { Observable } from 'rxjs';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { WorkflowItemDataService } from '../../core/submission/workflowitem-data.service';
|
||||
import { RouteService } from '../../core/services/route.service';
|
||||
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||
import { RequestService } from '../../core/data/request.service';
|
||||
import { Location } from '@angular/common';
|
||||
import { CommonModule, Location } from '@angular/common';
|
||||
import {
|
||||
ModifyItemOverviewComponent
|
||||
} from '../../item-page/edit-item-page/modify-item-overview/modify-item-overview.component';
|
||||
import { VarDirective } from '../../shared/utils/var.directive';
|
||||
|
||||
@Component({
|
||||
selector: 'ds-workflow-item-send-back',
|
||||
templateUrl: '../workflow-item-action-page.component.html'
|
||||
templateUrl: '../workflow-item-action-page.component.html',
|
||||
standalone: true,
|
||||
imports: [VarDirective, TranslateModule, CommonModule, ModifyItemOverviewComponent]
|
||||
})
|
||||
/**
|
||||
* Component representing a page to send back a workflow item to the submitter
|
||||
*/
|
||||
export class WorkflowItemSendBackComponent extends WorkflowItemActionPageComponent {
|
||||
export class WorkflowItemSendBackComponent extends WorkflowItemActionPageDirective {
|
||||
constructor(protected route: ActivatedRoute,
|
||||
protected workflowItemService: WorkflowItemDataService,
|
||||
protected router: Router,
|
||||
|
@@ -1,90 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import { AuthenticatedGuard } from '../core/auth/authenticated.guard';
|
||||
import { WorkflowItemPageResolver } from './workflow-item-page.resolver';
|
||||
import {
|
||||
WORKFLOW_ITEM_DELETE_PATH,
|
||||
WORKFLOW_ITEM_EDIT_PATH,
|
||||
WORKFLOW_ITEM_SEND_BACK_PATH,
|
||||
WORKFLOW_ITEM_VIEW_PATH,
|
||||
ADVANCED_WORKFLOW_PATH,
|
||||
} from './workflowitems-edit-page-routing-paths';
|
||||
import { ThemedSubmissionEditComponent } from '../submission/edit/themed-submission-edit.component';
|
||||
import { ThemedWorkflowItemDeleteComponent } from './workflow-item-delete/themed-workflow-item-delete.component';
|
||||
import { ThemedWorkflowItemSendBackComponent } from './workflow-item-send-back/themed-workflow-item-send-back.component';
|
||||
import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver';
|
||||
import { ItemFromWorkflowResolver } from './item-from-workflow.resolver';
|
||||
import { ThemedFullItemPageComponent } from '../item-page/full/themed-full-item-page.component';
|
||||
import {
|
||||
AdvancedWorkflowActionPageComponent
|
||||
} from './advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{
|
||||
path: ':id',
|
||||
resolve: { wfi: WorkflowItemPageResolver },
|
||||
children: [
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: WORKFLOW_ITEM_EDIT_PATH,
|
||||
component: ThemedSubmissionEditComponent,
|
||||
resolve: {
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: {
|
||||
title: 'workflow-item.edit.title',
|
||||
breadcrumbKey: 'workflow-item.edit',
|
||||
collectionModifiable: false
|
||||
}
|
||||
},
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: WORKFLOW_ITEM_VIEW_PATH,
|
||||
component: ThemedFullItemPageComponent,
|
||||
resolve: {
|
||||
dso: ItemFromWorkflowResolver,
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: { title: 'workflow-item.view.title', breadcrumbKey: 'workflow-item.view' }
|
||||
},
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: WORKFLOW_ITEM_DELETE_PATH,
|
||||
component: ThemedWorkflowItemDeleteComponent,
|
||||
resolve: {
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: { title: 'workflow-item.delete.title', breadcrumbKey: 'workflow-item.edit' }
|
||||
},
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: WORKFLOW_ITEM_SEND_BACK_PATH,
|
||||
component: ThemedWorkflowItemSendBackComponent,
|
||||
resolve: {
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: { title: 'workflow-item.send-back.title', breadcrumbKey: 'workflow-item.edit' }
|
||||
},
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: ADVANCED_WORKFLOW_PATH,
|
||||
component: AdvancedWorkflowActionPageComponent,
|
||||
resolve: {
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: { title: 'workflow-item.advanced.title', breadcrumbKey: 'workflow-item.edit' }
|
||||
},
|
||||
]
|
||||
}]
|
||||
)
|
||||
],
|
||||
providers: [WorkflowItemPageResolver, ItemFromWorkflowResolver]
|
||||
})
|
||||
/**
|
||||
* This module defines the default component to load when navigating to the workflowitems edit page path.
|
||||
*/
|
||||
export class WorkflowItemsEditPageRoutingModule {
|
||||
}
|
@@ -1,7 +1,6 @@
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { SharedModule } from '../shared/shared.module';
|
||||
import { WorkflowItemsEditPageRoutingModule } from './workflowitems-edit-page-routing.module';
|
||||
import { SubmissionModule } from '../submission/submission.module';
|
||||
import { WorkflowItemDeleteComponent } from './workflow-item-delete/workflow-item-delete.component';
|
||||
import { WorkflowItemSendBackComponent } from './workflow-item-send-back/workflow-item-send-back.component';
|
||||
@@ -34,29 +33,26 @@ import { FormModule } from '../shared/form/form.module';
|
||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
WorkflowItemsEditPageRoutingModule,
|
||||
CommonModule,
|
||||
SharedModule,
|
||||
SubmissionModule,
|
||||
StatisticsModule,
|
||||
ItemPageModule,
|
||||
AccessControlModule,
|
||||
FormModule,
|
||||
NgbModule,
|
||||
],
|
||||
declarations: [
|
||||
WorkflowItemDeleteComponent,
|
||||
ThemedWorkflowItemDeleteComponent,
|
||||
WorkflowItemSendBackComponent,
|
||||
ThemedWorkflowItemSendBackComponent,
|
||||
AdvancedWorkflowActionsLoaderComponent,
|
||||
AdvancedWorkflowActionRatingComponent,
|
||||
AdvancedWorkflowActionSelectReviewerComponent,
|
||||
AdvancedWorkflowActionPageComponent,
|
||||
AdvancedWorkflowActionsDirective,
|
||||
ReviewersListComponent,
|
||||
]
|
||||
imports: [
|
||||
CommonModule,
|
||||
SharedModule,
|
||||
SubmissionModule,
|
||||
StatisticsModule,
|
||||
ItemPageModule,
|
||||
AccessControlModule,
|
||||
FormModule,
|
||||
NgbModule,
|
||||
WorkflowItemDeleteComponent,
|
||||
ThemedWorkflowItemDeleteComponent,
|
||||
WorkflowItemSendBackComponent,
|
||||
ThemedWorkflowItemSendBackComponent,
|
||||
AdvancedWorkflowActionsLoaderComponent,
|
||||
AdvancedWorkflowActionRatingComponent,
|
||||
AdvancedWorkflowActionSelectReviewerComponent,
|
||||
AdvancedWorkflowActionPageComponent,
|
||||
AdvancedWorkflowActionsDirective,
|
||||
ReviewersListComponent
|
||||
]
|
||||
})
|
||||
/**
|
||||
* This module handles all modules that need to access the workflowitems edit page.
|
||||
|
@@ -0,0 +1,82 @@
|
||||
import { Routes } from '@angular/router';
|
||||
|
||||
import { AuthenticatedGuard } from '../core/auth/authenticated.guard';
|
||||
import { WorkflowItemPageResolver } from './workflow-item-page.resolver';
|
||||
import {
|
||||
ADVANCED_WORKFLOW_PATH,
|
||||
WORKFLOW_ITEM_DELETE_PATH,
|
||||
WORKFLOW_ITEM_EDIT_PATH,
|
||||
WORKFLOW_ITEM_SEND_BACK_PATH,
|
||||
WORKFLOW_ITEM_VIEW_PATH,
|
||||
} from './workflowitems-edit-page-routing-paths';
|
||||
import { ThemedSubmissionEditComponent } from '../submission/edit/themed-submission-edit.component';
|
||||
import { ThemedWorkflowItemDeleteComponent } from './workflow-item-delete/themed-workflow-item-delete.component';
|
||||
import {
|
||||
ThemedWorkflowItemSendBackComponent
|
||||
} from './workflow-item-send-back/themed-workflow-item-send-back.component';
|
||||
import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver';
|
||||
import { ItemFromWorkflowResolver } from './item-from-workflow.resolver';
|
||||
import { ThemedFullItemPageComponent } from '../item-page/full/themed-full-item-page.component';
|
||||
import {
|
||||
AdvancedWorkflowActionPageComponent
|
||||
} from './advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component';
|
||||
|
||||
export const workflowItemsEditPageRoutes: Routes = [
|
||||
{
|
||||
path: ':id',
|
||||
resolve: {wfi: WorkflowItemPageResolver},
|
||||
providers: [WorkflowItemPageResolver, ItemFromWorkflowResolver],
|
||||
children: [
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: WORKFLOW_ITEM_EDIT_PATH,
|
||||
component: ThemedSubmissionEditComponent,
|
||||
resolve: {
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: {
|
||||
title: 'workflow-item.edit.title',
|
||||
breadcrumbKey: 'workflow-item.edit',
|
||||
collectionModifiable: false
|
||||
}
|
||||
},
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: WORKFLOW_ITEM_VIEW_PATH,
|
||||
component: ThemedFullItemPageComponent,
|
||||
resolve: {
|
||||
dso: ItemFromWorkflowResolver,
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: {title: 'workflow-item.view.title', breadcrumbKey: 'workflow-item.view'}
|
||||
},
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: WORKFLOW_ITEM_DELETE_PATH,
|
||||
component: ThemedWorkflowItemDeleteComponent,
|
||||
resolve: {
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: {title: 'workflow-item.delete.title', breadcrumbKey: 'workflow-item.edit'}
|
||||
},
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: WORKFLOW_ITEM_SEND_BACK_PATH,
|
||||
component: ThemedWorkflowItemSendBackComponent,
|
||||
resolve: {
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: {title: 'workflow-item.send-back.title', breadcrumbKey: 'workflow-item.edit'}
|
||||
},
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: ADVANCED_WORKFLOW_PATH,
|
||||
component: AdvancedWorkflowActionPageComponent,
|
||||
resolve: {
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: {title: 'workflow-item.advanced.title', breadcrumbKey: 'workflow-item.edit'}
|
||||
},
|
||||
]
|
||||
}
|
||||
];
|
Reference in New Issue
Block a user