var AppActions = require('../actions/AppActions'); var Projects = require('../stores/Projects'); var React = require('react'); var ReactBootstrap = require('react-bootstrap'); var Button = ReactBootstrap.Button; var Glyphicon = ReactBootstrap.Glyphicon; var ListGroup = ReactBootstrap.ListGroup; var ListGroupItem = ReactBootstrap.ListGroupItem; var Nav = ReactBootstrap.Nav; var Navbar = ReactBootstrap.Navbar; var NavItem = ReactBootstrap.NavItem; var Panel = ReactBootstrap.Panel; var ProjectItem = React.createClass({ render: function() { return (
{this.props.project.name}

{this.props.project.description || ""}


); }, openProject: function() { AppActions.changeLocation({ project: this.props.project }); } }); var ProjectList = React.createClass({ getInitialState: function() { return { // listType should be 'my' or 'all' listType: 'my', myProjects: [], allProjects: [] } }, componentDidMount: function() { Projects.addMyProjectsLoadedListener(this.handleMyLoaded); Projects.addAllProjectsLoadedListener(this.handleAllLoaded); this.handleListSelect(this.state.listType); }, componentWillUnmount: function() { Projects.removeMyProjectsLoadedListener(this.handleMyLoaded); Projects.removeAllProjectsLoadedListener(this.handleAllLoaded); }, render: function() { var list =

No projects!

; var projects = null; if (this.state.listType == 'my') { projects = this.state.myProjects; } else { projects = this.state.allProjects; } if (projects.length > 0) { projects.sort(function(a, b) { return a.name.localeCompare(b.name); }); list = ( projects.map(function(project, index) { return ; }) ); } return ( { list } ) }, handleListSelect: function(listType) { if (listType == 'my') { AppActions.listMyProjects(); } else { AppActions.listAllProjects(); } }, handleMyLoaded: function(projects) { if (projects) { this.setState({ listType: 'my', myProjects: projects }); } }, handleAllLoaded: function(projects) { if (projects) { this.setState({ listType: 'all', allProjects: projects }); } }, handleCreateNew: function() { AppActions.changeLocation({ createProject: true }); } }); module.exports = ProjectList;