require('./userPage.less'); const React = require('react'); const createClass = require('create-react-class'); const _ = require('lodash'); const cx = require('classnames'); const moment = require('moment'); 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 ReportIssue = require('../../navbar/issue.navitem.jsx'); // const brew = { // title : 'SUPER Long title woah now', // authors : [] // }; //const BREWS = _.times(25, ()=>{ return brew;}); const UserPage = createClass({ getDefaultProps : function() { return { username : '', brews : [], }; }, getInitialState : function() { return { sortType : 'alpha', sortDir : 'asc', filterString : '' }; }, 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); return _.map(sortedBrews, (brew, idx)=>{ return ; }); }, sortBrewOrder : function(brew){ if(!brew.title){brew.title = 'No Title';} const mapping = { 'alpha' : _.deburr(brew.title.toLowerCase()), 'created' : moment(brew.createdAt).format(), 'updated' : moment(brew.updatedAt).format(), 'views' : brew.views, 'latest' : moment(brew.lastViewed).format() }; return mapping[this.state.sortType]; }, sortBrews : function(brews){ return _.orderBy(brews, (brew)=>{ return this.sortBrewOrder(brew); }, this.state.sortDir); }, handleSortOptionChange : function(event){ this.setState({ sortType : event.target.value }); }, handleSortDirChange : function(event){ this.setState({ sortDir : `${(this.state.sortDir == 'asc' ? 'desc' : 'asc')}` }); }, renderSortOption : function(sortTitle, sortValue){ return ; }, handleFilterTextChange : function(e){ this.setState({ filterString : e.target.value }); return; }, renderFilterOption : function(){ return ; }, renderSortOptions : function(){ return
{this.renderSortOption('Title', 'alpha')} {this.renderSortOption('Created Date', 'created')} {this.renderSortOption('Updated Date', 'updated')} {this.renderSortOption('Views', 'views')} {/* {this.renderSortOption('Latest', 'latest')} */} {this.renderFilterOption()}
Sort by :
Direction :
; }, getSortedBrews : function(){ const testString = _.deburr(this.state.filterString).toLowerCase(); const brewCollection = this.state.filterString ? _.filter(this.props.brews, (brew)=>{ return (_.deburr(brew.title).toLowerCase().includes(testString)) || (_.deburr(brew.description).toLowerCase().includes(testString)); }) : this.props.brews; return _.groupBy(brewCollection, (brew)=>{ return (brew.published ? 'published' : 'private'); }); }, render : function(){ const brews = this.getSortedBrews(); return
{this.renderSortOptions()}

{this.getUsernameWithS()} published brews

{this.renderBrews(brews.published)}
{this.props.username == global.account?.username &&

{this.getUsernameWithS()} unpublished brews

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