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:
@@ -60,7 +60,7 @@ const Homebrew = React.createClass({
|
||||
'/test_old' : <SharePage />,
|
||||
|
||||
|
||||
'*' : <HomePage />,
|
||||
'*' : <HomePage brews={this.props.brews}/>,
|
||||
});
|
||||
},
|
||||
render : function(){
|
||||
|
||||
@@ -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>
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
text-align : center;
|
||||
}
|
||||
}
|
||||
.buttons{
|
||||
.navigation{
|
||||
padding : 30px;
|
||||
background-image : url('/assets/homebrew/pages/homePage/dmg_bg.jpg');
|
||||
text-align : center;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -34,7 +34,8 @@ module.exports = (BrewModel) => {
|
||||
opts.page = _.toNumber(opts.page);
|
||||
|
||||
let filter = {
|
||||
text : 0
|
||||
text : 0,
|
||||
style : 0
|
||||
};
|
||||
|
||||
if(!fullAccess){
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
30
shared/homebrewery/brewCard/brewCard.jsx
Normal file
30
shared/homebrewery/brewCard/brewCard.jsx
Normal 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;
|
||||
10
shared/homebrewery/brewCard/brewCard.less
Normal file
10
shared/homebrewery/brewCard/brewCard.less
Normal 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;
|
||||
|
||||
}
|
||||
BIN
shared/homebrewery/brewCard/monster_bg.jpg
Normal file
BIN
shared/homebrewery/brewCard/monster_bg.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 339 KiB |
BIN
shared/homebrewery/brewCard/note_border.png
Normal file
BIN
shared/homebrewery/brewCard/note_border.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 530 B |
BIN
shared/homebrewery/brewCard/note_border_shadow.png
Normal file
BIN
shared/homebrewery/brewCard/note_border_shadow.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
@@ -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
|
||||
|
||||
11
shared/homebrewery/snippets/brew/random.brew.js
Normal file
11
shared/homebrewery/snippets/brew/random.brew.js
Normal file
@@ -0,0 +1,11 @@
|
||||
const _ = require('lodash');
|
||||
const Data = require('./random.data.js');
|
||||
|
||||
|
||||
module.exports = {
|
||||
brew : ()=>{
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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', ()=>{
|
||||
|
||||
@@ -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 [
|
||||
{
|
||||
@@ -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);
|
||||
})
|
||||
});
|
||||
|
||||
@@ -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'));
|
||||
|
||||
Reference in New Issue
Block a user