import { useState } from 'react'; import Link from 'next/link'; import { Explorer } from '@/ui/Partials'; import StatusIcon from '@/ui/elements/StatusIndicator'; import { LoadingIndicator } from '@/ui/App'; import { DropdownMenu, GhostButton, Stack, Text, CTAButton, useBoolean, Modal, Spacer } from "ohmy-ui"; import styles from "./DatasetsView.module.css"; interface Dataset { id: string; name: string; status: string; } const DatasetItem = GhostButton.remix({ Component: 'div' }); interface DatasetsViewProps { datasets: Dataset[]; onDatasetClick: (dataset: Dataset) => void; onDatasetCognify: (dataset: Dataset) => Promise; } export default function DatasetsView({ datasets, onDatasetClick, onDatasetCognify, }: DatasetsViewProps) { const { value: isCognifyRunning, setTrue: disableCognifyRun, setFalse: enableCognifyRun, } = useBoolean(false); const handleCognifyDataset = (event: React.MouseEvent, dataset: Dataset) => { event.stopPropagation(); disableCognifyRun(); onDatasetCognify(dataset) .finally(() => enableCognifyRun()); } const [dataset, setExplorationDataset] = useState<{ id: string, name: string } | null>(null); const { value: isExplorationWindowShown, setTrue: showExplorationWindow, setFalse: hideExplorationWindow, } = useBoolean(false); const handleExploreDataset = (event: React.MouseEvent, dataset: Dataset) => { event.stopPropagation(); setExplorationDataset(dataset); showExplorationWindow(); } return ( <> {datasets.map((dataset) => ( onDatasetClick(dataset)}> {dataset.name} {dataset.status === 'DATASET_PROCESSING_COMPLETED' ? ( ) => handleExploreDataset(event, dataset)} > Explore ) : ( ) => handleCognifyDataset(event, dataset)} > Cognify {isCognifyRunning && ( )} )} Add data ))} {dataset?.name} ); }