WorkspaceContent.jsx 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import React from 'react'
  2. import { connect } from 'react-redux'
  3. import Folder from '../component/Workspace/Folder.jsx'
  4. import FileItem from '../component/Workspace/FileItem.jsx'
  5. import FileItemHeader from '../component/Workspace/FileItemHeader.jsx'
  6. import PageWrapper from '../component/common/layout/PageWrapper.jsx'
  7. import PageTitle from '../component/common/layout/PageTitle.jsx'
  8. import PageContent from '../component/common/layout/PageContent.jsx'
  9. import DropdownCreateButton from '../component/common/Input/DropdownCreateButton.jsx'
  10. import {
  11. getPluginList,
  12. getWorkspaceContent
  13. } from '../action-creator.async.js'
  14. import { setActiveFileContent, hideActiveFileContent } from '../action-creator.sync.js'
  15. class WorkspaceContent extends React.Component {
  16. constructor (props) {
  17. super(props)
  18. this.state = {
  19. activeFileType: ''
  20. }
  21. }
  22. componentDidMount () {
  23. this.props.dispatch(getWorkspaceContent(/* this.props.workspace.id */1))
  24. this.props.dispatch(getPluginList())
  25. }
  26. handleClickFileItem = file => {
  27. console.log(file)
  28. this.props.dispatch(setActiveFileContent(file))
  29. }
  30. handleClickCloseBtn = () => {
  31. this.props.dispatch(hideActiveFileContent())
  32. }
  33. render () {
  34. const { workspace, activeFileContent } = this.props
  35. return (
  36. <PageWrapper customeClass='workspace'>
  37. <PageTitle
  38. parentClass='workspace__header'
  39. customClass='justify-content-between'
  40. title={workspace.title}
  41. >
  42. <DropdownCreateButton parentClass='workspace__header__btnaddworkspace' />
  43. </PageTitle>
  44. <PageContent parentClass='workspace__content'>
  45. <div className='workspace__content__fileandfolder folder__content active'>
  46. <FileItemHeader />
  47. { workspace.content.map(c => c.type === 'folder'
  48. ? <Folder folderData={c} key={c.id} />
  49. : (
  50. <FileItem
  51. name={c.title}
  52. type={c.type}
  53. status={c.status}
  54. onClickItem={() => this.handleClickFileItem(c)}
  55. key={c.id}
  56. />
  57. )
  58. )}
  59. </div>
  60. <DropdownCreateButton customClass='workspace__content__button mb-5' />
  61. <div id='pluginContainer'>
  62. </div>
  63. </PageContent>
  64. </PageWrapper>
  65. )
  66. }
  67. }
  68. const mapStateToProps = ({ workspace, activeFileContent }) => ({ workspace, activeFileContent })
  69. export default connect(mapStateToProps)(WorkspaceContent)