Use a custom List component

This commit is contained in:
Deluan 2020-05-15 10:20:11 -04:00
parent 9490374faa
commit b3af0f880b
8 changed files with 34 additions and 45 deletions

View File

@ -3,7 +3,6 @@ import { useSelector } from 'react-redux'
import { import {
AutocompleteInput, AutocompleteInput,
Filter, Filter,
List,
NullableBooleanInput, NullableBooleanInput,
NumberInput, NumberInput,
ReferenceInput, ReferenceInput,
@ -11,7 +10,7 @@ import {
Pagination, Pagination,
useTranslate, useTranslate,
} from 'react-admin' } from 'react-admin'
import { Title } from '../common' import { List } from '../common'
import { withWidth } from '@material-ui/core' import { withWidth } from '@material-ui/core'
import AlbumListActions from './AlbumListActions' import AlbumListActions from './AlbumListActions'
import AlbumListView from './AlbumListView' import AlbumListView from './AlbumListView'
@ -60,9 +59,6 @@ const AlbumList = (props) => {
return ( return (
<List <List
{...props} {...props}
title={
<Title subTitle={'resources.album.name'} args={{ smart_count: 2 }} />
}
exporter={false} exporter={false}
bulkActionButtons={false} bulkActionButtons={false}
actions={<AlbumListActions />} actions={<AlbumListActions />}

View File

@ -2,12 +2,11 @@ import React from 'react'
import { import {
Datagrid, Datagrid,
Filter, Filter,
List,
NumberField, NumberField,
SearchInput, SearchInput,
TextField, TextField,
} from 'react-admin' } from 'react-admin'
import { artistLink, Pagination, Title } from '../common' import { artistLink, List } from '../common'
const ArtistFilter = (props) => ( const ArtistFilter = (props) => (
<Filter {...props}> <Filter {...props}>
@ -18,15 +17,10 @@ const ArtistFilter = (props) => (
const ArtistList = (props) => ( const ArtistList = (props) => (
<List <List
{...props} {...props}
title={
<Title subTitle={'resources.artist.name'} args={{ smart_count: 2 }} />
}
sort={{ field: 'name', order: 'ASC' }} sort={{ field: 'name', order: 'ASC' }}
exporter={false} exporter={false}
bulkActionButtons={false} bulkActionButtons={false}
filters={<ArtistFilter />} filters={<ArtistFilter />}
perPage={15}
pagination={<Pagination />}
> >
<Datagrid rowClick={artistLink}> <Datagrid rowClick={artistLink}>
<TextField source="name" /> <TextField source="name" />

23
ui/src/common/List.js Normal file
View File

@ -0,0 +1,23 @@
import React from 'react'
import { List as RAList } from 'react-admin'
import Pagination from './Pagination'
import { Title } from './index'
const List = (props) => {
const { resource } = props
return (
<RAList
title={
<Title
subTitle={`resources.${resource}.name`}
args={{ smart_count: 2 }}
/>
}
perPage={15}
pagination={<Pagination />}
{...props}
/>
)
}
export default List

View File

@ -9,6 +9,7 @@ import ArtistLinkField, { artistLink } from './ArtistLinkField'
import SongDetails from './SongDetails' import SongDetails from './SongDetails'
import SizeField from './SizeField' import SizeField from './SizeField'
import DocLink from './DocLink' import DocLink from './DocLink'
import List from './List'
export { export {
Title, Title,
@ -16,6 +17,7 @@ export {
SizeField, SizeField,
BitrateField, BitrateField,
Pagination, Pagination,
List,
PlayButton, PlayButton,
SimpleList, SimpleList,
RangeField, RangeField,

View File

@ -1,25 +1,18 @@
import React from 'react' import React from 'react'
import { import {
Datagrid, Datagrid,
List,
TextField, TextField,
DateField, DateField,
FunctionField, FunctionField,
ReferenceField, ReferenceField,
} from 'react-admin' } from 'react-admin'
import { useMediaQuery } from '@material-ui/core' import { useMediaQuery } from '@material-ui/core'
import { SimpleList, Title } from '../common' import { SimpleList, List } from '../common'
const PlayerList = (props) => { const PlayerList = (props) => {
const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs'))
return ( return (
<List <List exporter={false} {...props}>
title={
<Title subTitle={'resources.player.name'} args={{ smart_count: 2 }} />
}
exporter={false}
{...props}
>
{isXsmall ? ( {isXsmall ? (
<SimpleList <SimpleList
primaryText={(r) => r.client} primaryText={(r) => r.client}

View File

@ -3,18 +3,16 @@ import {
Datagrid, Datagrid,
Filter, Filter,
FunctionField, FunctionField,
List,
NumberField, NumberField,
SearchInput, SearchInput,
TextField, TextField,
} from 'react-admin' } from 'react-admin'
import { useMediaQuery } from '@material-ui/core' import { useMediaQuery } from '@material-ui/core'
import { DurationField, Pagination, SimpleList, Title } from '../common' import { DurationField, SimpleList, List, SongDetails } from '../common'
import { useDispatch } from 'react-redux' import { useDispatch } from 'react-redux'
import { setTrack } from '../audioplayer' import { setTrack } from '../audioplayer'
import { SongBulkActions } from './SongBulkActions' import { SongBulkActions } from './SongBulkActions'
import { AlbumLinkField } from './AlbumLinkField' import { AlbumLinkField } from './AlbumLinkField'
import { SongDetails } from '../common'
import { SongContextMenu } from './SongContextMenu' import { SongContextMenu } from './SongContextMenu'
const SongFilter = (props) => ( const SongFilter = (props) => (
@ -30,15 +28,11 @@ const SongList = (props) => {
return ( return (
<List <List
{...props} {...props}
title={
<Title subTitle={'resources.song.name'} args={{ smart_count: 2 }} />
}
sort={{ field: 'title', order: 'ASC' }} sort={{ field: 'title', order: 'ASC' }}
exporter={false} exporter={false}
bulkActionButtons={<SongBulkActions />} bulkActionButtons={<SongBulkActions />}
filters={<SongFilter />} filters={<SongFilter />}
perPage={isXsmall ? 50 : 15} perPage={isXsmall ? 50 : 15}
pagination={<Pagination />}
> >
{isXsmall ? ( {isXsmall ? (
<SimpleList <SimpleList

View File

@ -1,22 +1,13 @@
import React from 'react' import React from 'react'
import { Datagrid, List, TextField } from 'react-admin' import { Datagrid, TextField } from 'react-admin'
import { useMediaQuery } from '@material-ui/core' import { useMediaQuery } from '@material-ui/core'
import { SimpleList, Title } from '../common' import { SimpleList, List } from '../common'
import config from '../config' import config from '../config'
const TranscodingList = (props) => { const TranscodingList = (props) => {
const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs'))
return ( return (
<List <List exporter={false} {...props}>
title={
<Title
subTitle={'resources.transcoding.name'}
args={{ smart_count: 2 }}
/>
}
exporter={false}
{...props}
>
{isXsmall ? ( {isXsmall ? (
<SimpleList <SimpleList
primaryText={(r) => r.name} primaryText={(r) => r.name}

View File

@ -4,13 +4,12 @@ import {
Datagrid, Datagrid,
Filter, Filter,
DateField, DateField,
List,
SearchInput, SearchInput,
SimpleList, SimpleList,
TextField, TextField,
} from 'react-admin' } from 'react-admin'
import { useMediaQuery } from '@material-ui/core' import { useMediaQuery } from '@material-ui/core'
import { Title } from '../common' import { List } from '../common'
const UserFilter = (props) => ( const UserFilter = (props) => (
<Filter {...props}> <Filter {...props}>
@ -24,9 +23,6 @@ const UserList = (props) => {
return ( return (
<List <List
{...props} {...props}
title={
<Title subTitle={'resources.user.name'} args={{ smart_count: 2 }} />
}
sort={{ field: 'userName', order: 'ASC' }} sort={{ field: 'userName', order: 'ASC' }}
exporter={false} exporter={false}
filters={<UserFilter />} filters={<UserFilter />}