From a0abe3af9dd441c7493b8b4da290bd9ef7a36688 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:54:50 +0100 Subject: [PATCH] feat(docs): add shuffle to layout example --- docs/examples/index.ts | 6 ++-- docs/examples/layout/App.vue | 48 +++++++++++++++++++----------- docs/examples/layout/Icon.vue | 40 +++++++++++++++++++++++++ docs/examples/layout/index.ts | 4 ++- docs/examples/layout/useShuffle.js | 44 +++++++++++++++++++++++++++ 5 files changed, 121 insertions(+), 21 deletions(-) create mode 100644 docs/examples/layout/Icon.vue create mode 100644 docs/examples/layout/useShuffle.js diff --git a/docs/examples/index.ts b/docs/examples/index.ts index c10f5e85..81d143ba 100644 --- a/docs/examples/index.ts +++ b/docs/examples/index.ts @@ -18,7 +18,7 @@ import { IntersectionApp, IntersectionCSS } from './intersection' import { SnapToHandleApp, SnappableConnectionLine } from './connection-radius' import { NodeResizerApp, ResizableNode } from './node-resizer' import { ToolbarApp, ToolbarNode } from './node-toolbar' -import { LayoutApp, LayoutEdge, LayoutElements, LayoutNode, LayoutScript } from './layout' +import { LayoutApp, LayoutEdge, LayoutElements, LayoutIcon, LayoutNode, useRunProcess, useShuffle } from './layout' export const exampleImports = { basic: { @@ -129,7 +129,9 @@ export const exampleImports = { 'initial-elements.js': LayoutElements, 'ProcessNode.vue': LayoutNode, 'AnimationEdge.vue': LayoutEdge, - 'useRunProcess.js': LayoutScript, + 'useRunProcess.js': useRunProcess, + 'useShuffle.js': useShuffle, + 'Icon.vue': LayoutIcon, 'additionalImports': { '@vueuse/core': 'https://cdn.jsdelivr.net/npm/@vueuse/core@10.7.0/index.mjs', '@vueuse/shared': 'https://cdn.jsdelivr.net/npm/@vueuse/shared@10.7.0/index.mjs', diff --git a/docs/examples/layout/App.vue b/docs/examples/layout/App.vue index 02d655f1..018b52d6 100644 --- a/docs/examples/layout/App.vue +++ b/docs/examples/layout/App.vue @@ -3,11 +3,13 @@ import dagre from 'dagre' import { nextTick, ref } from 'vue' import { Panel, Position, VueFlow, useVueFlow } from '@vue-flow/core' import { Background } from '@vue-flow/background' +import Icon from './Icon.vue' import ProcessNode from './ProcessNode.vue' import AnimationEdge from './AnimationEdge.vue' import { initialEdges, initialNodes } from './initial-elements.js' import { useRunProcess } from './useRunProcess' +import { useShuffle } from './useShuffle' const nodes = ref(initialNodes) @@ -17,7 +19,9 @@ const dagreGraph = ref(new dagre.graphlib.Graph()) const cancelOnError = ref(true) -const { run, stop, isRunning } = useRunProcess({ dagreGraph, cancelOnError }) +const shuffle = useShuffle() + +const { run, stop, reset, isRunning } = useRunProcess({ dagreGraph, cancelOnError }) const { findNode, fitView } = useVueFlow() @@ -37,6 +41,7 @@ function handleLayout(direction) { dagreGraph.value.setNode(node.id, { width: graphNode.dimensions.width || 150, height: graphNode.dimensions.height || 50 }) } + console.log(edges.value) for (const edge of edges.value) { dagreGraph.value.setEdge(edge.source, edge.target) } @@ -59,6 +64,16 @@ function handleLayout(direction) { fitView() }) } + +function shuffleGraph() { + reset(nodes.value) + + edges.value = shuffle(nodes.value) + + nextTick(() => { + handleLayout('LR') + }) +}