31 Commits

Author SHA1 Message Date
selfrelease 3f005779ae fix: 统一卡片高度 - PersonCard 和 WithSpouse 卡片均设 min-h-[177px]
PersonCard(无配偶)原高 177px,WithSpouse(有配偶)原高 153px,
同行混排时高度不齐导致错行感。两种卡片统一最小高度 177px,
WithSpouse 内容区域垂直居中。
2026-07-16 16:13:46 +08:00
selfrelease b4536c52ef fix: 连线位置偏移修复 - 改用 offsetLeft/offsetTop 替代 getBoundingClientRect
根因: getBoundingClientRect 返回屏幕坐标(受 scale 影响),
初始定位过程中 scale 从 1→0.45 变化时,连线在中间状态计算,
导致坐标与最终布局不匹配。

修复: 使用 offsetLeft/offsetTop 遍历 offsetParent 链获取本地坐标,
完全不受 CSS transform/scale 影响,消除 scale 依赖。
2026-07-16 16:03:40 +08:00
selfrelease ce06674cba perf: 传统族谱视图全面优化
P0 性能优化:
- 连线计算用 requestAnimationFrame + useLayoutEffect 替代 7个 setTimeout 轮询
- 节点注册改为批量 ref 模式,消除 N 次 setState 重渲染
- 初始定位用 useLayoutEffect + 双 rAF 替代 600ms setTimeout
- 高亮定位用三 rAF 替代 1000ms setTimeout
- 使用 ResizeObserver 替代 window.resize 监听

P1 视觉优化:
- 连线从 div 改为 SVG path 绘制,清晰且支持动画
- 背景纹理图从 transparenttextures.com 本地化到 public/
- 添加骨架屏 loading 状态替代 return null

P2 代码质量:
- 移除 page.tsx 中 5 处 console.log
- 移除 family-node.tsx 中 3 处 console.log
- 消除 handleD3MemberClick 中的直接 DOM 操作(createElement/innerHTML)
- parseName 提取为模块级函数,避免每次渲染重建

P3 增强:
- 缩放范围从 0.1~2 调整为 0.15~3
- 工具栏显示当前缩放比例
- SVG 连线添加 transition 动画
2026-07-16 15:45:24 +08:00
freedakgmail c2b890994d 0.8.4.0 2025-12-22 00:38:20 +08:00
freedakgmail 5a604e89f9 0.8.3.0 2025-12-21 22:42:39 +08:00
freedakgmail 5983f13282 0.8.2.0 2025-12-21 19:59:57 +08:00
freedakgmail 3489a10807 0.8.1.0 2025-12-21 19:24:52 +08:00
freedakgmail 5c8c70097c 0.8.0.0 2025-12-21 17:32:33 +08:00
freedakgmail 1ae59960e8 0.7.0.0 2025-12-10 15:21:27 +08:00
freedakgmail e7167f4340 0.6.2.0 2025-12-10 13:03:10 +08:00
freedakgmail 47be495fcf 0.6.1.0 2025-12-10 11:41:28 +08:00
freedakgmail 77df6a0e74 0.6.0.3 2025-12-10 11:13:16 +08:00
freedakgmail e9b1641509 0.6.0.2 2025-12-10 10:19:29 +08:00
freedakgmail 09809c0e49 0.6.0.1 2025-12-09 18:52:00 +08:00
freedakgmail 25ae1107ee 0.5.0.3 2025-11-30 22:14:24 +08:00
freedakgmail dd2f67073b 0.5.0.2 2025-11-30 22:04:36 +08:00
freedakgmail 8a1e03d616 0.5.0.1 2025-11-30 21:32:39 +08:00
freedakgmail 025f2b619f 0.5.0.0 2025-11-30 21:20:51 +08:00
freedakgmail a2873bf3c2 0.3.1.4 2025-11-30 20:11:34 +08:00
freedakgmail 0326894b09 0.3.1.3 2025-11-30 20:00:18 +08:00
freedakgmail b7f3592db3 0.3.0.6 2025-11-30 14:00:42 +08:00
freedakgmail 89f1e061d4 0.3.0.5 2025-11-30 13:09:52 +08:00
freedakgmail fd9c064749 0.3.0.0 2025-11-30 09:16:43 +08:00
freedakgmail b25f4bea02 0.0.9.0 2025-11-24 16:07:24 +08:00
freedakgmail 3d075c6076 0.0.8.5 2025-11-24 14:02:34 +08:00
freedakgmail 3375a79ed4 0.0.5.1 2025-11-23 15:56:24 +08:00
freedakgmail d797f1abb9 0.0.4.0 2025-11-23 14:46:53 +08:00
freedakgmail 2b4bc92f1b 0.0.3.0 2025-11-23 13:31:06 +08:00
freedakgmail bade25ff26 0.0.1.2 2025-11-23 09:13:25 +08:00
freedakgmail c033e46782 0.0.0.4 2025-11-22 23:49:24 +08:00
freedakgmail 43c8389705 0.0.0.1 2025-11-22 19:52:55 +08:00