WorkspaceContent.jsx 3.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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 { FETCH_CONFIG } from '../helper.js'
  11. import {
  12. getAppList,
  13. getWorkspaceContent
  14. } from '../action-creator.async.js'
  15. // import appDatabase from '../app/index.js'
  16. class WorkspaceContent extends React.Component {
  17. constructor (props) {
  18. super(props)
  19. this.state = {
  20. activeFileType: ''
  21. }
  22. }
  23. componentDidMount () {
  24. this.props.dispatch(getWorkspaceContent(/* this.props.workspace.id */1))
  25. this.props.dispatch(getAppList())
  26. }
  27. handleClickContentItem = content => {
  28. const { user, workspace } = this.props
  29. GLOBAL_renderApp({
  30. workspace: {
  31. id: workspace.id,
  32. title: workspace.title
  33. },
  34. appConfig: {
  35. ...this.props.app[content.type],
  36. apiUrl: FETCH_CONFIG.apiUrl
  37. },
  38. loggedUser: user.isLoggedIn ? user : {},
  39. content,
  40. })
  41. }
  42. render () {
  43. const { workspace, app } = this.props
  44. // const AppContainer = (appDatabase.find(p => p.name === activeFileContent.type) || {container: '<div>unknow</div>'}).container
  45. return (
  46. <PageWrapper customeClass='workspace'>
  47. <PageTitle
  48. parentClass='workspace__header'
  49. customClass='justify-content-between'
  50. title={workspace.title}
  51. >
  52. <DropdownCreateButton parentClass='workspace__header__btnaddworkspace' />
  53. </PageTitle>
  54. <PageContent parentClass='workspace__content'>
  55. <div className='workspace__content__fileandfolder folder__content active'>
  56. <FileItemHeader />
  57. { workspace.content.map((c, i) => c.type === 'folder'
  58. ? <Folder app={app} folderData={c} key={c.id} isLast={i === workspace.content.length - 1} />
  59. : (
  60. <FileItem
  61. name={c.title}
  62. type={c.type}
  63. icon={(app[c.type] || {icon: ''}).icon}
  64. status={c.status}
  65. onClickItem={() => this.handleClickContentItem(c)}
  66. isLast={i === workspace.content.length - 1}
  67. key={c.id}
  68. />
  69. )
  70. )}
  71. </div>
  72. <DropdownCreateButton customClass='workspace__content__button mb-5' />
  73. <div id='appContainer'>
  74. {/* activeFileContent.display && <AppContainer /> */}
  75. </div>
  76. </PageContent>
  77. </PageWrapper>
  78. )
  79. }
  80. }
  81. const mapStateToProps = ({ user, workspace, activeFileContent, app }) => ({ user, workspace, activeFileContent, app })
  82. export default connect(mapStateToProps)(WorkspaceContent)