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';
import { LIST_MODE } from '../../components/dir-view-mode/constants';
import ContextMenu from '../../components/context-menu/context-menu';
import { Utils } from '../../utils/utils';
import { hideMenu, handleContextClick } from '../../components/context-menu/actions';
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,
};
this.repoItems = [];
}
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);
};
onContextMenu = (event, repo) => {
event.preventDefault();
const id = 'mylib-repo-item-menu';
const menuList = Utils.getRepoOperationList(repo);
handleContextClick(event, id, menuList, repo);
};
setRepoItemRef = (index) => item => {
this.repoItems[index] = item;
};
getRepoIndex = (repo) => {
return this.props.repoList.findIndex(item => {
return item.repo_id === repo.repo_id;
});
};
onMenuItemClick = (operation, currentObject) => {
const index = this.getRepoIndex(currentObject);
this.repoItems[index].onMenuItemClick(operation);
hideMenu();
};
renderRepoListView = () => {
return (
{gettext('Library Type')} | {gettext('Name')} {this.props.sortBy === 'name' && sortIcon} | {gettext('Actions')} | {gettext('Size')} {this.props.sortBy === 'size' && sortIcon} | {showStorageBackend ?{gettext('Storage Backend')} | : null}{gettext('Last Update')} {this.props.sortBy === 'time' && sortIcon} |
---|