import { useCallback, useState } from 'react'; import { DropdownMenu, GhostButton, Stack, Text, UploadInput, CloseIcon, CTAButton, useBoolean, } from "ohmy-ui"; import { fetch } from '@/utils'; import RawDataPreview from './RawDataPreview'; import styles from "./DataView.module.css"; export interface Data { id: string; name: string; mimeType: string; extension: string; rawDataLocation: string; } interface DatasetLike { id: string; } interface DataViewProps { data: Data[]; datasetId: string; onClose: () => void; onDataAdd: (dataset: DatasetLike, files: File[]) => void; onCognify: () => Promise; } export default function DataView({ datasetId, data, onClose, onDataAdd, onCognify }: DataViewProps) { // const handleDataDelete = () => {}; const [rawData, setRawData] = useState(null); const [selectedData, setSelectedData] = useState(null); const showRawData = useCallback((dataItem: Data) => { setSelectedData(dataItem); fetch(`/v1/datasets/${datasetId}/data/${dataItem.id}/raw`) .then((response) => response.arrayBuffer()) .then(setRawData); document.body.click(); // Close the dropdown menu. }, [datasetId]); const resetDataPreview = useCallback(() => { setSelectedData(null); setRawData(null); }, []); const handleDataAdd = (files: File[]) => { onDataAdd({ id: datasetId }, files); }; const { value: isCognifyButtonDisabled, setTrue: disableCognifyButton, setFalse: enableCognifyButton, } = useBoolean(false); const handleCognify = () => { disableCognifyButton(); onCognify() .finally(() => enableCognifyButton()); }; return (
Add data
Cognify
{rawData && selectedData && ( )}
{data.map((dataItem) => ( ))}
Actions ID Name File path MIME type
showRawData(dataItem)}> View raw data {/* Delete */} {dataItem.id} {dataItem.name}.{dataItem.extension} {dataItem.rawDataLocation} {dataItem.mimeType}
); }