import React from 'react' import { connect } from 'react-redux' import Sidebar from './Sidebar.jsx' import imgProfil from '../img/imgProfil.png' import { translate } from 'react-i18next' import Radium from 'radium' import color from 'color' import { PageWrapper, PageTitle, PageContent } from 'tracim_frontend_lib' import { getWorkspaceDetail, getWorkspaceMemberList } from '../action-creator.async.js' import { addFlashMessage, setWorkspaceDetail, setWorkspaceMemberList } from '../action-creator.sync.js' class Dashboard extends React.Component { constructor (props) { super(props) this.state = { workspaceIdInUrl: props.match.params.idws ? parseInt(props.match.params.idws) : null, // this is used to avoid handling the parseInt everytime displayNewMemberDashboard: false, displayNotifBtn: false, displayWebdavBtn: false, displayCalendarBtn: false } } async componentDidMount () { const { props, state } = this const fetchWorkspaceDetail = await props.dispatch(getWorkspaceDetail(props.user, state.workspaceIdInUrl)) switch (fetchWorkspaceDetail.status) { case 200: props.dispatch(setWorkspaceDetail(fetchWorkspaceDetail.json)) break case 400: case 500: props.dispatch(addFlashMessage(props.t('An error has happened'), 'warning')) break } const fetchWorkspaceMemberList = await props.dispatch(getWorkspaceMemberList(props.user, state.workspaceIdInUrl)) switch (fetchWorkspaceMemberList.status) { case 200: props.dispatch(setWorkspaceMemberList(fetchWorkspaceMemberList.json)) break case 400: case 500: props.dispatch(addFlashMessage(props.t('An error has happened'), 'warning')) break } } handleToggleNewMemberDashboard = () => this.setState(prevState => ({ displayNewMemberDashboard: !prevState.displayNewMemberDashboard })) handleToggleNotifBtn = () => this.setState(prevState => ({ displayNotifBtn: !prevState.displayNotifBtn })) handleToggleWebdavBtn = () => this.setState(prevState => ({ displayWebdavBtn: !prevState.displayWebdavBtn })) handleToggleCalendarBtn = () => this.setState(prevState => ({ displayCalendarBtn: !prevState.displayCalendarBtn })) render () { const { props, state } = this return (
{props.curWs.label}
{props.curWs.description}
{props.t(`Hi ! ${props.user.public_name}, vous êtes actuellement`)}
{(member => member ? member.role : '')(props.curWs.member.find(m => m.id === props.user.user_id))}
{props.t("You have subscribed to this workspace's notifications")} (nyi)
{state.displayNotifBtn ? (
{props.t('subscriber')}
{props.t('unsubscribed')}
) : (
{props.t('Change your status')}
) }
{props.contentType.map(ct =>
{ct.creationLabel}
)}
{this.props.t('Recent activity')}
{this.props.t('Mark everything as read')}
Développement Tracim
{this.props.t('See more')}
{this.props.t('Member List')}
{this.state.displayNewMemberDashboard === false &&
  • avatar
    Jean Dupont
    Responsable
{this.props.t('Add a member')}
} {this.state.displayNewMemberDashboard === true &&
{this.props.t('Create an account')}
{this.props.t('Choose the role of the member')}
  • {this.props.t('Supervisor')}
}
{this.props.t('Implement Tracim in your explorer')}
{this.state.displayWebdavBtn === true &&
{this.props.t('Find all your documents deposited online directly on your computer via the workstation, without going through the software.')}'
http://algoo.trac.im/webdav/
}
{this.props.t('Workspace Calendar')}
{this.state.displayCalendarBtn === true &&
{this.props.t('Each workspace has its own calendar.')}
http://algoo.trac.im/calendar/
}
) } } const mapStateToProps = ({ user, contentType, currentWorkspace }) => ({ user, contentType, curWs: currentWorkspace }) export default connect(mapStateToProps)(translate()(Radium(Dashboard)))