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
@@ -1,12 +1,12 @@
type Params = Promise<{ cratename: string, version: string }>
import { NextRequest, NextResponse } from "next/server";

import { NextRequest, NextResponse } from "next/server";
type Params = Promise<{ nsfront: string, nsbehind: string, cratename: string, version: string }>
export async function GET(req: NextRequest, props: { params: Params }) {
try {
const params = await props.params
const { cratename, version } = params;
const { nsfront, nsbehind, cratename, version } = params;

const externalApiUrl = `http://210.28.134.203:6888/api/crates/${cratename}/${version}/dependencies`; // 替换为你的外部 API URL
const externalApiUrl = `http://210.28.134.203:6888/api/crates/${nsfront}/${nsbehind}/${cratename}/${version}/dependencies`; // 替换为你的外部 API URL
const externalRes = await fetch(externalApiUrl);
if (!externalRes.ok) {
throw new Error('Failed to fetch external data');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { NextRequest, NextResponse } from "next/server";
type Params = Promise<{ cratename: string, version: string }>
type Params = Promise<{ nsfront: string, nsbehind: string, cratename: string, version: string }>
export async function GET(req: NextRequest, props: { params: Params }) {
try {
const params = await props.params
const { cratename, version } = params;
const externalApiUrl = `http://210.28.134.203:6888/api/crates/${cratename}/${version}/dependents`; // 替换为你的外部 API URL
const { nsfront, nsbehind, cratename, version } = params;
const externalApiUrl = `http://210.28.134.203:6888/api/crates/${nsfront}/${nsbehind}/${cratename}/${version}/dependents`; // 替换为你的外部 API URL
const externalRes = await fetch(externalApiUrl);
if (!externalRes.ok) {
throw new Error('Failed to fetch external data');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { NextRequest, NextResponse } from "next/server";
type Params = Promise<{ cratename: string, version: string }>
type Params = Promise<{ nsfront: string, nsbehind: string, cratename: string, version: string }>

export async function GET(req: NextRequest, props: { params: Params }) {
try {
const params = await props.params
const { cratename, version } = params;
const { nsfront, nsbehind, cratename, version } = params;

const externalApiUrl = `http://210.28.134.203:6888/api/crates/${cratename}/${version}`; // 替换为你的外部 API URL
const externalApiUrl = `http://210.28.134.203:6888/api/crates/${nsfront}/${nsbehind}/${cratename}/${version}`; // 替换为你的外部 API URL
const externalRes = await fetch(externalApiUrl);
if (!externalRes.ok) {
throw new Error('Failed to fetch external data');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,54 +1,27 @@
"use client";
import React, { useEffect, useState } from 'react';

import { useParams } from 'next/navigation'
import Link from 'next/link';
import DependencyTable from '../../../../../components/DependencyTable';
import DependencyTable from '../../../../../../../components/DependencyTable';
import { dependenciesInfo } from '@/app/lib/all_interface';
import { useSearchParams } from 'next/navigation';

// const defaultdata = {
// "direct_count": 1,
// "indirect_count": 2,
// "data": [
// {
// "crate_name": 'unknown',
// "version": 'unknown',
// "relation": 'unknown',
// "license": 'unknown',
// "dependencies": 0,
// },
// ]
// }


// interface DependencyItem {
// crate_name: string;
// version: string;
// relation: string;
// license: string;
// dependencies: number;
// }



const CratePage = () => {

const params = useParams();

const [results, setResults] = useState<dependenciesInfo | null>(null);
const [searchQuery, setSearchQuery] = useState('');

const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const searchParams = useSearchParams();

const crateName = searchParams.get('crate_name'); // 从 URL 中获取 crate_name 参数
const version = searchParams.get('version'); // 从 URL 中获取 version 参数
const crateName = params.name; // 从 URL 中获取 crate_name 参数
const version = params.version; // 从 URL 中获取 version 参数

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

if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
Expand All @@ -66,11 +39,11 @@ const CratePage = () => {
}
};
fetchCrateData(); // 调用函数来获取数据
}, [crateName, version]); // 依赖项数组,确保在 crateName 或 version 改变时重新获取数据
}, [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>;
console.log('dependencyyyyyyyyyyyyyyy', results?.data);
// console.log('dependencyyyyyyyyyyyyyyy', results?.data);
return (
<div>
{/* Existing header and search */}
Expand Down Expand Up @@ -130,39 +103,24 @@ const CratePage = () => {
<nav className="mt-4">
<ul className="flex space-x-4 text-gray-500 relative">
<li className="cursor-pointer relative">
<Link href={{
pathname: `/homepage/${crateName}/${version}`,
query: {
crate_name: crateName,
version: version,
},
}}>
<Link
href={`/homepage/${params.nsfront}/${params.nsbehind}/${params.name}/${params.version}`}
>
<div className="block py-2 relative z-10">Overview</div>
</Link>
</li>
<li className="cursor-pointer relative">
<Link
href={{
pathname: `/homepage/${crateName}/${version}/dependencies`,
query: {
crate_name: crateName,
version: version,
},
}}
href={
`/homepage/${params.nsfront}/${params.nsbehind}/${params.name}/${params.version}/dependencies`}
>
<div className="block py-2 relative z-10">Dependencies</div>
</Link>
<div className="absolute bottom-0 left-0 w-full h-1 bg-blue-500"></div>
</li>

<Link
href={{
pathname: `/homepage/${crateName}/${version}/dependents`,
query: {
crate_name: crateName,
version: version,
},
}}
href={`/homepage/${params.nsfront}/${params.nsbehind}/${params.name}/${params.version}/dependents`}
>
<li className="cursor-pointer relative">
<div className="block py-2 relative z-10">Dependents</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
"use client";
import React, { useEffect, useState } from 'react';
import Link from 'next/link';
import DependentTable from '../../../../../components/DependentTable';
import { useSearchParams } from 'next/navigation';
import DependentTable from '../../../../../../../components/DependentTable';
import { dependentsInfo } from '@/app/lib/all_interface';

import { useParams } from 'next/navigation';


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

const searchParams = useSearchParams();
const crateName = searchParams.get('crate_name'); // 从 URL 中获取 crate_name 参数
const version = searchParams.get('version'); // 从 URL 中获取 version 参数
const params = useParams();

const crateName = params.name; // 从 URL 中获取 crate_name 参数
const version = params.version; // 从 URL 中获取 version 参数

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

if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
Expand All @@ -38,12 +38,12 @@ const CratePage = () => {
}
};
fetchCrateData(); // 调用函数来获取数据
}, [crateName, version]); // 依赖项数组,确保在 crateName 或 version 改变时重新获取数据
}, [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>;

console.log('dependencyyyyyyyyyyyyyyy', results?.data);
//console.log('dependencyyyyyyyyyyyyyyy', results?.data);

return (
<div>
Expand Down Expand Up @@ -97,45 +97,29 @@ const CratePage = () => {
<nav className="mt-4">
<ul className="flex space-x-4 text-gray-500 relative">
<li className="cursor-pointer relative">
<Link href={{
pathname: `/homepage/${crateName}/${version}`,
query: {
crate_name: crateName,
version: version,
},
}}>
<Link
href={`/homepage/${params.nsfront}/${params.nsbehind}/${params.name}/${params.version}`}
>
<div className="block py-2 relative z-10">Overview</div>
</Link>

</li>
<li className="cursor-pointer relative">
<Link
href={{
pathname: `/homepage/${crateName}/${version}/dependencies`,
query: {
crate_name: crateName,
version: version,
},
}}
href={
`/homepage/${params.nsfront}/${params.nsbehind}/${params.name}/${params.version}/dependencies`}
>
<div className="block py-2 relative z-10">Dependencies</div>
</Link>
</li>

<Link
href={{
pathname: `/homepage/${crateName}/${version}/dependents`,
query: {
crate_name: crateName,
version: version,
},
}}
href={`/homepage/${params.nsfront}/${params.nsbehind}/${params.name}/${params.version}/dependents`}
>
<li className="cursor-pointer relative">
<div className="block py-2 relative z-10">Dependents</div>
<div className="absolute bottom-0 left-0 w-full h-1 bg-blue-500"></div>
</li>

</Link>
{/* <li className="cursor-pointer relative">
<a href="#" className="block py-2 relative z-10">Compare</a>
Expand Down
Loading