"use client" import { CloudUpload, Database, Download, Eye, FileText, Folder, HardDrive, Upload, ExternalLink } from "lucide-react" import { useRouter } from "next/navigation" import { SectionHeader } from "@/components/page-header" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Card, CardContent } from "@/components/ui/card" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Tabs, TabsContent,TabsList, TabsTrigger } from "@/components/ui/tabs" import { Dataset, Statistics } from "@/types/data" interface DataViewProps { datasets: Dataset[]; stats: Statistics | null; } export function DataView({ datasets, stats }: DataViewProps) { const router = useRouter() const statCards = [ { label: "Datasets", value: stats?.datasets?.toString() ?? "—", icon: Folder, color: "text-blue-500" }, { label: "Molecules", value: stats?.molecules ?? "—", icon: FileText, color: "text-cyan-500" }, { label: "Proteins", value: stats?.proteins ?? "—", icon: Database, color: "text-emerald-500" }, { label: "Storage Used", value: stats?.storage ?? "—", icon: HardDrive, color: "text-amber-500" }, ] const handleView = (dataset: Dataset) => { // Navigate to explorer with this dataset's data router.push(`/explorer?dataset=${encodeURIComponent(dataset.name)}`) } const handleDownload = (dataset: Dataset) => { // For KIBA/DAVIS, these are from TDC - provide info alert(`Dataset: ${dataset.name}\n\nThis dataset is loaded from Therapeutics Data Commons (TDC).\n\nTo download raw data, visit: https://tdcommons.ai/\n\nOr access via Python:\nfrom tdc.multi_pred import DTI\ndata = DTI(name='${dataset.name.includes('KIBA') ? 'KIBA' : 'DAVIS'}')`) } return (
{statCards.map((stat, i) => (
{stat.label}
{stat.value}
))}
Datasets Upload Processing } /> Name Type Items Size Updated Actions {datasets.length === 0 && ( No datasets found. )} {datasets.map((ds, i) => ( {ds.name}
{ds.type}
{ds.count} {ds.size} {ds.updated}
))}
} />
Click to upload or drag and drop
CSV, SDF, FASTA, or JSON (max 50MB)
No active processing tasks.
) }