diff --git a/src/app/shared/mydspace-actions/claimed-task/abstract/advanced-workflow-action-abstract.component.ts b/src/app/shared/mydspace-actions/claimed-task/abstract/advanced-workflow-action-abstract.component.ts
new file mode 100644
index 0000000000..be6935d900
--- /dev/null
+++ b/src/app/shared/mydspace-actions/claimed-task/abstract/advanced-workflow-action-abstract.component.ts
@@ -0,0 +1,8 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ds-advanced-workflow-action-abstract',
+ template: '',
+})
+export abstract class AdvancedWorkflowActionAbstractComponent {
+}
diff --git a/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.html b/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.html
index 8ed7b18640..84d3aa7cc7 100644
--- a/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.html
+++ b/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.html
@@ -1,4 +1,4 @@
diff --git a/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.ts b/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.ts
index 0fb660b6e6..bfa676b30e 100644
--- a/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.ts
+++ b/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.ts
@@ -4,12 +4,13 @@ import { NotificationsService } from '../../../notifications/notifications.servi
import { TranslateService } from '@ngx-translate/core';
import { SearchService } from '../../../../core/shared/search/search.service';
import { RequestService } from '../../../../core/data/request.service';
-import {
- getWorkflowRatingReviewerRoute
-} from '../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
+import { getAdvancedWorkflowRoute } from '../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
import {
AdvancedClaimedTaskActionsAbstractComponent
} from '../abstract/advanced-claimed-task-actions-abstract.component';
+import {
+ ADVANCED_WORKFLOW_ACTION_RATING_REVIEWER
+} from '../../../../workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component';
export const WORKFLOW_ADVANCED_TASK_OPTION_RATING_REVIEWER = 'submit_rating_reviewer';
@@ -25,6 +26,8 @@ export class AdvancedClaimedTaskActionRatingReviewerComponent extends AdvancedCl
*/
option = WORKFLOW_ADVANCED_TASK_OPTION_RATING_REVIEWER;
+ workflowType = ADVANCED_WORKFLOW_ACTION_RATING_REVIEWER;
+
/**
* Route to the workflow's task page
*/
@@ -48,8 +51,8 @@ export class AdvancedClaimedTaskActionRatingReviewerComponent extends AdvancedCl
/**
* Initialise the route to the rating reviewer's page
*/
- initPageRoute() {
- this.workflowTaskPageRoute = getWorkflowRatingReviewerRoute(this.object.id);
+ initPageRoute(): void {
+ this.workflowTaskPageRoute = getAdvancedWorkflowRoute(this.object.id);
}
}
diff --git a/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.html b/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.html
index 8ed7b18640..84d3aa7cc7 100644
--- a/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.html
+++ b/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.html
@@ -1,4 +1,4 @@
diff --git a/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.ts b/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.ts
index 4ce3ec224a..6cb6c68816 100644
--- a/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.ts
+++ b/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.ts
@@ -8,9 +8,10 @@ import { NotificationsService } from '../../../notifications/notifications.servi
import { TranslateService } from '@ngx-translate/core';
import { SearchService } from '../../../../core/shared/search/search.service';
import { RequestService } from '../../../../core/data/request.service';
+import { getAdvancedWorkflowRoute } from '../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
import {
- getWorkflowSelectReviewerRoute
-} from '../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
+ ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER
+} from '../../../../workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component';
export const WORKFLOW_ADVANCED_TASK_OPTION_SELECT_REVIEWER = 'submit_select_reviewer';
@@ -27,6 +28,8 @@ export class AdvancedClaimedTaskActionSelectReviewerComponent extends AdvancedCl
*/
option = WORKFLOW_ADVANCED_TASK_OPTION_SELECT_REVIEWER;
+ workflowType = ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER;
+
/**
* Route to the workflow's task page
*/
@@ -51,7 +54,7 @@ export class AdvancedClaimedTaskActionSelectReviewerComponent extends AdvancedCl
* Initialise the route to the select reviewer's page
*/
initPageRoute() {
- this.workflowTaskPageRoute = getWorkflowSelectReviewerRoute(this.object.id);
+ this.workflowTaskPageRoute = getAdvancedWorkflowRoute(this.object.id);
}
}
diff --git a/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.ts b/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.ts
index a115c4e5b8..8e4dede9bb 100644
--- a/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.ts
+++ b/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.ts
@@ -1,23 +1,44 @@
import { hasNoValue } from '../../../empty.util';
-const map = new Map();
+const workflowOptions = new Map();
+const advancedWorkflowOptions = new Map();
/**
* Decorator used for rendering ClaimedTaskActions pages by option type
*/
export function rendersWorkflowTaskOption(option: string) {
return function decorator(component: any) {
- if (hasNoValue(map.get(option))) {
- map.set(option, component);
+ if (hasNoValue(workflowOptions.get(option))) {
+ workflowOptions.set(option, component);
} else {
throw new Error(`There can't be more than one component to render ClaimedTaskActions for option "${option}"`);
}
};
}
+/**
+ * Decorator used for rendering AdvancedClaimedTaskActions pages by option type
+ */
+export function rendersAdvancedWorkflowTaskOption(option: string) {
+ return function decorator(component: any) {
+ if (hasNoValue(advancedWorkflowOptions.get(option))) {
+ advancedWorkflowOptions.set(option, component);
+ } else {
+ throw new Error(`There can't be more than one component to render AdvancedClaimedTaskActions for option "${option}"`);
+ }
+ };
+}
+
/**
* Get the component used for rendering a ClaimedTaskActions page by option type
*/
export function getComponentByWorkflowTaskOption(option: string) {
- return map.get(option);
+ return workflowOptions.get(option);
+}
+
+/**
+ * Get the component used for rendering a AdvancedClaimedTaskActions page by option type
+ */
+export function getAdvancedComponentByWorkflowTaskOption(option: string) {
+ return advancedWorkflowOptions.get(option);
}
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component.html b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component.html
new file mode 100644
index 0000000000..7b0528d906
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component.html
@@ -0,0 +1,5 @@
+
+
{{'workflow-item.' + type + '.header' | translate}}
+
+
+
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component.scss b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component.spec.ts b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component.spec.ts
new file mode 100644
index 0000000000..ac713fa443
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { AdvancedWorkflowActionPageComponent } from './advanced-workflow-action-page.component';
+
+describe('AdvancedWorkflowActionPageComponent', () => {
+ let component: AdvancedWorkflowActionPageComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [
+ AdvancedWorkflowActionPageComponent,
+ ],
+ }).compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AdvancedWorkflowActionPageComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component.ts b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component.ts
new file mode 100644
index 0000000000..e6c7da7d59
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component.ts
@@ -0,0 +1,22 @@
+import { Component, OnInit } from '@angular/core';
+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']
+})
+export class AdvancedWorkflowActionPageComponent implements OnInit {
+
+ public type: string;
+
+ constructor(
+ protected route: ActivatedRoute,
+ ) {
+ }
+
+ ngOnInit(): void {
+ this.type = this.route.snapshot.queryParams.workflow;
+ }
+
+}
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component.html b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component.html
new file mode 100644
index 0000000000..1b26ba3599
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component.html
@@ -0,0 +1 @@
+advanced-workflow-action-rating-reviewer works!
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component.scss b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component.spec.ts b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component.spec.ts
new file mode 100644
index 0000000000..c08e3c0a78
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AdvancedWorkflowActionRatingReviewerComponent } from './advanced-workflow-action-rating-reviewer.component';
+
+describe('AdvancedWorkflowActionRatingReviewerComponent', () => {
+ let component: AdvancedWorkflowActionRatingReviewerComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ AdvancedWorkflowActionRatingReviewerComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AdvancedWorkflowActionRatingReviewerComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component.ts b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component.ts
new file mode 100644
index 0000000000..4e0185401d
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component.ts
@@ -0,0 +1,15 @@
+import { Component } from '@angular/core';
+import {
+ rendersAdvancedWorkflowTaskOption
+} from '../../../shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator';
+
+export const ADVANCED_WORKFLOW_ACTION_RATING_REVIEWER = 'ratingrevieweraction';
+
+@rendersAdvancedWorkflowTaskOption(ADVANCED_WORKFLOW_ACTION_RATING_REVIEWER)
+@Component({
+ selector: 'ds-advanced-workflow-action-rating-reviewer',
+ templateUrl: './advanced-workflow-action-rating-reviewer.component.html',
+ styleUrls: ['./advanced-workflow-action-rating-reviewer.component.scss']
+})
+export class AdvancedWorkflowActionRatingReviewerComponent {
+}
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component.html b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component.html
new file mode 100644
index 0000000000..4380e45594
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component.html
@@ -0,0 +1 @@
+advancedInfo: {{ (workflowAction | async)?.advancedInfo | json }}
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component.scss b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component.spec.ts b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component.spec.ts
new file mode 100644
index 0000000000..b4f420774b
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AdvancedWorkflowActionSelectReviewerComponent } from './advanced-workflow-action-select-reviewer.component';
+
+describe('AdvancedWorkflowActionSelectReviewerComponent', () => {
+ let component: AdvancedWorkflowActionSelectReviewerComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ AdvancedWorkflowActionSelectReviewerComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AdvancedWorkflowActionSelectReviewerComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component.ts b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component.ts
new file mode 100644
index 0000000000..8ba2850202
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component.ts
@@ -0,0 +1,16 @@
+import { Component } from '@angular/core';
+import {
+ rendersAdvancedWorkflowTaskOption
+} from '../../../shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator';
+import { AdvancedWorkflowActionComponent } from '../advanced-workflow-action/advanced-workflow-action.component';
+
+export const ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER = 'selectrevieweraction';
+
+@rendersAdvancedWorkflowTaskOption(ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER)
+@Component({
+ selector: 'ds-advanced-workflow-action-select-reviewer',
+ templateUrl: './advanced-workflow-action-select-reviewer.component.html',
+ styleUrls: ['./advanced-workflow-action-select-reviewer.component.scss'],
+})
+export class AdvancedWorkflowActionSelectReviewerComponent extends AdvancedWorkflowActionComponent {
+}
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component.html b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component.html
new file mode 100644
index 0000000000..4fbedb9f3e
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component.html
@@ -0,0 +1 @@
+advanced-workflow-action works!
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component.scss b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component.spec.ts b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component.spec.ts
new file mode 100644
index 0000000000..974dd4c257
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AdvancedWorkflowActionComponent } from './advanced-workflow-action.component';
+
+describe('AdvancedWorkflowActionComponent', () => {
+ let component: AdvancedWorkflowActionComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ AdvancedWorkflowActionComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AdvancedWorkflowActionComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component.ts b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component.ts
new file mode 100644
index 0000000000..0554e8463f
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component.ts
@@ -0,0 +1,29 @@
+import { Component, OnInit } from '@angular/core';
+import { WorkflowAction } from '../../../core/tasks/models/workflow-action-object.model';
+import { WorkflowActionDataService } from '../../../core/data/workflow-action-data.service';
+import { ActivatedRoute } from '@angular/router';
+import { Observable } from 'rxjs';
+import { getFirstSucceededRemoteDataPayload } from '../../../core/shared/operators';
+
+@Component({
+ selector: 'ds-advanced-workflow-action',
+ templateUrl: './advanced-workflow-action.component.html',
+ styleUrls: ['./advanced-workflow-action.component.scss']
+})
+export class AdvancedWorkflowActionComponent implements OnInit {
+
+ workflowAction: Observable;
+
+ constructor(
+ protected route: ActivatedRoute,
+ protected workflowActionService: WorkflowActionDataService,
+ ) {
+ }
+
+ ngOnInit(): void {
+ this.workflowAction = this.workflowActionService.findById(this.route.snapshot.queryParams.workflow).pipe(
+ getFirstSucceededRemoteDataPayload(),
+ );
+ }
+
+}
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-claimed-task-actions.directive.ts b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-claimed-task-actions.directive.ts
new file mode 100644
index 0000000000..b2ed49b502
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-claimed-task-actions.directive.ts
@@ -0,0 +1,16 @@
+import { Directive, ViewContainerRef } from '@angular/core';
+
+@Directive({
+ selector: '[dsAdvancedClaimedTaskActions]',
+})
+/**
+ * Directive used as a hook to know where to inject the dynamic Advanced Claimed Task Actions component
+ */
+export class AdvancedClaimedTaskActionsDirective {
+
+ constructor(
+ public viewContainerRef: ViewContainerRef,
+ ) {
+ }
+
+}
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component.html b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component.html
new file mode 100644
index 0000000000..2374ed7913
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component.html
@@ -0,0 +1 @@
+
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component.scss b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component.spec.ts b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component.spec.ts
new file mode 100644
index 0000000000..49cf92b171
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { AdvancedWorkflowActionsLoaderComponent } from './advanced-workflow-actions-loader.component';
+
+describe('AdvancedWorkflowActionsLoaderComponent', () => {
+ let component: AdvancedWorkflowActionsLoaderComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [
+ AdvancedWorkflowActionsLoaderComponent,
+ ],
+ }).compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AdvancedWorkflowActionsLoaderComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component.ts b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component.ts
new file mode 100644
index 0000000000..ac6d2f171d
--- /dev/null
+++ b/src/app/workflowitems-edit-page/advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component.ts
@@ -0,0 +1,54 @@
+import { Component, Input, ViewChild, ComponentFactoryResolver, OnInit } from '@angular/core';
+import { hasValue } from '../../../shared/empty.util';
+import {
+ getAdvancedComponentByWorkflowTaskOption
+} from '../../../shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator';
+import { AdvancedClaimedTaskActionsDirective } from './advanced-claimed-task-actions.directive';
+import { Router } from '@angular/router';
+import { PAGE_NOT_FOUND_PATH } from '../../../app-routing-paths';
+
+@Component({
+ selector: 'ds-advanced-workflow-actions-loader',
+ templateUrl: './advanced-workflow-actions-loader.component.html',
+ styleUrls: ['./advanced-workflow-actions-loader.component.scss'],
+})
+export class AdvancedWorkflowActionsLoaderComponent implements OnInit {
+
+ /**
+ * The name of the type to render
+ * Passed on to the decorator to fetch the relevant component for this option
+ */
+ @Input() type: string;
+
+ /**
+ * Directive to determine where the dynamic child component is located
+ */
+ @ViewChild(AdvancedClaimedTaskActionsDirective, { static: true }) claimedTaskActionsDirective: AdvancedClaimedTaskActionsDirective;
+
+ constructor(
+ private componentFactoryResolver: ComponentFactoryResolver,
+ private router: Router,
+ ) {
+ }
+
+ /**
+ * Fetch, create and initialize the relevant component
+ */
+ ngOnInit(): void {
+ const comp = this.getComponentByWorkflowTaskOption(this.type);
+ if (hasValue(comp)) {
+ const componentFactory = this.componentFactoryResolver.resolveComponentFactory(comp);
+
+ const viewContainerRef = this.claimedTaskActionsDirective.viewContainerRef;
+ viewContainerRef.clear();
+ viewContainerRef.createComponent(componentFactory);
+ } else {
+ void this.router.navigate([PAGE_NOT_FOUND_PATH]);
+ }
+ }
+
+ getComponentByWorkflowTaskOption(option: string) {
+ return getAdvancedComponentByWorkflowTaskOption(option);
+ }
+
+}
diff --git a/src/app/workflowitems-edit-page/workflowitems-edit-page-routing-paths.ts b/src/app/workflowitems-edit-page/workflowitems-edit-page-routing-paths.ts
index c39bd1fc48..ece61f0321 100644
--- a/src/app/workflowitems-edit-page/workflowitems-edit-page-routing-paths.ts
+++ b/src/app/workflowitems-edit-page/workflowitems-edit-page-routing-paths.ts
@@ -1,6 +1,5 @@
import { URLCombiner } from '../core/url-combiner/url-combiner';
import { getWorkflowItemModuleRoute } from '../app-routing-paths';
-import { RATING_REVIEWER_ACTION_ADVANCED_INFO } from '../core/tasks/models/reviewer-action-advanced-info.resource-type';
export function getWorkflowItemPageRoute(wfiId: string) {
return new URLCombiner(getWorkflowItemModuleRoute(), wfiId).toString();
@@ -21,16 +20,12 @@ export function getWorkflowItemSendBackRoute(wfiId: string) {
return new URLCombiner(getWorkflowItemModuleRoute(), wfiId, WORKFLOW_ITEM_SEND_BACK_PATH).toString();
}
-export function getWorkflowSelectReviewerRoute(wfiId: string) {
- return new URLCombiner(getWorkflowItemModuleRoute(), wfiId, WORKFLOW_SELECT_REVIEWER_PATH).toString();
-}
-export function getWorkflowRatingReviewerRoute(wfiId: string) {
- return new URLCombiner(getWorkflowItemModuleRoute(), wfiId, WORKFLOW_RATING_REVIEWER_PATH).toString();
+export function getAdvancedWorkflowRoute(wfiId: string) {
+ return new URLCombiner(getWorkflowItemModuleRoute(), wfiId, ADVANCED_WORKFLOW_PATH).toString();
}
export const WORKFLOW_ITEM_EDIT_PATH = 'edit';
export const WORKFLOW_ITEM_DELETE_PATH = 'delete';
export const WORKFLOW_ITEM_VIEW_PATH = 'view';
export const WORKFLOW_ITEM_SEND_BACK_PATH = 'sendback';
-export const WORKFLOW_SELECT_REVIEWER_PATH = 'selectreviewer';
-export const WORKFLOW_RATING_REVIEWER_PATH = 'ratingreviewer';
+export const ADVANCED_WORKFLOW_PATH = 'advanced';
diff --git a/src/app/workflowitems-edit-page/workflowitems-edit-page-routing.module.ts b/src/app/workflowitems-edit-page/workflowitems-edit-page-routing.module.ts
index 722e8b3768..06536d5816 100644
--- a/src/app/workflowitems-edit-page/workflowitems-edit-page-routing.module.ts
+++ b/src/app/workflowitems-edit-page/workflowitems-edit-page-routing.module.ts
@@ -8,8 +8,7 @@ import {
WORKFLOW_ITEM_EDIT_PATH,
WORKFLOW_ITEM_SEND_BACK_PATH,
WORKFLOW_ITEM_VIEW_PATH,
- WORKFLOW_SELECT_REVIEWER_PATH,
- WORKFLOW_RATING_REVIEWER_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';
@@ -17,6 +16,9 @@ import { ThemedWorkflowItemSendBackComponent } from './workflow-item-send-back/t
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: [
@@ -64,21 +66,12 @@ import { ThemedFullItemPageComponent } from '../item-page/full/themed-full-item-
},
{
canActivate: [AuthenticatedGuard],
- path: WORKFLOW_SELECT_REVIEWER_PATH,
- component: ThemedWorkflowItemSendBackComponent,
+ path: ADVANCED_WORKFLOW_PATH,
+ component: AdvancedWorkflowActionPageComponent,
resolve: {
breadcrumb: I18nBreadcrumbResolver
},
- data: { title: 'workflow-item.select-reviewer.title', breadcrumbKey: 'workflow-item.edit' }
- },
- {
- canActivate: [AuthenticatedGuard],
- path: WORKFLOW_RATING_REVIEWER_PATH,
- component: ThemedWorkflowItemSendBackComponent,
- resolve: {
- breadcrumb: I18nBreadcrumbResolver
- },
- data: { title: 'workflow-item.rating-reviewer.title', breadcrumbKey: 'workflow-item.edit' }
+ data: { title: 'workflow-item.advanced.title', breadcrumbKey: 'workflow-item.edit' }
},
]
}]
diff --git a/src/app/workflowitems-edit-page/workflowitems-edit-page.module.ts b/src/app/workflowitems-edit-page/workflowitems-edit-page.module.ts
index e99a3ca958..2e1ae4c820 100644
--- a/src/app/workflowitems-edit-page/workflowitems-edit-page.module.ts
+++ b/src/app/workflowitems-edit-page/workflowitems-edit-page.module.ts
@@ -9,6 +9,16 @@ import { ThemedWorkflowItemDeleteComponent } from './workflow-item-delete/themed
import { ThemedWorkflowItemSendBackComponent } from './workflow-item-send-back/themed-workflow-item-send-back.component';
import { StatisticsModule } from '../statistics/statistics.module';
import { ItemPageModule } from '../item-page/item-page.module';
+import {
+ AdvancedWorkflowActionsLoaderComponent
+} from './advanced-workflow-action/advanced-workflow-actions-loader/advanced-workflow-actions-loader.component';
+import { AdvancedWorkflowActionRatingReviewerComponent } from './advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component';
+import { AdvancedWorkflowActionSelectReviewerComponent } from './advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component';
+import { AdvancedWorkflowActionPageComponent } from './advanced-workflow-action/advanced-workflow-action-page/advanced-workflow-action-page.component';
+import {
+ AdvancedClaimedTaskActionsDirective
+} from './advanced-workflow-action/advanced-workflow-actions-loader/advanced-claimed-task-actions.directive';
+import { AdvancedWorkflowActionComponent } from './advanced-workflow-action/advanced-workflow-action/advanced-workflow-action.component';
@NgModule({
imports: [
@@ -23,7 +33,13 @@ import { ItemPageModule } from '../item-page/item-page.module';
WorkflowItemDeleteComponent,
ThemedWorkflowItemDeleteComponent,
WorkflowItemSendBackComponent,
- ThemedWorkflowItemSendBackComponent
+ ThemedWorkflowItemSendBackComponent,
+ AdvancedWorkflowActionsLoaderComponent,
+ AdvancedWorkflowActionRatingReviewerComponent,
+ AdvancedWorkflowActionSelectReviewerComponent,
+ AdvancedWorkflowActionPageComponent,
+ AdvancedClaimedTaskActionsDirective,
+ AdvancedWorkflowActionComponent,
]
})
/**
diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5
index f2b6a6459a..5f3ac8e069 100644
--- a/src/assets/i18n/en.json5
+++ b/src/assets/i18n/en.json5
@@ -4164,11 +4164,11 @@
"workflow-item.view.breadcrumbs": "Workflow View",
+ "workflow-item.advanced.title": "Advanced workflow",
- "workflow-item.select-reviewer.title": "Select Reviewer",
+ "workflow-item.selectrevieweraction.header": "Select Reviewer",
-
- "workflow-item.rating-reviewer.title": "Rating Reviewer",
+ "workflow-item.ratingrevieweraction.header": "Rating Reviewer",
"idle-modal.header": "Session will expire soon",
diff --git a/src/themes/custom/theme.module.ts b/src/themes/custom/theme.module.ts
index e2e97b9087..98b8c553af 100644
--- a/src/themes/custom/theme.module.ts
+++ b/src/themes/custom/theme.module.ts
@@ -178,6 +178,9 @@ const DECLARATIONS = [
ResourcePoliciesModule,
ComcolModule
],
+ exports: [
+ FullItemPageComponent
+ ],
declarations: DECLARATIONS
})