add ExportButton for CustomDataGrid component

This commit is contained in:
maxim 2025-03-19 14:11:24 +03:00
parent 7ee4334381
commit 0a1eeccf08
3 changed files with 31 additions and 18 deletions

View File

@ -1,5 +1,7 @@
import {DataGrid, type DataGridProps, type GridColumnVisibilityModel} from '@mui/x-data-grid' import {DataGrid, type DataGridProps, type GridColumnVisibilityModel} from '@mui/x-data-grid'
import {Stack, Button} from '@mui/material' import {Stack, Button} from '@mui/material'
import {ExportButton} from '@refinedev/mui'
import {useExport} from '@refinedev/core'
import React, {useState, useEffect, useMemo} from 'react' import React, {useState, useEffect, useMemo} from 'react'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
@ -7,12 +9,18 @@ import {localeText} from '../locales/ru/localeText'
interface CustomDataGridProps extends DataGridProps { interface CustomDataGridProps extends DataGridProps {
hasCoordinates?: boolean hasCoordinates?: boolean
resource?: string // Add this prop
} }
const DEV_FIELDS = ['id', 'code', 'country_code', 'city_id', 'carrier_id'] as const const DEV_FIELDS = ['id', 'code', 'country_code', 'city_id', 'carrier_id'] as const
export const CustomDataGrid = ({hasCoordinates = false, columns = [], ...props}: CustomDataGridProps) => { export const CustomDataGrid = ({hasCoordinates = false, columns = [], resource, ...props}: CustomDataGridProps) => {
const isDev = import.meta.env.DEV const isDev = import.meta.env.DEV
const {triggerExport, isLoading: exportLoading} = useExport({
resource: resource ?? '',
// pageSize: 100, #*
// maxItemCount: 100, #*
})
const initialShowCoordinates = Cookies.get('showCoordinates') === 'true' const initialShowCoordinates = Cookies.get('showCoordinates') === 'true'
const initialShowDevData = Cookies.get('showDevData') === 'true' const initialShowDevData = Cookies.get('showDevData') === 'true'
@ -90,6 +98,8 @@ export const CustomDataGrid = ({hasCoordinates = false, columns = [], ...props}:
}} }}
pageSizeOptions={[10, 25, 50, 100]} pageSizeOptions={[10, 25, 50, 100]}
/> />
<Stack direction="row" spacing={2} justifyContent="space-between" mb={2}>
<Stack direction="row" spacing={2} sx={{mb: 2}}> <Stack direction="row" spacing={2} sx={{mb: 2}}>
{hasCoordinates && ( {hasCoordinates && (
<Button variant="contained" onClick={toggleCoordinates}> <Button variant="contained" onClick={toggleCoordinates}>
@ -103,6 +113,9 @@ export const CustomDataGrid = ({hasCoordinates = false, columns = [], ...props}:
</Button> </Button>
)} )}
</Stack> </Stack>
<ExportButton onClick={triggerExport} loading={exportLoading} />
</Stack>
</Stack> </Stack>
) )
} }

View File

@ -99,8 +99,8 @@ export const SightShow = () => {
const fields = [ const fields = [
// {label: 'ID', data: 'id'}, // {label: 'ID', data: 'id'},
{label: 'Название', data: 'name'}, {label: 'Название', data: 'name'},
// {label: 'Широта', data: 'latitude'}, # // {label: 'Широта', data: 'latitude'}, #*
// {label: 'Долгота', data: 'longitude'}, # // {label: 'Долгота', data: 'longitude'}, #*
// {label: 'ID города', data: 'city_id'}, // {label: 'ID города', data: 'city_id'},
{label: 'Город', data: 'city'}, {label: 'Город', data: 'city'},
] ]

View File

@ -100,16 +100,16 @@ export const StationShow = () => {
const fields = [ const fields = [
// {label: 'ID', data: 'id'}, // {label: 'ID', data: 'id'},
{label: 'Название', data: 'name'}, {label: 'Название', data: 'name'},
// {label: 'Широта', data: 'latitude'}, # // {label: 'Широта', data: 'latitude'}, #*
// {label: 'Долгота', data: 'longitude'}, # // {label: 'Долгота', data: 'longitude'}, #*
{label: 'Описание', data: 'description'}, {label: 'Описание', data: 'description'},
] ]
const sightFields: Array<{label: string; data: keyof SightItem}> = [ const sightFields: Array<{label: string; data: keyof SightItem}> = [
// {label: 'ID', data: 'id'}, // {label: 'ID', data: 'id'},
{label: 'Название', data: 'name'}, {label: 'Название', data: 'name'},
// {label: 'Широта', data: 'latitude'}, # // {label: 'Широта', data: 'latitude'}, #*
// {label: 'Долгота', data: 'longitude'}, # // {label: 'Долгота', data: 'longitude'}, #*
// {label: 'ID города', data: 'city_id'}, // {label: 'ID города', data: 'city_id'},
{label: 'Город', data: 'city'}, {label: 'Город', data: 'city'},
] ]