import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import MediaQuery from 'react-responsive'; import { gettext, storages } from '../../utils/constants'; import MylibRepoListItem from './mylib-repo-list-item'; import LibsMobileThead from '../../components/libs-mobile-thead'; const propTypes = { sortBy: PropTypes.string.isRequired, sortOrder: PropTypes.string.isRequired, repoList: PropTypes.array.isRequired, sortRepoList: PropTypes.func.isRequired, onRenameRepo: PropTypes.func.isRequired, onDeleteRepo: PropTypes.func.isRequired, onTransferRepo: PropTypes.func.isRequired, onMonitorRepo: PropTypes.func.isRequired, inAllLibs: PropTypes.bool, // for 'My Libraries' in 'Files' page currentViewMode: PropTypes.string, }; class MylibRepoListView extends React.Component { constructor(props) { super(props); this.state = { isItemFreezed: false, }; } onFreezedItem = () => { this.setState({isItemFreezed: true}); }; onUnfreezedItem = () => { this.setState({isItemFreezed: false}); }; sortByName = (e) => { e.preventDefault(); const sortBy = 'name'; const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc'; this.props.sortRepoList(sortBy, sortOrder); }; sortByTime = (e) => { e.preventDefault(); const sortBy = 'time'; const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc'; this.props.sortRepoList(sortBy, sortOrder); }; sortBySize = (e) => { e.preventDefault(); const sortBy = 'size'; const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc'; this.props.sortRepoList(sortBy, sortOrder); }; renderRepoListView = () => { return ( {this.props.repoList.map(item => { return ( ); })} ); }; renderPCUI = () => { const { inAllLibs, currentViewMode = 'list' } = this.props; const showStorageBackend = !inAllLibs && storages.length > 0; const sortIcon = this.props.sortOrder === 'asc' ? : ; return currentViewMode == 'list' ? ( {showStorageBackend ? : null} {this.renderRepoListView()}
{gettext('Library Type')} {gettext('Name')} {this.props.sortBy === 'name' && sortIcon} {gettext('Actions')} {gettext('Size')} {this.props.sortBy === 'size' && sortIcon}{gettext('Storage Backend')}{gettext('Last Update')} {this.props.sortBy === 'time' && sortIcon}
) : (
{this.renderRepoListView()}
); }; renderMobileUI = () => { return ( {this.renderRepoListView()}
); }; render() { return ( {this.renderPCUI()} {this.renderMobileUI()} ); } } MylibRepoListView.propTypes = propTypes; export default MylibRepoListView;