import React, { PropTypes } from 'react' import moment from 'moment' import { findWhere, uniq } from 'lodash' import ModeIcon from 'boost/components/ModeIcon' import MarkdownPreview from 'boost/components/MarkdownPreview' import CodeEditor from 'boost/components/CodeEditor' import { NEW, IDLE_MODE, CREATE_MODE, EDIT_MODE, switchMode } from '../actions' import aceModes from 'boost/ace-modes' import Select from 'react-select' import linkState from 'boost/linkState' var modeOptions = aceModes.map(function (mode) { return { label: mode, value: mode } }) export default class ArticleDetail extends React.Component { constructor (props) { super(props) this.state = { article: Object.assign({}, props.activeArticle) } } componentWillReceiveProps (nextProps) { this.setState({article: nextProps.activeArticle}) } renderEmpty () { return (
Empty article
) } renderIdle () { let { status, activeArticle, activeUser } = this.props let tags = activeArticle.Tags.length > 0 ? activeArticle.Tags.map(tag => { return ( {tag.name} ) }) : ( Not tagged yet ) let folder = findWhere(activeUser.Folders, {id: activeArticle.FolderId}) let folderName = folder != null ? folder.name : '(unknown)' return (
{folderName}  by {activeArticle.User.profileName}  Created {moment(activeArticle.createdAt).format('YYYY/MM/DD')}  Updated {moment(activeArticle.updatedAt).format('YYYY/MM/DD')}
{tags}
{activeArticle.title}
{activeArticle.mode === 'markdown' ? : }
) } handleCancelButtonClick (e) { this.props.dispatch(switchMode(IDLE_MODE)) } handleSaveButtonClick (e) { console.log(this.state.article) } handleFolderIdChange (value) { let article = this.state.article article.FolderId = value this.setState({article: article}) } handleTagsChange (tag, tags) { tags = uniq(tags, function (tag) { return tag.value }) var article = this.state.article article.Tags = tags.map(function (tag) { return tag.value }) this.setState({article: article}) } handleModeChange (value) { let article = this.state.article article.mode = value this.setState({article: article}) } handleContentChange (e, value) { let article = this.state.article article.content = value this.setState({article: article}) } renderEdit () { let { status, activeUser } = this.props let folderOptions = activeUser.Folders.map(folder => { return { label: folder.name, value: folder.id } }) return (
this.handleTagsChange(tag, tags)} clearable={false} multi={true} placeholder='add some tags...' allowCreate={true} value={this.state.article.Tags} className='tags'/>