File tree Expand file tree Collapse file tree
react-integration/demo-app-ts/src/components/demos/TopologyDemo Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -13,7 +13,8 @@ import {
1313 PipelineDagreLayout ,
1414 PipelineNodeModel ,
1515 getSpacerNodes ,
16- getEdgesFromNodes
16+ getEdgesFromNodes ,
17+ useVisualizationController
1718} from '@patternfly/react-topology' ;
1819import '@patternfly/react-styles/css/components/Topology/topology-components.css' ;
1920import withTopologySetup from './utils/withTopologySetup' ;
@@ -77,6 +78,9 @@ const getModel = (layout: string): Model => {
7778export const PipelineLayout = withTopologySetup ( ( ) => {
7879 useLayoutFactory ( ( type : string , graph : Graph ) : Layout | undefined => new PipelineDagreLayout ( graph , { nodesep : 95 } ) ) ;
7980 useComponentFactory ( pipelineComponentFactory ) ;
81+ const controller = useVisualizationController ( ) ;
82+ controller . setFitToScreenOnLayout ( true ) ;
83+
8084 // support pan zoom and drag
8185 useComponentFactory (
8286 React . useCallback < ComponentFactory > ( kind => {
Original file line number Diff line number Diff line change @@ -17,7 +17,9 @@ import {
1717 ModelKind ,
1818 LayoutFactory ,
1919 Layout ,
20- ViewPaddingSettings
20+ ViewPaddingSettings ,
21+ GRAPH_LAYOUT_END_EVENT ,
22+ GraphLayoutEndEventListener
2123} from './types' ;
2224import defaultElementFactory from './elements/defaultElementFactory' ;
2325import Stateful from './utils/Stateful' ;
@@ -59,6 +61,8 @@ export class Visualization extends Stateful implements Controller {
5961
6062 private eventListeners : { [ type : string ] : EventListener [ ] } = { } ;
6163
64+ private fitToScreenListener : GraphLayoutEndEventListener ;
65+
6266 @observable . shallow
6367 private readonly store = { } ;
6468
@@ -254,6 +258,20 @@ export class Visualization extends Stateful implements Controller {
254258 }
255259 }
256260
261+ setFitToScreenOnLayout ( fitToScreen : boolean , padding : number = 80 ) : void {
262+ if ( this . fitToScreenListener ) {
263+ this . removeEventListener ( GRAPH_LAYOUT_END_EVENT , this . fitToScreenListener ) ;
264+ }
265+
266+ if ( fitToScreen ) {
267+ this . fitToScreenListener = ( { graph } ) : void => {
268+ graph . fit ( padding ) ;
269+ } ;
270+ this . addEventListener ( GRAPH_LAYOUT_END_EVENT , this . fitToScreenListener ) ;
271+ return ;
272+ }
273+ }
274+
257275 shouldRenderNode ( node : Node ) : boolean {
258276 if ( ! this . viewConstraintsEnabled ) {
259277 return true ;
Original file line number Diff line number Diff line change @@ -313,6 +313,7 @@ export interface Controller extends WithState {
313313 getGraph ( ) : Graph ;
314314 setGraph ( graph : Graph ) : void ;
315315 getLayout ( type : string | undefined ) : Layout | undefined ;
316+ setFitToScreenOnLayout ( fitToScreen : boolean , padding ?: number ) : void ;
316317 getElementById ( id : string ) : GraphElement | undefined ;
317318 getNodeById ( id : string ) : Node | undefined ;
318319 getEdgeById ( id : string ) : Edge | undefined ;
You can’t perform that action at this time.
0 commit comments