diff --git a/src/app/admin/admin-ldn-services/admin-ldn-services-routing.module.ts b/src/app/admin/admin-ldn-services/admin-ldn-services-routing.module.ts index 282ca430a2..58b3c82d6e 100644 --- a/src/app/admin/admin-ldn-services/admin-ldn-services-routing.module.ts +++ b/src/app/admin/admin-ldn-services/admin-ldn-services-routing.module.ts @@ -6,29 +6,29 @@ import {LdnServiceNewComponent} from './ldn-service-new/ldn-service-new.componen import {LdnServiceFormEditComponent} from './ldn-service-form-edit/ldn-service-form-edit.component'; @NgModule({ - imports: [ - RouterModule.forChild([ - { - path: '', - pathMatch: 'full', - component: LdnServicesOverviewComponent, - resolve: {breadcrumb: I18nBreadcrumbResolver}, - data: {title: 'ldn-registered-services.title', breadcrumbKey: 'ldn-registered-services.new'}, - }, - { - path: 'new', - resolve: {breadcrumb: I18nBreadcrumbResolver}, - component: LdnServiceNewComponent, - data: {title: 'ldn-register-new-service.title', breadcrumbKey: 'ldn-register-new-service'} - }, - { - path: 'edit/:serviceId', - resolve: {breadcrumb: I18nBreadcrumbResolver}, - component: LdnServiceFormEditComponent, - data: {title: 'ldn-edit-service.title', breadcrumbKey: 'ldn-edit-service'} - }, - ]), - ] + imports: [ + RouterModule.forChild([ + { + path: '', + pathMatch: 'full', + component: LdnServicesOverviewComponent, + resolve: {breadcrumb: I18nBreadcrumbResolver}, + data: {title: 'ldn-registered-services.title', breadcrumbKey: 'ldn-registered-services.new'}, + }, + { + path: 'new', + resolve: {breadcrumb: I18nBreadcrumbResolver}, + component: LdnServiceNewComponent, + data: {title: 'ldn-register-new-service.title', breadcrumbKey: 'ldn-register-new-service'} + }, + { + path: 'edit/:serviceId', + resolve: {breadcrumb: I18nBreadcrumbResolver}, + component: LdnServiceFormEditComponent, + data: {title: 'ldn-edit-service.title', breadcrumbKey: 'ldn-edit-service'} + }, + ]), + ] }) export class AdminLdnServicesRoutingModule { diff --git a/src/app/admin/admin-ldn-services/admin-ldn-services.module.ts b/src/app/admin/admin-ldn-services/admin-ldn-services.module.ts index 48ad89fdcc..0745e81558 100644 --- a/src/app/admin/admin-ldn-services/admin-ldn-services.module.ts +++ b/src/app/admin/admin-ldn-services/admin-ldn-services.module.ts @@ -11,19 +11,19 @@ import {LdnItemfiltersService} from './ldn-services-data/ldn-itemfilters-data.se @NgModule({ - imports: [ - CommonModule, - SharedModule, - AdminLdnServicesRoutingModule, - FormsModule - ], - declarations: [ - LdnServicesOverviewComponent, - LdnServiceNewComponent, - LdnServiceFormComponent, - LdnServiceFormEditComponent, - ], - providers: [LdnItemfiltersService] + imports: [ + CommonModule, + SharedModule, + AdminLdnServicesRoutingModule, + FormsModule + ], + declarations: [ + LdnServicesOverviewComponent, + LdnServiceNewComponent, + LdnServiceFormComponent, + LdnServiceFormEditComponent, + ], + providers: [LdnItemfiltersService] }) export class AdminLdnServicesModule { } diff --git a/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.html b/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.html index aadccb8be0..ddd4267dbb 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.html +++ b/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.html @@ -1,397 +1,414 @@
-
-
-

{{ 'ldn-edit-registered-service.title' | translate }}

-
- -
- -
- -
-
+ +
+

{{ 'ldn-edit-registered-service.title' | translate }}

