import PropTypes from 'prop-types'; import React, { Component } from 'react'; import Card from 'Components/Card'; import Label from 'Components/Label'; import IconButton from 'Components/Link/IconButton'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import Tooltip from 'Components/Tooltip/Tooltip'; import { icons, kinds, tooltipPositions } from 'Helpers/Props'; import EditQualityProfileModalConnector from './EditQualityProfileModalConnector'; import styles from './QualityProfile.css'; class QualityProfile extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { isEditQualityProfileModalOpen: false, isDeleteQualityProfileModalOpen: false }; } // // Listeners onEditQualityProfilePress = () => { this.setState({ isEditQualityProfileModalOpen: true }); } onEditQualityProfileModalClose = () => { this.setState({ isEditQualityProfileModalOpen: false }); } onDeleteQualityProfilePress = () => { this.setState({ isEditQualityProfileModalOpen: false, isDeleteQualityProfileModalOpen: true }); } onDeleteQualityProfileModalClose = () => { this.setState({ isDeleteQualityProfileModalOpen: false }); } onConfirmDeleteQualityProfile = () => { this.props.onConfirmDeleteQualityProfile(this.props.id); } onCloneQualityProfilePress = () => { const { id, onCloneQualityProfilePress } = this.props; onCloneQualityProfilePress(id); } // // Render render() { const { id, name, upgradeAllowed, cutoff, items, isDeleting } = this.props; return (
{name}
{ items.map((item) => { if (!item.allowed) { return null; } if (item.quality) { const isCutoff = upgradeAllowed && item.quality.id === cutoff; return ( ); } const isCutoff = upgradeAllowed && item.id === cutoff; return ( {item.name} } tooltip={
{ item.items.map((groupItem) => { return ( ); }) }
} kind={kinds.INVERSE} position={tooltipPositions.TOP} /> ); }) }
); } } QualityProfile.propTypes = { id: PropTypes.number.isRequired, name: PropTypes.string.isRequired, upgradeAllowed: PropTypes.bool.isRequired, cutoff: PropTypes.number.isRequired, items: PropTypes.arrayOf(PropTypes.object).isRequired, isDeleting: PropTypes.bool.isRequired, onConfirmDeleteQualityProfile: PropTypes.func.isRequired, onCloneQualityProfilePress: PropTypes.func.isRequired }; export default QualityProfile;