diff --git a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/service/controller-service.service.ts b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/service/controller-service.service.ts index 610a6a30cc926..4d0a826b8960d 100644 --- a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/service/controller-service.service.ts +++ b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/service/controller-service.service.ts @@ -16,7 +16,7 @@ */ import { Injectable } from '@angular/core'; -import { EMPTY, Observable, of } from 'rxjs'; +import { EMPTY, Observable } from 'rxjs'; import { HttpClient, HttpParams } from '@angular/common/http'; import { Client } from '../../../service/client.service'; import { NiFiCommon } from '@nifi/shared'; @@ -45,17 +45,13 @@ export class ControllerServiceService implements ControllerServiceCreator, Prope ) {} getControllerServices(processGroupId: string): Observable { - if (processGroupId != '') { - const uiOnly: any = { uiOnly: true }; - return this.httpClient.get( - `${ControllerServiceService.API}/flow/process-groups/${processGroupId}/controller-services`, - { - params: uiOnly - } - ); - } else { - return of([]); - } + const uiOnly: any = { uiOnly: true }; + return this.httpClient.get( + `${ControllerServiceService.API}/flow/process-groups/${processGroupId}/controller-services`, + { + params: uiOnly + } + ); } getFlow(processGroupId: string): Observable { diff --git a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/controller-services/controller-services.effects.ts b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/controller-services/controller-services.effects.ts index c33535af2d990..f8b2757929af4 100644 --- a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/controller-services/controller-services.effects.ts +++ b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/controller-services/controller-services.effects.ts @@ -40,7 +40,8 @@ import { selectCurrentProcessGroupId, selectParameterContext, selectSaving, - selectStatus + selectStatus, + selectServices } from './controller-services.selectors'; import { ControllerServiceService } from '../../service/controller-service.service'; import { EnableControllerService } from '../../../../ui/common/controller-service/enable-controller-service/enable-controller-service.component'; @@ -661,22 +662,18 @@ export class ControllerServicesEffects { map((action) => action.request), concatLatestFrom(() => [ this.store.select(selectCurrentProcessGroupId), - this.store.select(selectProcessGroupFlow) + this.store.select(selectProcessGroupFlow), + this.store.select(selectServices) ]), - concatMap(([request, currentProcessGroupId, processGroupFlow]) => - combineLatest([ - this.flowService.getProcessGroupWithContent(currentProcessGroupId), - this.controllerServiceService.getControllerServices( - processGroupFlow?.breadcrumb.parentBreadcrumb?.id || '' - ) - ]).pipe( - map(([processGroupEntity, parentControllerServices]) => { + concatMap(([request, currentProcessGroupId, processGroupFlow, controllerServices]) => + combineLatest([this.flowService.getProcessGroupWithContent(currentProcessGroupId)]).pipe( + map(([processGroupEntity]) => { return { request, currentProcessGroupId, processGroupFlow, processGroupEntity, - parentControllerServices + controllerServices }; }) ) @@ -685,7 +682,7 @@ export class ControllerServicesEffects { const clone = Object.assign({}, request.request); clone.processGroupEntity = request.processGroupEntity; clone.processGroupFlow = request.processGroupFlow; - clone.parentControllerServices = request.parentControllerServices.controllerServices; + clone.parentControllerServices = request.controllerServices; const serviceId: string = request.request.id; const moveDialogReference = this.dialog.open(MoveControllerService, { ...LARGE_DIALOG, diff --git a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/ui/move-controller-service/move-controller-service.component.ts b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/ui/move-controller-service/move-controller-service.component.ts index 35366aa18a1e0..79caab9f12030 100644 --- a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/ui/move-controller-service/move-controller-service.component.ts +++ b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/ui/move-controller-service/move-controller-service.component.ts @@ -90,9 +90,13 @@ export class MoveControllerService extends CloseOnEscapeDialog { processGroups: new FormControl('Process Group', Validators.required) }); + const parentControllerServices = request.parentControllerServices.filter( + (cs) => cs.parentGroupId != request.controllerService.parentGroupId + ); + if (request.processGroupFlow != null) { const processGroups: SelectOption[] = []; - this.loadParentOption(request.processGroupFlow, request.parentControllerServices, processGroups); + this.loadParentOption(request.processGroupFlow, parentControllerServices, processGroups); this.loadChildOptions(request.processGroupFlow, request.processGroupEntity, processGroups); this.controllerServiceActionProcessGroups = processGroups;