Web: Files: added onSelect function for tree root folders

This commit is contained in:
Nikita Gopienko 2020-03-02 11:48:53 +03:00
parent 948d43a05d
commit 887f3a72ba
2 changed files with 93 additions and 40 deletions

View File

@ -4,10 +4,19 @@ import {
utils, utils,
TreeMenu, TreeMenu,
TreeNode, TreeNode,
Icons Icons,
toastr
} from "asc-web-components"; } from "asc-web-components";
import { selectFolder } from '../../../store/files/actions'; import {
selectFolder,
fetchMyFolder,
//fetchShareFolder,
fetchCommonFolder,
fetchProjectsFolder,
fetchTrashFolder
} from "../../../store/files/actions";
import { getRootFolders } from "../../../store/files/selectors"; import { getRootFolders } from "../../../store/files/selectors";
import store from "../../../store/store";
const getItems = data => { const getItems = data => {
return data.map(item => { return data.map(item => {
@ -49,13 +58,15 @@ const getItems = data => {
}; };
class ArticleBodyContent extends React.Component { class ArticleBodyContent extends React.Component {
shouldComponentUpdate(nextProps) { shouldComponentUpdate(nextProps) {
if (!utils.array.isArrayEqual(nextProps.selectedKeys, this.props.selectedKeys)) { const { selectedKeys, data } = this.props;
if (
!utils.array.isArrayEqual(nextProps.selectedKeys, selectedKeys)
) {
return true; return true;
} }
if (!utils.array.isArrayEqual(nextProps.data, this.props.data)) { if (!utils.array.isArrayEqual(nextProps.data, data)) {
return true; return true;
} }
@ -64,8 +75,47 @@ class ArticleBodyContent extends React.Component {
onSelect = data => { onSelect = data => {
console.log("onSelect document", data); console.log("onSelect document", data);
if(this.props.currentModule !== data) {
//UpdatePage const currentModuleId = Number(data[0]);
const { currentModule, rootFolders } = this.props;
if (currentModule !== currentModuleId) {
const { my, share, common, project, trash } = rootFolders;
switch (currentModuleId) {
case my.id:
fetchMyFolder(store.dispatch)
.then(() => console.log("fetchMyFolder then"))
.catch(() => toastr.error("Error fetchMyFolder") )
.finally(() => console.log("fetchMyFolder finally"));
break;
/*case share.id:
fetchSharedFolder(store.dispatch)
.then(() => console.log("then"))
.catch(() => toastr.error("Error fetchSharedFolder"))
.finally(() => console.log("finally"));
break;*/
case common.id:
fetchCommonFolder(store.dispatch)
.then(() => console.log("fetchCommonFolder then"))
.catch(() => toastr.error("Error fetchCommonFolder"))
.finally(() => console.log("fetchCommonFolder finally"));
break;
case project.id:
fetchProjectsFolder(store.dispatch)
.then(() => console.log("fetchProjectsFolder then"))
.catch(() => toastr.error("Error fetchProjectsFolder"))
.finally(() => console.log("fetchProjectsFolder finally"));
break;
case trash.id:
fetchTrashFolder(store.dispatch)
.then(() => console.log("fetchTrashFolder then"))
.catch(() => toastr.error("Error fetchTrashFolder"))
.finally(() => console.log("fetchTrashFolder finally"));
break;
default:
break;
}
} }
//this.props.selectFolder(data && data.length === 1 && data[0] !== "root" ? data[0] : null); //this.props.selectFolder(data && data.length === 1 && data[0] !== "root" ? data[0] : null);
}; };
@ -75,13 +125,9 @@ class ArticleBodyContent extends React.Component {
return null; return null;
} }
if (obj.expanded) { if (obj.expanded) {
return ( return <Icons.ExpanderDownIcon size="scale" isfill color="dimgray" />;
<Icons.ExpanderDownIcon size="scale" isfill color="dimgray" />
);
} else { } else {
return ( return <Icons.ExpanderRightIcon size="scale" isfill color="dimgray" />;
<Icons.ExpanderRightIcon size="scale" isfill color="dimgray" />
);
} }
}; };
@ -90,8 +136,7 @@ class ArticleBodyContent extends React.Component {
//console.log("FilesTreeMenu", this.props); //console.log("FilesTreeMenu", this.props);
return ( return data.map((item, index) => (
data.map((item, index) =>
<TreeMenu <TreeMenu
key={`TreeMenu_${index}`} key={`TreeMenu_${index}`}
className="files-tree-menu" className="files-tree-menu"
@ -109,23 +154,31 @@ class ArticleBodyContent extends React.Component {
> >
{getItems(item)} {getItems(item)}
</TreeMenu> </TreeMenu>
) ));
); }
};
}; };
function mapStateToProps(state) { function mapStateToProps(state) {
const currentFolderId = state.files.selectedFolder.id.toString(); const { rootFolders, selectedFolder } = state.files;
const currentFolderId = selectedFolder.id.toString();
const fakeNewDocuments = 8; const fakeNewDocuments = 8;
return { return {
data: getRootFolders(state.files), data: getRootFolders(state.files),
selectedKeys: state.files.selectedFolder ? [currentFolderId] : [""], selectedKeys: state.files.selectedFolder ? [currentFolderId] : [""],
fakeNewDocuments, fakeNewDocuments,
currentModule: currentFolderId currentModule: currentFolderId,
rootFolders
}; };
} }
export default connect(mapStateToProps, { selectFolder })(ArticleBodyContent); export default connect(mapStateToProps, {
selectFolder,
fetchMyFolder,
//fetchShareFolder,
fetchCommonFolder,
fetchProjectsFolder,
fetchTrashFolder
})(ArticleBodyContent);

View File

@ -35,10 +35,10 @@ export const getRootFolders = files => {
"Документы проектов", "Документы проектов",
"Корзина" "Корзина"
]; ];
const { folders, selectedFolder, rootFolders } = files; const { folders, rootFolders } = files;
const { my, share, common, project, trash } = rootFolders; const { my, share, common, project, trash } = rootFolders;
const myDocumentsFolder = getTreeGroups(folders, selectedFolder.title, my.id); const myDocumentsFolder = getTreeGroups(folders, my.title, my.id);
const sharedWithMeFolder = getTreeGroups( const sharedWithMeFolder = getTreeGroups(
getFakeFolders(4), getFakeFolders(4),
defaultFolders[1], defaultFolders[1],