0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2025-12-27 13:42:38 +00:00

User page now running properly

This commit is contained in:
Scott Tolksdorf
2016-11-24 23:35:10 -05:00
parent 2d6b89c769
commit 4e5cd914f7
5 changed files with 57 additions and 10 deletions

View File

@@ -56,7 +56,7 @@
background-color : #ddd;
.snippet{
.animate(background-color);
padding : 10px;
padding : 5px;
cursor : pointer;
font-size : 10px;
i{

View File

@@ -1,19 +1,37 @@
const React = require('react');
const _ = require('lodash');
const cx = require('classnames');
const moment = require('moment');
const BrewItem = React.createClass({
getDefaultProps: function() {
return {
brew : {
title : '',
description : '',
authors : []
}
};
},
render : function(){
const brew = this.props.brew;
return <div className='brewItem'>
BrewItem Component Ready.
<h4>{brew.title}</h4>
<p className='description'><em>{brew.description}</em></p>
<hr />
<ul>
<li><strong>Authors: </strong> {brew.authors.join(', ')}</li>
<li>
<strong>Last updated: </strong>
{moment(brew.updatedAt).fromNow()}
</li>
<li><strong>Views: </strong> {brew.views} </li>
</ul>
<a href={`/share/${brew.shareId}`} target='_blank'>Share link</a>
{(!!brew.editId ? <a href={`/edit/${brew.editId}`} target='_blank'>Edit link</a> : null)}
</div>
}
});

View File

@@ -1,3 +1,19 @@
.brewItem{
.brewItem{
display : inline-block;
vertical-align : top;
width : 33%;
margin-bottom : 15px;
-webkit-column-break-inside : avoid;
page-break-inside : avoid;
break-inside : avoid;
p.description{
overflow : hidden;
width : 90%;
text-overflow : ellipsis;
white-space : nowrap;
}
a{
margin-right : 10px;
}
}

View File

@@ -15,15 +15,20 @@ const UserPage = React.createClass({
};
},
renderBrews : function(){
return _.map(this.props.brews, (brew) => {
return <BrewItem brew={brew} />
renderBrews : function(brews){
return _.map(brews, (brew, idx) => {
return <BrewItem brew={brew} key={idx}/>
});
},
getSortedBrews : function(){
return _.groupBy(this.props.brews, (brew)=>{
return (brew.published ? 'published' : 'private')
});
},
render : function(){
console.log(this.props.brews);
const brews = this.getSortedBrews();
return <div className='userPage page'>
<Navbar>
<Nav.section>
@@ -33,8 +38,10 @@ const UserPage = React.createClass({
<div className='content'>
<div className='phb'>
<h1>{this.props.username}</h1>
{this.renderBrews()}
<h1>{this.props.username}'s brews</h1>
{this.renderBrews(brews.published)}
{brews.private ? <h1>{this.props.username}'s unpublished brews</h1> : null}
{this.renderBrews(brews.private)}
</div>
</div>
</div>

View File

@@ -1,5 +1,11 @@
.userPage{
.content .phb{
margin: 20px auto;
min-height : 350px;
height : 80%;
column-count : 1;
&::after{
display : none;
}
}
}