Politur: Reheat-Schleifen bei Mausbewegungen in GraphView behoben (D3-Simulation stabilisiert)
This commit is contained in:
+8
-8
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -7,7 +7,7 @@
|
||||
<link rel="manifest" href="/manifest.webmanifest" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<title>Mission Control 2.0</title>
|
||||
<script type="module" crossorigin src="/assets/index-D663kYCx.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-C1WKhrF6.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index--2fz5jZz.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -94,7 +94,8 @@ export function GraphView({ data, selectedNodeId, onNodeSelect }: {
|
||||
}[category] || 0
|
||||
}
|
||||
|
||||
// D3 Force Engine tunen (Luftige Struktur, kein Überlappen, Clustering)
|
||||
// D3 Force Engine initialisieren – NUR wenn sich die Daten tatsächlich ändern!
|
||||
// Entfernt hovered/selectedNodeId aus den Dependencies, um Reheat-Zucken und CPU-Spikes bei Mausbewegung zu eliminieren.
|
||||
useEffect(() => {
|
||||
const fg = fgRef.current
|
||||
if (!fg) return
|
||||
@@ -110,19 +111,16 @@ export function GraphView({ data, selectedNodeId, onNodeSelect }: {
|
||||
const charge = fg.d3Force("charge")
|
||||
if (charge) charge.strength(-380)
|
||||
|
||||
// 4. Kollisionskraft (Sicherer Radius, verhindert Überlappung)
|
||||
fg.d3Force("collide", forceCollide().radius((node: any) => {
|
||||
const isLarge = node.id === hovered || node.id === selectedNodeId
|
||||
return isLarge ? 50 : 25
|
||||
}).iterations(2))
|
||||
// 4. Konstanter, stabiler Kollisionsradius (verhindert Reheat-Zucken bei Mausbewegung)
|
||||
fg.d3Force("collide", forceCollide().radius(28).iterations(2))
|
||||
|
||||
// 5. Federkraft (Links)
|
||||
const link = fg.d3Force("link")
|
||||
if (link) link.distance(85)
|
||||
|
||||
// Simulation neu starten (Reheat)
|
||||
// Simulation einmalig heiss starten für die neuen Daten
|
||||
fg.d3ReheatSimulation()
|
||||
}, [graphData, hovered, selectedNodeId])
|
||||
}, [graphData])
|
||||
|
||||
const activeNode = hovered || selectedNodeId
|
||||
|
||||
|
||||
Reference in New Issue
Block a user