Use native navigation for site routes
This commit is contained in:
1 parent
f613e25407
commit
2674c6b95f
2 files changed
+3
-5
No files matched your search
@@ -1,6 +1,5 @@
|
||||
"use client";
|
||||
|
||||
import Link from "next/link";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { ArrowLeft, CheckCircle2, Circle, ListChecks } from "lucide-react";
|
||||
import { Progress } from "@/components/ui/progress";
|
||||
@@ -24,9 +23,9 @@ export default function TasksClient() {
|
||||
const overview = useMemo(() => groups.map(group => { const tasks = plan.flatMap(day => day.tasks.filter(task => task.key === group.key).map(task => ({ ...task, date: day.date, week: day.week, phase: day.phase }))); const complete = tasks.filter(task => parsed(records[task.date]?.doneTasks).includes(group.key)).length; return { ...group, tasks, complete }; }), [records]);
|
||||
const selected = overview.find(x => x.key === active)!;
|
||||
return <main><div className="shell task-overview">
|
||||
<header><div><p className="eyebrow">PLAN OVERVIEW</p><h1>任务总览</h1><p className="sub">按任务类型查看全部安排和完成情况。</p></div><Link className="overview-link" href="/"><ArrowLeft size={17} />返回打卡</Link></header>
|
||||
<header><div><p className="eyebrow">PLAN OVERVIEW</p><h1>任务总览</h1><p className="sub">按任务类型查看全部安排和完成情况。</p></div><a className="overview-link" href="/"><ArrowLeft size={17} />返回打卡</a></header>
|
||||
<p className="overview-status">{status}</p>
|
||||
<section className="type-cards">{overview.map(group => <button key={group.key} onClick={() => setActive(group.key)} className={"type-card " + group.color + (active === group.key ? " selected" : "")}><div><span>{group.title}</span><b>{group.complete} / {group.tasks.length}</b></div><Progress value={group.tasks.length ? group.complete / group.tasks.length * 100 : 0} /><small>{group.hint}</small></button>)}</section>
|
||||
<section className="task-list-panel"><div className="task-list-head"><div><p className="eyebrow">{selected.title.toUpperCase()}</p><h2>{selected.title}任务</h2><p>{selected.hint}</p></div><div className="type-progress"><b>{selected.complete} / {selected.tasks.length}</b><span>已完成</span></div></div><div className="all-tasks">{selected.tasks.map((task, i) => { const complete = parsed(records[task.date]?.doneTasks).includes(active); return <Link href="/" className={complete ? "task-row completed" : "task-row"} key={task.date + i}><span className="task-state">{complete ? <CheckCircle2 size={19} /> : <Circle size={19} />}</span><div><b>{task.date.slice(5).replace("-", "月")}日 · {task.week}</b><p>{task.text}</p></div><small>{task.phase}</small></Link>; })}</div></section>
|
||||
<section className="task-list-panel"><div className="task-list-head"><div><p className="eyebrow">{selected.title.toUpperCase()}</p><h2>{selected.title}任务</h2><p>{selected.hint}</p></div><div className="type-progress"><b>{selected.complete} / {selected.tasks.length}</b><span>已完成</span></div></div><div className="all-tasks">{selected.tasks.map((task, i) => { const complete = parsed(records[task.date]?.doneTasks).includes(active); return <a href="/" className={complete ? "task-row completed" : "task-row"} key={task.date + i}><span className="task-state">{complete ? <CheckCircle2 size={19} /> : <Circle size={19} />}</span><div><b>{task.date.slice(5).replace("-", "月")}日 · {task.week}</b><p>{task.text}</p></div><small>{task.phase}</small></a>; })}</div></section>
|
||||
</div></main>;
|
||||
}
|
||||
Reference in new issue
Block a user