Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
CelineMP committed May 28, 2024
2 parents 50850a1 + 578e4e9 commit 804af30
Show file tree
Hide file tree
Showing 3 changed files with 164 additions and 152 deletions.
7 changes: 7 additions & 0 deletions frontend/src/components/DataView/DataPanel.css
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,10 @@
.MuiGrid-item {
padding: 1rem !important;
}

.search-box-label {
display: flex;
justify-content: center;
align-items: center;
gap: 0.3rem;
}
305 changes: 157 additions & 148 deletions frontend/src/components/DataView/DataPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@
Quick filter outside of the grid https://mui.com/x/react-data-grid/filtering-recipes/#quick-filter-outside-of-the-grid
*/
import * as React from 'react';
import { DataGrid, GridColDef, GridRenderCellParams } from "@mui/x-data-grid";
import Grid from "@mui/material/Grid";
import Box from "@mui/material/Box";
import IconButton from "@mui/material/IconButton";
import { MapTrifold } from "@phosphor-icons/react";
import { Funnel, MapTrifold } from "@phosphor-icons/react";
import "./DataPanel.css";
import { Tooltip, TextField } from "@mui/material";
import { GridToolbar, GridToolbarProps } from "@mui/x-data-grid";
import { useState, Fragment } from "react";

// Returns a button if the "button" value is set to 1
const renderDetailsButton = (params: GridRenderCellParams) => {
Expand Down Expand Up @@ -42,7 +42,13 @@ const columns: GridColDef[] = [
renderCell: renderDetailsButton,
},
{ field: "key", headerName: "key", width: 150 },
{ field: "value", headerName: "value", type: "number", width: 150, getApplyQuickFilterFn: undefined },
{
field: "value",
headerName: "value",
type: "number",
width: 150,
getApplyQuickFilterFn: undefined,
},
];

// Data
Expand Down Expand Up @@ -74,173 +80,176 @@ const rows = [
];

function MyCustomToolbar(props: GridToolbarProps) {
return (
<GridToolbar {...props} />
);
return <GridToolbar {...props} />;
}

