From 16ba28dedfd9e35fd57a15c3ade0775eb37acfad Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 6 Dec 2024 14:22:43 -0500 Subject: [PATCH] draw animated connections for accesses of owned/active shares (#799) --- ui100/src/AccessNode.tsx | 5 +++++ ui100/src/App.tsx | 2 -- ui100/src/ShareNode.tsx | 5 +++++ ui100/src/model/visualizer.ts | 38 +++++++++++++++++++++++++++++------ 4 files changed, 42 insertions(+), 8 deletions(-) diff --git a/ui100/src/AccessNode.tsx b/ui100/src/AccessNode.tsx index f9da1075..c7f2a32a 100644 --- a/ui100/src/AccessNode.tsx +++ b/ui100/src/AccessNode.tsx @@ -3,9 +3,14 @@ import {Grid2} from "@mui/material"; import AccessIcon from "@mui/icons-material/Lan"; const AccessNode = ({ data }) => { + let shareHandle = <>; + if(data.ownedShare) { + shareHandle = ; + } return ( <> + {shareHandle} {data.label} diff --git a/ui100/src/App.tsx b/ui100/src/App.tsx index ce405733..3ca59776 100644 --- a/ui100/src/App.tsx +++ b/ui100/src/App.tsx @@ -11,9 +11,7 @@ const App = () => { const checkUser = () => { const user = localStorage.getItem("user"); if (user) { - console.log(user); setUser(JSON.parse(user)); - console.log("reloaded user", user); } } checkUser(); diff --git a/ui100/src/ShareNode.tsx b/ui100/src/ShareNode.tsx index d9ffe652..67ae5c45 100644 --- a/ui100/src/ShareNode.tsx +++ b/ui100/src/ShareNode.tsx @@ -3,9 +3,14 @@ import {Grid2} from "@mui/material"; import ShareIcon from "@mui/icons-material/Share"; const ShareNode = ({ data }) => { + let shareHandle = <>; + if(data.accessed) { + shareHandle = ; + } return ( <> + {shareHandle} {data.label} diff --git a/ui100/src/model/visualizer.ts b/ui100/src/model/visualizer.ts index ced36824..bbe6358c 100644 --- a/ui100/src/model/visualizer.ts +++ b/ui100/src/model/visualizer.ts @@ -13,6 +13,9 @@ const buildVisualizerGraph = (overview: Overview): VisualOverview => { ]; out.edges = []; + let ownedShares: { [key: string]: Node } = {}; + let ownedAccesses: { [key: string]: Node } = {}; + overview.environments?.forEach(env => { if(env.environment && env.environment.zId) { let envNode = { @@ -27,15 +30,18 @@ const buildVisualizerGraph = (overview: Overview): VisualOverview => { source: "0", target: env.environment.zId }); + if(env.shares) { envNode.data.empty = false; env.shares.forEach(shr => { - out.nodes.push({ + let shareNode = { id: shr.token!, position: { x: 0, y: 0 }, - data: { label: shr.token! }, + data: { label: shr.token!, accessed: false }, type: "share", - }); + }; + out.nodes.push(shareNode); + ownedShares[shr.token!] = shareNode; out.edges.push({ id: env.environment?.zId + "-" + shr.token!, source: env.environment?.zId!, @@ -46,21 +52,41 @@ const buildVisualizerGraph = (overview: Overview): VisualOverview => { if(env.frontends) { envNode.data.empty = false; env.frontends.forEach(acc => { - out.nodes.push({ + let accNode = { id: acc.token!, position: { x: 0, y: 0 }, - data: { label: acc.token! }, + data: { label: acc.token!, ownedShare: false, shrToken: acc.shrToken }, type: "access", - }); + } + out.nodes.push(accNode); out.edges.push({ id: env.environment?.zId + "-" + acc.token!, source: env.environment?.zId!, target: acc.token! }); + let ownedShare = ownedShares[acc.shrToken]; + }); } } }); + out.nodes.forEach(n => { + if(n.type == "access") { + let ownedShare = ownedShares[n.data.shrToken]; + if(ownedShare) { + console.log("linking owned share", n) + n.data.ownedShare = true; + ownedShare.data.accessed = true; + out.edges.push({ + id: n.id + "-" + n.data.shrToken, + source: n.id, + target: n.data.shrToken as string, + targetHandle: "access", + animated: true + }); + } + } + }) return out; }