feat: migrate everything to standalone and fix build errors

This commit is contained in:
Enea Jahollari
2023-09-25 12:43:29 +02:00
parent 4171ccc8f3
commit 54614c21f0
1311 changed files with 13140 additions and 8009 deletions

View File

@@ -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(() => {

View File

@@ -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 {

View File

@@ -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(() => {

View File

@@ -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 {

View File

@@ -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(() => {

View File

@@ -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 {

View File

@@ -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(() => {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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>;

View File

@@ -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],

View File

@@ -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 {

View File

@@ -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

View File

@@ -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,

View File

@@ -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>;

View File

@@ -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 {

View File

@@ -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();
}));

View File

@@ -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,

View File

@@ -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 {

View File

@@ -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();
}));

View File

@@ -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,

View File

@@ -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 {
}

View File

@@ -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.

View File

@@ -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'}
},
]
}
];