require('./userPage.less'); const React = require('react'); const createClass = require('create-react-class'); const _ = require('lodash'); const cx = require('classnames'); const Nav = require('naturalcrit/nav/nav.jsx'); const Navbar = require('../../navbar/navbar.jsx'); const RecentNavItem = require('../../navbar/recent.navitem.jsx').both; const Account = require('../../navbar/account.navitem.jsx'); const NewBrew = require('../../navbar/newbrew.navitem.jsx'); const BrewItem = require('./brewItem/brewItem.jsx'); // const brew = { // title : 'SUPER Long title woah now', // authors : [] // }; //const BREWS = _.times(25, ()=>{ return brew;}); const UserPage = createClass({ getDefaultProps : function() { return { username : '', brews : [], sortType : 'alpha', sortDir : 'desc' }; }, getInitialState : function() { return { sortType : 'alpha', sortDir : 'desc' }; }, getUsernameWithS : function() { if(this.props.username.endsWith('s')) return `${this.props.username}'`; return `${this.props.username}'s`; }, renderBrews : function(brews){ if(!brews || !brews.length) return
No Brews.
; const sortedBrews = this.sortBrews(brews, this.state.sortType); return _.map(sortedBrews, (brew, idx)=>{ return ; }); }, sortBrews : function(brews, sortType){ if(sortType == 'alpha') { return _.orderBy(brews, (brew)=>{ return _.deburr(brew.title.toLowerCase()); }, this.state.sortDir); } if(sortType == 'created'){ return _.orderBy(brews, (brew)=>{ return brew.createdAt; }, this.state.sortDir); } if(sortType == 'updated'){ return _.orderBy(brews, (brew)=>{ return brew.updatedAt; }, this.state.sortDir); } if(sortType == 'views'){ return _.orderBy(brews, (brew)=>{ return brew.views; }, this.state.sortDir); } if(sortType == 'latest'){ return _.orderBy(brews, (brew)=>{ return brew.lastViewed; }, this.state.sortDir); } return _.orderBy(brews, (brew)=>{ return _.deburr(brew.title.toLowerCase()); }, this.state.sortDir); }, handleSortOptionChange : function(event){ this.setState({ sortType : event.target.value }); }, handleSortDirChange : function(event){ const newDir = (this.state.sortDir == 'asc' ? 'desc' : 'asc'); this.setState({ sortDir : `${newDir}` }); }, renderSortOptions : function(){ return
Sort Type :
Direction :
; }, getSortedBrews : function(){ return _.groupBy(this.props.brews, (brew)=>{ return (brew.published ? 'published' : 'private'); }); }, render : function(){ const brews = this.getSortedBrews(); return
{this.renderSortOptions()}

{this.getUsernameWithS()} brews

{this.renderBrews(brews.published)}

{this.getUsernameWithS()} unpublished brews

{this.renderBrews(brews.private)}
; } }); module.exports = UserPage;