import PropTypes from 'prop-types'; import React, { Component } from 'react'; import IconButton from 'Components/Link/IconButton'; import ConfirmModal from 'Components/Modal/ConfirmModal'; 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 { icons, kinds, tooltipPositions } from 'Helpers/Props'; import MovieFormats from 'Movie/MovieFormats'; import MovieLanguage from 'Movie/MovieLanguage'; import MovieQuality from 'Movie/MovieQuality'; import FileEditModal from 'MovieFile/Edit/FileEditModal'; import MediaInfoConnector from 'MovieFile/MediaInfoConnector'; import * as mediaInfoTypes from 'MovieFile/mediaInfoTypes'; import formatBytes from 'Utilities/Number/formatBytes'; import formatCustomFormatScore from 'Utilities/Number/formatCustomFormatScore'; import translate from 'Utilities/String/translate'; import FileDetailsModal from '../FileDetailsModal'; import MovieFileRowCellPlaceholder from './MovieFileRowCellPlaceholder'; import styles from './MovieFileEditorRow.css'; class MovieFileEditorRow extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { isConfirmDeleteModalOpen: false, isFileDetailsModalOpen: false, isFileEditModalOpen: false }; } // // Listeners onDeletePress = () => { this.setState({ isConfirmDeleteModalOpen: true }); }; onConfirmDelete = () => { this.setState({ isConfirmDeleteModalOpen: false }); this.props.onDeletePress(this.props.id); }; onConfirmDeleteModalClose = () => { this.setState({ isConfirmDeleteModalOpen: false }); }; onFileDetailsPress = () => { this.setState({ isFileDetailsModalOpen: true }); }; onFileDetailsModalClose = () => { this.setState({ isFileDetailsModalOpen: false }); }; onFileEditPress = () => { this.setState({ isFileEditModalOpen: true }); }; onFileEditModalClose = () => { this.setState({ isFileEditModalOpen: false }); }; // // Render render() { const { id, mediaInfo, relativePath, size, releaseGroup, quality, qualityCutoffNotMet, customFormats, customFormatScore, languages, dateAdded, columns } = this.props; const { isFileDetailsModalOpen, isFileEditModalOpen, isConfirmDeleteModalOpen } = this.state; const showQualityPlaceholder = !quality; const showLanguagePlaceholder = !languages; return ( { columns.map((column) => { const { name, isVisible } = column; if (!isVisible) { return null; } if (name === 'relativePath') { return ( {relativePath} ); } if (name === 'customFormats') { return ( ); } if (name === 'customFormatScore') { return ( } position={tooltipPositions.TOP} /> ); } if (name === 'languages') { return ( { showLanguagePlaceholder ? : null } { !showLanguagePlaceholder && !!languages && } ); } if (name === 'quality') { return ( { showQualityPlaceholder ? : null } { !showQualityPlaceholder && !!quality && } ); } if (name === 'audioInfo') { return ( ); } if (name === 'audioLanguages') { return ( ); } if (name === 'subtitleLanguages') { return ( ); } if (name === 'videoCodec') { return ( ); } if (name === 'videoDynamicRangeType') { return ( ); } if (name === 'size') { return ( {formatBytes(size)} ); } if (name === 'releaseGroup') { return ( {releaseGroup} ); } if (name === 'dateAdded') { return ( ); } if (name === 'actions') { return ( ); } return null; }) } ); } } MovieFileEditorRow.propTypes = { id: PropTypes.number.isRequired, size: PropTypes.number.isRequired, relativePath: PropTypes.string.isRequired, quality: PropTypes.object.isRequired, releaseGroup: PropTypes.string, customFormats: PropTypes.arrayOf(PropTypes.object).isRequired, customFormatScore: PropTypes.number.isRequired, qualityCutoffNotMet: PropTypes.bool.isRequired, languages: PropTypes.arrayOf(PropTypes.object).isRequired, mediaInfo: PropTypes.object, dateAdded: PropTypes.string, columns: PropTypes.arrayOf(PropTypes.object).isRequired, onDeletePress: PropTypes.func.isRequired }; MovieFileEditorRow.defaultProps = { customFormats: [] }; export default MovieFileEditorRow;