Skip to content

Commit 10b4a83

Browse files
author
Sebastian Benjamin
committed
Persist user-hidden columns across rerenders
1 parent f0fbb11 commit 10b4a83

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

jbrowse/src/client/JBrowse/VariantSearch/components/VariantTableWidget.tsx

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
GridToolbarExport
1111
} from '@mui/x-data-grid';
1212
import ScopedCssBaseline from '@material-ui/core/ScopedCssBaseline';
13-
import FilterListIcon from '@material-ui/icons/FilterList';
13+
import SearchIcon from '@material-ui/icons/Search';
1414
import React, { useEffect, useState } from 'react';
1515
import { getConf } from '@jbrowse/core/configuration';
1616
import { AppBar, Box, Button, Dialog, Paper, Popover, Toolbar, Tooltip, Typography } from '@material-ui/core';
@@ -174,12 +174,12 @@ const VariantTableWidget = observer(props => {
174174
<GridToolbarContainer>
175175
<GridToolbarColumnsButton />
176176
<Button
177-
startIcon={<FilterListIcon />}
177+
startIcon={<SearchIcon />}
178178
size="small"
179179
color="primary"
180180
onClick={() => setFilterModalOpen(true)}
181181
>
182-
Filter
182+
Search
183183
</Button>
184184
<GridToolbarDensitySelector />
185185
<GridToolbarExport />
@@ -216,6 +216,7 @@ const VariantTableWidget = observer(props => {
216216
const [filterModalOpen, setFilterModalOpen] = useState(false);
217217
const [filters, setFilters] = useState([]);
218218
const [fieldTypeInfo, setFieldTypeInfo] = useState<FieldModel[]>([]);
219+
const [hiddenColumns, setHiddenColumns] = useState([]);
219220

220221
const [adapter, setAdapter] = useState<EVAdapterClass | undefined>(undefined)
221222

@@ -358,15 +359,27 @@ const VariantTableWidget = observer(props => {
358359
}
359360
}
360361

362+
const columnsWithLocalHideState = columns.map(col => ({
363+
...col,
364+
hide: hiddenColumns.includes(col.field),
365+
}));
366+
361367
const gridElement = (
362368
<DataGrid
363-
columns={[...columns, actionsCol]}
369+
columns={[...columnsWithLocalHideState, actionsCol]}
364370
rows={features}
365371
components={{ Toolbar: ToolbarWithProps }}
366372
rowsPerPageOptions={[10,25,50,100]}
367373
pageSize={pageSize}
368374
density="comfortable"
369375
onPageSizeChange={(newPageSize) => setPageSize(newPageSize)}
376+
onColumnVisibilityChange={(params) => {
377+
if (params.isVisible) {
378+
setHiddenColumns(prev => prev.filter(field => field !== params.field));
379+
} else {
380+
setHiddenColumns(prev => [...prev, params.field]);
381+
}
382+
}}
370383
/>
371384
)
372385

0 commit comments

Comments
 (0)