-
-
- -
- - -
- {{ 'ldn-new-service.form.error.name' | translate }} -
-
- - -
- - -
- - -
- - -
- {{ 'ldn-new-service.form.error.url' | translate }} -
-
- - -
- - -
- {{ 'ldn-new-service.form.error.ldnurl' | translate }} -
-
- - -
- - -
- {{ 'ldn-new-service.form.error.score' | translate }} -
-
- - -
-
- -
- -
- -
-
- -
-
-
-
-
- -
- - - - -
-
-
-
- - - - +
-
- -
-
- - - - +
+ + +
+ {{ 'ldn-new-service.form.error.name' | translate }} +
+
+ + +
+ + +
+ + +
+ + +
+ {{ 'ldn-new-service.form.error.url' | translate }} +
+
+ + +
+ + +
+ {{ 'ldn-new-service.form.error.ldnurl' | translate }} +
+
+ + +
+ + +
+ {{ 'ldn-new-service.form.error.score' | translate }} +
+
+ + +
+
+ +
+ +
+ +
+
+
-
-
- -
- -
-
+
-
- - -
-
- - - - -
-
- -
+ +
+ + - {{ 'ldn-new-service.form.label.addPattern' | translate }} - - -
-
- -
- -
- -
-
-
- -
-
-
-
- -
- - - - -
-
-
-
- - - - -
-
-
-
- -
-
- - - - -
- -
- -
-
-
-
- -
-
- -
-
-
-
- {{ 'ldn-new-service.form.label.addPattern' | translate }} + + {{ 'ldn-new-service.form.label.addPattern' | translate }} + + +
+
+ +
+ +
+ +
+
+
+ +
+
+
+
+ +
+ + + + +
+
+
+
+ + + + +
+
+
+
+ +
+
+ + + + +
+
+
+
+ +
+ +
+
+
+
+ +
+
+ + +
+
+
+
+
+ + {{ 'ldn-new-service.form.label.addPattern' | translate }} - - + +
-
+
- + - -
-
+
- + - -
diff --git a/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.spec.ts b/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.spec.ts index 867053fa83..1a531c2057 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.spec.ts +++ b/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.spec.ts @@ -18,62 +18,62 @@ import {RouteService} from '../../../core/services/route.service'; import {provideMockStore} from '@ngrx/store/testing'; describe('LdnServiceFormEditComponent', () => { - let component: LdnServiceFormEditComponent; - let fixture: ComponentFixture; + let component: LdnServiceFormEditComponent; + let fixture: ComponentFixture; - let ldnServicesService: any; - let ldnItemfiltersService: any; - let cdRefStub: any; - let modalService: any; + let ldnServicesService: any; + let ldnItemfiltersService: any; + let cdRefStub: any; + let modalService: any; - const translateServiceStub = { - get: () => of('translated-text'), - onLangChange: new EventEmitter(), - onTranslationChange: new EventEmitter(), - onDefaultLangChange: new EventEmitter() - }; - - beforeEach(async () => { - ldnServicesService = { - update: () => ({}), + const translateServiceStub = { + get: () => of('translated-text'), + onLangChange: new EventEmitter(), + onTranslationChange: new EventEmitter(), + onDefaultLangChange: new EventEmitter() }; - ldnItemfiltersService = { - findAll: () => of(['item1', 'item2']), - }; - cdRefStub = Object.assign({ - detectChanges: () => fixture.detectChanges() + + beforeEach(async () => { + ldnServicesService = { + update: () => ({}), + }; + ldnItemfiltersService = { + findAll: () => of(['item1', 'item2']), + }; + cdRefStub = Object.assign({ + detectChanges: () => fixture.detectChanges() + }); + modalService = { + open: () => {/*comment*/ + } + }; + + await TestBed.configureTestingModule({ + imports: [ReactiveFormsModule, TranslateModule.forRoot()], + declarations: [LdnServiceFormEditComponent], + providers: [ + {provide: LdnServicesService, useValue: ldnServicesService}, + {provide: LdnItemfiltersService, useValue: ldnItemfiltersService}, + {provide: Router, useValue: new RouterStub()}, + {provide: ActivatedRoute, useValue: new MockActivatedRoute()}, + {provide: ChangeDetectorRef, useValue: cdRefStub}, + {provide: NgbModal, useValue: modalService}, + {provide: NotificationsService, useValue: NotificationsServiceStub}, + {provide: TranslateService, useValue: translateServiceStub}, + {provide: PaginationService, useValue: {}}, + FormBuilder, + RouteService, + provideMockStore({}), + ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(LdnServiceFormEditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); }); - modalService = { - open: () => {/*comment*/ - } - }; - await TestBed.configureTestingModule({ - imports: [ReactiveFormsModule, TranslateModule.forRoot()], - declarations: [LdnServiceFormEditComponent], - providers: [ - {provide: LdnServicesService, useValue: ldnServicesService}, - {provide: LdnItemfiltersService, useValue: ldnItemfiltersService}, - {provide: Router, useValue: new RouterStub()}, - {provide: ActivatedRoute, useValue: new MockActivatedRoute()}, - {provide: ChangeDetectorRef, useValue: cdRefStub}, - {provide: NgbModal, useValue: modalService}, - {provide: NotificationsService, useValue: NotificationsServiceStub}, - {provide: TranslateService, useValue: translateServiceStub}, - {provide: PaginationService, useValue: {}}, - FormBuilder, - RouteService, - provideMockStore({}), - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(LdnServiceFormEditComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); + it('should create', () => { + expect(component).toBeTruthy(); + }); }); diff --git a/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.ts b/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.ts index 8919c42f77..243a636e37 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.ts +++ b/src/app/admin/admin-ldn-services/ldn-service-form-edit/ldn-service-form-edit.component.ts @@ -22,478 +22,478 @@ import {PaginationComponentOptions} from '../../../shared/pagination/pagination- import {NotifyServicePattern} from "../ldn-services-model/ldn-service-patterns.model"; @Component({ - selector: 'ds-ldn-service-form-edit', - templateUrl: './ldn-service-form-edit.component.html', - styleUrls: ['./ldn-service-form-edit.component.scss'], - animations: [ - trigger('toggleAnimation', [ - state('true', style({})), - state('false', style({})), - transition('true <=> false', animate('300ms ease-in')), - ]), - ], + selector: 'ds-ldn-service-form-edit', + templateUrl: './ldn-service-form-edit.component.html', + styleUrls: ['./ldn-service-form-edit.component.scss'], + animations: [ + trigger('toggleAnimation', [ + state('true', style({})), + state('false', style({})), + transition('true <=> false', animate('300ms ease-in')), + ]), + ], }) export class LdnServiceFormEditComponent implements OnInit { - formModel: FormGroup; - @ViewChild('confirmModal', {static: true}) confirmModal: TemplateRef; - @ViewChild('resetFormModal', {static: true}) resetFormModal: TemplateRef; + formModel: FormGroup; + @ViewChild('confirmModal', {static: true}) confirmModal: TemplateRef; + @ViewChild('resetFormModal', {static: true}) resetFormModal: TemplateRef; - public inboundPatterns: string[] = notifyPatterns; - public outboundPatterns: string[] = notifyPatterns; - itemfiltersRD$: Observable>>; - config: FindListOptions = Object.assign(new FindListOptions(), { - elementsPerPage: 20 - }); - pageConfig: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), { - id: 'po', - pageSize: 20 - }); - @Input() public name: string; - @Input() public description: string; - @Input() public url: string; - @Input() public ldnUrl: string; - @Input() public score: number; + public inboundPatterns: string[] = notifyPatterns; + public outboundPatterns: string[] = notifyPatterns; + itemfiltersRD$: Observable>>; + config: FindListOptions = Object.assign(new FindListOptions(), { + elementsPerPage: 20 + }); + pageConfig: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), { + id: 'po', + pageSize: 20 + }); + @Input() public name: string; + @Input() public description: string; + @Input() public url: string; + @Input() public ldnUrl: string; + @Input() public score: number; @Input() public inboundPattern: string; - @Input() public outboundPattern: string; - @Input() public constraint: string; - @Input() public automatic: boolean; - @Input() public headerKey: string; - markedForDeletionInboundPattern: number[] = []; - markedForDeletionOutboundPattern: number[] = []; - selectedOutboundPatterns: string[]; - selectedInboundItemfilters: string[]; - selectedOutboundItemfilters: string[]; - selectedInboundPatterns: string[]; - protected serviceId: string; - private deletedInboundPatterns: number[] = []; - private deletedOutboundPatterns: number[] = []; - private modalRef: any; - private service: LdnService; + @Input() public outboundPattern: string; + @Input() public constraint: string; + @Input() public automatic: boolean; + @Input() public headerKey: string; + markedForDeletionInboundPattern: number[] = []; + markedForDeletionOutboundPattern: number[] = []; + selectedOutboundPatterns: string[]; + selectedInboundItemfilters: string[]; + selectedOutboundItemfilters: string[]; + selectedInboundPatterns: string[]; + protected serviceId: string; + private deletedInboundPatterns: number[] = []; + private deletedOutboundPatterns: number[] = []; + private modalRef: any; + private service: LdnService; - constructor( - protected ldnServicesService: LdnServicesService, - private ldnItemfiltersService: LdnItemfiltersService, - private formBuilder: FormBuilder, - private router: Router, - private route: ActivatedRoute, - private cdRef: ChangeDetectorRef, - protected modalService: NgbModal, - private notificationService: NotificationsService, - private translateService: TranslateService, - protected paginationService: PaginationService - ) { + constructor( + protected ldnServicesService: LdnServicesService, + private ldnItemfiltersService: LdnItemfiltersService, + private formBuilder: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private cdRef: ChangeDetectorRef, + protected modalService: NgbModal, + private notificationService: NotificationsService, + private translateService: TranslateService, + protected paginationService: PaginationService + ) { - this.formModel = this.formBuilder.group({ - id: [''], - name: ['', Validators.required], - description: ['', Validators.required], - url: ['', Validators.required], - ldnUrl: ['', Validators.required], - score: ['', [Validators.required, Validators.pattern('^0*(\.[0-9]+)?$|^1(\.0+)?$')]],inboundPattern: [''], - outboundPattern: [''], - constraintPattern: [''], - enabled: [''], - notifyServiceInboundPatterns: this.formBuilder.array([this.createInboundPatternFormGroup()]), - notifyServiceOutboundPatterns: this.formBuilder.array([this.createOutboundPatternFormGroup()]), - type: LDN_SERVICE.value, - }); - } + this.formModel = this.formBuilder.group({ + id: [''], + name: ['', Validators.required], + description: ['', Validators.required], + url: ['', Validators.required], + ldnUrl: ['', Validators.required], + score: ['', [Validators.required, Validators.pattern('^0*(\.[0-9]+)?$|^1(\.0+)?$')]], inboundPattern: [''], + outboundPattern: [''], + constraintPattern: [''], + enabled: [''], + notifyServiceInboundPatterns: this.formBuilder.array([this.createInboundPatternFormGroup()]), + notifyServiceOutboundPatterns: this.formBuilder.array([this.createOutboundPatternFormGroup()]), + type: LDN_SERVICE.value, + }); + } - ngOnInit(): void { - this.route.params.subscribe((params) => { - this.serviceId = params.serviceId; - if (this.serviceId) { - this.fetchServiceData(this.serviceId); - } - }); - this.setItemfilters(); - } + ngOnInit(): void { + this.route.params.subscribe((params) => { + this.serviceId = params.serviceId; + if (this.serviceId) { + this.fetchServiceData(this.serviceId); + } + }); + this.setItemfilters(); + } - setItemfilters() { - this.itemfiltersRD$ = this.ldnItemfiltersService.findAll().pipe( - getFirstCompletedRemoteData()); - } + setItemfilters() { + this.itemfiltersRD$ = this.ldnItemfiltersService.findAll().pipe( + getFirstCompletedRemoteData()); + } - fetchServiceData(serviceId: string): void { - this.ldnServicesService.findById(serviceId).pipe( - getFirstCompletedRemoteData() - ).subscribe( - (data: RemoteData) => { - if (data.hasSucceeded) { - this.service = data.payload; + fetchServiceData(serviceId: string): void { + this.ldnServicesService.findById(serviceId).pipe( + getFirstCompletedRemoteData() + ).subscribe( + (data: RemoteData) => { + if (data.hasSucceeded) { + this.service = data.payload; - this.formModel.patchValue({ - id: this.service.id, - name: this.service.name, - description: this.service.description, - url: this.service.url, - score: this.service.score,ldnUrl: this.service.ldnUrl, - type: this.service.type, - enabled: this.service.enabled - }); - this.filterPatternObjectsAndPickLabel('notifyServiceInboundPatterns', false) - this.filterPatternObjectsAndPickLabel('notifyServiceOutboundPatterns', true) - /*const inboundPatternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray; - inboundPatternsArray.clear(); - console.log(" outside (pattern: any)") - this.service.notifyServiceInboundPatterns.forEach((patternObj: NotifyServicePattern) => { - const patternFormGroup = this.initializeInboundPatternFormGroup(); - const newPatternObjWithLabel = Object.assign(new NotifyServicePattern(), {...patternObj,patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternObj.pattern + '.label')}) + this.formModel.patchValue({ + id: this.service.id, + name: this.service.name, + description: this.service.description, + url: this.service.url, + score: this.service.score, ldnUrl: this.service.ldnUrl, + type: this.service.type, + enabled: this.service.enabled + }); + this.filterPatternObjectsAndPickLabel('notifyServiceInboundPatterns', false) + this.filterPatternObjectsAndPickLabel('notifyServiceOutboundPatterns', true) + /*const inboundPatternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray; + inboundPatternsArray.clear(); + console.log(" outside (pattern: any)") + this.service.notifyServiceInboundPatterns.forEach((patternObj: NotifyServicePattern) => { + const patternFormGroup = this.initializeInboundPatternFormGroup(); + const newPatternObjWithLabel = Object.assign(new NotifyServicePattern(), {...patternObj,patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternObj.pattern + '.label')}) + patternFormGroup.patchValue(newPatternObjWithLabel); + console.log("(pattern: any)") + + + inboundPatternsArray.push(patternFormGroup); + this.cdRef.detectChanges(); + })*/; + + /*const outboundPatternsArray = this.formModel.get('notifyServiceOutboundPatterns') as FormArray; + outboundPatternsArray.clear(); + this.service.notifyServiceOutboundPatterns.forEach((pattern: any) => { + const patternFormGroup = this.initializeOutboundPatternFormGroup(); + patternFormGroup.patchValue(pattern); + outboundPatternsArray.push(patternFormGroup); + this.cdRef.detectChanges(); + });*/ + } + }, + ); + } + + filterPatternObjectsAndPickLabel(formArrayName: string, isOutbound: boolean) { + const PatternsArray = this.formModel.get(formArrayName) as FormArray; + PatternsArray.clear(); + let servicesToUse; + if (isOutbound) { + servicesToUse = this.service.notifyServiceOutboundPatterns + } else { + servicesToUse = this.service.notifyServiceInboundPatterns + } + + servicesToUse.forEach((patternObj: NotifyServicePattern) => { + let patternFormGroup; + if (isOutbound) { + patternFormGroup = this.initializeOutboundPatternFormGroup(); + } else { + patternFormGroup = this.initializeInboundPatternFormGroup(); + } + const newPatternObjWithLabel = Object.assign(new NotifyServicePattern(), { + ...patternObj, + patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternObj?.pattern + '.label') + }) patternFormGroup.patchValue(newPatternObjWithLabel); console.log("(pattern: any)") - - inboundPatternsArray.push(patternFormGroup); + PatternsArray.push(patternFormGroup); this.cdRef.detectChanges(); - })*/; + }) - /*const outboundPatternsArray = this.formModel.get('notifyServiceOutboundPatterns') as FormArray; - outboundPatternsArray.clear(); - this.service.notifyServiceOutboundPatterns.forEach((pattern: any) => { - const patternFormGroup = this.initializeOutboundPatternFormGroup(); - patternFormGroup.patchValue(pattern); - outboundPatternsArray.push(patternFormGroup); - this.cdRef.detectChanges(); - });*/ - } - }, - ); - } - filterPatternObjectsAndPickLabel(formArrayName: string, isOutbound: boolean) { - const PatternsArray = this.formModel.get(formArrayName) as FormArray; - PatternsArray.clear(); - let servicesToUse; - if (isOutbound) { - servicesToUse = this.service.notifyServiceOutboundPatterns - } else { - servicesToUse = this.service.notifyServiceInboundPatterns } - servicesToUse.forEach((patternObj: NotifyServicePattern) => { - let patternFormGroup; - if (isOutbound) { - patternFormGroup = this.initializeOutboundPatternFormGroup(); - } else { - patternFormGroup = this.initializeInboundPatternFormGroup(); - } - const newPatternObjWithLabel = Object.assign(new NotifyServicePattern(), { - ...patternObj, - patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternObj?.pattern + '.label') - }) - patternFormGroup.patchValue(newPatternObjWithLabel); - console.log("(pattern: any)") + generatePatchOperations(): any[] { + const patchOperations: any[] = []; - PatternsArray.push(patternFormGroup); - this.cdRef.detectChanges(); - }) - - - } - - generatePatchOperations(): any[] { - const patchOperations: any[] = []; - - this.createReplaceOperation(patchOperations, 'name', '/name'); - this.createReplaceOperation(patchOperations, 'description', '/description'); - this.createReplaceOperation(patchOperations, 'ldnUrl', '/ldnurl'); - this.createReplaceOperation(patchOperations, 'url', '/url'); + this.createReplaceOperation(patchOperations, 'name', '/name'); + this.createReplaceOperation(patchOperations, 'description', '/description'); + this.createReplaceOperation(patchOperations, 'ldnUrl', '/ldnurl'); + this.createReplaceOperation(patchOperations, 'url', '/url'); this.createReplaceOperation(patchOperations, 'score', '/score'); - this.handlePatterns(patchOperations, 'notifyServiceInboundPatterns'); - this.handlePatterns(patchOperations, 'notifyServiceOutboundPatterns'); + this.handlePatterns(patchOperations, 'notifyServiceInboundPatterns'); + this.handlePatterns(patchOperations, 'notifyServiceOutboundPatterns'); - this.deletedInboundPatterns.forEach(index => { - const removeOperation: Operation = { - op: 'remove', - path: `notifyServiceInboundPatterns[${index}]` - }; - patchOperations.push(removeOperation); - }); - - this.deletedOutboundPatterns.forEach(index => { - const removeOperation: Operation = { - op: 'remove', - path: `notifyServiceOutboundPatterns[${index}]` - }; - patchOperations.push(removeOperation); - }); - - return patchOperations; - } - - onSubmit() { - this.openConfirmModal(this.confirmModal); - } - - addInboundPattern() { - const notifyServiceInboundPatternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray; - notifyServiceInboundPatternsArray.push(this.createInboundPatternFormGroup()); - } - - addOutboundPattern() { - const notifyServiceOutboundPatternsArray = this.formModel.get('notifyServiceOutboundPatterns') as FormArray; - notifyServiceOutboundPatternsArray.push(this.createOutboundPatternFormGroup()); - } - - - selectOutboundPattern(patternValue: string, index: number): void { - const patternArray = (this.formModel.get('notifyServiceOutboundPatterns') as FormArray) - console.log((this.formModel.get('notifyServiceOutboundPatterns') as FormArray)) - patternArray.controls[index].patchValue({pattern: patternValue}) - patternArray.controls[index].patchValue({patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternValue + '.label')}) - - } - - selectOutboundItemFilter(filterValue: string, index: number) { - const filterArray = (this.formModel.get('notifyServiceOutboundPatterns') as FormArray) - console.log((this.formModel.get('notifyServiceOutboundPatterns') as FormArray)) - filterArray.controls[index].patchValue({constraint: filterValue}) - } - - selectInboundPattern(patternValue: string, index: number): void { - const patternArray = (this.formModel.get('notifyServiceInboundPatterns') as FormArray) - console.log((this.formModel.get('notifyServiceInboundPatterns') as FormArray)) - patternArray.controls[index].patchValue({pattern: patternValue}) - patternArray.controls[index].patchValue({patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternValue + '.label')}) - } - - selectInboundItemFilter(filterValue: string, index: number): void { - const filterArray = (this.formModel.get('notifyServiceInboundPatterns') as FormArray) - console.log((this.formModel.get('notifyServiceInboundPatterns') as FormArray)) - filterArray.controls[index].patchValue({constraint: filterValue}) - } - - toggleAutomatic(i: number) { - const automaticControl = this.formModel.get(`notifyServiceInboundPatterns.${i}.automatic`); - if (automaticControl) { - automaticControl.setValue(!automaticControl.value); - } - } - - toggleEnabled() { - const newStatus = !this.formModel.get('enabled').value; - - const patchOperation: Operation = { - op: 'replace', - path: '/enabled', - value: newStatus, - }; - - this.ldnServicesService.patch(this.service, [patchOperation]).pipe( - getFirstCompletedRemoteData() - ).subscribe( - () => { - - this.formModel.get('enabled').setValue(newStatus); - this.cdRef.detectChanges(); - } - ); - } - - - closeModal() { - this.modalRef.close(); - this.cdRef.detectChanges(); - } - - openConfirmModal(content) { - this.modalRef = this.modalService.open(content); - } - - openResetFormModal(content) { - this.modalRef = this.modalService.open(content); - } - - patchService() { - this.deleteMarkedInboundPatterns(); - this.deleteMarkedOutboundPatterns(); - - const patchOperations = this.generatePatchOperations(); - - - this.ldnServicesService.patch(this.service, patchOperations).pipe( - getFirstCompletedRemoteData() - ).subscribe( - (rd: RemoteData) => { - if (rd.hasSucceeded) { - this.closeModal(); - this.sendBack(); - this.notificationService.success(this.translateService.get('admin.registries.services-formats.modify.success.head'), - this.translateService.get('admin.registries.services-formats.modify.success.content')); - }else { - this.notificationService.error(this.translateService.get('admin.registries.services-formats.modify.failure.head'), - this.translateService.get('admin.registries.services-formats.modify.failure.content')); - this.closeModal(); - } + this.deletedInboundPatterns.forEach(index => { + const removeOperation: Operation = { + op: 'remove', + path: `notifyServiceInboundPatterns[${index}]` + }; + patchOperations.push(removeOperation); }); - } - resetFormAndLeave() { - this.sendBack(); - this.closeModal(); - } + this.deletedOutboundPatterns.forEach(index => { + const removeOperation: Operation = { + op: 'remove', + path: `notifyServiceOutboundPatterns[${index}]` + }; + patchOperations.push(removeOperation); + }); - markForInboundPatternDeletion(index: number) { - if (!this.markedForDeletionInboundPattern.includes(index)) { - this.markedForDeletionInboundPattern.push(index); + return patchOperations; } - } - unmarkForInboundPatternDeletion(index: number) { - const i = this.markedForDeletionInboundPattern.indexOf(index); - if (i !== -1) { - this.markedForDeletionInboundPattern.splice(i, 1); + onSubmit() { + this.openConfirmModal(this.confirmModal); } - } - markForOutboundPatternDeletion(index: number) { - if (!this.markedForDeletionOutboundPattern.includes(index)) { - this.markedForDeletionOutboundPattern.push(index); + addInboundPattern() { + const notifyServiceInboundPatternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray; + notifyServiceInboundPatternsArray.push(this.createInboundPatternFormGroup()); } - } - unmarkForOutboundPatternDeletion(index: number) { - const i = this.markedForDeletionOutboundPattern.indexOf(index); - if (i !== -1) { - this.markedForDeletionOutboundPattern.splice(i, 1); + addOutboundPattern() { + const notifyServiceOutboundPatternsArray = this.formModel.get('notifyServiceOutboundPatterns') as FormArray; + notifyServiceOutboundPatternsArray.push(this.createOutboundPatternFormGroup()); } - } - deleteMarkedInboundPatterns() { - this.markedForDeletionInboundPattern.sort((a, b) => b - a); - const patternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray; - for (const index of this.markedForDeletionInboundPattern) { - if (index >= 0 && index < patternsArray.length) { - const patternGroup = patternsArray.at(index) as FormGroup; - const patternValue = patternGroup.value; - if (patternValue.isNew) { - patternsArray.removeAt(index); - } else { - this.deletedInboundPatterns.push(index); + selectOutboundPattern(patternValue: string, index: number): void { + const patternArray = (this.formModel.get('notifyServiceOutboundPatterns') as FormArray) + console.log((this.formModel.get('notifyServiceOutboundPatterns') as FormArray)) + patternArray.controls[index].patchValue({pattern: patternValue}) + patternArray.controls[index].patchValue({patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternValue + '.label')}) + + } + + selectOutboundItemFilter(filterValue: string, index: number) { + const filterArray = (this.formModel.get('notifyServiceOutboundPatterns') as FormArray) + console.log((this.formModel.get('notifyServiceOutboundPatterns') as FormArray)) + filterArray.controls[index].patchValue({constraint: filterValue}) + } + + selectInboundPattern(patternValue: string, index: number): void { + const patternArray = (this.formModel.get('notifyServiceInboundPatterns') as FormArray) + console.log((this.formModel.get('notifyServiceInboundPatterns') as FormArray)) + patternArray.controls[index].patchValue({pattern: patternValue}) + patternArray.controls[index].patchValue({patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternValue + '.label')}) + } + + selectInboundItemFilter(filterValue: string, index: number): void { + const filterArray = (this.formModel.get('notifyServiceInboundPatterns') as FormArray) + console.log((this.formModel.get('notifyServiceInboundPatterns') as FormArray)) + filterArray.controls[index].patchValue({constraint: filterValue}) + } + + toggleAutomatic(i: number) { + const automaticControl = this.formModel.get(`notifyServiceInboundPatterns.${i}.automatic`); + if (automaticControl) { + automaticControl.setValue(!automaticControl.value); } - } } - this.markedForDeletionInboundPattern = []; - } + toggleEnabled() { + const newStatus = !this.formModel.get('enabled').value; - - deleteMarkedOutboundPatterns() { - this.markedForDeletionOutboundPattern.sort((a, b) => b - a); - const patternsArray = this.formModel.get('notifyServiceOutboundPatterns') as FormArray; - - for (const index of this.markedForDeletionOutboundPattern) { - if (index >= 0 && index < patternsArray.length) { - const patternGroup = patternsArray.at(index) as FormGroup; - const patternValue = patternGroup.value; - if (patternValue.isNew) { - patternsArray.removeAt(index); - } else { - - this.deletedOutboundPatterns.push(index); - } - } - } - - this.markedForDeletionOutboundPattern = []; - } - - setValueForControlInOutboundArray(formArrayName: string, index: number, value: string) { - console.log(formArrayName) - const formArray = this.formModel.get(formArrayName) as FormArray; - console.warn('inside setValueForControlInOutboundArray', formArray); - formArray.at(index).setValue(value); - } - - setValueForControlInInboundArray(formArrayName: string, index: number, value: string) { - console.log(formArrayName) - const formArray = this.formModel.get(formArrayName) as FormArray; - console.warn('inside setValueForControlInInboundArray', formArray); - formArray.at(index).setValue(value); - } - - private createReplaceOperation(patchOperations: any[], formControlName: string, path: string): void { - if (this.formModel.get(formControlName).dirty) { - patchOperations.push({ - op: 'replace', - path, - value: this.formModel.get(formControlName).value, - }); - } - } - - private handlePatterns(patchOperations: any[], formArrayName: string): void { - console.log(this.formModel) - const patternsArray = this.formModel.get(formArrayName) as FormArray - - - for (let i = 0; i < patternsArray.length; i++) { - const patternGroup = patternsArray.at(i) as FormGroup; - - const patternValue = patternGroup.value; - if (patternGroup.touched) { - delete patternValue?.patternLabel; - if (patternValue.isNew) { - delete patternValue.isNew; - const addOperation = { - op: 'add', - path: `${formArrayName}/-`, - value: patternValue, - }; - patchOperations.push(addOperation); - } else { - const replaceOperation = { + const patchOperation: Operation = { op: 'replace', - path: `${formArrayName}[${i}]`, - value: patternValue, - }; - patchOperations.push(replaceOperation); - } - } + path: '/enabled', + value: newStatus, + }; + + this.ldnServicesService.patch(this.service, [patchOperation]).pipe( + getFirstCompletedRemoteData() + ).subscribe( + () => { + + this.formModel.get('enabled').setValue(newStatus); + this.cdRef.detectChanges(); + } + ); } - } - private sendBack() { - this.router.navigateByUrl('admin/ldn/services'); - } - private createOutboundPatternFormGroup(): FormGroup { - return this.formBuilder.group({ - pattern: '', - patternLabel: 'Select a pattern', - constraint: '', - isNew: true, - }); - } + closeModal() { + this.modalRef.close(); + this.cdRef.detectChanges(); + } - private createInboundPatternFormGroup(): FormGroup { - return this.formBuilder.group({ - pattern: '', - patternLabel: 'Select a pattern', - constraint: '', - automatic: false, - isNew: true - }); - } + openConfirmModal(content) { + this.modalRef = this.modalService.open(content); + } - private initializeOutboundPatternFormGroup(): FormGroup { - return this.formBuilder.group({ - pattern: '', - patternLabel: '', - constraint: '', - }); - } + openResetFormModal(content) { + this.modalRef = this.modalService.open(content); + } - private initializeInboundPatternFormGroup(): FormGroup { - return this.formBuilder.group({ - pattern: '', - patternLabel: '', - constraint: '', - automatic: '', - }); - } + patchService() { + this.deleteMarkedInboundPatterns(); + this.deleteMarkedOutboundPatterns(); + + const patchOperations = this.generatePatchOperations(); + + + this.ldnServicesService.patch(this.service, patchOperations).pipe( + getFirstCompletedRemoteData() + ).subscribe( + (rd: RemoteData) => { + if (rd.hasSucceeded) { + this.closeModal(); + this.sendBack(); + this.notificationService.success(this.translateService.get('admin.registries.services-formats.modify.success.head'), + this.translateService.get('admin.registries.services-formats.modify.success.content')); + } else { + this.notificationService.error(this.translateService.get('admin.registries.services-formats.modify.failure.head'), + this.translateService.get('admin.registries.services-formats.modify.failure.content')); + this.closeModal(); + } + }); + } + + resetFormAndLeave() { + this.sendBack(); + this.closeModal(); + } + + markForInboundPatternDeletion(index: number) { + if (!this.markedForDeletionInboundPattern.includes(index)) { + this.markedForDeletionInboundPattern.push(index); + } + } + + unmarkForInboundPatternDeletion(index: number) { + const i = this.markedForDeletionInboundPattern.indexOf(index); + if (i !== -1) { + this.markedForDeletionInboundPattern.splice(i, 1); + } + } + + markForOutboundPatternDeletion(index: number) { + if (!this.markedForDeletionOutboundPattern.includes(index)) { + this.markedForDeletionOutboundPattern.push(index); + } + } + + unmarkForOutboundPatternDeletion(index: number) { + const i = this.markedForDeletionOutboundPattern.indexOf(index); + if (i !== -1) { + this.markedForDeletionOutboundPattern.splice(i, 1); + } + } + + deleteMarkedInboundPatterns() { + this.markedForDeletionInboundPattern.sort((a, b) => b - a); + const patternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray; + + for (const index of this.markedForDeletionInboundPattern) { + if (index >= 0 && index < patternsArray.length) { + const patternGroup = patternsArray.at(index) as FormGroup; + const patternValue = patternGroup.value; + if (patternValue.isNew) { + patternsArray.removeAt(index); + } else { + this.deletedInboundPatterns.push(index); + } + } + } + + this.markedForDeletionInboundPattern = []; + } + + + deleteMarkedOutboundPatterns() { + this.markedForDeletionOutboundPattern.sort((a, b) => b - a); + const patternsArray = this.formModel.get('notifyServiceOutboundPatterns') as FormArray; + + for (const index of this.markedForDeletionOutboundPattern) { + if (index >= 0 && index < patternsArray.length) { + const patternGroup = patternsArray.at(index) as FormGroup; + const patternValue = patternGroup.value; + if (patternValue.isNew) { + patternsArray.removeAt(index); + } else { + + this.deletedOutboundPatterns.push(index); + } + } + } + + this.markedForDeletionOutboundPattern = []; + } + + setValueForControlInOutboundArray(formArrayName: string, index: number, value: string) { + console.log(formArrayName) + const formArray = this.formModel.get(formArrayName) as FormArray; + console.warn('inside setValueForControlInOutboundArray', formArray); + formArray.at(index).setValue(value); + } + + setValueForControlInInboundArray(formArrayName: string, index: number, value: string) { + console.log(formArrayName) + const formArray = this.formModel.get(formArrayName) as FormArray; + console.warn('inside setValueForControlInInboundArray', formArray); + formArray.at(index).setValue(value); + } + + private createReplaceOperation(patchOperations: any[], formControlName: string, path: string): void { + if (this.formModel.get(formControlName).dirty) { + patchOperations.push({ + op: 'replace', + path, + value: this.formModel.get(formControlName).value, + }); + } + } + + private handlePatterns(patchOperations: any[], formArrayName: string): void { + console.log(this.formModel) + const patternsArray = this.formModel.get(formArrayName) as FormArray + + + for (let i = 0; i < patternsArray.length; i++) { + const patternGroup = patternsArray.at(i) as FormGroup; + + const patternValue = patternGroup.value; + if (patternGroup.touched) { + delete patternValue?.patternLabel; + if (patternValue.isNew) { + delete patternValue.isNew; + const addOperation = { + op: 'add', + path: `${formArrayName}/-`, + value: patternValue, + }; + patchOperations.push(addOperation); + } else { + const replaceOperation = { + op: 'replace', + path: `${formArrayName}[${i}]`, + value: patternValue, + }; + patchOperations.push(replaceOperation); + } + } + } + } + + private sendBack() { + this.router.navigateByUrl('admin/ldn/services'); + } + + private createOutboundPatternFormGroup(): FormGroup { + return this.formBuilder.group({ + pattern: '', + patternLabel: 'Select a pattern', + constraint: '', + isNew: true, + }); + } + + private createInboundPatternFormGroup(): FormGroup { + return this.formBuilder.group({ + pattern: '', + patternLabel: 'Select a pattern', + constraint: '', + automatic: false, + isNew: true + }); + } + + private initializeOutboundPatternFormGroup(): FormGroup { + return this.formBuilder.group({ + pattern: '', + patternLabel: '', + constraint: '', + }); + } + + private initializeInboundPatternFormGroup(): FormGroup { + return this.formBuilder.group({ + pattern: '', + patternLabel: '', + constraint: '', + automatic: '', + }); + } } diff --git a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html index a9ee3f0a55..298fa0501e 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html +++ b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html @@ -1,359 +1,366 @@
-
-
-

{{ 'ldn-create-service.title' | translate }}

-
- -
- - -
- {{ 'ldn-new-service.form.error.name' | translate }} -
-
- - -
- - -
- - - - -
- - -
- {{ 'ldn-new-service.form.error.url' | translate }} -
-
- - - -
- - -
- {{ 'ldn-new-service.form.error.ldnurl' | translate }} -
-
- -
- - -
- {{ 'ldn-new-service.form.error.score' | translate }} -
-
- - -
-
- -
- -
- + +
+

{{ 'ldn-create-service.title' | translate }}

-
- -
- -
-
-
- -
- - - - -
-
- -
- {{ 'ldn-new-service.form.error.patterns' | translate }} + +
+ + +
+ {{ 'ldn-new-service.form.error.name' | translate }}
-
+
+ + +
+ + +
-
- -
-
- - - - - -
- -
-
-
-
- -
- -
- -
- -
- - {{ 'ldn-new-service.form.label.addPattern' | translate }} +
+ +
+
+ + + + +
+
+
+
- - -
-
- -
- -
- -
-
-
- -
-
-
-
- -
- - - - -
-
-
-
- - - - -
-
-
+ [style.visibility]="formModel.get('notifyServiceInboundPatterns')['controls'][i]?.value?.pattern ? 'visible' : 'hidden'" + class="col-sm-1"> + +
+
+
+
+ +
+ +
-
- -
-
- - - -
-
-
- -
- -
-
-
-
- -
- -
-
-
+ {{ 'ldn-new-service.form.label.addPattern' | translate }} - {{ 'ldn-new-service.form.label.addPattern' | translate }} + + +
+
+ +
+ +
+ +
+
+
+ +
+
+
+
+ +
+ + + + +
+
+
+
+ + + + +
+
+
+ +
+ +
+
+ + + + +
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+ +
+ + {{ 'ldn-new-service.form.label.addPattern' | translate }} -
-   -
+
+   +
- + - +
-
+
- + - -
-
+
- + - -
diff --git a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.spec.ts b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.spec.ts index f017d4bab2..e6ed9efa73 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.spec.ts +++ b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.spec.ts @@ -17,69 +17,69 @@ import {of} from 'rxjs'; import {EventEmitter} from '@angular/core'; describe('LdnServiceFormComponent', () => { - let component: LdnServiceFormComponent; - let fixture: ComponentFixture; + let component: LdnServiceFormComponent; + let fixture: ComponentFixture; - let ldnServicesService: any; - let ldnItemfiltersService: any; - let notificationsService: any; + let ldnServicesService: any; + let ldnItemfiltersService: any; + let notificationsService: any; - const itemFiltersRdPL$ = createSuccessfulRemoteDataObject$(createPaginatedList([new Itemfilter()])); - const translateServiceStub = { - get: () => of('translated-text'), - onLangChange: new EventEmitter(), - onTranslationChange: new EventEmitter(), - onDefaultLangChange: new EventEmitter() - }; + const itemFiltersRdPL$ = createSuccessfulRemoteDataObject$(createPaginatedList([new Itemfilter()])); + const translateServiceStub = { + get: () => of('translated-text'), + onLangChange: new EventEmitter(), + onTranslationChange: new EventEmitter(), + onDefaultLangChange: new EventEmitter() + }; - beforeEach(async () => { - ldnItemfiltersService = jasmine.createSpyObj('ldnItemfiltersService', { - findAll: jasmine.createSpy('findAll'), + beforeEach(async () => { + ldnItemfiltersService = jasmine.createSpyObj('ldnItemfiltersService', { + findAll: jasmine.createSpy('findAll'), + }); + + ldnServicesService = jasmine.createSpyObj('ldnServicesService', { + create: jasmine.createSpy('create'), + }); + + notificationsService = jasmine.createSpyObj('notificationsService', { + success: jasmine.createSpy('success'), + error: jasmine.createSpy('error'), + }); + + await TestBed.configureTestingModule({ + imports: [ + ReactiveFormsModule, + RouterTestingModule, + NgbModalModule, + TranslateModule.forRoot() + ], + providers: [ + {provide: LdnItemfiltersService, useValue: ldnItemfiltersService}, + {provide: LdnServicesService, useValue: ldnServicesService}, + {provide: NotificationsService, useValue: notificationsService}, + {provide: TranslateService, useValue: translateServiceStub}, + {provide: Router, useValue: new RouterStub()}, + { + provide: NgbModal, useValue: { + open: () => {/*comment*/ + } + } + }, + FormBuilder + ], + declarations: [LdnServiceFormComponent] + }) + .compileComponents(); }); - ldnServicesService = jasmine.createSpyObj('ldnServicesService', { - create: jasmine.createSpy('create'), + beforeEach(() => { + fixture = TestBed.createComponent(LdnServiceFormComponent); + component = fixture.componentInstance; + ldnItemfiltersService.findAll.and.returnValue(itemFiltersRdPL$); + fixture.detectChanges(); }); - notificationsService = jasmine.createSpyObj('notificationsService', { - success: jasmine.createSpy('success'), - error: jasmine.createSpy('error'), + it('should create', () => { + expect(component).toBeTruthy(); }); - - await TestBed.configureTestingModule({ - imports: [ - ReactiveFormsModule, - RouterTestingModule, - NgbModalModule, - TranslateModule.forRoot() - ], - providers: [ - {provide: LdnItemfiltersService, useValue: ldnItemfiltersService}, - {provide: LdnServicesService, useValue: ldnServicesService}, - {provide: NotificationsService, useValue: notificationsService}, - {provide: TranslateService, useValue: translateServiceStub}, - {provide: Router, useValue: new RouterStub()}, - { - provide: NgbModal, useValue: { - open: () => {/*comment*/ - } - } - }, - FormBuilder - ], - declarations: [LdnServiceFormComponent] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(LdnServiceFormComponent); - component = fixture.componentInstance; - ldnItemfiltersService.findAll.and.returnValue(itemFiltersRdPL$); - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); }); diff --git a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts index 54dfc2996c..334078398f 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts +++ b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts @@ -21,255 +21,258 @@ import {NgbModal} from '@ng-bootstrap/ng-bootstrap'; @Component({ - selector: 'ds-ldn-service-form', - templateUrl: './ldn-service-form.component.html', - styleUrls: ['./ldn-service-form.component.scss'], - animations: [ - trigger('toggleAnimation', [ - state('true', style({})), - state('false', style({})), - transition('true <=> false', animate('300ms ease-in')), - ]), - ], + selector: 'ds-ldn-service-form', + templateUrl: './ldn-service-form.component.html', + styleUrls: ['./ldn-service-form.component.scss'], + animations: [ + trigger('toggleAnimation', [ + state('true', style({})), + state('false', style({})), + transition('true <=> false', animate('300ms ease-in')), + ]), + ], }) export class LdnServiceFormComponent implements OnInit { - formModel: FormGroup; - @ViewChild('confirmModal', {static: true}) confirmModal: TemplateRef; - @ViewChild('resetFormModal', {static: true}) resetFormModal: TemplateRef; - public inboundPatterns: string[] = notifyPatterns; - public outboundPatterns: string[] = notifyPatterns; - itemfiltersRD$: Observable>>; - config: FindListOptions = Object.assign(new FindListOptions(), { - elementsPerPage: 20 - }); - pageConfig: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), { - id: 'po', - pageSize: 20 - }); - @Input() public name: string; - @Input() public description: string; - @Input() public url: string; - @Input() public score: string; + formModel: FormGroup; + @ViewChild('confirmModal', {static: true}) confirmModal: TemplateRef; + @ViewChild('resetFormModal', {static: true}) resetFormModal: TemplateRef; + public inboundPatterns: string[] = notifyPatterns; + public outboundPatterns: string[] = notifyPatterns; + itemfiltersRD$: Observable>>; + config: FindListOptions = Object.assign(new FindListOptions(), { + elementsPerPage: 20 + }); + pageConfig: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), { + id: 'po', + pageSize: 20 + }); + @Input() public name: string; + @Input() public description: string; + @Input() public url: string; + @Input() public score: string; @Input() public ldnUrl: string; - @Input() public inboundPattern: string; - @Input() public outboundPattern: string; - @Input() public constraint: string; - @Input() public automatic: boolean; - @Input() public headerKey: string; - @Output() submitForm: EventEmitter = new EventEmitter(); - @Output() cancelForm: EventEmitter = new EventEmitter(); - selectedOutboundPatterns: string[]; - selectedInboundPatterns: string[]; - selectedInboundItemfilters: string[]; - selectedOutboundItemfilters: string[]; - private modalRef: any; + @Input() public inboundPattern: string; + @Input() public outboundPattern: string; + @Input() public constraint: string; + @Input() public automatic: boolean; + @Input() public headerKey: string; + @Output() submitForm: EventEmitter = new EventEmitter(); + @Output() cancelForm: EventEmitter = new EventEmitter(); + selectedOutboundPatterns: string[]; + selectedInboundPatterns: string[]; + selectedInboundItemfilters: string[]; + selectedOutboundItemfilters: string[]; hasInboundPattern: boolean; hasOutboundPattern: boolean; isScoreValid: boolean; + private modalRef: any; - constructor( - private ldnServicesService: LdnServicesService, - private ldnItemfiltersService: LdnItemfiltersService, - private formBuilder: FormBuilder, - private router: Router, - private notificationsService: NotificationsService, - private translateService: TranslateService, - private cdRef: ChangeDetectorRef, - protected modalService: NgbModal, - ) { + constructor( + private ldnServicesService: LdnServicesService, + private ldnItemfiltersService: LdnItemfiltersService, + private formBuilder: FormBuilder, + private router: Router, + private notificationsService: NotificationsService, + private translateService: TranslateService, + private cdRef: ChangeDetectorRef, + protected modalService: NgbModal, + ) { - this.formModel = this.formBuilder.group({ - enabled: true, - id: [''], - name: ['', Validators.required], - description: [''], - url: ['', Validators.required], - score: ['', [Validators.required, Validators.pattern('^0*(\.[0-9]+)?$|^1(\.0+)?$')]],ldnUrl: ['', Validators.required], - inboundPattern: [''], - outboundPattern: [''], - constraintPattern: [''], - notifyServiceInboundPatterns: this.formBuilder.array([this.createInboundPatternFormGroup()]), - notifyServiceOutboundPatterns: this.formBuilder.array([this.createOutboundPatternFormGroup()]), - type: LDN_SERVICE.value, - }); - } - - ngOnInit(): void { - console.log(notifyPatterns) - this.setItemfilters(); - - } - - setItemfilters() { - this.itemfiltersRD$ = this.ldnItemfiltersService.findAll().pipe( - getFirstCompletedRemoteData()); - } - - onSubmit() { - this.openConfirmModal(this.confirmModal); - } - - openConfirmModal(content) { - this.modalRef = this.modalService.open(content); - } - - openResetFormModal(content) { - this.modalRef = this.modalService.open(content); - } - - createService() { - this.formModel.get('name').markAsTouched(); - this.formModel.get('score').markAsTouched();this.formModel.get('url').markAsTouched(); - this.formModel.get('ldnUrl').markAsTouched();this.formModel.get('notifyServiceInboundPatterns').markAsTouched(); - this.formModel.get('notifyServiceOutboundPatterns').markAsTouched(); - - const name = this.formModel.get('name').value; - const url = this.formModel.get('url').value; - const score = this.formModel.get('score').value; - const ldnUrl = this.formModel.get('ldnUrl').value; - - const hasInboundPattern = this.checkPatterns(this.formModel.get('notifyServiceInboundPatterns') as FormArray); - const hasOutboundPattern = this.checkPatterns(this.formModel.get('notifyServiceOutboundPatterns') as FormArray); - - if (!name || !url || !ldnUrl || !score || (!hasInboundPattern && !hasOutboundPattern)) { - this.closeModal(); - return; + this.formModel = this.formBuilder.group({ + enabled: true, + id: [''], + name: ['', Validators.required], + description: [''], + url: ['', Validators.required], + score: ['', [Validators.required, Validators.pattern('^0*(\.[0-9]+)?$|^1(\.0+)?$')]], ldnUrl: ['', Validators.required], + inboundPattern: [''], + outboundPattern: [''], + constraintPattern: [''], + notifyServiceInboundPatterns: this.formBuilder.array([this.createInboundPatternFormGroup()]), + notifyServiceOutboundPatterns: this.formBuilder.array([this.createOutboundPatternFormGroup()]), + type: LDN_SERVICE.value, + }); } - this.formModel.value.notifyServiceInboundPatterns = this.formModel.value.notifyServiceInboundPatterns.map((pattern: { - pattern: string; - patternLabel: string - }) => { - const {patternLabel, ...rest} = pattern; - return rest; - }); + ngOnInit(): void { + console.log(notifyPatterns) + this.setItemfilters(); - this.formModel.value.notifyServiceOutboundPatterns = this.formModel.value.notifyServiceOutboundPatterns.map((pattern: { - pattern: string; - patternLabel: string - }) => { - const {patternLabel, ...rest} = pattern; - return rest; - }); + } - const values = this.formModel.value; + setItemfilters() { + this.itemfiltersRD$ = this.ldnItemfiltersService.findAll().pipe( + getFirstCompletedRemoteData()); + } - const ldnServiceData = this.ldnServicesService.create(values); + onSubmit() { + this.openConfirmModal(this.confirmModal); + } - ldnServiceData.pipe( - getFirstCompletedRemoteData() - ).subscribe((rd: RemoteData) => { - if (rd.hasSucceeded) { - this.notificationsService.success(this.translateService.get('ldn-service-notification.created.success.title'), - this.translateService.get('ldn-service-notification.created.success.body')); + openConfirmModal(content) { + this.modalRef = this.modalService.open(content); + } - this.sendBack(); - this.closeModal(); - } else { - this.notificationsService.error(this.translateService.get('ldn-service-notification.created.failure.title'), - this.translateService.get('ldn-service-notification.created.failure.body')); + openResetFormModal(content) { + this.modalRef = this.modalService.open(content); + } + + createService() { + this.formModel.get('name').markAsTouched(); + this.formModel.get('score').markAsTouched(); + this.formModel.get('url').markAsTouched(); + this.formModel.get('ldnUrl').markAsTouched(); + this.formModel.get('notifyServiceInboundPatterns').markAsTouched(); + this.formModel.get('notifyServiceOutboundPatterns').markAsTouched(); + + const name = this.formModel.get('name').value; + const url = this.formModel.get('url').value; + const score = this.formModel.get('score').value; + const ldnUrl = this.formModel.get('ldnUrl').value; + + const hasInboundPattern = this.checkPatterns(this.formModel.get('notifyServiceInboundPatterns') as FormArray); + const hasOutboundPattern = this.checkPatterns(this.formModel.get('notifyServiceOutboundPatterns') as FormArray); + + if (!name || !url || !ldnUrl || !score || (!hasInboundPattern && !hasOutboundPattern)) { + this.closeModal(); + return; + } + + this.formModel.value.notifyServiceInboundPatterns = this.formModel.value.notifyServiceInboundPatterns.map((pattern: { + pattern: string; + patternLabel: string + }) => { + const {patternLabel, ...rest} = pattern; + return rest; + }); + + this.formModel.value.notifyServiceOutboundPatterns = this.formModel.value.notifyServiceOutboundPatterns.map((pattern: { + pattern: string; + patternLabel: string + }) => { + const {patternLabel, ...rest} = pattern; + return rest; + }); + + const values = this.formModel.value; + + const ldnServiceData = this.ldnServicesService.create(values); + + ldnServiceData.pipe( + getFirstCompletedRemoteData() + ).subscribe((rd: RemoteData) => { + if (rd.hasSucceeded) { + this.notificationsService.success(this.translateService.get('ldn-service-notification.created.success.title'), + this.translateService.get('ldn-service-notification.created.success.body')); + + this.sendBack(); + this.closeModal(); + } else { + this.notificationsService.error(this.translateService.get('ldn-service-notification.created.failure.title'), + this.translateService.get('ldn-service-notification.created.failure.body')); this.closeModal(); } }); } - checkPatterns(formArray: FormArray): boolean { - for (let i = 0; i < formArray.length; i++) { + + checkPatterns(formArray: FormArray): boolean { + for (let i = 0; i < formArray.length; i++) { const pattern = formArray.at(i).get('pattern').value; if (pattern) { return true; } } return false; - } - - - resetFormAndLeave() { - this.sendBack(); - this.closeModal(); - } - - closeModal() { - this.modalRef.close(); - this.cdRef.detectChanges(); - } - - addInboundPattern() { - const notifyServiceInboundPatternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray; - notifyServiceInboundPatternsArray.push(this.createInboundPatternFormGroup()); - } - - removeInboundPattern(index: number) { - const notifyServiceInboundPatternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray; - notifyServiceInboundPatternsArray.removeAt(index); - } - - addOutboundPattern() { - const notifyServiceOutboundPatternsArray = this.formModel.get('notifyServiceOutboundPatterns') as FormArray; - notifyServiceOutboundPatternsArray.push(this.createOutboundPatternFormGroup()); - } - - removeOutboundPattern(index: number) { - const notifyServiceOutboundPatternsArray = this.formModel.get('notifyServiceOutboundPatterns') as FormArray; - notifyServiceOutboundPatternsArray.removeAt(index); - } - - toggleAutomatic(i: number) { - const automaticControl = this.formModel.get(`notifyServiceInboundPatterns.${i}.automatic`); - if (automaticControl) { - automaticControl.setValue(!automaticControl.value); } - } - selectOutboundPattern(patternValue: string, index: number): void { - const patternArray = (this.formModel.get('notifyServiceOutboundPatterns') as FormArray) - console.log((this.formModel.get('notifyServiceOutboundPatterns') as FormArray)) - patternArray.controls[index].patchValue({pattern: patternValue}) - patternArray.controls[index].patchValue({patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternValue + '.label')}) + resetFormAndLeave() { + this.sendBack(); + this.closeModal(); + } - } + closeModal() { + this.modalRef.close(); + this.cdRef.detectChanges(); + } - selectInboundPattern(patternValue: string, index: number): void { - const patternArray = (this.formModel.get('notifyServiceInboundPatterns') as FormArray) - console.log((this.formModel.get('notifyServiceInboundPatterns') as FormArray)) - patternArray.controls[index].patchValue({pattern: patternValue}) - patternArray.controls[index].patchValue({patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternValue + '.label')}) + addInboundPattern() { + const notifyServiceInboundPatternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray; + notifyServiceInboundPatternsArray.push(this.createInboundPatternFormGroup()); + } - } + removeInboundPattern(index: number) { + const notifyServiceInboundPatternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray; + notifyServiceInboundPatternsArray.removeAt(index); + } - selectInboundItemFilter(filterValue: string, index: number): void { - const filterArray = (this.formModel.get('notifyServiceInboundPatterns') as FormArray) - console.log((this.formModel.get('notifyServiceInboundPatterns') as FormArray)) - filterArray.controls[index].patchValue({constraint: filterValue}) - } + addOutboundPattern() { + const notifyServiceOutboundPatternsArray = this.formModel.get('notifyServiceOutboundPatterns') as FormArray; + notifyServiceOutboundPatternsArray.push(this.createOutboundPatternFormGroup()); + } - selectOutboundItemFilter(filterValue: string, index: number) { - const filterArray = (this.formModel.get('notifyServiceOutboundPatterns') as FormArray) - console.log((this.formModel.get('notifyServiceOutboundPatterns') as FormArray)) - filterArray.controls[index].patchValue({constraint: filterValue}) - } + removeOutboundPattern(index: number) { + const notifyServiceOutboundPatternsArray = this.formModel.get('notifyServiceOutboundPatterns') as FormArray; + notifyServiceOutboundPatternsArray.removeAt(index); + } - private sendBack() { - this.router.navigateByUrl('admin/ldn/services'); - } + toggleAutomatic(i: number) { + const automaticControl = this.formModel.get(`notifyServiceInboundPatterns.${i}.automatic`); + if (automaticControl) { + automaticControl.setValue(!automaticControl.value); + } + } - private createOutboundPatternFormGroup(): FormGroup { - return this.formBuilder.group({ - pattern: [''], - constraint: [''], - patternLabel: 'Select a Pattern', - }); - } + selectOutboundPattern(patternValue: string, index: number): void { + const patternArray = (this.formModel.get('notifyServiceOutboundPatterns') as FormArray) + console.log((this.formModel.get('notifyServiceOutboundPatterns') as FormArray)) + patternArray.controls[index].patchValue({pattern: patternValue}) + patternArray.controls[index].patchValue({patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternValue + '.label')}) - private createInboundPatternFormGroup(): FormGroup { - return this.formBuilder.group({ - pattern: [''], - constraint: [''], - automatic: false, - patternLabel: 'Select a Pattern', - }); - } + } + + selectInboundPattern(patternValue: string, index: number): void { + const patternArray = (this.formModel.get('notifyServiceInboundPatterns') as FormArray) + console.log((this.formModel.get('notifyServiceInboundPatterns') as FormArray)) + patternArray.controls[index].patchValue({pattern: patternValue}) + patternArray.controls[index].patchValue({patternLabel: this.translateService.instant('ldn-service.form.pattern.' + patternValue + '.label')}) + + } + + selectInboundItemFilter(filterValue: string, index: number): void { + const filterArray = (this.formModel.get('notifyServiceInboundPatterns') as FormArray) + console.log((this.formModel.get('notifyServiceInboundPatterns') as FormArray)) + filterArray.controls[index].patchValue({constraint: filterValue}) + } + + selectOutboundItemFilter(filterValue: string, index: number) { + const filterArray = (this.formModel.get('notifyServiceOutboundPatterns') as FormArray) + console.log((this.formModel.get('notifyServiceOutboundPatterns') as FormArray)) + filterArray.controls[index].patchValue({constraint: filterValue}) + } + + private sendBack() { + this.router.navigateByUrl('admin/ldn/services'); + } + + + private createOutboundPatternFormGroup(): FormGroup { + return this.formBuilder.group({ + pattern: [''], + constraint: [''], + patternLabel: 'Select a Pattern', + }); + } + + private createInboundPatternFormGroup(): FormGroup { + return this.formBuilder.group({ + pattern: [''], + constraint: [''], + automatic: false, + patternLabel: 'Select a Pattern', + }); + } } diff --git a/src/app/admin/admin-ldn-services/ldn-service-new/ldn-service-new.component.spec.ts b/src/app/admin/admin-ldn-services/ldn-service-new/ldn-service-new.component.spec.ts index ced1371623..e6f62f29c6 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-new/ldn-service-new.component.spec.ts +++ b/src/app/admin/admin-ldn-services/ldn-service-new/ldn-service-new.component.spec.ts @@ -3,23 +3,23 @@ import {ComponentFixture, TestBed} from '@angular/core/testing'; import {LdnServiceNewComponent} from './ldn-service-new.component'; describe('LdnServiceNewComponent', () => { - let component: LdnServiceNewComponent; - let fixture: ComponentFixture; + let component: LdnServiceNewComponent; + let fixture: ComponentFixture; - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [LdnServiceNewComponent] - }) - .compileComponents(); - }); + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [LdnServiceNewComponent] + }) + .compileComponents(); + }); - beforeEach(() => { - fixture = TestBed.createComponent(LdnServiceNewComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); + beforeEach(() => { + fixture = TestBed.createComponent(LdnServiceNewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); - it('should create', () => { - expect(component).toBeTruthy(); - }); + it('should create', () => { + expect(component).toBeTruthy(); + }); }); diff --git a/src/app/admin/admin-ldn-services/ldn-service-new/ldn-service-new.component.ts b/src/app/admin/admin-ldn-services/ldn-service-new/ldn-service-new.component.ts index 773f042d11..b589d6fc65 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-new/ldn-service-new.component.ts +++ b/src/app/admin/admin-ldn-services/ldn-service-new/ldn-service-new.component.ts @@ -1,9 +1,9 @@ import {Component} from '@angular/core'; @Component({ - selector: 'ds-ldn-service-new', - templateUrl: './ldn-service-new.component.html', - styleUrls: ['./ldn-service-new.component.scss'] + selector: 'ds-ldn-service-new', + templateUrl: './ldn-service-new.component.html', + styleUrls: ['./ldn-service-new.component.scss'] }) export class LdnServiceNewComponent { } diff --git a/src/app/admin/admin-ldn-services/ldn-service-serviceMock/ldnServicesRD$-mock.ts b/src/app/admin/admin-ldn-services/ldn-service-serviceMock/ldnServicesRD$-mock.ts index 3bd1bf249f..52b6a54ad9 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-serviceMock/ldnServicesRD$-mock.ts +++ b/src/app/admin/admin-ldn-services/ldn-service-serviceMock/ldnServicesRD$-mock.ts @@ -5,63 +5,63 @@ import {PaginatedList} from '../../../core/data/paginated-list.model'; import {Observable, of} from 'rxjs'; // Create a mock data object for a single LDN notify service export const mockLdnService: LdnService = { - id: 1, - name: 'Service Name', - description: 'Service Description', - url: 'Service URL', - ldnUrl: 'Service LDN URL', - notifyServiceInboundPatterns: [ - { - pattern: 'patternA', - constraint: 'itemFilterA', - automatic: false, + id: 1, + name: 'Service Name', + description: 'Service Description', + url: 'Service URL', + ldnUrl: 'Service LDN URL', + notifyServiceInboundPatterns: [ + { + pattern: 'patternA', + constraint: 'itemFilterA', + automatic: false, + }, + { + pattern: 'patternB', + constraint: 'itemFilterB', + automatic: true, + }, + ], + notifyServiceOutboundPatterns: [ + { + pattern: 'patternC', + constraint: 'itemFilterC', + }, + ], + type: LDN_SERVICE, + _links: { + self: { + href: 'http://localhost/api/ldn/ldnservices/1', + }, }, - { - pattern: 'patternB', - constraint: 'itemFilterB', - automatic: true, - }, - ], - notifyServiceOutboundPatterns: [ - { - pattern: 'patternC', - constraint: 'itemFilterC', - }, - ], - type: LDN_SERVICE, - _links: { - self: { - href: 'http://localhost/api/ldn/ldnservices/1', - }, - }, }; const mockLdnServices = { - payload: { - elementsPerPage: 20, - totalPages: 1, - totalElements: 1, - currentPage: 1, - first: undefined, - prev: undefined, - next: undefined, - last: undefined, - page: [mockLdnService], - type: LDN_SERVICE, - self: undefined, - getPageLength: function () { - return this.page.length; + payload: { + elementsPerPage: 20, + totalPages: 1, + totalElements: 1, + currentPage: 1, + first: undefined, + prev: undefined, + next: undefined, + last: undefined, + page: [mockLdnService], + type: LDN_SERVICE, + self: undefined, + getPageLength: function () { + return this.page.length; + }, + _links: { + self: { + href: 'http://localhost/api/ldn/ldnservices/1', + }, + page: [], + }, }, - _links: { - self: { - href: 'http://localhost/api/ldn/ldnservices/1', - }, - page: [], - }, - }, - hasSucceeded: true, - msToLive: 0, + hasSucceeded: true, + msToLive: 0, }; diff --git a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-itemfilters-data.service.ts b/src/app/admin/admin-ldn-services/ldn-services-data/ldn-itemfilters-data.service.ts index 7aa6231b4d..43229c578f 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-itemfilters-data.service.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-data/ldn-itemfilters-data.service.ts @@ -23,25 +23,25 @@ import {PaginatedList} from '../../../core/data/paginated-list.model'; @Injectable() @dataService(LDN_SERVICE_CONSTRAINT_FILTERS) export class LdnItemfiltersService extends IdentifiableDataService implements FindAllData { - private findAllData: FindAllDataImpl; + private findAllData: FindAllDataImpl; - constructor( - protected requestService: RequestService, - protected rdbService: RemoteDataBuildService, - protected objectCache: ObjectCacheService, - protected halService: HALEndpointService, - protected notificationsService: NotificationsService, - ) { - super('itemfilters', requestService, rdbService, objectCache, halService); + constructor( + protected requestService: RequestService, + protected rdbService: RemoteDataBuildService, + protected objectCache: ObjectCacheService, + protected halService: HALEndpointService, + protected notificationsService: NotificationsService, + ) { + super('itemfilters', requestService, rdbService, objectCache, halService); - this.findAllData = new FindAllDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, this.responseMsToLive); - } + this.findAllData = new FindAllDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, this.responseMsToLive); + } - getEndpoint() { - return this.halService.getEndpoint(this.linkPath); - } + getEndpoint() { + return this.halService.getEndpoint(this.linkPath); + } - findAll(options?: FindListOptions, useCachedVersionIfAvailable?: boolean, reRequestOnStale?: boolean, ...linksToFollow: FollowLinkConfig[]): Observable>> { - return this.findAllData.findAll(options, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow); - } + findAll(options?: FindListOptions, useCachedVersionIfAvailable?: boolean, reRequestOnStale?: boolean, ...linksToFollow: FollowLinkConfig[]): Observable>> { + return this.findAllData.findAll(options, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow); + } } diff --git a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-services-data.service.ts b/src/app/admin/admin-ldn-services/ldn-services-data/ldn-services-data.service.ts index b8d28f0886..8935ce77d9 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-services-data.service.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-data/ldn-services-data.service.ts @@ -40,99 +40,99 @@ import {RequestParam} from '../../../core/cache/models/request-param.model'; @Injectable() @dataService(LDN_SERVICE) export class LdnServicesService extends IdentifiableDataService implements FindAllData, DeleteData, PatchData, CreateData { - createData: CreateDataImpl; - private findAllData: FindAllDataImpl; - private deleteData: DeleteDataImpl; - private patchData: PatchDataImpl; - private comparator: ChangeAnalyzer; - private searchData: SearchDataImpl; + createData: CreateDataImpl; + private findAllData: FindAllDataImpl; + private deleteData: DeleteDataImpl; + private patchData: PatchDataImpl; + private comparator: ChangeAnalyzer; + private searchData: SearchDataImpl; - private findByPatternEndpoint = 'byInboundPattern'; + private findByPatternEndpoint = 'byInboundPattern'; - constructor( - protected requestService: RequestService, - protected rdbService: RemoteDataBuildService, - protected objectCache: ObjectCacheService, - protected halService: HALEndpointService, - protected notificationsService: NotificationsService, - ) { - super('ldnservices', requestService, rdbService, objectCache, halService); + constructor( + protected requestService: RequestService, + protected rdbService: RemoteDataBuildService, + protected objectCache: ObjectCacheService, + protected halService: HALEndpointService, + protected notificationsService: NotificationsService, + ) { + super('ldnservices', requestService, rdbService, objectCache, halService); - this.findAllData = new FindAllDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, this.responseMsToLive); - this.searchData = new SearchDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, this.responseMsToLive); - this.deleteData = new DeleteDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, notificationsService, this.responseMsToLive, this.constructIdEndpoint); - this.patchData = new PatchDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, this.comparator, this.responseMsToLive, this.constructIdEndpoint); - this.createData = new CreateDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, notificationsService, this.responseMsToLive); - } + this.findAllData = new FindAllDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, this.responseMsToLive); + this.searchData = new SearchDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, this.responseMsToLive); + this.deleteData = new DeleteDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, notificationsService, this.responseMsToLive, this.constructIdEndpoint); + this.patchData = new PatchDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, this.comparator, this.responseMsToLive, this.constructIdEndpoint); + this.createData = new CreateDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, notificationsService, this.responseMsToLive); + } - create(object: LdnService): Observable> { - return this.createData.create(object); - } + create(object: LdnService): Observable> { + return this.createData.create(object); + } - patch(object: LdnService, operations: Operation[]): Observable> { - return this.patchData.patch(object, operations); - } + patch(object: LdnService, operations: Operation[]): Observable> { + return this.patchData.patch(object, operations); + } - update(object: LdnService): Observable> { - return this.patchData.update(object); - } + update(object: LdnService): Observable> { + return this.patchData.update(object); + } - commitUpdates(method?: RestRequestMethod): void { - return this.patchData.commitUpdates(method); - } + commitUpdates(method?: RestRequestMethod): void { + return this.patchData.commitUpdates(method); + } - createPatchFromCache(object: LdnService): Observable { - return this.patchData.createPatchFromCache(object); - } + createPatchFromCache(object: LdnService): Observable { + return this.patchData.createPatchFromCache(object); + } - findAll(options?: FindListOptions, useCachedVersionIfAvailable?: boolean, reRequestOnStale?: boolean, ...linksToFollow: FollowLinkConfig[]): Observable>> { - return this.findAllData.findAll(options, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow); - } + findAll(options?: FindListOptions, useCachedVersionIfAvailable?: boolean, reRequestOnStale?: boolean, ...linksToFollow: FollowLinkConfig[]): Observable>> { + return this.findAllData.findAll(options, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow); + } - findByInboundPattern(pattern: string, options?: FindListOptions, useCachedVersionIfAvailable?: boolean, reRequestOnStale?: boolean, ...linksToFollow: FollowLinkConfig[]): Observable>> { - const params = [new RequestParam('pattern', pattern)]; - const findListOptions = Object.assign(new FindListOptions(), options, {searchParams: params}); - return this.searchData.searchBy(this.findByPatternEndpoint, findListOptions, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow); - } + findByInboundPattern(pattern: string, options?: FindListOptions, useCachedVersionIfAvailable?: boolean, reRequestOnStale?: boolean, ...linksToFollow: FollowLinkConfig[]): Observable>> { + const params = [new RequestParam('pattern', pattern)]; + const findListOptions = Object.assign(new FindListOptions(), options, {searchParams: params}); + return this.searchData.searchBy(this.findByPatternEndpoint, findListOptions, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow); + } - public delete(objectId: string, copyVirtualMetadata?: string[]): Observable> { - return this.deleteData.delete(objectId, copyVirtualMetadata); - } + public delete(objectId: string, copyVirtualMetadata?: string[]): Observable> { + return this.deleteData.delete(objectId, copyVirtualMetadata); + } - public deleteByHref(href: string, copyVirtualMetadata?: string[]): Observable> { - return this.deleteData.deleteByHref(href, copyVirtualMetadata); - } + public deleteByHref(href: string, copyVirtualMetadata?: string[]): Observable> { + return this.deleteData.deleteByHref(href, copyVirtualMetadata); + } - public invoke(serviceName: string, serviceId: string, parameters: LdnServiceConstrain[], files: File[]): Observable> { - const requestId = this.requestService.generateRequestId(); - this.getBrowseEndpoint().pipe( - take(1), - map((endpoint: string) => new URLCombiner(endpoint, serviceName, 'processes', serviceId).toString()), - map((endpoint: string) => { - const body = this.getInvocationFormData(parameters, files); - return new MultipartPostRequest(requestId, endpoint, body); - }) - ).subscribe((request: RestRequest) => this.requestService.send(request)); + public invoke(serviceName: string, serviceId: string, parameters: LdnServiceConstrain[], files: File[]): Observable> { + const requestId = this.requestService.generateRequestId(); + this.getBrowseEndpoint().pipe( + take(1), + map((endpoint: string) => new URLCombiner(endpoint, serviceName, 'processes', serviceId).toString()), + map((endpoint: string) => { + const body = this.getInvocationFormData(parameters, files); + return new MultipartPostRequest(requestId, endpoint, body); + }) + ).subscribe((request: RestRequest) => this.requestService.send(request)); - return this.rdbService.buildFromRequestUUID(requestId); - } + return this.rdbService.buildFromRequestUUID(requestId); + } - public ldnServiceWithNameExistsAndCanExecute(scriptName: string): Observable { - return this.findById(scriptName).pipe( - getFirstCompletedRemoteData(), - map((rd: RemoteData) => { - return hasValue(rd.payload); - }), - ); - } + public ldnServiceWithNameExistsAndCanExecute(scriptName: string): Observable { + return this.findById(scriptName).pipe( + getFirstCompletedRemoteData(), + map((rd: RemoteData) => { + return hasValue(rd.payload); + }), + ); + } - private getInvocationFormData(constrain: LdnServiceConstrain[], files: File[]): FormData { - const form: FormData = new FormData(); - form.set('properties', JSON.stringify(constrain)); - files.forEach((file: File) => { - form.append('file', file); - }); - return form; - } + private getInvocationFormData(constrain: LdnServiceConstrain[], files: File[]): FormData { + const form: FormData = new FormData(); + form.set('properties', JSON.stringify(constrain)); + files.forEach((file: File) => { + form.append('file', file); + }); + return form; + } } diff --git a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.html b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.html index e19f986e1a..89b0a8937d 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.html +++ b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.html @@ -1,84 +1,84 @@
-
-

{{ 'ldn-registered-services.title' | translate }}

-
-
- -
- -
- - - - - - - - - - - - - - + + + +
{{ 'service.overview.table.name' | translate }}{{ 'service.overview.table.description' | translate }}{{ 'service.overview.table.status' | translate }}{{ 'service.overview.table.actions' | translate }}
{{ ldnService.name }}{{ ldnService.description }} +
+

{{ 'ldn-registered-services.title' | translate }}

+
+
+ +
+ +
+ + + + + + + + + + + + + + - - - -
{{ 'service.overview.table.name' | translate }}{{ 'service.overview.table.description' | translate }}{{ 'service.overview.table.status' | translate }}{{ 'service.overview.table.actions' | translate }}
{{ ldnService.name }}{{ ldnService.description }} {{ ldnService.enabled ? ('ldn-service.overview.table.enabled' | translate) : ('ldn-service.overview.table.disabled' | translate) }} - -
- - -
-
-
-
+
+
+ + +
+
+
+
-
+
- + - -
diff --git a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts index 87a1da27a1..ff54f19455 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts @@ -11,44 +11,44 @@ import {PaginationServiceStub} from '../../../shared/testing/pagination-service. import {of} from 'rxjs'; describe('LdnServicesOverviewComponent', () => { - let component: LdnServicesOverviewComponent; - let fixture: ComponentFixture; + let component: LdnServicesOverviewComponent; + let fixture: ComponentFixture; - const translateServiceStub = { - get: () => of('translated-text'), - onLangChange: new EventEmitter(), - onTranslationChange: new EventEmitter(), - onDefaultLangChange: new EventEmitter() - }; + const translateServiceStub = { + get: () => of('translated-text'), + onLangChange: new EventEmitter(), + onTranslationChange: new EventEmitter(), + onDefaultLangChange: new EventEmitter() + }; - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [TranslateModule.forRoot()], - declarations: [LdnServicesOverviewComponent], - providers: [ - {provide: LdnServicesService, useValue: {}}, - {provide: PaginationService, useValue: new PaginationServiceStub()}, - { - provide: NgbModal, useValue: { - open: () => {/*comment*/ - } - } - }, - {provide: ChangeDetectorRef, useValue: {}}, - {provide: NotificationsService, useValue: NotificationsServiceStub}, - {provide: TranslateService, useValue: translateServiceStub}, - ] - }) - .compileComponents(); - }); + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [TranslateModule.forRoot()], + declarations: [LdnServicesOverviewComponent], + providers: [ + {provide: LdnServicesService, useValue: {}}, + {provide: PaginationService, useValue: new PaginationServiceStub()}, + { + provide: NgbModal, useValue: { + open: () => {/*comment*/ + } + } + }, + {provide: ChangeDetectorRef, useValue: {}}, + {provide: NotificationsService, useValue: NotificationsServiceStub}, + {provide: TranslateService, useValue: translateServiceStub}, + ] + }) + .compileComponents(); + }); - beforeEach(() => { - fixture = TestBed.createComponent(LdnServicesOverviewComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); + beforeEach(() => { + fixture = TestBed.createComponent(LdnServicesOverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); - it('should create', () => { - expect(component).toBeTruthy(); - }); + it('should create', () => { + expect(component).toBeTruthy(); + }); }); diff --git a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts index 9fa237fc4e..ec30cc0ba6 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts @@ -1,11 +1,11 @@ import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - OnDestroy, - OnInit, - TemplateRef, - ViewChild + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + OnDestroy, + OnInit, + TemplateRef, + ViewChild } from '@angular/core'; import {Observable, Subscription} from 'rxjs'; import {RemoteData} from '../../../core/data/remote-data'; @@ -25,122 +25,122 @@ import {TranslateService} from '@ngx-translate/core'; @Component({ - selector: 'ds-ldn-services-directory', - templateUrl: './ldn-services-directory.component.html', - styleUrls: ['./ldn-services-directory.component.scss'], - changeDetection: ChangeDetectionStrategy.Default + selector: 'ds-ldn-services-directory', + templateUrl: './ldn-services-directory.component.html', + styleUrls: ['./ldn-services-directory.component.scss'], + changeDetection: ChangeDetectionStrategy.Default }) export class LdnServicesOverviewComponent implements OnInit, OnDestroy { - selectedServiceId: string | number | null = null; - servicesData: any[] = []; - @ViewChild('deleteModal', {static: true}) deleteModal: TemplateRef; - ldnServicesRD$: Observable>>; - config: FindListOptions = Object.assign(new FindListOptions(), { - elementsPerPage: 20 - }); - pageConfig: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), { - id: 'po', - pageSize: 20 - }); - isProcessingSub: Subscription; - private modalRef: any; + selectedServiceId: string | number | null = null; + servicesData: any[] = []; + @ViewChild('deleteModal', {static: true}) deleteModal: TemplateRef; + ldnServicesRD$: Observable>>; + config: FindListOptions = Object.assign(new FindListOptions(), { + elementsPerPage: 20 + }); + pageConfig: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), { + id: 'po', + pageSize: 20 + }); + isProcessingSub: Subscription; + private modalRef: any; - constructor( - protected ldnServicesService: LdnServicesService, - protected paginationService: PaginationService, - protected modalService: NgbModal, - private cdRef: ChangeDetectorRef, - private notificationService: NotificationsService, - private translateService: TranslateService, - ) { - } - - ngOnInit(): void { - this.setLdnServices(); - } - - setLdnServices() { - this.ldnServicesRD$ = this.paginationService.getFindListOptions(this.pageConfig.id, this.config).pipe( - switchMap((config) => this.ldnServicesService.findAll(config, false, false).pipe( - getFirstCompletedRemoteData() - )) - ); - } - - ngOnDestroy(): void { - this.paginationService.clearPagination(this.pageConfig.id); - if (hasValue(this.isProcessingSub)) { - this.isProcessingSub.unsubscribe(); + constructor( + protected ldnServicesService: LdnServicesService, + protected paginationService: PaginationService, + protected modalService: NgbModal, + private cdRef: ChangeDetectorRef, + private notificationService: NotificationsService, + private translateService: TranslateService, + ) { } - } - openDeleteModal(content) { - this.modalRef = this.modalService.open(content); - } - - closeModal() { - this.modalRef.close(); - this.cdRef.detectChanges(); - } - - selectServiceToDelete(serviceId: number) { - this.selectedServiceId = serviceId; - this.openDeleteModal(this.deleteModal); - } - - deleteSelected(serviceId: string, ldnServicesService: LdnServicesService): void { - if (this.selectedServiceId !== null) { - ldnServicesService.delete(serviceId).pipe(getFirstCompletedRemoteData()).subscribe((rd: RemoteData) => { - if (rd.hasSucceeded) { - this.servicesData = this.servicesData.filter(service => service.id !== serviceId); - this.ldnServicesRD$ = this.ldnServicesRD$.pipe( - map((remoteData: RemoteData>) => { - if (remoteData.hasSucceeded) { - remoteData.payload.page = remoteData.payload.page.filter(service => service.id.toString() !== serviceId); - } - return remoteData; - }) - ); - this.cdRef.detectChanges(); - this.closeModal(); - this.notificationService.success(this.translateService.get('ldn-service-delete.notification.success.title'), - this.translateService.get('ldn-service-delete.notification.success.content')); - } else { - this.notificationService.error(this.translateService.get('ldn-service-delete.notification.error.title'), - this.translateService.get('ldn-service-delete.notification.error.content')); - this.cdRef.detectChanges(); - } - }); + ngOnInit(): void { + this.setLdnServices(); } - } + setLdnServices() { + this.ldnServicesRD$ = this.paginationService.getFindListOptions(this.pageConfig.id, this.config).pipe( + switchMap((config) => this.ldnServicesService.findAll(config, false, false).pipe( + getFirstCompletedRemoteData() + )) + ); + } - toggleStatus(ldnService: any, ldnServicesService: LdnServicesService): void { - const newStatus = !ldnService.enabled; - const originalStatus = ldnService.enabled; - - const patchOperation: Operation = { - op: 'replace', - path: '/enabled', - value: newStatus, - }; - - ldnServicesService.patch(ldnService, [patchOperation]).pipe(getFirstCompletedRemoteData()).subscribe( - (rd: RemoteData) => { - if (rd.hasSucceeded) { - ldnService.enabled = newStatus; - this.notificationService.success(this.translateService.get('ldn-enable-service.notification.success.title'), - this.translateService.get('ldn-enable-service.notification.success.content')); - } else { - ldnService.enabled = originalStatus; - this.notificationService.error(this.translateService.get('ldn-enable-service.notification.error.title'), - this.translateService.get('ldn-enable-service.notification.error.content')); + ngOnDestroy(): void { + this.paginationService.clearPagination(this.pageConfig.id); + if (hasValue(this.isProcessingSub)) { + this.isProcessingSub.unsubscribe(); } - } - ); - } + } + + openDeleteModal(content) { + this.modalRef = this.modalService.open(content); + } + + closeModal() { + this.modalRef.close(); + this.cdRef.detectChanges(); + } + + selectServiceToDelete(serviceId: number) { + this.selectedServiceId = serviceId; + this.openDeleteModal(this.deleteModal); + } + + deleteSelected(serviceId: string, ldnServicesService: LdnServicesService): void { + if (this.selectedServiceId !== null) { + ldnServicesService.delete(serviceId).pipe(getFirstCompletedRemoteData()).subscribe((rd: RemoteData) => { + if (rd.hasSucceeded) { + this.servicesData = this.servicesData.filter(service => service.id !== serviceId); + this.ldnServicesRD$ = this.ldnServicesRD$.pipe( + map((remoteData: RemoteData>) => { + if (remoteData.hasSucceeded) { + remoteData.payload.page = remoteData.payload.page.filter(service => service.id.toString() !== serviceId); + } + return remoteData; + }) + ); + this.cdRef.detectChanges(); + this.closeModal(); + this.notificationService.success(this.translateService.get('ldn-service-delete.notification.success.title'), + this.translateService.get('ldn-service-delete.notification.success.content')); + } else { + this.notificationService.error(this.translateService.get('ldn-service-delete.notification.error.title'), + this.translateService.get('ldn-service-delete.notification.error.content')); + this.cdRef.detectChanges(); + } + }); + } + } + + + toggleStatus(ldnService: any, ldnServicesService: LdnServicesService): void { + const newStatus = !ldnService.enabled; + const originalStatus = ldnService.enabled; + + const patchOperation: Operation = { + op: 'replace', + path: '/enabled', + value: newStatus, + }; + + ldnServicesService.patch(ldnService, [patchOperation]).pipe(getFirstCompletedRemoteData()).subscribe( + (rd: RemoteData) => { + if (rd.hasSucceeded) { + ldnService.enabled = newStatus; + this.notificationService.success(this.translateService.get('ldn-enable-service.notification.success.title'), + this.translateService.get('ldn-enable-service.notification.success.content')); + } else { + ldnService.enabled = originalStatus; + this.notificationService.error(this.translateService.get('ldn-enable-service.notification.error.title'), + this.translateService.get('ldn-enable-service.notification.error.content')); + } + } + ); + } } diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-itemfilters.ts b/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-itemfilters.ts index 55b7ad8b98..06595b5135 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-itemfilters.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-itemfilters.ts @@ -9,23 +9,23 @@ import {ResourceType} from '../../../core/shared/resource-type'; @typedObject @inheritSerialization(CacheableObject) export class Itemfilter extends CacheableObject { - static type = LDN_SERVICE_CONSTRAINT_FILTER; + static type = LDN_SERVICE_CONSTRAINT_FILTER; - @excludeFromEquals - @autoserialize - type: ResourceType; + @excludeFromEquals + @autoserialize + type: ResourceType; - @autoserialize - id: string; + @autoserialize + id: string; - @deserialize - _links: { - self: { - href: string; + @deserialize + _links: { + self: { + href: string; + }; }; - }; - get self(): string { - return this._links.self.href; - } + get self(): string { + return this._links.self.href; + } } diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-patterns.model.ts b/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-patterns.model.ts index 7fb8072a6f..df42e237ba 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-patterns.model.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-patterns.model.ts @@ -4,10 +4,10 @@ import {autoserialize} from 'cerialize'; * notify service patterns */ export class NotifyServicePattern { - @autoserialize - pattern: string; - @autoserialize - constraint: string; - @autoserialize - automatic: string; + @autoserialize + pattern: string; + @autoserialize + constraint: string; + @autoserialize + automatic: string; } diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-status.model.ts b/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-status.model.ts index 040e4d37b8..d9e45d91a9 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-status.model.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-status.model.ts @@ -2,7 +2,7 @@ * List of services statuses */ export enum LdnServiceStatus { - UNKOWN, - DISABLED, - ENABLED, + UNKOWN, + DISABLED, + ENABLED, } diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service.constrain.model.ts b/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service.constrain.model.ts index 5121e47f69..500cefbd52 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service.constrain.model.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service.constrain.model.ts @@ -1,3 +1,3 @@ export class LdnServiceConstrain { - void: any; + void: any; } diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/service-constrain-type.model.ts b/src/app/admin/admin-ldn-services/ldn-services-model/service-constrain-type.model.ts index c734503d95..d3f55c815e 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-model/service-constrain-type.model.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-model/service-constrain-type.model.ts @@ -2,9 +2,9 @@ * List of parameter types used for scripts */ export enum LdnServiceConstrainType { - STRING = 'String', - DATE = 'date', - BOOLEAN = 'boolean', - FILE = 'InputStream', - OUTPUT = 'OutputStream' + STRING = 'String', + DATE = 'date', + BOOLEAN = 'boolean', + FILE = 'InputStream', + OUTPUT = 'OutputStream' } diff --git a/src/app/admin/admin-ldn-services/ldn-services-patterns/ldn-service-coar-patterns.ts b/src/app/admin/admin-ldn-services/ldn-services-patterns/ldn-service-coar-patterns.ts index 8620bfc80c..39ad6859ac 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-patterns/ldn-service-coar-patterns.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-patterns/ldn-service-coar-patterns.ts @@ -1,30 +1,30 @@ export const notifyPatterns = [ - 'ack-accept', + 'ack-accept', - 'ack-reject', + 'ack-reject', - 'ack-tentative-accept', + 'ack-tentative-accept', - 'ack-tentative-reject', + 'ack-tentative-reject', - 'announce-endorsement', + 'announce-endorsement', - 'announce-ingest', + 'announce-ingest', - 'announce-relationship', + 'announce-relationship', - 'announce-review', + 'announce-review', - 'announce-service-result', + 'announce-service-result', - 'request-endorsement', + 'request-endorsement', - 'request-ingest', + 'request-ingest', - 'request-review', + 'request-review', - 'undo-offer', + 'undo-offer', ];