From c9ac954edfba7df27c5ff7fdf8ca61a9adb0942e Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Thu, 20 Nov 2025 17:58:23 -0500 Subject: [PATCH] Transform family tree into Obsidian-style force graph MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace hierarchical tree with force-directed graph visualization: - Dark theme with radial gradient background (Obsidian-inspired) - Physics-based node positioning with adjustable forces - Draggable nodes with collision detection - Click to highlight connections, double-click to navigate - Color-coded nodes by generation (early to late) - Notable figures (Adam, Noah, Abraham, David, Jesus, etc.) highlighted - Interactive controls: pause/resume, reset positions, adjust forces - Sliders for charge strength and link distance - Smooth animations and glow effects on hover - Stats overlay showing node count and simulation energy - Organic, nebulous layout like Obsidian's graph view 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../templates/family_tree_interactive.html | 631 ++++++++++-------- 1 file changed, 337 insertions(+), 294 deletions(-) diff --git a/kjvstudy_org/templates/family_tree_interactive.html b/kjvstudy_org/templates/family_tree_interactive.html index ef5d4c4..e60eac0 100644 --- a/kjvstudy_org/templates/family_tree_interactive.html +++ b/kjvstudy_org/templates/family_tree_interactive.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %}Interactive Family Tree - KJV Study{% endblock %} -{% block description %}Explore biblical genealogies through an interactive visualization from Adam to Jesus Christ.{% endblock %} +{% block description %}Explore biblical genealogies through an interactive graph visualization from Adam to Jesus Christ.{% endblock %} {% block head %} @@ -37,74 +37,122 @@ background: #e5e5e5; } +.tree-controls label { + margin-right: 1rem; + font-size: 0.95rem; +} + +.tree-controls input[type="range"] { + width: 150px; + vertical-align: middle; +} + #tree-container { width: 100%; height: 800px; - border: 1px solid #ccc; + border: 1px solid #2a2a2a; margin: 2rem 0; overflow: hidden; - background: #fefefe; -} - -.node circle { - fill: #fff; - stroke: #8b4513; - stroke-width: 2px; - cursor: pointer; -} - -.node circle:hover { - stroke: #5a2d0c; - stroke-width: 3px; -} - -.node.has-children circle { - fill: #f4f1ea; -} - -.node text { - font-size: 12px; - font-family: et-book, Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif; - cursor: pointer; -} - -.node text:hover { - font-weight: 600; + background: #1e1e1e; + background: radial-gradient(ellipse at center, #242424 0%, #1a1a1a 100%); } .link { - fill: none; - stroke: #999; + stroke: #4a4a4a; + stroke-opacity: 0.6; stroke-width: 1.5px; + fill: none; } -.node.highlighted circle { - stroke: #c41e3a; +.link.parent-child { + stroke: #6b4423; + stroke-opacity: 0.7; +} + +.link.highlighted { + stroke: #8b6f47; + stroke-opacity: 0.9; + stroke-width: 2.5px; +} + +.node circle { + stroke: #8b7355; + stroke-width: 2px; + cursor: pointer; + transition: all 0.3s ease; +} + +.node circle:hover { + stroke: #b8956a; stroke-width: 3px; - fill: #fff5f5; + filter: drop-shadow(0 0 8px rgba(139, 115, 85, 0.6)); +} + +.node.important circle { + fill: #6b4423; + stroke: #9d6b3d; + stroke-width: 2.5px; +} + +.node.generation-1 circle { + fill: #4a3728; +} + +.node.generation-2-10 circle { + fill: #5a4535; +} + +.node.generation-11-20 circle { + fill: #6b5442; +} + +.node.generation-20plus circle { + fill: #7a6350; +} + +.node text { + font-size: 11px; + font-family: et-book, Palatino, "Palatino Linotype", Georgia, serif; + fill: #c9c9c9; + pointer-events: none; + text-shadow: 0 0 3px rgba(0,0,0,0.8), 0 0 5px rgba(0,0,0,0.5); +} + +.node.important text { + font-weight: 600; + font-size: 13px; + fill: #e6d5c3; +} + +.node.dragging circle { + stroke: #d4a574; + stroke-width: 4px; } .tooltip { position: absolute; padding: 0.75rem; - background: white; - border: 1px solid #333; - border-radius: 3px; + background: rgba(30, 30, 30, 0.95); + border: 1px solid #5a5a5a; + border-radius: 4px; pointer-events: none; font-size: 0.9rem; line-height: 1.6; max-width: 250px; - box-shadow: 0 2px 8px rgba(0,0,0,0.1); + box-shadow: 0 4px 12px rgba(0,0,0,0.5); z-index: 1000; + color: #d9d9d9; + backdrop-filter: blur(4px); } .tooltip-name { font-weight: 600; margin-bottom: 0.25rem; + color: #e6d5c3; } .tooltip-info { - color: #666; + color: #b0b0b0; font-size: 0.85rem; } @@ -128,7 +176,7 @@ border-radius: 50%; margin-right: 0.5rem; vertical-align: middle; - border: 2px solid #8b4513; + border: 2px solid #8b7355; } .navigation-links { @@ -141,38 +189,64 @@ .navigation-links a { margin-right: 1.5rem; } + +.stats-overlay { + position: absolute; + top: 10px; + right: 10px; + padding: 0.5rem 1rem; + background: rgba(30, 30, 30, 0.8); + border: 1px solid #4a4a4a; + border-radius: 4px; + color: #b0b0b0; + font-size: 0.85rem; + pointer-events: none; +} {% endblock %} {% block content %}

Interactive Family Tree

-

Biblical genealogies from Adam to Jesus Christ

+

Biblical genealogies as a connected graph

-

Explore the biblical genealogies through an interactive tree visualization. Click on any person to expand their descendants, or hover to see more details. The tree traces the lineage from Adam through the patriarchs, judges, kings, and ultimately to Jesus Christ.

+

Explore biblical genealogies through a force-directed graph visualization. Drag nodes to rearrange, hover for details, click to highlight connections. The graph shows relationships from Adam through the patriarchs to Jesus Christ.

- - - - + + + + +
- - Person (click to expand) + + Early Generations - - Has descendants + + Notable Figures + + + + Later Generations
-
+
+
+