Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@
"use client";
import React, { useEffect, useState } from "react";
import { useParams } from "next/navigation";
import Image from "next/image";
import Link from "next/link";

// import DependencyTable from "@/components/DependencyTable";
import DependencyGraph from "@/components/DependencyGraph"; // 假设你已经创建了 DependencyGraph 组件
import { dependenciesInfo } from "@/app/lib/all_interface";

const CratePage = () => {
const params = useParams();
// const router = useRouter();
// const currentVersion = params.version;
// const crateName = params.name;
const [results, setResults] = useState<dependenciesInfo | null>(null);
Expand All @@ -32,29 +35,77 @@ const CratePage = () => {
}

const data = await response.json();

setResults(data); // 设置获取的数据
console.log('resultssssssss', results);
setResults(data);
} catch (error) {
console.log("Error fetching data:", error);
setError("Failed to fetch data.");
} finally {
setLoading(false); // 完成加载
setLoading(false);
}
};
fetchCrateData(); // 调用函数来获取数据
},); // 依赖项数组,确保在 crateName 或 version 改变时重新获取数据
fetchCrateData();
}, [params.nsfront, params.nsbehind, params.name, params.version]); // 只保留必要的依赖项

if (loading) return <div>Loading...</div>;
if (error) return <div className="text-red-500">Error: {error}</div>;
if (loading) return <div className="flex justify-center items-center min-h-screen">Loading...</div>;
if (error) return <div className="flex justify-center items-center min-h-screen text-red-500">Error: {error}</div>;

return (
<div className="w-full h-full p-6">
<div className="min-h-screen bg-white flex flex-col">
{/* 图表区域 */}
<div className="w-full h-full p-6">
<DependencyGraph />
</div>

{/* 页脚 */}
<footer className="bg-[#002851] text-white py-12 mt-auto">
<div className="flex justify-center w-full">
<div className="w-[1500px] px-8">
<div className="grid grid-cols-1 md:grid-cols-4 gap-8">
<div>
<Image
src="/images/homepage/logo-footer.png"
alt="CratesPro Logo"
width={180}
height={60}
className="mb-4"
/>
</div>

<div>
<h4 className="text-lg font-semibold mb-4">Resources</h4>
<ul className="space-y-2">
<li><Link href="#" className="hover:text-blue-300">Documentation</Link></li>
<li><Link href="#" className="hover:text-blue-300">About</Link></li>
<li><Link href="#" className="hover:text-blue-300">Blog</Link></li>
<li><Link href="#" className="hover:text-blue-300">FAQ</Link></li>
</ul>
</div>

<div>
<h4 className="text-lg font-semibold mb-4">API</h4>
<ul className="space-y-2">
<li><Link href="#" className="hover:text-blue-300">API</Link></li>
<li><Link href="#" className="hover:text-blue-300">BigQuery Dataset</Link></li>
<li><Link href="#" className="hover:text-blue-300">GitHub</Link></li>
</ul>
</div>

<DependencyGraph />
<div>
<h4 className="text-lg font-semibold mb-4">Legal</h4>
<ul className="space-y-2">
<li><Link href="#" className="hover:text-blue-300">Legal</Link></li>
<li><Link href="#" className="hover:text-blue-300">Privacy</Link></li>
<li><Link href="#" className="hover:text-blue-300">Terms</Link></li>
</ul>
</div>
</div>

<div className="border-t border-gray-700 mt-8 pt-8 text-center text-sm">
<p>Copyright © 2023 jp21.com.cn All Rights Reserved(@ICPBH180237号)</p>
</div>
</div>
</div>
</footer>
</div>
);
};
Expand Down
21 changes: 14 additions & 7 deletions app/[nsfront]/[nsbehind]/[name]/[version]/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use client';

import React from 'react';
import { useParams } from 'next/navigation';
import { useParams, usePathname } from 'next/navigation';
import CrateNav from '@/components/CrateNav';

