This is an automated email from the ASF dual-hosted git repository.
rfellows pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 05c92e45d8 NIFI-13636: Fixing back navigation when navigating to
manage access policies. (#9153)
05c92e45d8 is described below
commit 05c92e45d8c48a1a2eef9fc49b31a4c9a5e15624
Author: Matt Gilman <[email protected]>
AuthorDate: Tue Aug 6 13:46:10 2024 -0400
NIFI-13636: Fixing back navigation when navigating to manage access
policies. (#9153)
This closes #9153
---
.../service/canvas-actions.service.ts | 103 ++++++++++++---------
.../pages/flow-designer/state/flow/flow.effects.ts | 19 ++--
.../app/pages/flow-designer/state/flow/index.ts | 2 +-
.../flow-designer/ui/canvas/canvas.component.ts | 5 +-
4 files changed, 71 insertions(+), 58 deletions(-)
diff --git
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/service/canvas-actions.service.ts
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/service/canvas-actions.service.ts
index 0071e82823..16e5d0ffff 100644
---
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/service/canvas-actions.service.ts
+++
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/service/canvas-actions.service.ts
@@ -223,60 +223,75 @@ export class CanvasActionsService {
return this.canvasUtils.canManagePolicies(selection);
},
action: (selection: d3.Selection<any, any, any, any>, extraArgs?)
=> {
- if (selection.empty()) {
- if (extraArgs?.processGroupId) {
+ const routeBoundary: string[] = ['/access-policies'];
+
+ if (extraArgs?.processGroupId) {
+ if (selection.empty()) {
this.store.dispatch(
navigateToManageComponentPolicies({
request: {
resource: 'process-groups',
id: extraArgs.processGroupId,
- backNavigationContext: 'Process Group'
+ backNavigation: {
+ route: ['/process-groups',
extraArgs.processGroupId],
+ routeBoundary,
+ context: 'Process Group'
+ }
}
})
);
- }
- } else {
- const selectionData = selection.datum();
- const componentType: ComponentType = selectionData.type;
+ } else {
+ const selectionData = selection.datum();
+ const componentType: ComponentType =
selectionData.type;
- let resource = 'process-groups';
- let backNavigationContext = 'Process Group';
- switch (componentType) {
- case ComponentType.Processor:
- resource = 'processors';
- backNavigationContext = 'Processor';
- break;
- case ComponentType.InputPort:
- resource = 'input-ports';
- backNavigationContext = 'Input Port';
- break;
- case ComponentType.OutputPort:
- resource = 'output-ports';
- backNavigationContext = 'Output Port';
- break;
- case ComponentType.Funnel:
- resource = 'funnels';
- backNavigationContext = 'Funnel';
- break;
- case ComponentType.Label:
- resource = 'labels';
- backNavigationContext = 'Label';
- break;
- case ComponentType.RemoteProcessGroup:
- resource = 'remote-process-groups';
- backNavigationContext = 'Remote Process Group';
- break;
- }
+ let resource = 'process-groups';
+ let context = 'Process Group';
+ switch (componentType) {
+ case ComponentType.Processor:
+ resource = 'processors';
+ context = 'Processor';
+ break;
+ case ComponentType.InputPort:
+ resource = 'input-ports';
+ context = 'Input Port';
+ break;
+ case ComponentType.OutputPort:
+ resource = 'output-ports';
+ context = 'Output Port';
+ break;
+ case ComponentType.Funnel:
+ resource = 'funnels';
+ context = 'Funnel';
+ break;
+ case ComponentType.Label:
+ resource = 'labels';
+ context = 'Label';
+ break;
+ case ComponentType.RemoteProcessGroup:
+ resource = 'remote-process-groups';
+ context = 'Remote Process Group';
+ break;
+ }
- this.store.dispatch(
- navigateToManageComponentPolicies({
- request: {
- resource,
- id: selectionData.id,
- backNavigationContext
- }
- })
- );
+ this.store.dispatch(
+ navigateToManageComponentPolicies({
+ request: {
+ resource,
+ id: selectionData.id,
+ backNavigation: {
+ route: [
+ '/process-groups',
+ extraArgs.processGroupId,
+ componentType,
+ selectionData.id
+ ],
+ routeBoundary,
+ context
+ }
+ }
+ })
+ );
+ }
}
}
},
diff --git
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/flow/flow.effects.ts
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/flow/flow.effects.ts
index 77754bbd60..fba867dc01 100644
---
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/flow/flow.effects.ts
+++
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/flow/flow.effects.ts
@@ -1065,18 +1065,15 @@ export class FlowEffects {
this.actions$.pipe(
ofType(FlowActions.navigateToManageComponentPolicies),
map((action) => action.request),
- concatLatestFrom(() =>
this.store.select(selectCurrentProcessGroupId)),
- tap(([request, processGroupId]) => {
- const routeBoundary: string[] = ['/access-policies'];
- this.router.navigate([...routeBoundary, 'read',
'component', request.resource, request.id], {
- state: {
- backNavigation: {
- route: ['/process-groups', processGroupId,
request.resource, request.id],
- routeBoundary,
- context: request.backNavigationContext
- } as BackNavigation
+ tap((request) => {
+ this.router.navigate(
+ [...request.backNavigation.routeBoundary, 'read',
'component', request.resource, request.id],
+ {
+ state: {
+ backNavigation: request.backNavigation
+ }
}
- });
+ );
})
),
{ dispatch: false }
diff --git
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/flow/index.ts
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/flow/index.ts
index 023a9e0435..2f586351d4 100644
---
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/flow/index.ts
+++
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/state/flow/index.ts
@@ -346,7 +346,7 @@ export interface OpenComponentDialogRequest {
export interface NavigateToManageComponentPoliciesRequest {
resource: string;
id: string;
- backNavigationContext: string;
+ backNavigation: BackNavigation;
}
export interface EditComponentDialogRequest {
diff --git
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/ui/canvas/canvas.component.ts
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/ui/canvas/canvas.component.ts
index 2e6a12a061..0eeef0f8d5 100644
---
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/ui/canvas/canvas.component.ts
+++
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/flow-designer/ui/canvas/canvas.component.ts
@@ -57,7 +57,7 @@ import {
selectSkipTransform,
selectViewStatusHistoryComponent
} from '../../state/flow/flow.selectors';
-import { filter, map, switchMap, take } from 'rxjs';
+import { filter, map, NEVER, switchMap, take } from 'rxjs';
import { restoreViewport } from '../../state/transform/transform.actions';
import { initialState } from '../../state/flow/flow.reducer';
import { CanvasContextMenu } from '../../service/canvas-context-menu.service';
@@ -218,7 +218,8 @@ export class Canvas implements OnInit, OnDestroy {
component$ =
this.store.select(selectLabel(selectedComponent.id));
break;
default:
- throw 'Unrecognized Component Type';
+ component$ = NEVER;
+ break;
}
// combine the original selection with the component