From d9c30ea0cc17a733d1fb873b80c7bcccff249e15 Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Date: Wed, 27 Apr 2022 09:39:02 -0400 Subject: [PATCH] Add ColaGroupsLayout --- .../demos/TopologyDemo/TopologyPackage.tsx | 22 +- .../demos/TopologyDemo/data/generator.ts | 47 +++- .../layouts/defaultLayoutFactory.ts | 3 + .../react-topology/src/elements/BaseNode.ts | 34 ++- .../react-topology/src/layouts/BaseLayout.ts | 11 +- .../src/layouts/BreadthFirstLayout.ts | 2 +- .../src/layouts/ColaGroupsLayout.ts | 252 ++++++++++++++++++ .../src/layouts/ColaGroupsNode.ts | 58 ++++ .../react-topology/src/layouts/ColaLayout.ts | 47 ++-- .../src/layouts/ConcentricLayout.ts | 2 +- .../react-topology/src/layouts/DagreLayout.ts | 2 +- .../react-topology/src/layouts/ForceLayout.ts | 2 +- .../react-topology/src/layouts/GridLayout.ts | 2 +- packages/react-topology/src/layouts/index.ts | 1 + 14 files changed, 437 insertions(+), 48 deletions(-) create mode 100644 packages/react-topology/src/layouts/ColaGroupsLayout.ts create mode 100644 packages/react-topology/src/layouts/ColaGroupsNode.ts diff --git a/packages/react-integration/demo-app-ts/src/components/demos/TopologyDemo/TopologyPackage.tsx b/packages/react-integration/demo-app-ts/src/components/demos/TopologyDemo/TopologyPackage.tsx index 85497d9a3cf..83376a820b5 100644 --- a/packages/react-integration/demo-app-ts/src/components/demos/TopologyDemo/TopologyPackage.tsx +++ b/packages/react-integration/demo-app-ts/src/components/demos/TopologyDemo/TopologyPackage.tsx @@ -81,6 +81,7 @@ const TopologyViewComponent: React.FunctionComponent const [numNodes, setNumNodes] = React.useState(6); const [numEdges, setNumEdges] = React.useState(2); const [numGroups, setNumGroups] = React.useState(1); + const [nestedLevel, setNestedLevel] = React.useState(0); const [medScale, setMedScale] = React.useState(0.5); const [lowScale, setLowScale] = React.useState(0.3); const [creationCounts, setCreationCounts] = React.useState<{ numNodes: number; numEdges: number; numGroups: number }>( @@ -93,6 +94,7 @@ const TopologyViewComponent: React.FunctionComponent creationCounts.numNodes, creationCounts.numGroups, creationCounts.numEdges, + nestedLevel, nodeOptions, edgeOptions ); @@ -153,6 +155,9 @@ const TopologyViewComponent: React.FunctionComponent updateLayout('Cola')}> Cola , + updateLayout('ColaGroups')}> + ColaGroups + , updateLayout('ColaNoForce')}> ColaNoForce , @@ -462,21 +467,28 @@ const TopologyViewComponent: React.FunctionComponent aria-label="nodes" type="number" value={numNodes || ''} - onChange={(val: string) => (val ? updateValue(parseInt(val), 0, 9999, setNumNodes) : setNumNodes(0))} + onChange={(val: string) => (val ? updateValue(parseInt(val), 0, 9999, setNumNodes) : setNumNodes(null))} /> Edges: (val ? updateValue(parseInt(val), 0, 200, setNumEdges) : setNumEdges(0))} + value={numEdges === null ? '' : numEdges} + onChange={(val: string) => (val ? updateValue(parseInt(val), 0, 200, setNumEdges) : setNumEdges(null))} /> Groups: (val ? updateValue(parseInt(val), 0, 100, setNumGroups) : setNumGroups(0))} + value={numGroups === null ? '' : numGroups} + onChange={(val: string) => (val ? updateValue(parseInt(val), 0, 100, setNumGroups) : setNumGroups(null))} + /> + Nesting Depth: + (val ? updateValue(parseInt(val), 0, 5, setNestedLevel) : setNestedLevel(null))} />