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