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 @@ -49,7 +49,7 @@ const CratePage = () => {

return (
<div className="min-h-screen bg-white flex flex-col">
<div className="flex justify-center w-full py-8">
<div className="flex justify-center w-full py-4">
<div className="w-[1500px] px-8">
<DependencyTable data={results?.data} />
</div>
Expand Down
83 changes: 65 additions & 18 deletions app/[nsfront]/[nsbehind]/[name]/[version]/dependents/page.tsx
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
//Dependents页面
"use client";
import React, { useEffect, useState } from 'react';

import { useParams } from 'next/navigation';
import Image from 'next/image';
import DependentTable from '@/components/DependentTable';
import { dependentsInfo } from '@/app/lib/all_interface';
import { useParams } from 'next/navigation';


import Link from 'next/link';

const CratePage = () => {
const [results, setResults] = useState<dependentsInfo | null>(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const [error, setError] = useState<string | null>(null);

const params = useParams();



useEffect(() => {
const fetchCrateData = async () => {
try {
setError(null);
const response = await fetch(`/api/crates/${params.nsfront}/${params.nsbehind}/${params.name}/${params.version}/dependents`);

if (!response.ok) {
Expand All @@ -28,29 +26,78 @@ const CratePage = () => {

const data = await response.json();


setResults(data); // 设置获取的数据

} catch (error) {
setError(null);
console.log('Error fetching data:', error);
setError("Failed to fetch data.");
} finally {
setLoading(false); // 完成加载
}
};
fetchCrateData(); // 调用函数来获取数据
}, [params.name, params.version, params.nsfront, params.nsbehind]); // 依赖项数组,确保在 crateName 或 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>

<DependentTable data={results?.data} />

<div className="min-h-screen bg-white flex flex-col">
<div className="flex justify-center w-full py-4">
<div className="w-[1500px] px-8">
<DependentTable data={results?.data} />
</div>
</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>

<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
2 changes: 1 addition & 1 deletion app/[nsfront]/[nsbehind]/[name]/[version]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export default function Layout({
const params = useParams();

return (
<div>
<div className="mb-0">
<CrateNav
nsfront={params.nsfront as string}
nsbehind={params.nsbehind as string}
Expand Down
2 changes: 1 addition & 1 deletion app/[nsfront]/[nsbehind]/[name]/[version]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ const CratePage = () => {
return (
<div className="min-h-screen bg-white flex flex-col">
<div className="flex justify-center">
<div className="w-[1500px] px-8 py-6">
<div className="w-[1500px] px-8 py-4">
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* 左侧内容区域 - 占据2列 */}
<div className="lg:col-span-2 space-y-6">
Expand Down
99 changes: 71 additions & 28 deletions app/[nsfront]/[nsbehind]/[name]/[version]/versions/page.tsx
Original file line number Diff line number Diff line change
@@ -1,66 +1,109 @@
//Dependents页面
//Versions页面
"use client";
import React, { useEffect, useState } from 'react';

import VersionsTable from '@/components/VersionsTable';
// import { VersionsInfo } from '@/app/lib/all_interface';
import { useParams } from 'next/navigation';
import Image from 'next/image';
import Link from 'next/link';
import VersionsTable from '@/components/VersionsTable';

interface VersionInfo {
version: string;
// publishDay: string;
dependents_number: number;
updated_at: string;
downloads: string;
dependents: number;
}

// interface VersionsTableProps {
// data: VersionInfo[] | undefined;

// }

const CratePage = () => {
const [results, setResults] = useState<VersionInfo[] | undefined>(undefined);
console.log(results);
const [loading, setLoading] = useState(true);

const [error, setError] = useState(null);
const [error, setError] = useState<string | null>(null);

const params = useParams();



useEffect(() => {
const fetchCrateData = async () => {
try {
setError(null);
const response = await fetch(`/api/crates/${params.nsfront}/${params.nsbehind}/${params.name}/${params.version}/versions`);

if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}

const data = await response.json();


setResults(data); // 设置获取的数据

} catch (error) {
setError(null);
console.log('Error fetching data:', error);
setError("Failed to fetch data.");
} finally {
setLoading(false); // 完成加载
}
};
fetchCrateData(); // 调用函数来获取数据
}, [params.name, params.version, params.nsfront, params.nsbehind]); // 依赖项数组,确保在 crateName 或 version 改变时重新获取数据
console.log('results in versionsssssss', results);
if (loading) return <div>Loading...</div>;
if (error) return <div className="text-red-500">Error: {error}</div>;

}, [params.name, params.version, params.nsfront, params.nsbehind]); // 依赖项数组,确保在参数改变时重新获取数据

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>

<VersionsTable />

<div className="min-h-screen bg-white flex flex-col">
<div className="flex justify-center w-full py-4">
<div className="w-[1500px] px-8">
<VersionsTable />
</div>
</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>

<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
2 changes: 1 addition & 1 deletion components/CrateNav.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ const CrateNav: React.FC<CrateNavProps> = ({ nsfront, nsbehind, name, version })
<NewHeader />
</div>
</div>
<div className="flex justify-center py-6">
<div className="flex justify-center py-3">
<div className="w-[1440px] h-[120px] bg-white rounded-2xl shadow-[0_0_12px_0_rgba(43,88,221,0.09)] px-8">
<div className="flex items-center justify-between h-16">
<div className="flex items-center space-x-4">
Expand Down
Loading