require('./listPage.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 ListPage = createClass({ getDefaultProps : function() { return { brewCollection : [ { title : '', class : '', brews : [] } ] }; }, getInitialState : function() { return { sortType : 'alpha', sortDir : 'asc', filterString : '' }; }, 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(brewCollection){ const testString = _.deburr(this.state.filterString).toLowerCase(); const brews = this.state.filterString ? _.filter(brewCollection.brews, (brew)=>{ return (_.deburr(brew.title).toLowerCase().includes(testString)) || (_.deburr(brew.description).toLowerCase().includes(testString)); }) : this.props.brewCollection.brews; return _.groupBy(brews, (brew)=>{ return (brew.published ? 'published' : 'private'); }); }, renderBrewCollection : function(brewCollection){ return _.map(brewCollection, (brewItem, idx)=>{ return

{brewItem.title || 'No Title'}

{this.renderBrews(brewItem.brews)}
; }); }, render : function(){ return
{this.renderSortOptions()} {this.renderBrewCollection(this.props.brewCollection)}
; } }); module.exports = ListPage;