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
}
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