import PropTypes from 'prop-types'; import React, { Component } from 'react'; import IconButton from 'Components/Link/IconButton'; import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector'; import TableRowCell from 'Components/Table/Cells/TableRowCell'; import TableRow from 'Components/Table/TableRow'; import Tooltip from 'Components/Tooltip/Tooltip'; import episodeEntities from 'Episode/episodeEntities'; import EpisodeFormats from 'Episode/EpisodeFormats'; import EpisodeLanguages from 'Episode/EpisodeLanguages'; import EpisodeQuality from 'Episode/EpisodeQuality'; import EpisodeTitleLink from 'Episode/EpisodeTitleLink'; import SeasonEpisodeNumber from 'Episode/SeasonEpisodeNumber'; import { icons, tooltipPositions } from 'Helpers/Props'; import SeriesTitleLink from 'Series/SeriesTitleLink'; import formatCustomFormatScore from 'Utilities/Number/formatCustomFormatScore'; import HistoryDetailsModal from './Details/HistoryDetailsModal'; import HistoryEventTypeCell from './HistoryEventTypeCell'; import styles from './HistoryRow.css'; class HistoryRow extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { isDetailsModalOpen: false }; } componentDidUpdate(prevProps) { if ( prevProps.isMarkingAsFailed && !this.props.isMarkingAsFailed && !this.props.markAsFailedError ) { this.setState({ isDetailsModalOpen: false }); } } // // Listeners onDetailsPress = () => { this.setState({ isDetailsModalOpen: true }); }; onDetailsModalClose = () => { this.setState({ isDetailsModalOpen: false }); }; // // Render render() { const { episodeId, series, episode, languages, quality, customFormats, customFormatScore, qualityCutoffNotMet, eventType, sourceTitle, date, data, downloadId, isMarkingAsFailed, columns, shortDateFormat, timeFormat, onMarkAsFailedPress } = this.props; if (!episode) { return null; } return ( { columns.map((column) => { const { name, isVisible } = column; if (!isVisible) { return null; } if (name === 'eventType') { return ( ); } if (name === 'series.sortTitle') { return ( ); } if (name === 'episode') { return ( ); } if (name === 'episodes.title') { return ( ); } if (name === 'languages') { return ( ); } if (name === 'quality') { return ( ); } if (name === 'customFormats') { return ( ); } if (name === 'date') { return ( ); } if (name === 'downloadClient') { return ( {data.downloadClient} ); } if (name === 'indexer') { return ( {data.indexer} ); } if (name === 'customFormatScore') { return ( } position={tooltipPositions.BOTTOM} /> ); } if (name === 'releaseGroup') { return ( {data.releaseGroup} ); } if (name === 'sourceTitle') { return ( {sourceTitle} ); } if (name === 'details') { return (
); } return null; }) }
); } } HistoryRow.propTypes = { episodeId: PropTypes.number, series: PropTypes.object.isRequired, episode: PropTypes.object, languages: PropTypes.arrayOf(PropTypes.object).isRequired, quality: PropTypes.object.isRequired, customFormats: PropTypes.arrayOf(PropTypes.object), customFormatScore: PropTypes.number.isRequired, qualityCutoffNotMet: PropTypes.bool.isRequired, eventType: PropTypes.string.isRequired, sourceTitle: PropTypes.string.isRequired, date: PropTypes.string.isRequired, data: PropTypes.object.isRequired, downloadId: PropTypes.string, isMarkingAsFailed: PropTypes.bool, markAsFailedError: PropTypes.object, columns: PropTypes.arrayOf(PropTypes.object).isRequired, shortDateFormat: PropTypes.string.isRequired, timeFormat: PropTypes.string.isRequired, onMarkAsFailedPress: PropTypes.func.isRequired }; HistoryRow.defaultProps = { customFormats: [] }; export default HistoryRow;