mirror of https://github.com/msgbyte/tailchat
parent
bacb5b3031
commit
4f51ec4aa8
@ -0,0 +1,47 @@
|
||||
import React from 'react';
|
||||
import filesize from 'filesize';
|
||||
import {
|
||||
NumberFieldProps,
|
||||
sanitizeFieldRestProps,
|
||||
useRecordContext,
|
||||
useTranslate,
|
||||
} from 'react-admin';
|
||||
import get from 'lodash/get';
|
||||
import { Typography } from '@mui/material';
|
||||
|
||||
export const FilesizeField: React.FC<NumberFieldProps> = React.memo((props) => {
|
||||
const { className, emptyText, source, locales, options, textAlign, ...rest } =
|
||||
props;
|
||||
const record = useRecordContext(props);
|
||||
const translate = useTranslate();
|
||||
|
||||
if (!record) {
|
||||
return null;
|
||||
}
|
||||
const value = get(record, source!);
|
||||
|
||||
if (value == null) {
|
||||
return emptyText ? (
|
||||
<Typography
|
||||
component="span"
|
||||
variant="body2"
|
||||
className={className}
|
||||
{...sanitizeFieldRestProps(rest)}
|
||||
>
|
||||
{emptyText && translate(emptyText, { _: emptyText })}
|
||||
</Typography>
|
||||
) : null;
|
||||
}
|
||||
|
||||
return (
|
||||
<Typography
|
||||
component="span"
|
||||
variant="body2"
|
||||
className={className}
|
||||
{...sanitizeFieldRestProps(rest)}
|
||||
>
|
||||
{filesize(value)}
|
||||
</Typography>
|
||||
);
|
||||
});
|
||||
FilesizeField.displayName = 'FilesizeField';
|
@ -0,0 +1,28 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Datagrid,
|
||||
DateField,
|
||||
List,
|
||||
NumberField,
|
||||
ReferenceField,
|
||||
TextField,
|
||||
UrlField,
|
||||
} from 'react-admin';
|
||||
import { FilesizeField } from '../components/FilesizeField';
|
||||
|
||||
export const FileList: React.FC = () => (
|
||||
<List>
|
||||
<Datagrid>
|
||||
<TextField source="objectName" label="对象存储名" />
|
||||
<UrlField source="url" target="__blank" label="文件路径" />
|
||||
<FilesizeField source="size" noWrap={true} />
|
||||
<TextField source="metaData.content-type" label="文件类型" />
|
||||
<TextField source="etag" />
|
||||
<ReferenceField source="userId" reference="users" label="存储用户">
|
||||
<TextField source="nickname" />
|
||||
(<TextField source="email" />)
|
||||
</ReferenceField>
|
||||
<DateField source="createdAt" label="创建时间" />
|
||||
</Datagrid>
|
||||
</List>
|
||||
);
|
@ -0,0 +1,22 @@
|
||||
import { defaultTheme } from 'react-admin';
|
||||
import { ThemeOptions } from '@mui/material';
|
||||
|
||||
const customRaComponents = {
|
||||
RaDatagrid: {
|
||||
styleOverrides: {
|
||||
root: {
|
||||
'& .RaDatagrid-headerCell': {
|
||||
whiteSpace: 'nowrap',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export const theme: ThemeOptions = {
|
||||
...defaultTheme,
|
||||
components: {
|
||||
...defaultTheme.components,
|
||||
...customRaComponents,
|
||||
},
|
||||
};
|
Loading…
Reference in New Issue