diff --git a/ui/src/common/SongDatagrid.js b/ui/src/common/SongDatagrid.js index b24d03f40..16a494eda 100644 --- a/ui/src/common/SongDatagrid.js +++ b/ui/src/common/SongDatagrid.js @@ -1,9 +1,11 @@ import React, { useState, isValidElement, cloneElement } from 'react' +import { useDispatch } from 'react-redux' import { Datagrid, DatagridBody, DatagridRow } from 'react-admin' import { TableCell, TableRow, Typography } from '@material-ui/core' import PropTypes from 'prop-types' import { makeStyles } from '@material-ui/core/styles' import AlbumIcon from '@material-ui/icons/Album' +import { playTracks } from '../audioplayer' const useStyles = makeStyles({ subtitle: { @@ -11,6 +13,7 @@ const useStyles = makeStyles({ overflow: 'hidden', textOverflow: 'ellipsis', verticalAlign: 'middle', + cursor: 'pointer', }, discIcon: { verticalAlign: 'text-top', @@ -24,24 +27,26 @@ export const SongDatagridRow = ({ multiDisc, contextAlwaysVisible, contextMenu, + onClickDiscSubtitle, ...rest }) => { const classes = useStyles() const [visible, setVisible] = useState(false) const childCount = React.Children.count(children) + const handlePlayDisc = (discNumber) => () => { + onClickDiscSubtitle(discNumber) + } return ( <> - {multiDisc && ( - - {record.trackNumber === 1 && ( - - - - {record.discNumber} - {record.discSubtitle && `: ${record.discSubtitle}`} - - - )} + {multiDisc && record.trackNumber === 1 && ( + + + + + {record.discNumber} + {record.discSubtitle && `: ${record.discSubtitle}`} + + )} {}, } export const SongDatagrid = ({ multiDisc, contextAlwaysVisible, ...rest }) => { + const dispatch = useDispatch() + const playDisc = (discNumber) => { + const ids = rest.ids.filter((id) => rest.data[id].discNumber === discNumber) + dispatch(playTracks(rest.data, ids)) + } const SongDatagridBody = (props) => ( { } />