From b9e0f2fd2f2d5d0d97a20b1ed9746dfa12e8d343 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 5 Jul 2024 20:09:12 +0200 Subject: [PATCH] nit dataflow dark mode colors --- .../container/controllers/middleware.ts | 91 ++++++++----------- 1 file changed, 38 insertions(+), 53 deletions(-) diff --git a/frontend/src/lib/components/graph/svelvet/container/controllers/middleware.ts b/frontend/src/lib/components/graph/svelvet/container/controllers/middleware.ts index 9f4a4b1b65..bb3f8eb1cc 100644 --- a/frontend/src/lib/components/graph/svelvet/container/controllers/middleware.ts +++ b/frontend/src/lib/components/graph/svelvet/container/controllers/middleware.ts @@ -3,16 +3,8 @@ This file contains "middleware" functions that sanitize user input (UserNodeType maintain consistency between previous */ -import { - bottomCb, - leftCb, - rightCb, - topCb, -} from '../../edges/controllers/anchorCbUser'; -import type { UserEdgeType, UserNodeType } from '../../types/types'; - - - +import { bottomCb, leftCb, rightCb, topCb } from '../../edges/controllers/anchorCbUser' +import type { UserEdgeType, UserNodeType } from '../../types/types' /** * sanitizeUserNodesAndEdges will sanitize the data initially passed in to Svelvet component. For example, the node that user specified have an integar as its id but to instantiate a Node and be compatible with uuid we will need to convert the integar id to a string. @@ -20,15 +12,12 @@ import type { UserEdgeType, UserNodeType } from '../../types/types'; * @param userEdges The array of edges that have a UserEdgeType * @returns An object of sanitized userNodes and userEdges */ -export function sanitizeUserNodesAndEdges( - userNodes: UserNodeType[], - userEdges: UserEdgeType[] -) { - convertIdToString(userNodes); - convertEdgeIdsToString(userEdges); - convertAnchorPositionsToCallbacks(userNodes, userEdges); - setDefaultEdgeType(userEdges); - return { userNodes, userEdges }; +export function sanitizeUserNodesAndEdges(userNodes: UserNodeType[], userEdges: UserEdgeType[]) { + convertIdToString(userNodes) + convertEdgeIdsToString(userEdges) + convertAnchorPositionsToCallbacks(userNodes, userEdges) + setDefaultEdgeType(userEdges) + return { userNodes, userEdges } } /** @@ -37,10 +26,10 @@ export function sanitizeUserNodesAndEdges( * @returns No return, the function edits the objects in place */ function setDefaultEdgeType(userEdges) { - for (let userEdge of userEdges) { - if (!['smoothstep', 'step', 'bezier', 'straight'].includes(userEdge.type)) - userEdge.type = 'bezier'; - } + for (let userEdge of userEdges) { + if (!['smoothstep', 'step', 'bezier', 'straight'].includes(userEdge.type)) + userEdge.type = 'bezier' + } } /** @@ -57,25 +46,23 @@ function setDefaultEdgeType(userEdges) { * consistent user experience. However, we suggest that this functionality (parsing Svelvet5 syntax into * Svelvet6 syntax) be removed completely in favor of only using Svelvet6 syntax in order to reduce edge cases. */ -function convertAnchorPositionsToCallbacks( - userNodes: UserNodeType[], - userEdges: UserEdgeType[] -) { - // convert userNodes array into object for constant time lookup by id - const userNodesObj: { [key: string]: UserNodeType } = {}; - for (let userNode of userNodes) userNodesObj[userNode.id] = userNode; +function convertAnchorPositionsToCallbacks(userNodes: UserNodeType[], userEdges: UserEdgeType[]) { + // convert userNodes array into object for constant time lookup by id + const userNodesObj: { [key: string]: UserNodeType } = {} + for (let userNode of userNodes) userNodesObj[userNode.id] = userNode - // iterate through userEdges, and check the source/target nodes. - for (let userEdge of userEdges) { - const userNodeSource = userNodesObj[userEdge.source]; - const userNodeTarget = userNodesObj[userEdge.target]; - const sourcePosition = userNodeSource.sourcePosition; - const targetPosition = userNodeTarget.targetPosition; + // iterate through userEdges, and check the source/target nodes. + for (let userEdge of userEdges) { + const userNodeSource = userNodesObj[userEdge.source] + const userNodeTarget = userNodesObj[userEdge.target] + if (!userNodeSource || !userNodeTarget) continue + const sourcePosition = userNodeSource.sourcePosition + const targetPosition = userNodeTarget.targetPosition - const cbs = { left: leftCb, right: rightCb, top: topCb, bottom: bottomCb }; - if (sourcePosition) userEdge.sourceAnchorCb = cbs[sourcePosition]; - if (targetPosition) userEdge.targetAnchorCb = cbs[targetPosition]; - } + const cbs = { left: leftCb, right: rightCb, top: topCb, bottom: bottomCb } + if (sourcePosition) userEdge.sourceAnchorCb = cbs[sourcePosition] + if (targetPosition) userEdge.targetAnchorCb = cbs[targetPosition] + } } /** @@ -83,14 +70,12 @@ function convertAnchorPositionsToCallbacks( * @param userNodes The array of userNodes (not yet sanitized) */ function convertIdToString(userNodes: UserNodeType[]) { - userNodes = userNodes.map((node) => { - node.id = node.id.toString(); - node.childNodes = - node.childNodes === undefined - ? [] - : node.childNodes.map((childId) => childId.toString()); - return node; - }); + userNodes = userNodes.map((node) => { + node.id = node.id.toString() + node.childNodes = + node.childNodes === undefined ? [] : node.childNodes.map((childId) => childId.toString()) + return node + }) } /** @@ -98,9 +83,9 @@ function convertIdToString(userNodes: UserNodeType[]) { * @param userEdges The array of userEdges (not yet sanitized) */ function convertEdgeIdsToString(userEdges: UserEdgeType[]) { - userEdges = userEdges.map((edge) => { - edge.source = edge.source.toString(); - edge.target = edge.target.toString(); - return edge; - }); + userEdges = userEdges.map((edge) => { + edge.source = edge.source.toString() + edge.target = edge.target.toString() + return edge + }) }