// All DataGrid options explained https://mui.com/x/api/data-grid/data-grid/
export default function DataPanel({
listTitle,
}: {
listTitle: string;
}) {
const [filterValue, setFilterValue] = React.useState('');
export default function DataPanel({ listTitle }: { listTitle: string }) {
const [filterValue, setFilterValue] = useState("");

const handleFilterChange = (event: React.ChangeEvent<HTMLInputElement>) => {
setFilterValue(event.target.value);
};

return (
<>
<div className="data-panel-container">
<div className="data-panel-title">{listTitle}</div>
<Fragment>
<Grid item>
<Box id="filter-panel" >
<Box id="filter-panel">
<TextField
label="Filter"
label={
<div className="search-box-label">
<Funnel size={20} /> Search
</div>
}
variant="outlined"
size="small"
value={filterValue}
onChange={handleFilterChange}
fullWidth
/>
</Box>
</Grid>
<Grid container spacing={2} className="data-panel-grid">
<Grid item style={{ width: "100%" }}>
<DataGrid
disableColumnMenu
columnHeaderHeight={0}
rows={rows}
columns={columns}
slots={{
toolbar: MyCustomToolbar,
}}
slotProps={{
toolbar: {
printOptions: { disableToolbarButton: true },
csvOptions: { disableToolbarButton: true },
},
}}
disableDensitySelector
disableColumnFilter
disableColumnSelector
disableColumnSorting
initialState={{
pagination: {
paginationModel: { page: 0, pageSize: 5 },
},
filter: {
filterModel: {
items: [],
quickFilterValues: [filterValue],
quickFilterExcludeHiddenColumns: true,
</Box>
</Grid>
<div className="data-panel-container">
<div className="data-panel-title">{listTitle}</div>
<Grid container spacing={2} className="data-panel-grid">
<Grid item style={{ width: "100%" }}>
<DataGrid
disableColumnMenu
columnHeaderHeight={0}
rows={rows}
columns={columns}
slots={{
toolbar: MyCustomToolbar,
}}
slotProps={{
toolbar: {
printOptions: { disableToolbarButton: true },
csvOptions: { disableToolbarButton: true },
},
},
}}
filterModel={{
items: [{ field: 'key', operator: 'contains', value: filterValue }],
}}
pageSizeOptions={[5, 10]}
density="compact"
disableRowSelectionOnClick
autoHeight
/>
</Grid>
}}
disableDensitySelector
disableColumnFilter
disableColumnSelector
disableColumnSorting
initialState={{
pagination: {
paginationModel: { page: 0, pageSize: 5 },
},
filter: {
filterModel: {
items: [],
quickFilterValues: [filterValue],
quickFilterExcludeHiddenColumns: true,
},
},
}}
filterModel={{
items: [
{ field: "key", operator: "contains", value: filterValue },
],
}}
pageSizeOptions={[5, 10]}
density="compact"
disableRowSelectionOnClick
autoHeight
/>
</Grid>
</div>
<div className="data-panel-container">
<div className="data-panel-title">General Data</div>
<Grid container spacing={2} className="data-panel-grid">
<Grid item style={{ width: "100%" }}>
<DataGrid
disableColumnMenu
columnHeaderHeight={0}
rows={rows}
columns={columns}
slots={{
toolbar: MyCustomToolbar,
}}
slotProps={{
toolbar: {
printOptions: { disableToolbarButton: true },
csvOptions: { disableToolbarButton: true },
},
}}
disableDensitySelector
disableColumnFilter
disableColumnSelector
disableColumnSorting
initialState={{
pagination: {
paginationModel: { page: 0, pageSize: 5 },
},
filter: {
filterModel: {
items: [],
quickFilterValues: [filterValue],
quickFilterExcludeHiddenColumns: true,
</Grid>
</div>
<div className="data-panel-container">
<div className="data-panel-title">General Data</div>
<Grid container spacing={2} className="data-panel-grid">
<Grid item style={{ width: "100%" }}>
<DataGrid
disableColumnMenu
columnHeaderHeight={0}
rows={rows}
columns={columns}
slots={{
toolbar: MyCustomToolbar,
}}
slotProps={{
toolbar: {
printOptions: { disableToolbarButton: true },
csvOptions: { disableToolbarButton: true },
},
},
}}
filterModel={{
items: [{ field: 'key', operator: 'contains', value: filterValue }],
}}
pageSizeOptions={[5, 10]}
density="compact"
disableRowSelectionOnClick
autoHeight
/>
}}
disableDensitySelector
disableColumnFilter
disableColumnSelector
disableColumnSorting
initialState={{
pagination: {
paginationModel: { page: 0, pageSize: 5 },
},
filter: {
filterModel: {
items: [],
quickFilterValues: [filterValue],
quickFilterExcludeHiddenColumns: true,
},
},
}}
filterModel={{
items: [
{ field: "key", operator: "contains", value: filterValue },
],
}}
pageSizeOptions={[5, 10]}
density="compact"
disableRowSelectionOnClick
autoHeight
/>
</Grid>
</Grid>
</Grid>
</div>
<div className="data-panel-container">
<div className="data-panel-title">Extra Capabilities</div>
<Grid container spacing={2} className="data-panel-grid">
<Grid item style={{ width: "100%" }}>
<DataGrid
disableColumnMenu
columnHeaderHeight={0}
rows={rows}
columns={columns}
slots={{
toolbar: MyCustomToolbar,
}}
slotProps={{
toolbar: {
printOptions: { disableToolbarButton: true },
csvOptions: { disableToolbarButton: true },
},
}}
disableDensitySelector
disableColumnFilter
disableColumnSelector
disableColumnSorting
initialState={{
pagination: {
paginationModel: { page: 0, pageSize: 5 },
},
filter: {
filterModel: {
items: [],
quickFilterValues: [filterValue],
quickFilterExcludeHiddenColumns: true,
</div>
<div className="data-panel-container">
<div className="data-panel-title">Extra Capabilities</div>
<Grid container spacing={2} className="data-panel-grid">
<Grid item style={{ width: "100%" }}>
<DataGrid
disableColumnMenu
columnHeaderHeight={0}
rows={rows}
columns={columns}
slots={{
toolbar: MyCustomToolbar,
}}
slotProps={{
toolbar: {
printOptions: { disableToolbarButton: true },
csvOptions: { disableToolbarButton: true },
},
},
}}
filterModel={{
items: [{ field: 'key', operator: 'contains', value: filterValue }],
}}
pageSizeOptions={[5, 10]}
density="compact"
disableRowSelectionOnClick
autoHeight
/>
}}
disableDensitySelector
disableColumnFilter
disableColumnSelector
disableColumnSorting
initialState={{
pagination: {
paginationModel: { page: 0, pageSize: 5 },
},
filter: {
filterModel: {
items: [],
quickFilterValues: [filterValue],
quickFilterExcludeHiddenColumns: true,
},
},
}}
filterModel={{
items: [
{ field: "key", operator: "contains", value: filterValue },
],
}}
pageSizeOptions={[5, 10]}
density="compact"
disableRowSelectionOnClick
autoHeight
/>
</Grid>
</Grid>
</Grid>
</div>
</>
</div>
</Fragment>
);
}

4 changes: 0 additions & 4 deletions frontend/src/components/DataView/DataView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ function DataView() {
setIfOpenedDialog(!ifOpenedDialog);
};


return (
<div className="dataview-container">
<TabContext value="1">
Expand Down Expand Up @@ -63,13 +62,10 @@ function DataView() {
></Tab>
</TabList>
</div>

<TabPanel value="1" className="tab dataview-tab">
<div className="datapanels-container">
<div className="data-panels-container">

<DataPanel listTitle={getCurrentTabTitle()} />

</div>
<Button variant="outlined">Load data</Button>
</div>
Expand Down

0 comments on commit 804af30

Please sign in to comment.