import { DataTable } from 'primereact/datatable' import { Column } from 'primereact/column' import { FilterMatchMode } from 'primereact/api' import { useState } from 'react' import { MultiSelect } from 'primereact/multiselect' import 'primeicons/primeicons.css' const DatasetTable = ({ data }) => { const [filters, setFilters] = useState({ n_languages: { value: null, matchMode: FilterMatchMode.BETWEEN }, tasks: { value: null, matchMode: FilterMatchMode.IN }, parallel: { value: null, matchMode: FilterMatchMode.EQUALS }, base: { value: null, matchMode: FilterMatchMode.IN }, }) const table = data.dataset_table const implementedBodyTemplate = rowData => { return
{rowData.implemented ? : <>}
} const authorBodyTemplate = rowData => { const url = rowData.author_url?.replace('https://', '') const img = url ? : <> return
{img}
{rowData.author}
} const nameBodyTemplate = rowData => { return
{rowData.name}
} const tasksBodyTemplate = rowData => { return
{rowData.tasks.map(task =>
{task}
)}
} const linkBodyTemplate = rowData => { return } const nLanguagesBodyTemplate = rowData => { return
{rowData.n_languages}
} const tasks = [...new Set(table.flatMap(item => item.tasks))].sort() const tasksRowFilterTemplate = options => { return ( { options.filterApplyCallback(e.value) setFilters(prevFilters => ({ ...prevFilters, tasks: { value: e.value, matchMode: FilterMatchMode.IN } })) }} placeholder='All tasks' /> ) } return ( { return
{rowData.group}
}} groupRowsBy='group' header={<>Datasets} removableSort filters={filters} filterDisplay='menu' sortField='implemented' scrollable scrollHeight='600px' id='dataset-table' style={{ width: '800px', minHeight: '650px' }} >
) } export default DatasetTable