import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { kinds, sizes } from 'Helpers/Props'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import Label from 'Components/Label'; import QualityProfileNameConnector from 'Settings/Profiles/Quality/QualityProfileNameConnector'; import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; import EpisodeAiringConnector from './EpisodeAiringConnector'; import TrackDetailRow from './TrackDetailRow'; import styles from './EpisodeSummary.css'; class EpisodeSummary extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { isRemoveTrackFileModalOpen: false }; } // // Listeners onRemoveTrackFilePress = () => { this.setState({ isRemoveTrackFileModalOpen: true }); } onConfirmRemoveTrackFile = () => { this.props.onDeleteTrackFile(); this.setState({ isRemoveTrackFileModalOpen: false }); } onRemoveTrackFileModalClose = () => { this.setState({ isRemoveTrackFileModalOpen: false }); } // // Render render() { const { qualityProfileId, overview, releaseDate, albumLabel, path, items, size, quality, qualityCutoffNotMet, columns } = this.props; const hasOverview = !!overview; return (
Releases
Quality Profile
{ hasOverview ? overview : 'No album overview.' }
{
{ items.length ? { items.map((item) => { return ( ); }) }
:
No tracks in this group
}
}
); } } EpisodeSummary.propTypes = { qualityProfileId: PropTypes.number.isRequired, overview: PropTypes.string, albumLabel: PropTypes.arrayOf(PropTypes.string), releaseDate: PropTypes.string.isRequired, items: PropTypes.arrayOf(PropTypes.object).isRequired, columns: PropTypes.arrayOf(PropTypes.object).isRequired, path: PropTypes.string, size: PropTypes.number, quality: PropTypes.object, qualityCutoffNotMet: PropTypes.bool, onDeleteTrackFile: PropTypes.func.isRequired }; export default EpisodeSummary;