WorkspaceContent.jsx 2.6KB

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. getAppList,
  12. getWorkspaceContent
  13. } from '../action-creator.async.js'
  14. // import appDatabase from '../app/index.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(getAppList())
  25. }
  26. handleClickFileItem = file => {
  27. GLOBAL_renderApp({
  28. file,
  29. appData: this.props.app[file.type]
  30. })
  31. }
  32. render () {
  33. const { workspace, app } = this.props
  34. // const AppContainer = (appDatabase.find(p => p.name === activeFileContent.type) || {container: '<div>unknow</div>'}).container
  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 app={app} folderData={c} key={c.id} />
  49. : (
  50. <FileItem
  51. name={c.title}
  52. type={c.type}
  53. icon={(app[c.type] || {icon: ''}).icon}
  54. status={c.status}
  55. onClickItem={() => this.handleClickFileItem(c)}
  56. key={c.id}
  57. />
  58. )
  59. )}
  60. </div>
  61. <DropdownCreateButton customClass='workspace__content__button mb-5' />
  62. <div id='appContainer'>
  63. {/* activeFileContent.display && <AppContainer /> */}
  64. </div>
  65. </PageContent>
  66. </PageWrapper>
  67. )
  68. }
  69. }
  70. const mapStateToProps = ({ workspace, activeFileContent, app }) => ({ workspace, activeFileContent, app })
  71. export default connect(mapStateToProps)(WorkspaceContent)