完成更新日志页面
This commit is contained in:
11
src/App.tsx
11
src/App.tsx
@@ -14,6 +14,7 @@ import Swiper from './pages/Swiper';
|
||||
import Setup from './pages/Setup';
|
||||
import Rss from './pages/Rss';
|
||||
import Stats from './pages/Stats';
|
||||
import Iterative from './pages/Iterative';
|
||||
import Login from './pages/Login';
|
||||
import DefaultLayout from './layout/DefaultLayout';
|
||||
|
||||
@@ -172,6 +173,16 @@ function App() {
|
||||
</>
|
||||
}
|
||||
/>
|
||||
|
||||
<Route
|
||||
path="/iterative"
|
||||
element={
|
||||
<>
|
||||
<PageTitle title="Thrive - 项目更新记录" />
|
||||
<Iterative />
|
||||
</>
|
||||
}
|
||||
/>
|
||||
</Routes>
|
||||
</DefaultLayout>
|
||||
)}
|
||||
|
||||
@@ -3,7 +3,7 @@ import { NavLink, useLocation } from 'react-router-dom';
|
||||
import SidebarLinkGroup from './SidebarLinkGroup';
|
||||
import { BiEditAlt, BiFolderOpen, BiHomeSmile, BiSliderAlt } from "react-icons/bi";
|
||||
import { LuCrown } from "react-icons/lu";
|
||||
import { BiCategoryAlt } from "react-icons/bi";
|
||||
import { BiCategoryAlt, BiBug } from "react-icons/bi";
|
||||
import { LiaRssSolid } from "react-icons/lia";
|
||||
import { IoIosStats } from "react-icons/io";
|
||||
|
||||
@@ -92,7 +92,7 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
<div className="flex justify-center items-center gap-2 px-6 py-5.5 pb-2 lg:pt-6">
|
||||
<NavLink to="/">
|
||||
<h1 className='flex items-center text-2xl font-bold text-white'>
|
||||
<LuCrown className='mr-2'/> Thrive Admin
|
||||
<LuCrown className='mr-2' /> Thrive Admin
|
||||
</h1>
|
||||
</NavLink>
|
||||
|
||||
@@ -303,6 +303,17 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
数据可视化
|
||||
</NavLink>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<NavLink
|
||||
to="/iterative"
|
||||
className={`${sidebarItemSty} ${pathname.includes('iterative') && 'bg-graydark dark:bg-meta-4'
|
||||
}`}
|
||||
>
|
||||
<BiBug className='text-[22px]' />
|
||||
更新日志
|
||||
</NavLink>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
@@ -4,10 +4,10 @@ import { Card } from "antd"
|
||||
import Breadcrumb from "../Breadcrumbs"
|
||||
import { titleSty } from '@/styles/sty'
|
||||
|
||||
export default ({ value }: { value: string }) => {
|
||||
export default ({ value, className }: { value: string, className?: string }) => {
|
||||
return (
|
||||
<>
|
||||
<Card title={<Breadcrumb pageName={value} />} className={titleSty} />
|
||||
<Card title={<Breadcrumb pageName={value} />} className={`${titleSty} ${className}`} />
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -1,26 +1,7 @@
|
||||
import { Card } from 'antd';
|
||||
import { useEffect, useState } from 'react';
|
||||
import HeaderInfo from './components/HeaderInfo';
|
||||
|
||||
const Home = () => {
|
||||
const [iterativeRecording, setIterativeRecording] = useState<string[]>([])
|
||||
|
||||
// 从github获取最近10次迭代记录
|
||||
const getCommitData = async () => {
|
||||
const res = await fetch(`https://api.github.com/repos/LiuYuYang01/ThriveX-Admin/commits?per_page=10`)
|
||||
const data = await res.json()
|
||||
const result = data.map((item: { commit: { message: string } }) => item.commit.message)
|
||||
sessionStorage.setItem('iterative_recording', JSON.stringify(result))
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
// 如果缓存中有值就无需重新调接口
|
||||
const data = JSON.parse(sessionStorage.getItem('iterative_recording') || '[]')
|
||||
console.log(data);
|
||||
|
||||
data.length ? setIterativeRecording(data) : getCommitData()
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<>
|
||||
<Card>
|
||||
@@ -28,7 +9,7 @@ const Home = () => {
|
||||
</Card>
|
||||
|
||||
<Card className='mt-2'>
|
||||
|
||||
|
||||
</Card>
|
||||
</>
|
||||
);
|
||||
|
||||
64
src/pages/Iterative/index.tsx
Normal file
64
src/pages/Iterative/index.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
import { Card, Timeline, TimelineItemProps } from 'antd';
|
||||
import { useEffect, useState } from 'react';
|
||||
import Title from '@/components/Title';
|
||||
|
||||
const Home = () => {
|
||||
const [blog_iterativeRecording, setBlog_IterativeRecording] = useState<TimelineItemProps[]>([])
|
||||
const [admin_iterativeRecording, setAdmin_IterativeRecording] = useState<TimelineItemProps[]>([])
|
||||
const [server_iterativeRecording, setServer_IterativeRecording] = useState<TimelineItemProps[]>([])
|
||||
|
||||
// 从github获取最近10次迭代记录
|
||||
const getCommitData = async (project: string) => {
|
||||
const res = await fetch(`https://api.github.com/repos/LiuYuYang01/${project}/commits?per_page=10`)
|
||||
const data = await res.json()
|
||||
const result = data.map((item: { commit: { message: string } }) => ({ children: item.commit.message }))
|
||||
|
||||
sessionStorage.setItem('blog_project_iterative', JSON.stringify(result))
|
||||
project === "Thrive_Blog" && setBlog_IterativeRecording(result)
|
||||
|
||||
sessionStorage.setItem('admin_project_iterative', JSON.stringify(result))
|
||||
project === "Thrive_Admin" && setAdmin_IterativeRecording(result)
|
||||
|
||||
sessionStorage.setItem('server_project_iterative', JSON.stringify(result))
|
||||
project === "Thrive_Api_Py" && setServer_IterativeRecording(result)
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
// 如果缓存中有值就无需重新调接口
|
||||
const blog_project_iterative = JSON.parse(sessionStorage.getItem('blog_project_iterative') || '[]')
|
||||
blog_project_iterative.length ? setBlog_IterativeRecording(blog_project_iterative) : getCommitData("Thrive_Blog")
|
||||
|
||||
const admin_project_iterative = JSON.parse(sessionStorage.getItem('admin_project_iterative') || '[]')
|
||||
admin_project_iterative.length ? setAdmin_IterativeRecording(admin_project_iterative) : getCommitData("Thrive_Admin")
|
||||
|
||||
const server_project_iterative = JSON.parse(sessionStorage.getItem('server_project_iterative') || '[]')
|
||||
server_project_iterative.length ? setServer_IterativeRecording(server_project_iterative) : getCommitData("Thrive_Api_Py")
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<>
|
||||
<Title value='项目迭代记录'></Title>
|
||||
|
||||
<Card className='mt-2'>
|
||||
<div className='flex justify-around'>
|
||||
<div>
|
||||
<h3 className='text-xl text-center pb-6 font-bold'>Thrive_Blog</h3>
|
||||
<Timeline items={blog_iterativeRecording} />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3 className='text-xl text-center pb-6 font-bold'>Thrive_Admin</h3>
|
||||
<Timeline items={admin_iterativeRecording} />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3 className='text-xl text-center pb-6 font-bold'>Thrive_Server</h3>
|
||||
<Timeline items={server_iterativeRecording} />
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Home;
|
||||
Reference in New Issue
Block a user