From 887f3a72ba51e17d0ef6f608d6a163177f394676 Mon Sep 17 00:00:00 2001 From: gopienkonikita Date: Mon, 2 Mar 2020 11:48:53 +0300 Subject: [PATCH] Web: Files: added onSelect function for tree root folders --- .../src/components/Article/Body/index.js | 129 ++++++++++++------ .../Client/src/store/files/selectors.js | 4 +- 2 files changed, 93 insertions(+), 40 deletions(-) diff --git a/products/ASC.Files/Client/src/components/Article/Body/index.js b/products/ASC.Files/Client/src/components/Article/Body/index.js index 26df1ec39d..d4fd07ebbb 100644 --- a/products/ASC.Files/Client/src/components/Article/Body/index.js +++ b/products/ASC.Files/Client/src/components/Article/Body/index.js @@ -4,10 +4,19 @@ import { utils, TreeMenu, TreeNode, - Icons + Icons, + toastr } 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 store from "../../../store/store"; const getItems = data => { return data.map(item => { @@ -49,13 +58,15 @@ const getItems = data => { }; class ArticleBodyContent extends React.Component { - 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; } - if (!utils.array.isArrayEqual(nextProps.data, this.props.data)) { + if (!utils.array.isArrayEqual(nextProps.data, data)) { return true; } @@ -64,8 +75,47 @@ class ArticleBodyContent extends React.Component { onSelect = 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); }; @@ -75,13 +125,9 @@ class ArticleBodyContent extends React.Component { return null; } if (obj.expanded) { - return ( - - ); + return ; } else { - return ( - - ); + return ; } }; @@ -90,42 +136,49 @@ class ArticleBodyContent extends React.Component { //console.log("FilesTreeMenu", this.props); - return ( - data.map((item, index) => - console.log("onBadgeClick")} - > - {getItems(item)} - - ) - ); - }; + return data.map((item, index) => ( + console.log("onBadgeClick")} + > + {getItems(item)} + + )); + } }; function mapStateToProps(state) { - const currentFolderId = state.files.selectedFolder.id.toString(); + const { rootFolders, selectedFolder } = state.files; + const currentFolderId = selectedFolder.id.toString(); const fakeNewDocuments = 8; return { data: getRootFolders(state.files), selectedKeys: state.files.selectedFolder ? [currentFolderId] : [""], fakeNewDocuments, - currentModule: currentFolderId + currentModule: currentFolderId, + rootFolders }; } -export default connect(mapStateToProps, { selectFolder })(ArticleBodyContent); \ No newline at end of file +export default connect(mapStateToProps, { + selectFolder, + fetchMyFolder, + //fetchShareFolder, + fetchCommonFolder, + fetchProjectsFolder, + fetchTrashFolder +})(ArticleBodyContent); \ No newline at end of file diff --git a/products/ASC.Files/Client/src/store/files/selectors.js b/products/ASC.Files/Client/src/store/files/selectors.js index 54336856a1..8d9b9c5dc2 100644 --- a/products/ASC.Files/Client/src/store/files/selectors.js +++ b/products/ASC.Files/Client/src/store/files/selectors.js @@ -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 myDocumentsFolder = getTreeGroups(folders, selectedFolder.title, my.id); + const myDocumentsFolder = getTreeGroups(folders, my.title, my.id); const sharedWithMeFolder = getTreeGroups( getFakeFolders(4), defaultFolders[1],