diff --git a/src/pages/ReferralNetwork/ReferralNetwork.tsx b/src/pages/ReferralNetwork/ReferralNetwork.tsx index f09b2a8..8f729de 100644 --- a/src/pages/ReferralNetwork/ReferralNetwork.tsx +++ b/src/pages/ReferralNetwork/ReferralNetwork.tsx @@ -1,3 +1,4 @@ +import { createPortal } from 'react-dom'; import { useTranslation } from 'react-i18next'; import { useQuery } from '@tanstack/react-query'; import { referralNetworkApi } from '@/api/referralNetwork'; @@ -28,7 +29,7 @@ export function ReferralNetwork() { const isPanelOpen = selectedNode !== null; - return ( + return createPortal(
- + , + document.body, ); } diff --git a/src/pages/ReferralNetwork/components/NetworkGraph.tsx b/src/pages/ReferralNetwork/components/NetworkGraph.tsx index 0233871..be89d1a 100644 --- a/src/pages/ReferralNetwork/components/NetworkGraph.tsx +++ b/src/pages/ReferralNetwork/components/NetworkGraph.tsx @@ -21,7 +21,7 @@ function buildFullGraph(graphData: NetworkGraphData): Graph { label: campaign.name, x: Math.random() * 100, y: Math.random() * 100, - size: 24, + size: 16, color: getCampaignColor(index), type: 'circle', nodeType: 'campaign', @@ -53,8 +53,8 @@ function buildFullGraph(graphData: NetworkGraphData): Graph { const edgeKey = `${edge.source}->${edge.target}`; if (!graph.hasEdge(edgeKey)) { graph.addEdgeWithKey(edgeKey, edge.source, edge.target, { - color: edge.type === 'campaign' ? 'rgba(77, 217, 192, 0.12)' : 'rgba(255,255,255,0.06)', - size: 0.5, + color: edge.type === 'campaign' ? 'rgba(77, 217, 192, 0.06)' : 'rgba(255,255,255,0.03)', + size: 0.3, edgeType: edge.type, }); } @@ -183,14 +183,14 @@ export function NetworkGraph({ data, className }: NetworkGraphProps) { const sigma = new Sigma(graph, container, { renderEdgeLabels: false, - labelDensity: 0.5, - labelRenderedSizeThreshold: 6, + labelDensity: 0.12, + labelRenderedSizeThreshold: 14, zIndex: true, - defaultEdgeColor: '#ffffff10', + defaultEdgeColor: '#ffffff06', defaultNodeColor: '#6b7280', labelColor: { color: '#e8e6f0' }, labelFont: 'Inter, system-ui, sans-serif', - labelSize: 12, + labelSize: 11, stagePadding: 40, nodeReducer: (node, attrs) => { const res = { ...attrs }; diff --git a/src/pages/ReferralNetwork/utils.ts b/src/pages/ReferralNetwork/utils.ts index 703d60b..f1a89ae 100644 --- a/src/pages/ReferralNetwork/utils.ts +++ b/src/pages/ReferralNetwork/utils.ts @@ -46,8 +46,7 @@ export function getUserNodeColor( * Size is proportional to direct_referrals, clamped between min and max. */ export function getUserNodeSize(directReferrals: number): number { - const MIN_SIZE = 12; - const MAX_SIZE = 50; - if (directReferrals === 0) return MIN_SIZE; - return Math.min(MAX_SIZE, MIN_SIZE + Math.sqrt(directReferrals) * 5); + if (directReferrals === 0) return 5; + if (directReferrals <= 2) return 10; + return Math.min(40, 10 + Math.sqrt(directReferrals) * 4); }