export default function Layout({
Expand All @@ -10,15 +10,22 @@ export default function Layout({
children: React.ReactNode;
}) {
const params = useParams();
const pathname = usePathname();

// 判断当前页面是否为SenseLeak页面
const isSenseLeakPage = pathname.includes('/senseleak');

return (
<div className="mb-0">
<CrateNav
nsfront={params.nsfront as string}
nsbehind={params.nsbehind as string}
name={params.name as string}
version={params.version as string}
/>
{/* 仅在非SenseLeak页面显示导航栏 */}
{!isSenseLeakPage && (
<CrateNav
nsfront={params.nsfront as string}
nsbehind={params.nsbehind as string}
name={params.name as string}
version={params.version as string}
/>
)}
{children}
</div>
);
Expand Down
68 changes: 21 additions & 47 deletions app/[nsfront]/[nsbehind]/[name]/[version]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ const CratePage = () => {
const [packageCurrentPage, setPackageCurrentPage] = useState(1);
const [depCurrentPage, setDepCurrentPage] = useState(1);
const itemsPerPage = 1;
const basePath = `/${params.nsfront}/${params.nsbehind}/${params.name}/${params.version}`;

useEffect(() => {
const fetchCrateData = async () => {
Expand Down Expand Up @@ -502,23 +503,25 @@ const CratePage = () => {

{/* 右侧内容区域 - 占据1列 */}
<div className="space-y-6">
{/* 第一个摘要 */}
{/* Documentation */}
<div>
<div className="flex items-center gap-3 mb-6">
<Image
src="/images/homepage/1.png"
src="/images/homepage/3.png"
alt="icon"
width={16}
height={16}
className="flex-shrink-0 rounded-[16.05px] border-[1.6px] border-[#333333]"
/>
<h2 className="text-[18px] font-bold text-[#333333] tracking-[0.72px] font-['HarmonyOS_Sans_SC']">
摘要
Documentation
</h2>
</div>
<div className="space-y-4">
<div>
<h3 className="text-[14px] text-[#333333] font-['HarmonyOS_Sans_SC'] font-normal mb-2">Documentation URL</h3>
<div className="flex items-center gap-2">
<h3 className="text-[14px] text-[#333333] font-['HarmonyOS_Sans_SC'] font-normal whitespace-nowrap">
Documentation URL:
</h3>
<a
href={results?.doc_url}
className="text-[#4B68FF] text-[14px] font-['HarmonyOS_Sans_SC'] font-normal hover:underline break-all"
Expand All @@ -531,23 +534,25 @@ const CratePage = () => {
</div>
</div>

{/* 第二个摘要 */}
{/* GitHub Links */}
<div>
<div className="flex items-center gap-3 mb-6">
<Image
src="/images/homepage/2.png"
src="/images/homepage/4.png"
alt="icon"
width={16}
height={16}
className="flex-shrink-0 rounded-[16.05px] border-[1.6px] border-[#333333]"
/>
<h2 className="text-[18px] font-bold text-[#333333] tracking-[0.72px] font-['HarmonyOS_Sans_SC']">
摘要
GitHub Links
</h2>
</div>
<div className="space-y-4">
<div>
<h3 className="text-[14px] text-[#333333] font-['HarmonyOS_Sans_SC'] font-normal mb-2">GitHub URL</h3>
<div className="flex items-center gap-2">
<h3 className="text-[14px] text-[#333333] font-['HarmonyOS_Sans_SC'] font-normal whitespace-nowrap">
GitHub URL:
</h3>
<a
href={results?.github_url}
className="text-[#4B68FF] text-[14px] font-['HarmonyOS_Sans_SC'] font-normal hover:underline break-all"
Expand All @@ -559,65 +564,34 @@ const CratePage = () => {
</div>
</div>
</div>

{/* Documentation */}
<div>
<div className="flex items-center gap-3 mb-6">
<Image
src="/images/homepage/3.png"
alt="icon"
width={16}
height={16}
className="flex-shrink-0 rounded-[16.05px] border-[1.6px] border-[#333333]"
/>
<h2 className="text-[18px] font-bold text-[#333333] tracking-[0.72px] font-['HarmonyOS_Sans_SC']">
Documentation
</h2>
</div>
<div className="space-y-4">
<div>
<h3 className="text-[14px] text-[#333333] font-['HarmonyOS_Sans_SC'] font-normal mb-2">Documentation URL</h3>
<a
href={results?.doc_url}
className="text-[#4B68FF] text-[14px] font-['HarmonyOS_Sans_SC'] font-normal hover:underline break-all"
target="_blank"
rel="noopener noreferrer"
>
{results?.doc_url || 'No results available'}
</a>
</div>
</div>
</div>

{/* GitHub Links */}
{/* 第一个摘要 */}
<div>
<div className="flex items-center gap-3 mb-6">
<Image
src="/images/homepage/4.png"
src="/images/homepage/1.png"
alt="icon"
width={16}
height={16}
className="flex-shrink-0 rounded-[16.05px] border-[1.6px] border-[#333333]"
/>
<h2 className="text-[18px] font-bold text-[#333333] tracking-[0.72px] font-['HarmonyOS_Sans_SC']">
GitHub Links
SenseLeak
</h2>
</div>
<div className="space-y-4">
<div>
<h3 className="text-[14px] text-[#333333] font-['HarmonyOS_Sans_SC'] font-normal mb-2">GitHub URL</h3>
{/* <h3 className="text-[14px] text-[#333333] font-['HarmonyOS_Sans_SC'] font-normal mb-2">Documentation URL</h3> */}
<a
href={results?.github_url}
href={basePath + '/senseleak'}
className="text-[#4B68FF] text-[14px] font-['HarmonyOS_Sans_SC'] font-normal hover:underline break-all"
target="_blank"
rel="noopener noreferrer"
>
{results?.github_url || 'No results available'}
{basePath + '/senseleak' || 'No results available'}
</a>
</div>
</div>
</div>

{/* OpenSSF Scorecard */}
<div>
<div className="flex items-center gap-3 mb-4">
Expand Down
Loading