import React from 'react'
import {
Edit,
SimpleForm,
TextInput,
required,
Toolbar,
SaveButton,
NumberField,
DateField,
FunctionField,
useTranslate,
} from 'react-admin'
import { makeStyles } from '@material-ui/core/styles'
import { Divider, Typography } from '@material-ui/core'
import DeleteLibraryButton from './DeleteLibraryButton'
import { Title } from '../common'
const useStyles = makeStyles({
toolbar: {
display: 'flex',
justifyContent: 'space-between',
},
divider: {
marginTop: '1em',
marginBottom: '1em',
},
stats: {
display: 'grid',
gridTemplateColumns: '1fr 1fr 1fr',
gap: '0 1em',
'& > *': {
padding: '0.2em 0',
},
},
})
const LibraryTitle = ({ record }) => {
const translate = useTranslate()
const resourceName = translate('resources.library.name', { smart_count: 1 })
return (
)
}
const LibraryToolbar = (props) => (
{props.record && props.record.id !== 1 && }
)
const formatDuration = (totalSeconds) => {
if (totalSeconds == null || totalSeconds < 0) {
return '0s'
}
const hours = Math.floor(totalSeconds / 3600)
const minutes = Math.floor((totalSeconds % 3600) / 60)
const seconds = Math.floor(totalSeconds % 60)
const parts = []
if (hours > 0) {
parts.push(`${hours}h`)
}
if (minutes > 0) {
parts.push(`${minutes}m`)
}
if (seconds > 0 || parts.length === 0) {
parts.push(`${seconds}s`)
}
return parts.join(' ')
}
const formatBytes = (bytes, decimals = 2) => {
if (bytes === 0) return '0 Bytes'
const k = 1024
const dm = decimals < 0 ? 0 : decimals
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
const i = Math.floor(Math.log(bytes) / Math.log(k))
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]
}
const LibraryEdit = (props) => {
const classes = useStyles()
const translate = useTranslate()
const isFirstLibrary = props.id === '1'
return (
} undoable={false} {...props}>
}>
Statistics
{translate('resources.library.fields.totalSongs')}
{translate('resources.library.fields.totalAlbums')}
{translate('resources.library.fields.totalArtists')}
{translate('resources.library.fields.totalFolders')}
{translate('resources.library.fields.totalFiles')}
{translate('resources.library.fields.totalMissingFiles')}
{translate('resources.library.fields.totalSize')}
formatBytes(record.totalSize)} />
{translate('resources.library.fields.totalDuration')}
formatDuration(record.totalDuration)}
/>
{translate('resources.library.fields.lastScanAt')}
{translate('resources.library.fields.createdAt')}
{translate('resources.library.fields.updatedAt')}
)
}
export default LibraryEdit