var React = require('react'); var MenuStore = require('../stores/MenuStore'); var MenuActions = require('../actions/MenuActions'); var MiddlePanelActions = require('../actions/MiddlePanelActions'); var FeedItem = React.createClass({ propTypes: {feed_id: React.PropTypes.number.isRequired, title: React.PropTypes.string.isRequired, unread: React.PropTypes.number.isRequired, icon_url: React.PropTypes.string, }, getInitialState: function() { return {feed_id: this.props.feed_id, title: this.props.title, unread: this.props.unread, icon_url: this.props.icon_url, }; }, render: function() { var unread = undefined; var icon = undefined; if(this.state.icon_url){ icon = (); } else { icon = (); } if(this.state.unread){ unread = ( {this.state.unread} ); } return (
  • {icon} {this.state.title} {unread}
  • ); }, handleClick: function() { MiddlePanelActions.setFeedFilter(this.state.feed_id); }, }); var Category = React.createClass({ propTypes: {category_id: React.PropTypes.number.isRequired, name: React.PropTypes.string.isRequired, feeds: React.PropTypes.array.isRequired, unread: React.PropTypes.number.isRequired, }, getInitialState: function() { return {category_id: this.props.category_id, name: this.props.name, feeds: this.props.feeds, unread: this.props.unread, }; }, render: function() { unread = undefined; if(this.state.unread){ unread = ( {this.state.unread} ); } return (

    {this.state.name} {unread}

    ); }, handleClick: function() { MiddlePanelActions.setCategoryFilter(this.state.category_id); }, }); var Menu = React.createClass({ getInitialState: function() { return {categories: [], all_unread_count: 0}; }, render: function() { return ( ); }, componentDidMount: function() { MenuActions.reload(); MenuStore.addChangeListener(this._onChange); }, componentWillUnmount: function() { MenuStore.removeChangeListener(this._onChange); }, _onChange: function() { var datas = MenuStore.getAll(); this.setState({categories: datas.categories, all_unread_count: datas.all_unread_count}); }, }); module.exports = Menu;