From 778a41b9ef37db6969dd3588f4505da8ab1aa732 Mon Sep 17 00:00:00 2001 From: rbisson <remi.bisson@inrae.fr> Date: Tue, 7 Jan 2025 16:14:24 +0100 Subject: [PATCH 1/2] [ResultsTableMUI] added styling on column headers and rows --- package.json | 1 + src/pages/results/ResultsTableMUI.js | 64 ++++++++++++++++++++++------ 2 files changed, 51 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 893d7db..ee45802 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@microlink/react-json-view": "^1.23.1", "@mui/icons-material": "^5.15.21", "@mui/material": "^5.15.21", + "@mui/styles": "^6.3.1", "downloadjs": "^1.4.7", "i18next": "^23.11.5", "i18next-http-backend": "^2.5.2", diff --git a/src/pages/results/ResultsTableMUI.js b/src/pages/results/ResultsTableMUI.js index 1a7b22b..2e2dc71 100644 --- a/src/pages/results/ResultsTableMUI.js +++ b/src/pages/results/ResultsTableMUI.js @@ -2,24 +2,21 @@ import React, { useEffect, useMemo, useState } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import MUIDataTable from 'mui-datatables'; import { createTheme, ThemeProvider } from '@mui/material'; +import { makeStyles } from '@mui/styles'; import { fetchPublicFields } from '../../actions/source'; import { fetchUserFieldsDisplaySettings } from '../../actions/user'; import { buildFieldName } from '../../Utils'; +import { useEuiTheme, transparentize, EuiTitle } from '@elastic/eui'; -const getMuiTheme = () => - createTheme({ - components: { - MuiTableRow: { - styleOverrides: { - root: { - '&:hover': { - cursor: 'pointer', - }, - }, - }, - }, +const useStyles = makeStyles(() => ({ + centeredHeader: { + '& span': { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', }, - }); + }, +})); const ResultsTableMUI = ({ searchResults, @@ -30,6 +27,8 @@ const ResultsTableMUI = ({ setResourceFlyoutDataFromId, }) => { const { t } = useTranslation('results'); + const { euiTheme } = useEuiTheme(); + const classes = useStyles(); const [publicFields, setPublicFields] = useState([]); const [userFieldsIds, setUserFieldsIds] = useState([]); const [isLoading, setIsLoading] = useState(true); @@ -64,12 +63,24 @@ const ResultsTableMUI = ({ options: { display: 'excluded' }, }, ]; - publicFields.forEach((publicField) => { + publicFields.forEach((publicField, index) => { dataColumns.push({ name: publicField.field_name, label: buildFieldName(publicField.field_name), options: { display: userFieldsIds.includes(publicField.id), + // Apply styling on columns headers + setCellHeaderProps: () => ({ + className: classes.centeredHeader, + }), + customHeadLabelRender: (columnMeta) => { + return ( + <EuiTitle size={'xxs'}> + <p>{columnMeta.label}</p> + </EuiTitle> + ); + }, + // Truncate text to avoid oversize rows customBodyRenderLite: (dataIndex, rowIndex) => { let value = rows[rowIndex][publicField.field_name]; if (value && value.length >= 150) { @@ -77,6 +88,7 @@ const ResultsTableMUI = ({ } return value; }, + // Apply a max width on table cells setCellProps: () => ({ style: { maxWidth: '350px', @@ -193,6 +205,30 @@ const ResultsTableMUI = ({ }, }; + const getMuiTheme = () => + createTheme({ + components: { + MUIDataTableBodyRow: { + styleOverrides: { + root: { + '&:nth-of-type(odd)': { + backgroundColor: transparentize(euiTheme.colors.lightShade, 0.5), + }, + }, + }, + }, + MuiTableRow: { + styleOverrides: { + root: { + '&:hover': { + cursor: 'pointer', + }, + }, + }, + }, + }, + }); + const tableOptions = { print: false, download: false, -- GitLab From 3a3b9defc46fa98daf8e27e838769ce548d7a575 Mon Sep 17 00:00:00 2001 From: rbisson <remi.bisson@inrae.fr> Date: Tue, 7 Jan 2025 16:15:13 +0100 Subject: [PATCH 2/2] [ResultsTableMUI] added comments --- src/pages/results/ResultsTableMUI.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/results/ResultsTableMUI.js b/src/pages/results/ResultsTableMUI.js index 2e2dc71..0fd0c86 100644 --- a/src/pages/results/ResultsTableMUI.js +++ b/src/pages/results/ResultsTableMUI.js @@ -63,7 +63,7 @@ const ResultsTableMUI = ({ options: { display: 'excluded' }, }, ]; - publicFields.forEach((publicField, index) => { + publicFields.forEach((publicField) => { dataColumns.push({ name: publicField.field_name, label: buildFieldName(publicField.field_name), @@ -73,6 +73,7 @@ const ResultsTableMUI = ({ setCellHeaderProps: () => ({ className: classes.centeredHeader, }), + // Apply styling on columns headers text customHeadLabelRender: (columnMeta) => { return ( <EuiTitle size={'xxs'}> -- GitLab