Skip to content
This repository has been archived by the owner on Jul 23, 2024. It is now read-only.

Commit

Permalink
Merge pull request #149 from parodos-dev/pc/remove-global-controller-…
Browse files Browse the repository at this point in the history
…from-pipeline-layout

remove global controller var from <PipelineLayout />
  • Loading branch information
dagda1 authored Jun 2, 2023
2 parents b357ce0 + 9169d85 commit f5b84a6
Showing 1 changed file with 8 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React from 'react';
import React, { memo, useEffect, useState } from 'react';
import {
DEFAULT_EDGE_TYPE,
DEFAULT_FINALLY_NODE_TYPE,
Expand All @@ -16,6 +16,7 @@ import {
Visualization,
VisualizationProvider,
VisualizationSurface,
useVisualizationController,
} from '@patternfly/react-topology';
import '@patternfly/react-styles/css/components/Topology/topology-components.css';
import pipelineComponentFactory from './pipelineComponentFactory';
Expand All @@ -26,17 +27,17 @@ export const PIPELINE_NODE_SEPARATION_VERTICAL = 10;

const PIPELINE_LAYOUT = 'PipelineLayout';

const controller = new Visualization();
type Props = {
tasks: WorkflowTask[];
setSelectedTask: (selectedTask: string) => void;
};

const TopologyPipelineLayout = (props: Props) => {
const [selectedIds, setSelectedIds] = React.useState<string[]>();
const [selectedIds, setSelectedIds] = useState<string[]>();
const pipelineNodes = useDemoPipelineNodes(props.tasks);
const controller = useVisualizationController();

React.useEffect(() => {
useEffect(() => {
const spacerNodes = getSpacerNodes(pipelineNodes);
const nodes = [...pipelineNodes, ...spacerNodes];
const edgeType = DEFAULT_EDGE_TYPE;
Expand All @@ -62,7 +63,7 @@ const TopologyPipelineLayout = (props: Props) => {
},
true,
);
}, [pipelineNodes, props.tasks]);
}, [controller, pipelineNodes, props.tasks]);

useEventListener<SelectionEventListener>(SELECTION_EVENT, ids => {
setSelectedIds(ids);
Expand All @@ -78,7 +79,8 @@ const TopologyPipelineLayout = (props: Props) => {

TopologyPipelineLayout.displayName = 'TopologyPipelineLayout';

export const PipelineLayout = React.memo((props: Props) => {
export const PipelineLayout = memo((props: Props) => {
const controller = new Visualization();
controller.setFitToScreenOnLayout(true);
controller.registerComponentFactory(pipelineComponentFactory);
controller.registerLayoutFactory(
Expand Down

0 comments on commit f5b84a6

Please sign in to comment.