import PropTypes from 'prop-types'; import React, { Component } from 'react'; import MonitorToggleButton from 'Components/MonitorToggleButton'; import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector'; import { kinds, sizes } from 'Helpers/Props'; import TableRow from 'Components/Table/TableRow'; import Label from 'Components/Label'; import TableRowCell from 'Components/Table/Cells/TableRowCell'; import AlbumSearchCellConnector from 'Album/AlbumSearchCellConnector'; import AlbumTitleLink from 'Album/AlbumTitleLink'; import StarRating from 'Components/StarRating'; import styles from './AlbumRow.css'; function getTrackCountKind(monitored, trackFileCount, trackCount) { if (trackFileCount === trackCount && trackCount > 0) { return kinds.SUCCESS; } if (!monitored) { return kinds.WARNING; } return kinds.DANGER; } class AlbumRow extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { isDetailsModalOpen: false, isEditAlbumModalOpen: false }; } // // Listeners onManualSearchPress = () => { this.setState({ isDetailsModalOpen: true }); } onDetailsModalClose = () => { this.setState({ isDetailsModalOpen: false }); } onEditAlbumPress = () => { this.setState({ isEditAlbumModalOpen: true }); } onEditAlbumModalClose = () => { this.setState({ isEditAlbumModalOpen: false }); } onMonitorAlbumPress = (monitored, options) => { this.props.onMonitorAlbumPress(this.props.id, monitored, options); } // // Render render() { const { id, authorId, monitored, statistics, releaseDate, title, position, ratings, disambiguation, isSaving, artistMonitored, titleSlug, columns } = this.props; const { trackCount, trackFileCount, totalTrackCount } = statistics; return ( { columns.map((column) => { const { name, isVisible } = column; if (!isVisible) { return null; } if (name === 'monitored') { return ( ); } if (name === 'title') { return ( ); } if (name === 'position') { return ( {position || ''} ); } if (name === 'rating') { return ( { } ); } if (name === 'releaseDate') { return ( ); } if (name === 'status') { return ( ); } if (name === 'actions') { return ( ); } return null; }) } ); } } AlbumRow.propTypes = { id: PropTypes.number.isRequired, authorId: PropTypes.number.isRequired, monitored: PropTypes.bool.isRequired, releaseDate: PropTypes.string, title: PropTypes.string.isRequired, position: PropTypes.string, ratings: PropTypes.object.isRequired, disambiguation: PropTypes.string, titleSlug: PropTypes.string.isRequired, isSaving: PropTypes.bool, artistMonitored: PropTypes.bool.isRequired, statistics: PropTypes.object.isRequired, columns: PropTypes.arrayOf(PropTypes.object).isRequired, onMonitorAlbumPress: PropTypes.func.isRequired }; AlbumRow.defaultProps = { statistics: { trackCount: 0, trackFileCount: 0 } }; export default AlbumRow;