import PropTypes from 'prop-types'; import React, { Component } from 'react'; // import getProgressBarKind from 'Utilities/Series/getProgressBarKind'; import titleCase from 'Utilities/String/titleCase'; import { icons } from 'Helpers/Props'; import HeartRating from 'Components/HeartRating'; import IconButton from 'Components/Link/IconButton'; import SpinnerIconButton from 'Components/Link/SpinnerIconButton'; // import ProgressBar from 'Components/ProgressBar'; import TagListConnector from 'Components/TagListConnector'; // import CheckInput from 'Components/Form/CheckInput'; import VirtualTableRow from 'Components/Table/VirtualTableRow'; import VirtualTableRowCell from 'Components/Table/Cells/VirtualTableRowCell'; import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector'; import MovieTitleLink from 'Movie/MovieTitleLink'; import EditMovieModalConnector from 'Movie/Edit/EditMovieModalConnector'; import DeleteMovieModal from 'Movie/Delete/DeleteMovieModal'; import MovieStatusCell from './MovieStatusCell'; import MovieStatusConnector from 'Movie/MovieStatusConnector'; import VirtualTableSelectCell from 'Components/Table/Cells/VirtualTableSelectCell'; import styles from './MovieIndexRow.css'; class MovieIndexRow extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { isEditMovieModalOpen: false, isDeleteMovieModalOpen: false }; } onEditMoviePress = () => { this.setState({ isEditMovieModalOpen: true }); } onEditMovieModalClose = () => { this.setState({ isEditMovieModalOpen: false }); } onDeleteMoviePress = () => { this.setState({ isEditMovieModalOpen: false, isDeleteMovieModalOpen: true }); } onDeleteMovieModalClose = () => { this.setState({ isDeleteMovieModalOpen: false }); } onUseSceneNumberingChange = () => { // Mock handler to satisfy `onChange` being required for `CheckInput`. // } // // Render render() { const { style, id, monitored, status, title, titleSlug, studio, qualityProfile, added, inCinemas, physicalRelease, minimumAvailability, path, genres, ratings, certification, tags, showSearchAction, columns, isRefreshingMovie, isSearchingMovie, isMovieEditorActive, isSelected, onRefreshMoviePress, onSearchPress, onSelectedChange } = this.props; const { isEditMovieModalOpen, isDeleteMovieModalOpen } = this.state; return ( { columns.map((column) => { const { name, isVisible } = column; if (!isVisible) { return null; } if (isMovieEditorActive && name === 'select') { return ( ); } if (name === 'status') { return ( ); } if (name === 'sortTitle') { return ( ); } if (name === 'studio') { return ( {studio} ); } if (name === 'qualityProfileId') { return ( {qualityProfile.name} ); } if (name === 'added') { return ( ); } if (name === 'inCinemas') { return ( ); } if (name === 'physicalRelease') { return ( ); } if (name === 'minimumAvailability') { return ( {titleCase(minimumAvailability)} ); } if (name === 'path') { return ( {path} ); } if (name === 'genres') { const joinedGenres = genres.join(', '); return ( {joinedGenres} ); } if (name === 'movieStatus') { return ( ); } if (name === 'ratings') { return ( ); } if (name === 'certification') { return ( {certification} ); } if (name === 'tags') { return ( ); } if (name === 'actions') { return ( { showSearchAction && } ); } return null; }) } ); } } MovieIndexRow.propTypes = { style: PropTypes.object.isRequired, id: PropTypes.number.isRequired, monitored: PropTypes.bool.isRequired, status: PropTypes.string.isRequired, title: PropTypes.string.isRequired, titleSlug: PropTypes.string.isRequired, studio: PropTypes.string, qualityProfile: PropTypes.object.isRequired, added: PropTypes.string, inCinemas: PropTypes.string, physicalRelease: PropTypes.string, minimumAvailability: PropTypes.string.isRequired, path: PropTypes.string.isRequired, genres: PropTypes.arrayOf(PropTypes.string).isRequired, ratings: PropTypes.object.isRequired, certification: PropTypes.string, tags: PropTypes.arrayOf(PropTypes.number).isRequired, showSearchAction: PropTypes.bool.isRequired, columns: PropTypes.arrayOf(PropTypes.object).isRequired, isRefreshingMovie: PropTypes.bool.isRequired, isSearchingMovie: PropTypes.bool.isRequired, onRefreshMoviePress: PropTypes.func.isRequired, onSearchPress: PropTypes.func.isRequired, isMovieEditorActive: PropTypes.bool.isRequired, isSelected: PropTypes.bool, onSelectedChange: PropTypes.func.isRequired }; MovieIndexRow.defaultProps = { genres: [], tags: [] }; export default MovieIndexRow;