var React = require('react/addons') var Snippet = require('../Services/Snippet') var CodeViewer = require('../Components/CodeViewer') var SnippetList = React.createClass({ propTypes: { snippets: React.PropTypes.array, selectSnippet: React.PropTypes.func, currentSnippet: React.PropTypes.object }, itemClickHandlerFactory: function (snippet) { return function () { this.props.selectSnippet(snippet) }.bind(this) }, render: function () { var snippets = this.props.snippets.map(function (snippet) { var tags = snippet.Tags.map(function (tag) { return ( #{tag.name} ) }) return (
  • {snippet.callSign}
    {snippet.description}
    {snippet.updatedAt}
    {tags}
  • ) }.bind(this)) return (
    ) } }) var SnippetViewer = React.createClass({ propTypes: { snippet: React.PropTypes.object }, render: function () { var snippet = this.props.snippet var content if (snippet != null) { var tags = snippet.Tags.map(function (tag) { return ( #{tag.name} ) }) content = (
    {snippet.callSign} {snippet.updatedAt}
    {snippet.description}
    {tags}
    ) } else { content = (
    Not selected
    ) } return content } }) var SnippetContainer = React.createClass({ propTypes: { params: React.PropTypes.shape({ planetName: React.PropTypes.string }) }, getInitialState: function () { return { snippets: [], curentSnippet: {} } }, componentDidMount: function () { Snippet.getByPlanet(this.props.params.planetName) .then(function (snippets) { this.setState({snippets: snippets, currentSnippet: snippets.length > 0 ? snippets[0] : null}) }.bind(this)) }, selectSnippet: function (snippet) { this.setState({currentSnippet: snippet}) }, updateSnippet: function (snippet) { var snippets = this.state.snippets.map(function (_snippet) { if (snippet.id === _snippet.id) { return snippet } return _snippet }) var currentSnippet = this.state.currentSnippet.id === snippet.id ? snippet : this.state.currentSnippet this.setState({snippets: snippets, currentSnippet: currentSnippet}) }, destroySnippet: function (snippet) { var snippets = this.state.snippets var currentSnippet = this.state.currentSnippet if (currentSnippet.id === snippet.id) { var index snippets.some(function (_snippet, _index) { if (snippet.id === _snippet.id) { index = _index return true } return false }) if (index == null) { index = 0 } else if (index > snippet.length - 1) { index-- } else { index++ } if (snippets.length > 0) { currentSnippet = snippets[index] } else { currentSnippet = {} } } snippets = snippets.filter(function (_snippet, index) { if (snippet.id === _snippet.id) { return false } return true }) this.setState({snippets: snippets, currentSnippet: currentSnippet}) }, render: function () { return (
    ) } }) module.exports = SnippetContainer