Skip to content

Commit

Permalink
add density selector to dashboard
Browse files Browse the repository at this point in the history
  • Loading branch information
Petter Andersson committed Feb 26, 2025
1 parent e7933f7 commit b5f9141
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 10 deletions.
9 changes: 7 additions & 2 deletions src/adverts/dashboard/AdvertsTable/AdvertsTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Stack } from '@mui/material'
import {
DataGrid,
GridColumnVisibilityModel,
GridDensity,
GridPaginationModel,
GridSortModel,
GridToolbar,
Expand Down Expand Up @@ -34,6 +35,10 @@ export const AdvertsTable: FC<{
columns.reduce((p, c) => ({ ...p, [c.field]: true }), {})
)

const [density, onDensityChange] = useLocalStorage<GridDensity>(
'haffa-my-adverts-v2-density',
'standard'
)
// Transform sort model to serverside model
const onSortModelChange = useCallback(
([model]: GridSortModel) =>
Expand Down Expand Up @@ -71,8 +76,8 @@ export const AdvertsTable: FC<{
<DataGrid
getRowHeight={() => 'auto'}
slots={{ toolbar: GridToolbar }}
disableDensitySelector
disableColumnFilter
onDensityChange={(density) => onDensityChange(density)}
sortingMode="server"
onSortModelChange={onSortModelChange}
sortingOrder={['asc', 'desc']}
Expand All @@ -93,7 +98,7 @@ export const AdvertsTable: FC<{
rowSelectionModel={selected}
columnVisibilityModel={visibilityModel}
onColumnVisibilityModelChange={onColumnVisibilityModelChange}
rows={createRows(adverts)}
rows={createRows(adverts, density)}
columns={columns}
initialState={{
pagination: {
Expand Down
23 changes: 17 additions & 6 deletions src/adverts/dashboard/createColumns.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,30 @@ export const createLink = (to: string | undefined, icon: ReactNode) => (
</NavLink>
)

export const createAdvertImage = (imageUrl?: string, advertUrl?: string) =>
createLink(
export const createAdvertImage = (
imageUrl?: string,
advertUrl?: string,
density?: string
) => {
const size = {
compact: 32,
standard: 48,
comfortable: 96,
}[density ?? 'standard']

return createLink(
advertUrl,
<Box
component="img"
src={imageUrl ?? '/empty-advert.svg'}
sx={{
height: 48,
width: 48,
height: size,
width: size,
objectFit: 'cover',
}}
/>
)
}

const createTagList = (tags?: string[]) => (
<Stack direction="column">
Expand All @@ -51,8 +62,8 @@ export const createColumns = (
headerAlign: 'center',
sortable: false,
headerName: phrase('DASHBOARD_HEADER_IMAGE', 'Bild'),
renderCell: ({ value: [imageUrl, advertUrl] }) =>
createAdvertImage(imageUrl, advertUrl),
renderCell: ({ value: [imageUrl, advertUrl, density] }) =>
createAdvertImage(imageUrl, advertUrl, density),
},
{
field: 'title',
Expand Down
7 changes: 5 additions & 2 deletions src/adverts/dashboard/createRows.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@ import { Advert } from 'adverts/types'
import { uniqueBy } from 'lib/unique-by'
import { AdvertTableRow } from './AdvertsTable/types'

export const createRows = (adverts: Advert[]): AdvertTableRow[] =>
export const createRows = (
adverts: Advert[],
density: string
): AdvertTableRow[] =>
adverts.map((advert) => ({
id: advert.id,
image: [advert.images[0]?.url, `/advert/${advert.id}`],
image: [advert.images[0]?.url, `/advert/${advert.id}`, density],
title: advert.title,
category: advert.category,
tags: advert.tags,
Expand Down

0 comments on commit b5f9141

Please sign in to comment.