1
0
mirror of https://github.com/stolksdorf/homebrewery.git synced 2026-01-10 04:09:15 +00:00

Starting on the brew card

This commit is contained in:
Scott Tolksdorf
2017-05-29 23:39:59 -04:00
parent fa203047da
commit 380bbd661f
17 changed files with 137 additions and 77 deletions

View File

@@ -60,7 +60,7 @@ const Homebrew = React.createClass({
'/test_old' : <SharePage />,
'*' : <HomePage />,
'*' : <HomePage brews={this.props.brews}/>,
});
},
render : function(){

View File

@@ -7,8 +7,8 @@ const Navbar = require('../../navbar/navbar.jsx');
const NavItem = require('../../navbar/navitems.js');
const BrewInterface = require('homebrewery/brewInterface/brewInterface.jsx');
//const BrewInterface = require('homebrewery/brewInterface/brewInterface.jsx');
const BrewCard = require('homebrewery/brewCard/brewCard.jsx');
//const Actions = require('homebrewery/brew.actions.js');
@@ -38,6 +38,46 @@ const HomePage = React.createClass({
</Navbar>
},
renderNavigation : function(){
return <div className='navigation'>
<p>
Effortlessly create Authnetic looking D&D homebrews with just text
</p>
<div>
<a className='button new' target='_blank' href='/new'>
<i className='fa fa-magic' />
<h3>New</h3>
<p>This is some sample text</p>
</a>
<a className='button search' target='_blank' href='/search'>
<i className='fa fa-search' />
<h3>Search</h3>
<p>This is some sample text</p>
</a>
</div>
<div>
<a className='button docs' target='_blank' href='/docs'>
<i className='fa fa-book' />
<h3>Docs</h3>
<p>This is some sample text</p>
</a>
<a className='button account' target='_blank' href='/account'>
<i className='fa fa-user' />
<h3>Account</h3>
<p>This is some sample text</p>
</a>
</div>
</div>
},
renderTopBrews : function(){
return <div className='topBrews'>
{_.map(this.props.brews, (brew)=><BrewCard brew={brew} key={brew._id}/>)}
</div>
},
render : function(){
return <div className='homePage page'>
{this.renderNavbar()}
@@ -47,40 +87,8 @@ const HomePage = React.createClass({
<h1>The Homebrewery</h1>
</div>
<div className='buttons'>
<p>
Effortlessly create Authnetic looking D&D homebrews with just text
</p>
<div>
<a className='button new' target='_blank' href='/new'>
<i className='fa fa-magic' />
<h3>New</h3>
<p>This is some sample text</p>
</a>
<a className='button search' target='_blank' href='/search'>
<i className='fa fa-search' />
<h3>Search</h3>
<p>This is some sample text</p>
</a>
</div>
<div>
<a className='button docs' target='_blank' href='/docs'>
<i className='fa fa-book' />
<h3>Docs</h3>
<p>This is some sample text</p>
</a>
<a className='button account' target='_blank' href='/account'>
<i className='fa fa-user' />
<h3>Account</h3>
<p>This is some sample text</p>
</a>
</div>
</div>
<div className='topBrews'>
topBrews
</div>
{this.renderNavigation()}
{this.renderTopBrews()}
</div>
</div>
}

View File

@@ -16,7 +16,7 @@
text-align : center;
}
}
.buttons{
.navigation{
padding : 30px;
background-image : url('/assets/homebrew/pages/homePage/dmg_bg.jpg');
text-align : center;

View File

@@ -3,7 +3,7 @@ const _ = require('lodash');
const DB = require('../server/db.js');
const BrewData = require('../server/brew.data.js');
const BrewGen = require('../tests/brew.gen.js');
//const BrewGen = require('../tests/brew.gen.js');
return Promise.resolve()
.then(DB.connect)

View File

@@ -34,7 +34,8 @@ module.exports = (BrewModel) => {
opts.page = _.toNumber(opts.page);
let filter = {
text : 0
text : 0,
style : 0
};
if(!fullAccess){

View File

@@ -21,11 +21,10 @@ const getTopBrews = ()=>{
return BrewData.search({}, {
limit : 4,
sort : {views : -1}
}).then(({brews, total})=>brews);
}, false).then(({brews, total})=>brews);
};
getTopBrews().then((brews)=>{
console.log('top brews', brews);
topBrews=brews;
});
@@ -44,9 +43,7 @@ const renderPage = (req, res, next) => {
brews : req.brews,
brew : req.brew
})
.then((page) => {
return res.send(page)
})
.then((page)=>res.send(page))
.catch(next);
};
@@ -72,7 +69,7 @@ router.get('/account', (req, res, next)=>{
if(req.account && req.account.username){
return res.redirect(`/user/${req.account.username}`);
}else{
return res.redirect(config.get('login_path'));
return res.redirect(`${config.get('login_path')}?redirect=${encodeURIComponent(req.headers.referer)}`);
}
});
router.get('/user/:username', (req, res, next) => {
@@ -122,8 +119,8 @@ router.get('/new', renderPage);
//Home Page
router.get('/', (req, res, next) => {
req.brew = { text : statics.welcomeBrew };
//TODO add in top brews
req.brews = topBrews;
console.log(topBrews);
return next();
}, renderPage);

View File

@@ -0,0 +1,30 @@
const React = require('react');
const _ = require('lodash');
const cx = require('classnames');
const BrewCard = React.createClass({
getDefaultProps: function() {
return {
brew : {
shareId : '',
title : '',
description : '',
views : 0,
editId : false
}
};
},
render: function(){
const brew = this.props.brew;
return <div className='brewCard'>
<h3>{brew.title}</h3>
<p>{brew.description}</p>
</div>
}
});
module.exports = BrewCard;

View File

@@ -0,0 +1,10 @@
.brewCard{
width : 300px;
height : 100px;
//border : 1px solid black;
background-image : url('/assets/homebrewery/brewCard/monster_bg.jpg');
position : relative;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -6,7 +6,10 @@ module.exports = _.merge(
require('./class.snippet.js'),
require('./note.snippet.js'),
require('./monster.snippet.js'),
require('./toc.snippet.js')
require('./toc.snippet.js'),
require('./random.brew.js')
//wide

View File

@@ -0,0 +1,11 @@
const _ = require('lodash');
const Data = require('./random.data.js');
module.exports = {
brew : ()=>{
}
}

View File

@@ -7,7 +7,7 @@ const config = require('nconf');
const app = require('app.js');
const DB = require('db.js');
const BrewData = require('brew.data.js');
const BrewGen = require('./brew.gen.js');
const SampleBrews = require('./sample_brews.js');
const Error = require('error.js');
@@ -25,7 +25,7 @@ describe('Brew API', () => {
before('Connect DB', DB.connect);
before('Clear DB', BrewData.removeAll);
before('Populate brews', ()=>{
return BrewGen.populateDB(BrewGen.static());
return SampleBrews.populateDB(SampleBrews.static());
});
describe('Create', () => {
it('creates a new brew', () => {
@@ -57,7 +57,7 @@ describe('Brew API', () => {
describe('Update', () => {
it('updates an existing brew', () => {
const storedBrew = BrewGen.get('BrewA');
const storedBrew = SampleBrews.get('BrewA');
return request(app)
.put(`/api/brew/${storedBrew.editId}`)
.send({ text : 'New Text' })
@@ -72,7 +72,7 @@ describe('Brew API', () => {
});
it('adds the user as author', () => {
const storedBrew = BrewGen.get('BrewA');
const storedBrew = SampleBrews.get('BrewA');
return request(app)
.put(`/api/brew/${storedBrew.editId}`)
.set('Cookie', `nc_session=${UserXToken}`)
@@ -85,7 +85,7 @@ describe('Brew API', () => {
});
});
it('should throw error on bad edit id', ()=>{
const storedBrew = BrewGen.get('BrewA');
const storedBrew = SampleBrews.get('BrewA');
return request(app)
.put(`/api/brew/BADEDITID`)
.send({ text : 'New Text' })
@@ -95,7 +95,7 @@ describe('Brew API', () => {
describe('Remove', () => {
it('should removes a brew', ()=>{
const storedBrew = BrewGen.get('BrewA');
const storedBrew = SampleBrews.get('BrewA');
return request(app)
.del(`/api/brew/${storedBrew.editId}`)
.send()
@@ -116,7 +116,7 @@ describe('Brew API', () => {
before('Connect DB', DB.connect);
before('Clear DB', BrewData.removeAll);
before('Populate brews', ()=>{
return BrewGen.populateDB(BrewGen.static());
return SampleBrews.populateDB(SampleBrews.static());
});
it('should be able to search for all published brews', ()=>{
@@ -187,7 +187,7 @@ describe('Brew API', () => {
.expect(200)
.then((res) => {
const result = res.body;
const brewCount = _.size(BrewGen.static());
const brewCount = _.size(SampleBrews.static());
result.total.should.be.equal(brewCount);
result.brews.length.should.be.equal(brewCount);
result.brews[0].should.have.property('editId');
@@ -199,7 +199,7 @@ describe('Brew API', () => {
before('Connect DB', DB.connect);
before('Clear DB', BrewData.removeAll);
before('Populate brews', ()=>{
return BrewGen.populateDB(BrewGen.static());
return SampleBrews.populateDB(SampleBrews.static());
});
it('should be able to query brews for a specific user', ()=>{

View File

@@ -6,20 +6,20 @@ let PopulatedBrews = {};
module.exports = {
//TODO: Add in a generator for old brews to test the old rendering code
random : (num = 20)=>{
return _.times(num, ()=>{
//TODO: Build better generator, use new snippets?
return {
title : 'BrewA',
description : '',
text : '',
authors : _.sampleSize(['userA','userB','userC','userD'], _.random(0, 3)),
systems : _.sampleSize(['5e', '4e', '3.5e', 'Pathfinder'], _.random(0,2)),
views : _.random(0,1000),
published : !!_.random(0,1)
};
});
},
// random : (num = 20)=>{
// return _.times(num, ()=>{
// //TODO: Build better generator, use new snippets?
// return {
// title : 'BrewA',
// description : '',
// text : '',
// authors : _.sampleSize(['userA','userB','userC','userD'], _.random(0, 3)),
// systems : _.sampleSize(['5e', '4e', '3.5e', 'Pathfinder'], _.random(0,2)),
// views : _.random(0,1000),
// published : !!_.random(0,1)
// };
// });
// },
old : () => {
return [
{

View File

@@ -3,7 +3,7 @@ const _ = require('lodash');
const DB = require('db.js');
const BrewData = require('brew.data.js');
const BrewGen = require('./brew.gen.js');
const SampleBrews = require('./sample_brews.js');
//const Error = require('error.js');
@@ -12,7 +12,7 @@ describe('Brew Search', () => {
before('Connect DB', DB.connect);
before('Clear DB', BrewData.removeAll);
before('Populate brews', ()=>{
return BrewGen.populateDB(BrewGen.static());
return SampleBrews.populateDB(SampleBrews.static());
});
@@ -28,7 +28,7 @@ describe('Brew Search', () => {
it('should be able to search for all brews', ()=>{
return BrewData.search()
.then((result) => {
const brewCount = _.size(BrewGen.static());
const brewCount = _.size(SampleBrews.static());
result.total.should.be.equal(brewCount);
result.brews.length.should.be.equal(brewCount);
})
@@ -41,7 +41,7 @@ describe('Brew Search', () => {
limit : 2
})
.then((result) => {
result.total.should.be.equal(_.size(BrewGen.static()));
result.total.should.be.equal(_.size(SampleBrews.static()));
result.brews.length.should.be.equal(2);
})
});

View File

@@ -10,7 +10,7 @@ const config = require('nconf')
const Chai = require('chai')
.use(require('chai-as-promised'))
.use(require('chai-subset'))
.use(require('./brew.gen.js').chaiPlugin);
.use(require('./sample_brews.js').chaiPlugin);
const log = require('loglevel');
log.setLevel(config.get('log_level'));