From 703948b1d6718c5d98dcb3bd4ea6e2145cd093a9 Mon Sep 17 00:00:00 2001 From: Rob Fellows Date: Tue, 19 Dec 2023 10:16:50 -0500 Subject: [PATCH] [NIFI-12519] - deselect parameter when it is deleted. (#8166) * [NIFI-12519] - deselect parameter when it is deleted. also, enable goto controller service linking * Added confirmation dialog in controller service edit when the form is dirty and the user attempts to route away using a referencing component link * Reset state when closing the summary and counter pages. This closes #8166 --- .../counters/feature/counters.component.ts | 2 ++ .../counter-listing.actions.ts | 2 ++ .../counter-listing.reducer.ts | 7 ++-- .../controller-services.effects.ts | 29 +++++++++++++++ .../flow-designer/state/flow/flow.effects.ts | 1 + .../parameter-references.component.ts | 2 +- .../parameter-table.component.ts | 6 ++-- .../management-controller-services.effects.ts | 35 +++++++++++++++++-- .../summary/feature/summary.component.ts | 3 +- .../summary-listing.actions.ts | 2 ++ .../summary-listing.reducer.ts | 16 +++++---- ...ntroller-service-references.component.html | 10 +++--- ...controller-service-references.component.ts | 23 +++--------- .../edit-controller-service.component.html | 5 ++- .../edit-controller-service.component.ts | 2 ++ 15 files changed, 104 insertions(+), 41 deletions(-) diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/feature/counters.component.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/feature/counters.component.ts index 6d3998b6d2..241bfef9e3 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/feature/counters.component.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/feature/counters.component.ts @@ -19,6 +19,7 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { Store } from '@ngrx/store'; import { NiFiState } from '../../../state'; import { startUserPolling, stopUserPolling } from '../../../state/user/user.actions'; +import { resetCounterState } from '../state/counter-listing/counter-listing.actions'; @Component({ selector: 'counters', @@ -33,6 +34,7 @@ export class Counters implements OnInit, OnDestroy { } ngOnDestroy(): void { + this.store.dispatch(resetCounterState()); this.store.dispatch(stopUserPolling()); } } diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/state/counter-listing/counter-listing.actions.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/state/counter-listing/counter-listing.actions.ts index cb2eb9dd70..5b7f6a4ab0 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/state/counter-listing/counter-listing.actions.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/state/counter-listing/counter-listing.actions.ts @@ -43,3 +43,5 @@ export const resetCounterSuccess = createAction( `${COUNTER_PREFIX} Reset Counter Success`, props<{ response: ResetCounterSuccess }>() ); + +export const resetCounterState = createAction(`${COUNTER_PREFIX} Reset Counter State`); diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/state/counter-listing/counter-listing.reducer.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/state/counter-listing/counter-listing.reducer.ts index bc1904ff7d..27e5090b62 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/state/counter-listing/counter-listing.reducer.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/counters/state/counter-listing/counter-listing.reducer.ts @@ -17,7 +17,7 @@ import { CounterListingState } from './index'; import { createReducer, on } from '@ngrx/store'; -import { loadCounters, loadCountersSuccess, resetCounterSuccess } from './counter-listing.actions'; +import { loadCounters, loadCountersSuccess, resetCounterState, resetCounterSuccess } from './counter-listing.actions'; import { parameterContextListingApiError } from '../../../parameter-contexts/state/parameter-context-listing/parameter-context-listing.actions'; import { produce } from 'immer'; @@ -57,5 +57,8 @@ export const counterListingReducer = createReducer( }; } }); - }) + }), + on(resetCounterState, (state) => ({ + ...initialState + })) ); diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/state/controller-services/controller-services.effects.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/state/controller-services/controller-services.effects.ts index abab561502..2f73749715 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/state/controller-services/controller-services.effects.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/state/controller-services/controller-services.effects.ts @@ -42,6 +42,8 @@ import { Client } from '../../../../service/client.service'; import { YesNoDialog } from '../../../../ui/common/yes-no-dialog/yes-no-dialog.component'; import { EditControllerService } from '../../../../ui/common/controller-service/edit-controller-service/edit-controller-service.component'; import { + ComponentType, + ControllerServiceReferencingComponent, EditParameterRequest, EditParameterResponse, InlineServiceCreationRequest, @@ -277,6 +279,13 @@ export class ControllerServicesEffects { } }; + editDialogReference.componentInstance.goToReferencingComponent = ( + component: ControllerServiceReferencingComponent + ) => { + const route: string[] = this.getRouteForReference(component); + goTo(route, component.referenceType); + }; + if (parameterContext != null) { editDialogReference.componentInstance.getParameters = (sensitive: boolean) => { return this.flowService.getParameterContext(parameterContext.id).pipe( @@ -606,4 +615,24 @@ export class ControllerServicesEffects { ), { dispatch: false } ); + + private getRouteForReference(reference: ControllerServiceReferencingComponent): string[] { + if (reference.referenceType == 'ControllerService') { + if (reference.groupId == null) { + return ['/settings', 'management-controller-services', reference.id]; + } else { + return ['/process-groups', reference.groupId, 'controller-services', reference.id]; + } + } else if (reference.referenceType == 'ReportingTask') { + return ['/settings', 'reporting-tasks', reference.id]; + } else if (reference.referenceType == 'Processor') { + return ['/process-groups', reference.groupId, ComponentType.Processor, reference.id]; + } else if (reference.referenceType == 'FlowAnalysisRule') { + return ['/settings', 'flow-analysis-rules', reference.id]; + } else if (reference.referenceType == 'ParameterProvider') { + return ['/settings', 'parameter-providers', reference.id]; + } else { + return ['/settings', 'registry-clients', reference.id]; + } + } } diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/state/flow/flow.effects.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/state/flow/flow.effects.ts index 7eef83c20e..9c89239177 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/state/flow/flow.effects.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/state/flow/flow.effects.ts @@ -67,6 +67,7 @@ import { CreatePort } from '../../ui/canvas/items/port/create-port/create-port.c import { EditPort } from '../../ui/canvas/items/port/edit-port/edit-port.component'; import { ComponentType, + ControllerServiceReferencingComponent, EditParameterRequest, EditParameterResponse, InlineServiceCreationRequest, diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/parameter-contexts/ui/parameter-context-listing/parameter-references/parameter-references.component.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/parameter-contexts/ui/parameter-context-listing/parameter-references/parameter-references.component.ts index d163c4ff86..04b5a6c09f 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/parameter-contexts/ui/parameter-context-listing/parameter-references/parameter-references.component.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/parameter-contexts/ui/parameter-context-listing/parameter-references/parameter-references.component.ts @@ -129,7 +129,7 @@ export class ParameterReferences { } getRouteForReference(reference: AffectedComponent): string[] { - if (reference.referenceType == 'ControllerService') { + if (reference.referenceType === 'CONTROLLER_SERVICE') { if (reference.processGroupId == null) { return ['/settings', 'management-controller-services', reference.id]; } else { diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/parameter-contexts/ui/parameter-context-listing/parameter-table/parameter-table.component.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/parameter-contexts/ui/parameter-context-listing/parameter-table/parameter-table.component.ts index 0f41e4543b..7ac6c5b1f6 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/parameter-contexts/ui/parameter-context-listing/parameter-table/parameter-table.component.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/parameter-contexts/ui/parameter-context-listing/parameter-table/parameter-table.component.ts @@ -74,7 +74,7 @@ export class ParameterTable implements AfterViewInit, ControlValueAccessor { displayedColumns: string[] = ['name', 'value', 'actions']; dataSource: MatTableDataSource = new MatTableDataSource(); - selectedItem!: ParameterItem; + selectedItem: ParameterItem | null = null; isDisabled: boolean = false; isTouched: boolean = false; @@ -280,7 +280,7 @@ export class ParameterTable implements AfterViewInit, ControlValueAccessor { item.entity.parameter.valueRemoved = true; item.deleted = true; item.dirty = true; - + this.selectParameter(null); this.handleChanged(); } } @@ -327,7 +327,7 @@ export class ParameterTable implements AfterViewInit, ControlValueAccessor { }); } - selectParameter(item: ParameterItem): void { + selectParameter(item: ParameterItem | null): void { this.selectedItem = item; } diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/settings/state/management-controller-services/management-controller-services.effects.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/settings/state/management-controller-services/management-controller-services.effects.ts index 9bce0382d3..9c9adf03f2 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/settings/state/management-controller-services/management-controller-services.effects.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/settings/state/management-controller-services/management-controller-services.effects.ts @@ -29,6 +29,8 @@ import { Client } from '../../../../service/client.service'; import { YesNoDialog } from '../../../../ui/common/yes-no-dialog/yes-no-dialog.component'; import { EditControllerService } from '../../../../ui/common/controller-service/edit-controller-service/edit-controller-service.component'; import { + ComponentType, + ControllerServiceReferencingComponent, InlineServiceCreationRequest, InlineServiceCreationResponse, NewPropertyDialogRequest, @@ -220,12 +222,12 @@ export class ManagementControllerServicesEffects { ); }; - const goTo = (commands: string[]): void => { + const goTo = (commands: string[], destination: string): void => { if (editDialogReference.componentInstance.editControllerServiceForm.dirty) { const saveChangesDialogReference = this.dialog.open(YesNoDialog, { data: { title: 'Controller Service Configuration', - message: `Save changes before going to this Controller Service?` + message: `Save changes before going to this ${destination}?` }, panelClass: 'small-dialog' }); @@ -246,7 +248,14 @@ export class ManagementControllerServicesEffects { editDialogReference.componentInstance.goToService = (serviceId: string) => { const commands: string[] = ['/settings', 'management-controller-services', serviceId]; - goTo(commands); + goTo(commands, 'Controller Service'); + }; + + editDialogReference.componentInstance.goToReferencingComponent = ( + component: ControllerServiceReferencingComponent + ) => { + const route: string[] = this.getRouteForReference(component); + goTo(route, component.referenceType); }; editDialogReference.componentInstance.createNewService = ( @@ -465,4 +474,24 @@ export class ManagementControllerServicesEffects { ), { dispatch: false } ); + + private getRouteForReference(reference: ControllerServiceReferencingComponent): string[] { + if (reference.referenceType == 'ControllerService') { + if (reference.groupId == null) { + return ['/settings', 'management-controller-services', reference.id]; + } else { + return ['/process-groups', reference.groupId, 'controller-services', reference.id]; + } + } else if (reference.referenceType == 'ReportingTask') { + return ['/settings', 'reporting-tasks', reference.id]; + } else if (reference.referenceType == 'Processor') { + return ['/process-groups', reference.groupId, ComponentType.Processor, reference.id]; + } else if (reference.referenceType == 'FlowAnalysisRule') { + return ['/settings', 'flow-analysis-rules', reference.id]; + } else if (reference.referenceType == 'ParameterProvider') { + return ['/settings', 'parameter-providers', reference.id]; + } else { + return ['/settings', 'registry-clients', reference.id]; + } + } } diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/feature/summary.component.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/feature/summary.component.ts index da61e55019..bbdd57c73a 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/feature/summary.component.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/feature/summary.component.ts @@ -19,7 +19,7 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { Store } from '@ngrx/store'; import { NiFiState } from '../../../state'; import { startUserPolling, stopUserPolling } from '../../../state/user/user.actions'; -import { loadSummaryListing } from '../state/summary-listing/summary-listing.actions'; +import { loadSummaryListing, resetSummaryState } from '../state/summary-listing/summary-listing.actions'; interface TabLink { label: string; @@ -49,6 +49,7 @@ export class Summary implements OnInit, OnDestroy { } ngOnDestroy(): void { + this.store.dispatch(resetSummaryState()); this.store.dispatch(stopUserPolling()); } } diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/state/summary-listing/summary-listing.actions.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/state/summary-listing/summary-listing.actions.ts index 251e6d7296..de9fdf2b2d 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/state/summary-listing/summary-listing.actions.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/state/summary-listing/summary-listing.actions.ts @@ -44,3 +44,5 @@ export const navigateToViewProcessorStatusHistory = createAction( `${SUMMARY_LISTING_PREFIX} Navigate To Processor Status History`, props<{ id: string }>() ); + +export const resetSummaryState = createAction(`${SUMMARY_LISTING_PREFIX} Reset Summary State`); diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/state/summary-listing/summary-listing.reducer.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/state/summary-listing/summary-listing.reducer.ts index 726e3d93e7..3090740cfb 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/state/summary-listing/summary-listing.reducer.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/summary/state/summary-listing/summary-listing.reducer.ts @@ -16,13 +16,13 @@ */ import { createReducer, on } from '@ngrx/store'; +import { ProcessGroupStatusSnapshot, ProcessorStatusSnapshotEntity, SummaryListingState } from './index'; import { - AggregateSnapshot, - ProcessGroupStatusSnapshot, - ProcessorStatusSnapshotEntity, - SummaryListingState -} from './index'; -import { loadSummaryListing, loadSummaryListingSuccess, summaryListingApiError } from './summary-listing.actions'; + loadSummaryListing, + loadSummaryListingSuccess, + resetSummaryState, + summaryListingApiError +} from './summary-listing.actions'; export const initialState: SummaryListingState = { clusterSummary: null, @@ -61,6 +61,10 @@ export const summaryListingReducer = createReducer( ...state, error, status: 'error' as const + })), + + on(resetSummaryState, (state) => ({ + ...initialState })) ); diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/controller-service-references/controller-service-references.component.html b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/controller-service-references/controller-service-references.component.html index 27707441d7..df44c60fe7 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/controller-service-references/controller-service-references.component.html +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/controller-service-references/controller-service-references.component.html @@ -99,7 +99,7 @@
- {{ + {{ reference.component.name }}
- {{ - service.component.name - }} + {{ service.component.name }}
void; protected readonly ValidationErrorsTip = ValidationErrorsTip; protected readonly BulletinsTip = BulletinsTip; @@ -102,24 +104,9 @@ export class ControllerServiceReferences { } } - getRouteForReference(reference: ControllerServiceReferencingComponent): string[] { - if (reference.referenceType == 'ControllerService') { - if (reference.groupId == null) { - return ['/settings', 'management-controller-services', reference.id]; - } else { - return ['/process-groups', reference.groupId, 'controller-services', reference.id]; - } - } else if (reference.referenceType == 'ReportingTask') { - return ['/settings', 'reporting-tasks', reference.id]; - } else if (reference.referenceType == 'Processor') { - return ['/process-groups', reference.groupId, 'processors', reference.id]; - } else if (reference.referenceType == 'FlowAnalysisRule') { - return ['/settings', 'flow-analysis-rules', reference.id]; - } else if (reference.referenceType == 'ParameterProvider') { - return ['/settings', 'parameter-providers', reference.id]; - } else { - return ['/settings', 'registry-clients', reference.id]; - } + goToReferencingComponentClicked(event: MouseEvent, component: ControllerServiceReferencingComponent) { + event.stopPropagation(); + this.goToReferencingComponent(component); } hasBulletins(entity: ControllerServiceReferencingComponentEntity): boolean { diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/edit-controller-service/edit-controller-service.component.html b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/edit-controller-service/edit-controller-service.component.html index 99a466e996..b507ec9201 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/edit-controller-service/edit-controller-service.component.html +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/edit-controller-service/edit-controller-service.component.html @@ -70,9 +70,8 @@
Referencing Components
+ [serviceReferences]="request.controllerService.component.referencingComponents" + [goToReferencingComponent]="goToReferencingComponent">
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/edit-controller-service/edit-controller-service.component.ts b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/edit-controller-service/edit-controller-service.component.ts index 17ea43505b..08173288e6 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/edit-controller-service/edit-controller-service.component.ts +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/controller-service/edit-controller-service/edit-controller-service.component.ts @@ -21,6 +21,7 @@ import { AbstractControl, FormBuilder, FormControl, FormGroup, ReactiveFormsModu import { Client } from '../../../../service/client.service'; import { ControllerServiceEntity, + ControllerServiceReferencingComponent, EditControllerServiceDialogRequest, InlineServiceCreationRequest, InlineServiceCreationResponse, @@ -74,6 +75,7 @@ export class EditControllerService { @Input() goToParameter!: (parameter: string) => void; @Input() convertToParameter!: (name: string, sensitive: boolean, value: string | null) => Observable; @Input() goToService!: (serviceId: string) => void; + @Input() goToReferencingComponent!: (component: ControllerServiceReferencingComponent) => void; @Input() saving$!: Observable; @Output() editControllerService: EventEmitter = new EventEmitter();