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
},
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})
},
render: function () {
return (
)
}
})
module.exports = SnippetContainer