Skip to content

Commit 4effc21

Browse files
authored
fix: perf issues on index page (#138)
1 parent 043cf45 commit 4effc21

File tree

1 file changed

+21
-66
lines changed

1 file changed

+21
-66
lines changed

src/routes/index.tsx

Lines changed: 21 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
getSortedRowModel,
88
useReactTable,
99
} from '@tanstack/react-table'
10-
import { ChevronDown } from 'lucide-react'
1110
import { useServerFn } from '@tanstack/react-start'
1211
import { useQuery } from '@tanstack/react-query'
1312
import { createToast } from 'vercel-toast'
@@ -19,17 +18,10 @@ import type {
1918
Row,
2019
RowData,
2120
SortingState,
22-
VisibilityState,
2321
} from '@tanstack/react-table'
2422
import type { Priority, Prisma } from '@prisma/client'
2523
import { useLocalStorage } from 'usehooks-ts'
2624
import { Button } from '@/components/ui/button'
27-
import {
28-
DropdownMenu,
29-
DropdownMenuCheckboxItem,
30-
DropdownMenuContent,
31-
DropdownMenuTrigger,
32-
} from '@/components/ui/dropdown-menu'
3325
import {
3426
Table,
3527
TableBody,
@@ -190,7 +182,6 @@ function App() {
190182
'employees.table',
191183
[],
192184
)
193-
const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({})
194185
const [_, setReviewQueue] = useAtom(reviewQueueAtom)
195186

196187
const getEmployeesFn = useServerFn(getEmployees)
@@ -428,11 +419,13 @@ function App() {
428419
getCoreRowModel: getCoreRowModel(),
429420
getSortedRowModel: getSortedRowModel(),
430421
getFilteredRowModel: getFilteredRowModel(),
431-
onColumnVisibilityChange: setColumnVisibility,
432422
state: {
433423
sorting,
434424
columnFilters,
435-
columnVisibility,
425+
columnVisibility: {
426+
changePercentage: false,
427+
level: false,
428+
},
436429
},
437430
filterFns: {},
438431
})
@@ -461,32 +454,6 @@ function App() {
461454
>
462455
Review visible employees
463456
</Button>
464-
<DropdownMenu>
465-
<DropdownMenuTrigger asChild>
466-
<Button variant="outline" className="ml-auto">
467-
Columns <ChevronDown />
468-
</Button>
469-
</DropdownMenuTrigger>
470-
<DropdownMenuContent align="end">
471-
{table
472-
.getAllColumns()
473-
.filter((column) => column.getCanHide())
474-
.map((column) => {
475-
return (
476-
<DropdownMenuCheckboxItem
477-
key={column.id}
478-
className="capitalize"
479-
checked={column.getIsVisible()}
480-
onCheckedChange={(value) =>
481-
column.toggleVisibility(!!value)
482-
}
483-
>
484-
{column.id}
485-
</DropdownMenuCheckboxItem>
486-
)
487-
})}
488-
</DropdownMenuContent>
489-
</DropdownMenu>
490457
</div>
491458
</div>
492459
<TableFilters table={table} />
@@ -495,36 +462,24 @@ function App() {
495462
<TableHeader>
496463
{table.getHeaderGroups().map((headerGroup) => (
497464
<TableRow key={headerGroup.id}>
498-
{headerGroup.headers
499-
.filter(
500-
(header) =>
501-
header.column.id !== 'level' &&
502-
header.column.id !== 'changePercentage',
465+
{headerGroup.headers.map((header) => {
466+
return (
467+
<TableHead key={header.id}>
468+
{header.isPlaceholder
469+
? null
470+
: flexRender(
471+
header.column.columnDef.header,
472+
header.getContext(),
473+
)}
474+
{header.column.getCanFilter() ? (
475+
<div className="hidden">
476+
{/* for some reason removing the filters cause infinite re-renders */}
477+
<Filter column={header.column} />
478+
</div>
479+
) : null}
480+
</TableHead>
503481
)
504-
.map((header) => {
505-
return (
506-
<TableHead key={header.id}>
507-
{header.isPlaceholder
508-
? null
509-
: flexRender(
510-
header.column.columnDef.header,
511-
header.getContext(),
512-
)}
513-
{header.column.getCanFilter() &&
514-
header.column.id !== 'name' &&
515-
header.column.id !== 'level' &&
516-
header.column.id !== 'stepLevel' &&
517-
header.column.id !== 'priority' &&
518-
header.column.id !== 'reviewer' &&
519-
header.column.id !== 'reviewed' &&
520-
header.column.id !== 'lastChange' ? (
521-
<div>
522-
<Filter column={header.column} />
523-
</div>
524-
) : null}
525-
</TableHead>
526-
)
527-
})}
482+
})}
528483
</TableRow>
529484
))}
530485
</TableHeader>

0 commit comments

Comments
 (0)