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({ tasks: { value: null, matchMode: FilterMatchMode.IN }, translation: { value: null, matchMode: FilterMatchMode.IN }, n_languages: { value: null, matchMode: FilterMatchMode.BETWEEN }, 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 translationBodyTemplate = rowData => { const translationIcons = { human: , machine: , mixed: <> , } const icon = translationIcons[rowData.translation] ?? <> return
{icon}
} 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' /> ) } const translationRowFilterTemplate = options => { return ( { options.filterApplyCallback(e.value) setFilters(prevFilters => ({ ...prevFilters, translation: { value: e.value, matchMode: FilterMatchMode.IN } })) }} placeholder='All translation modes' /> ) } 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' }} > } headerTooltip='Whether the dataset has been translated by humans or machines' filter filterElement={translationRowFilterTemplate} showFilterMatchModes={false} body={translationBodyTemplate} />
) } export default DatasetTable