"use client"
import { SiteHeader } from "@/components/site-header"
import { useFamily } from "@/context/family-context"
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { ScrollArea } from "@/components/ui/scroll-area"
import { Clock, Map, ArrowRight } from "lucide-react"
export default function TimelinePage() {
const { treeData, getMember } = useFamily()
const members = Object.values(treeData.members)
// -- Timeline Logic --
// Flatten events: Births and Deaths
const events = members
.flatMap((m) => {
const evs = []
if (m.birthDate) {
evs.push({
date: m.birthDate,
year: Number.parseInt(m.birthDate.substring(0, 4)),
type: "birth",
member: m,
})
}
if (m.deathDate) {
evs.push({
date: m.deathDate,
year: Number.parseInt(m.deathDate.substring(0, 4)),
type: "death",
member: m,
})
}
return evs
})
.sort((a, b) => a.date.localeCompare(b.date))
// -- Migration Logic --
// Find moves between generations (Father -> Child location change)
const migrations = members
.flatMap((m) => {
if (!m.fatherId) return []
const father = getMember(m.fatherId)
if (!father) return []
// Check if location exists and is different
const loc1 = father.ancestralHome || father.birthPlace
const loc2 = m.ancestralHome || m.birthPlace
if (loc1 && loc2 && loc1 !== loc2) {
return [
{
year: m.birthDate ? Number.parseInt(m.birthDate.substring(0, 4)) : null,
from: loc1,
to: loc2,
person: m,
father: father,
},
]
}
return []
})
.sort((a, b) => (a.year || 0) - (b.year || 0))
return (
家族历史 (History)
纵览家族发展的时间脉络与迁徙足迹。
时间轴 (Chronology)
迁徙图 (Migration)
{events.map((event, idx) => (
{/* Dot */}
{/* Year Label (Mobile vs Desktop) */}
{event.year}
{/* Content Card */}
{event.type === "birth" ? "诞生" : "逝世"}
{event.date}
{event.member.fullName}
({event.member.generation}世)
{event.type === "birth"
? `出生于 ${event.member.birthPlace || event.member.ancestralHome || "未知地点"}`
: `享年 ${event.year - Number.parseInt(event.member.birthDate?.substring(0, 4) || "0")} 岁`}
))}
{events.length === 0 && (
暂无时间记录。请完善成员的出生日期信息。
)}
迁徙记录 (Records)
{migrations.map((mig, idx) => (
{mig.year ? `${mig.year}年` : "未知年代"}
第 {mig.person.generation} 世
迁出地
{mig.from}
{mig.father.fullName}
迁入地
{mig.to}
{mig.person.fullName}
))}
{migrations.length === 0 && (
暂无迁徙记录。
系统会自动分析父子代之间的籍贯/出生地差异来生成迁徙路径。
)}
地图可视化需要地理编码服务支持。
当前版本仅支持列表展示迁徙路径。
)
}