import _ from 'lodash'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; import CheckInput from 'Components/Form/CheckInput'; import FormInputGroup from 'Components/Form/FormInputGroup'; import Icon from 'Components/Icon'; import Button from 'Components/Link/Button'; import SpinnerButton from 'Components/Link/SpinnerButton'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import PageContentFooter from 'Components/Page/PageContentFooter'; import Popover from 'Components/Tooltip/Popover'; import { icons, inputTypes, kinds, tooltipPositions } from 'Helpers/Props'; import translate from 'Utilities/String/translate'; import styles from './ImportSeriesFooter.css'; const MIXED = 'mixed'; class ImportSeriesFooter extends Component { // // Lifecycle constructor(props, context) { super(props, context); const { defaultMonitor, defaultQualityProfileId, defaultSeasonFolder, defaultSeriesType } = props; this.state = { monitor: defaultMonitor, qualityProfileId: defaultQualityProfileId, seriesType: defaultSeriesType, seasonFolder: defaultSeasonFolder }; } componentDidUpdate(prevProps, prevState) { const { defaultMonitor, defaultQualityProfileId, defaultSeriesType, defaultSeasonFolder, isMonitorMixed, isQualityProfileIdMixed, isSeriesTypeMixed, isSeasonFolderMixed } = this.props; const { monitor, qualityProfileId, seriesType, seasonFolder } = this.state; const newState = {}; if (isMonitorMixed && monitor !== MIXED) { newState.monitor = MIXED; } else if (!isMonitorMixed && monitor !== defaultMonitor) { newState.monitor = defaultMonitor; } if (isQualityProfileIdMixed && qualityProfileId !== MIXED) { newState.qualityProfileId = MIXED; } else if (!isQualityProfileIdMixed && qualityProfileId !== defaultQualityProfileId) { newState.qualityProfileId = defaultQualityProfileId; } if (isSeriesTypeMixed && seriesType !== MIXED) { newState.seriesType = MIXED; } else if (!isSeriesTypeMixed && seriesType !== defaultSeriesType) { newState.seriesType = defaultSeriesType; } if (isSeasonFolderMixed && seasonFolder != null) { newState.seasonFolder = null; } else if (!isSeasonFolderMixed && seasonFolder !== defaultSeasonFolder) { newState.seasonFolder = defaultSeasonFolder; } if (!_.isEmpty(newState)) { this.setState(newState); } } // // Listeners onInputChange = ({ name, value }) => { this.setState({ [name]: value }); this.props.onInputChange({ name, value }); }; // // Render render() { const { selectedCount, isImporting, isLookingUpSeries, isMonitorMixed, isQualityProfileIdMixed, isSeriesTypeMixed, hasUnsearchedItems, importError, onImportPress, onLookupPress, onCancelLookupPress } = this.props; const { monitor, qualityProfileId, seriesType, seasonFolder } = this.state; return (
{translate('Monitor')}
{translate('QualityProfile')}
{translate('SeriesType')}
{translate('SeasonFolder')}
 
{translate('ImportCountSeries', { selectedCount })} { isLookingUpSeries ? : null } { hasUnsearchedItems ? : null } { isLookingUpSeries ? : null } { isLookingUpSeries ? translate('ProcessingFolders') : null } { importError ? } title={translate('ImportErrors')} body={
    { Array.isArray(importError.responseJSON) ? importError.responseJSON.map((error, index) => { return (
  • {error.errorMessage}
  • ); }) :
  • { JSON.stringify(importError.responseJSON) }
  • }
} position={tooltipPositions.RIGHT} /> : null }
); } } ImportSeriesFooter.propTypes = { selectedCount: PropTypes.number.isRequired, isImporting: PropTypes.bool.isRequired, isLookingUpSeries: PropTypes.bool.isRequired, defaultMonitor: PropTypes.string.isRequired, defaultQualityProfileId: PropTypes.number, defaultSeriesType: PropTypes.string.isRequired, defaultSeasonFolder: PropTypes.bool.isRequired, isMonitorMixed: PropTypes.bool.isRequired, isQualityProfileIdMixed: PropTypes.bool.isRequired, isSeriesTypeMixed: PropTypes.bool.isRequired, isSeasonFolderMixed: PropTypes.bool.isRequired, hasUnsearchedItems: PropTypes.bool.isRequired, importError: PropTypes.object, onInputChange: PropTypes.func.isRequired, onImportPress: PropTypes.func.isRequired, onLookupPress: PropTypes.func.isRequired, onCancelLookupPress: PropTypes.func.isRequired }; export default ImportSeriesFooter;