import PropTypes from 'prop-types'; import React, { Component } from 'react'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import PageContent from 'Components/Page/PageContent'; import PageContentBody from 'Components/Page/PageContentBody'; import getSelectedIds from 'Utilities/Table/getSelectedIds'; import selectAll from 'Utilities/Table/selectAll'; import toggleSelected from 'Utilities/Table/toggleSelected'; import ImportSeriesFooterConnector from './ImportSeriesFooterConnector'; import ImportSeriesTableConnector from './ImportSeriesTableConnector'; class ImportSeries extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { allSelected: false, allUnselected: false, lastToggled: null, selectedState: {} }; } // // Control setScrollerRef = (ref) => { this.setState({ scroller: ref }); }; // // Listeners getSelectedIds = () => { return getSelectedIds(this.state.selectedState, { parseIds: false }); }; onSelectAllChange = ({ value }) => { // Only select non-dupes this.setState(selectAll(this.state.selectedState, value)); }; onSelectedChange = ({ id, value, shiftKey = false }) => { this.setState((state) => { return toggleSelected(state, this.props.items, id, value, shiftKey); }); }; onRemoveSelectedStateItem = (id) => { this.setState((state) => { const selectedState = Object.assign({}, state.selectedState); delete selectedState[id]; return { ...state, selectedState }; }); }; onInputChange = ({ name, value }) => { this.props.onInputChange(this.getSelectedIds(), name, value); }; onImportPress = () => { this.props.onImportPress(this.getSelectedIds()); }; onScroll = ({ scrollTop }) => { this.setState({ scrollTop }); }; // // Render render() { const { rootFolderId, path, rootFoldersFetching, rootFoldersPopulated, rootFoldersError, unmappedFolders, showLanguageProfile } = this.props; const { allSelected, allUnselected, selectedState, scroller } = this.state; return ( { rootFoldersFetching ? : null } { !rootFoldersFetching && !!rootFoldersError ?
Unable to load root folders
: null } { !rootFoldersError && !rootFoldersFetching && rootFoldersPopulated && !unmappedFolders.length ?
All series in {path} have been imported
: null } { !rootFoldersError && !rootFoldersFetching && rootFoldersPopulated && !!unmappedFolders.length && scroller ? : null }
{ !rootFoldersError && !rootFoldersFetching && !!unmappedFolders.length ? : null }
); } } ImportSeries.propTypes = { rootFolderId: PropTypes.number.isRequired, path: PropTypes.string, rootFoldersFetching: PropTypes.bool.isRequired, rootFoldersPopulated: PropTypes.bool.isRequired, rootFoldersError: PropTypes.object, unmappedFolders: PropTypes.arrayOf(PropTypes.object), items: PropTypes.arrayOf(PropTypes.object), showLanguageProfile: PropTypes.bool.isRequired, onInputChange: PropTypes.func.isRequired, onImportPress: PropTypes.func.isRequired }; ImportSeries.defaultProps = { unmappedFolders: [] }; export default ImportSeries;