var React = require('react/addons') var ReactRouter = require('react-router') var moment = require('moment') var ForceUpdate = require('../Mixins/ForceUpdate') var Markdown = require('../Mixins/Markdown') var PlanetArticleList = React.createClass({ mixins: [ReactRouter.Navigation, ReactRouter.State, ForceUpdate(60000), Markdown], propTypes: { articles: React.PropTypes.array, showOnlyWithTag: React.PropTypes.func }, handleKeyDown: function (e) { e.preventDefault() }, render: function () { var articles = this.props.articles.map(function (article) { var tags = article.Tags.length > 0 ? article.Tags.map(function (tag) { return ( #{tag.name} ) }.bind(this)) : ( Not tagged yet ) var params = this.getParams() var isActive = article.type === 'snippet' ? this.isActive('snippets') && parseInt(params.localId, 10) === article.localId : this.isActive('blueprints') && parseInt(params.localId, 10) === article.localId var handleClick if (article.type === 'snippet') { handleClick = function () { this.transitionTo('snippets', { userName: params.userName, planetName: params.planetName, localId: article.localId }) }.bind(this) return (
  • {article.callSign}
    {moment(article.updatedAt).fromNow()}
    {article.description.length > 50 ? article.description.substring(0, 50) + ' …' : article.description}
    {tags}
  • ) } handleClick = function () { this.transitionTo('blueprints', { userName: params.userName, planetName: params.planetName, localId: article.localId }) }.bind(this) return (
  • {article.title}
    {moment(article.updatedAt).fromNow()}
    {this.markdown(article.content.substring(0, 150)).replace(/(<([^>]+)>)/ig, '').substring(0, 75)}
    {tags}
  • ) }.bind(this)) return (
      {articles}
    ) } }) module.exports = PlanetArticleList