import PropTypes from 'prop-types'; import React, { Component } from 'react'; import Form from 'Components/Form/Form'; import FormGroup from 'Components/Form/FormGroup'; import FormInputGroup from 'Components/Form/FormInputGroup'; import FormLabel from 'Components/Form/FormLabel'; import Button from 'Components/Link/Button'; import SpinnerErrorButton from 'Components/Link/SpinnerErrorButton'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import Measure from 'Components/Measure'; import ModalBody from 'Components/Modal/ModalBody'; import ModalContent from 'Components/Modal/ModalContent'; import ModalFooter from 'Components/Modal/ModalFooter'; import ModalHeader from 'Components/Modal/ModalHeader'; import { inputTypes, kinds, sizes } from 'Helpers/Props'; import dimensions from 'Styles/Variables/dimensions'; import translate from 'Utilities/String/translate'; import QualityProfileFormatItems from './QualityProfileFormatItems'; import QualityProfileItems from './QualityProfileItems'; import styles from './EditQualityProfileModalContent.css'; const MODAL_BODY_PADDING = parseInt(dimensions.modalBodyPadding); function getCustomFormatRender(formatItems, otherProps) { return ( ); } class EditQualityProfileModalContent extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { headerHeight: 0, bodyHeight: 0, footerHeight: 0 }; } componentDidUpdate(prevProps, prevState) { const { headerHeight, bodyHeight, footerHeight } = this.state; if ( headerHeight > 0 && bodyHeight > 0 && footerHeight > 0 && ( headerHeight !== prevState.headerHeight || bodyHeight !== prevState.bodyHeight || footerHeight !== prevState.footerHeight ) ) { const padding = MODAL_BODY_PADDING * 2; this.props.onContentHeightChange( headerHeight + bodyHeight + footerHeight + padding ); } } // // Listeners onHeaderMeasure = ({ height }) => { if (height > this.state.headerHeight) { this.setState({ headerHeight: height }); } } onBodyMeasure = ({ height }) => { if (height > this.state.bodyHeight) { this.setState({ bodyHeight: height }); } } onFooterMeasure = ({ height }) => { if (height > this.state.footerHeight) { this.setState({ footerHeight: height }); } } // // Render render() { const { editGroups, isFetching, error, isSaving, saveError, qualities, customFormats, languages, item, isInUse, onInputChange, onCutoffChange, onLanguageChange, onSavePress, onModalClose, onDeleteQualityProfilePress, ...otherProps } = this.props; const { id, name, upgradeAllowed, cutoff, minFormatScore, cutoffFormatScore, language, items, formatItems } = item; const languageId = language ? language.value.id : 0; return ( {id ? translate('EditQualityProfile') : translate('AddQualityProfile')}
{ isFetching && } { !isFetching && !!error &&
{translate('UnableToAddANewQualityProfilePleaseTryAgain')}
} { !isFetching && !error &&
{translate('Name')} {translate('UpgradesAllowed')} { upgradeAllowed.value && {translate('UpgradeUntilQuality')} } { formatItems.value.length > 0 && {translate('MinimumCustomFormatScore')} } { upgradeAllowed.value && formatItems.value.length > 0 && {translate('UpgradeUntilCustomFormatScore')} } {translate('Language')}
{getCustomFormatRender(formatItems, ...otherProps)}
{getCustomFormatRender(formatItems, otherProps)}
}
{ id ?
: null } {translate('Save')}
); } } EditQualityProfileModalContent.propTypes = { editGroups: PropTypes.bool.isRequired, isFetching: PropTypes.bool.isRequired, error: PropTypes.object, isSaving: PropTypes.bool.isRequired, saveError: PropTypes.object, qualities: PropTypes.arrayOf(PropTypes.object).isRequired, customFormats: PropTypes.arrayOf(PropTypes.object).isRequired, languages: PropTypes.arrayOf(PropTypes.object).isRequired, item: PropTypes.object.isRequired, isInUse: PropTypes.bool.isRequired, onInputChange: PropTypes.func.isRequired, onCutoffChange: PropTypes.func.isRequired, onLanguageChange: PropTypes.func.isRequired, onSavePress: PropTypes.func.isRequired, onContentHeightChange: PropTypes.func.isRequired, onModalClose: PropTypes.func.isRequired, onDeleteQualityProfilePress: PropTypes.func }; export default EditQualityProfileModalContent;