mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-13 06:32:39 +00:00
Starting on the brew card
This commit is contained in:
@@ -60,7 +60,7 @@ const Homebrew = React.createClass({
|
|||||||
'/test_old' : <SharePage />,
|
'/test_old' : <SharePage />,
|
||||||
|
|
||||||
|
|
||||||
'*' : <HomePage />,
|
'*' : <HomePage brews={this.props.brews}/>,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
render : function(){
|
render : function(){
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ const Navbar = require('../../navbar/navbar.jsx');
|
|||||||
const NavItem = require('../../navbar/navitems.js');
|
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');
|
//const Actions = require('homebrewery/brew.actions.js');
|
||||||
|
|
||||||
@@ -38,6 +38,46 @@ const HomePage = React.createClass({
|
|||||||
</Navbar>
|
</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(){
|
render : function(){
|
||||||
return <div className='homePage page'>
|
return <div className='homePage page'>
|
||||||
{this.renderNavbar()}
|
{this.renderNavbar()}
|
||||||
@@ -47,40 +87,8 @@ const HomePage = React.createClass({
|
|||||||
<h1>The Homebrewery</h1>
|
<h1>The Homebrewery</h1>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div className='buttons'>
|
{this.renderNavigation()}
|
||||||
<p>
|
{this.renderTopBrews()}
|
||||||
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>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
text-align : center;
|
text-align : center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.buttons{
|
.navigation{
|
||||||
padding : 30px;
|
padding : 30px;
|
||||||
background-image : url('/assets/homebrew/pages/homePage/dmg_bg.jpg');
|
background-image : url('/assets/homebrew/pages/homePage/dmg_bg.jpg');
|
||||||
text-align : center;
|
text-align : center;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ const _ = require('lodash');
|
|||||||
|
|
||||||
const DB = require('../server/db.js');
|
const DB = require('../server/db.js');
|
||||||
const BrewData = require('../server/brew.data.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()
|
return Promise.resolve()
|
||||||
.then(DB.connect)
|
.then(DB.connect)
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ module.exports = (BrewModel) => {
|
|||||||
opts.page = _.toNumber(opts.page);
|
opts.page = _.toNumber(opts.page);
|
||||||
|
|
||||||
let filter = {
|
let filter = {
|
||||||
text : 0
|
text : 0,
|
||||||
|
style : 0
|
||||||
};
|
};
|
||||||
|
|
||||||
if(!fullAccess){
|
if(!fullAccess){
|
||||||
|
|||||||
@@ -21,11 +21,10 @@ const getTopBrews = ()=>{
|
|||||||
return BrewData.search({}, {
|
return BrewData.search({}, {
|
||||||
limit : 4,
|
limit : 4,
|
||||||
sort : {views : -1}
|
sort : {views : -1}
|
||||||
}).then(({brews, total})=>brews);
|
}, false).then(({brews, total})=>brews);
|
||||||
};
|
};
|
||||||
|
|
||||||
getTopBrews().then((brews)=>{
|
getTopBrews().then((brews)=>{
|
||||||
console.log('top brews', brews);
|
|
||||||
topBrews=brews;
|
topBrews=brews;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -44,9 +43,7 @@ const renderPage = (req, res, next) => {
|
|||||||
brews : req.brews,
|
brews : req.brews,
|
||||||
brew : req.brew
|
brew : req.brew
|
||||||
})
|
})
|
||||||
.then((page) => {
|
.then((page)=>res.send(page))
|
||||||
return res.send(page)
|
|
||||||
})
|
|
||||||
.catch(next);
|
.catch(next);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -72,7 +69,7 @@ router.get('/account', (req, res, next)=>{
|
|||||||
if(req.account && req.account.username){
|
if(req.account && req.account.username){
|
||||||
return res.redirect(`/user/${req.account.username}`);
|
return res.redirect(`/user/${req.account.username}`);
|
||||||
}else{
|
}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) => {
|
router.get('/user/:username', (req, res, next) => {
|
||||||
@@ -122,8 +119,8 @@ router.get('/new', renderPage);
|
|||||||
|
|
||||||
//Home Page
|
//Home Page
|
||||||
router.get('/', (req, res, next) => {
|
router.get('/', (req, res, next) => {
|
||||||
req.brew = { text : statics.welcomeBrew };
|
req.brews = topBrews;
|
||||||
//TODO add in top brews
|
console.log(topBrews);
|
||||||
return next();
|
return next();
|
||||||
}, renderPage);
|
}, 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('./class.snippet.js'),
|
||||||
require('./note.snippet.js'),
|
require('./note.snippet.js'),
|
||||||
require('./monster.snippet.js'),
|
require('./monster.snippet.js'),
|
||||||
require('./toc.snippet.js')
|
require('./toc.snippet.js'),
|
||||||
|
|
||||||
|
require('./random.brew.js')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//wide
|
//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 app = require('app.js');
|
||||||
const DB = require('db.js');
|
const DB = require('db.js');
|
||||||
const BrewData = require('brew.data.js');
|
const BrewData = require('brew.data.js');
|
||||||
const BrewGen = require('./brew.gen.js');
|
const SampleBrews = require('./sample_brews.js');
|
||||||
const Error = require('error.js');
|
const Error = require('error.js');
|
||||||
|
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ describe('Brew API', () => {
|
|||||||
before('Connect DB', DB.connect);
|
before('Connect DB', DB.connect);
|
||||||
before('Clear DB', BrewData.removeAll);
|
before('Clear DB', BrewData.removeAll);
|
||||||
before('Populate brews', ()=>{
|
before('Populate brews', ()=>{
|
||||||
return BrewGen.populateDB(BrewGen.static());
|
return SampleBrews.populateDB(SampleBrews.static());
|
||||||
});
|
});
|
||||||
describe('Create', () => {
|
describe('Create', () => {
|
||||||
it('creates a new brew', () => {
|
it('creates a new brew', () => {
|
||||||
@@ -57,7 +57,7 @@ describe('Brew API', () => {
|
|||||||
|
|
||||||
describe('Update', () => {
|
describe('Update', () => {
|
||||||
it('updates an existing brew', () => {
|
it('updates an existing brew', () => {
|
||||||
const storedBrew = BrewGen.get('BrewA');
|
const storedBrew = SampleBrews.get('BrewA');
|
||||||
return request(app)
|
return request(app)
|
||||||
.put(`/api/brew/${storedBrew.editId}`)
|
.put(`/api/brew/${storedBrew.editId}`)
|
||||||
.send({ text : 'New Text' })
|
.send({ text : 'New Text' })
|
||||||
@@ -72,7 +72,7 @@ describe('Brew API', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('adds the user as author', () => {
|
it('adds the user as author', () => {
|
||||||
const storedBrew = BrewGen.get('BrewA');
|
const storedBrew = SampleBrews.get('BrewA');
|
||||||
return request(app)
|
return request(app)
|
||||||
.put(`/api/brew/${storedBrew.editId}`)
|
.put(`/api/brew/${storedBrew.editId}`)
|
||||||
.set('Cookie', `nc_session=${UserXToken}`)
|
.set('Cookie', `nc_session=${UserXToken}`)
|
||||||
@@ -85,7 +85,7 @@ describe('Brew API', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should throw error on bad edit id', ()=>{
|
it('should throw error on bad edit id', ()=>{
|
||||||
const storedBrew = BrewGen.get('BrewA');
|
const storedBrew = SampleBrews.get('BrewA');
|
||||||
return request(app)
|
return request(app)
|
||||||
.put(`/api/brew/BADEDITID`)
|
.put(`/api/brew/BADEDITID`)
|
||||||
.send({ text : 'New Text' })
|
.send({ text : 'New Text' })
|
||||||
@@ -95,7 +95,7 @@ describe('Brew API', () => {
|
|||||||
|
|
||||||
describe('Remove', () => {
|
describe('Remove', () => {
|
||||||
it('should removes a brew', ()=>{
|
it('should removes a brew', ()=>{
|
||||||
const storedBrew = BrewGen.get('BrewA');
|
const storedBrew = SampleBrews.get('BrewA');
|
||||||
return request(app)
|
return request(app)
|
||||||
.del(`/api/brew/${storedBrew.editId}`)
|
.del(`/api/brew/${storedBrew.editId}`)
|
||||||
.send()
|
.send()
|
||||||
@@ -116,7 +116,7 @@ describe('Brew API', () => {
|
|||||||
before('Connect DB', DB.connect);
|
before('Connect DB', DB.connect);
|
||||||
before('Clear DB', BrewData.removeAll);
|
before('Clear DB', BrewData.removeAll);
|
||||||
before('Populate brews', ()=>{
|
before('Populate brews', ()=>{
|
||||||
return BrewGen.populateDB(BrewGen.static());
|
return SampleBrews.populateDB(SampleBrews.static());
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should be able to search for all published brews', ()=>{
|
it('should be able to search for all published brews', ()=>{
|
||||||
@@ -187,7 +187,7 @@ describe('Brew API', () => {
|
|||||||
.expect(200)
|
.expect(200)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
const result = res.body;
|
const result = res.body;
|
||||||
const brewCount = _.size(BrewGen.static());
|
const brewCount = _.size(SampleBrews.static());
|
||||||
result.total.should.be.equal(brewCount);
|
result.total.should.be.equal(brewCount);
|
||||||
result.brews.length.should.be.equal(brewCount);
|
result.brews.length.should.be.equal(brewCount);
|
||||||
result.brews[0].should.have.property('editId');
|
result.brews[0].should.have.property('editId');
|
||||||
@@ -199,7 +199,7 @@ describe('Brew API', () => {
|
|||||||
before('Connect DB', DB.connect);
|
before('Connect DB', DB.connect);
|
||||||
before('Clear DB', BrewData.removeAll);
|
before('Clear DB', BrewData.removeAll);
|
||||||
before('Populate brews', ()=>{
|
before('Populate brews', ()=>{
|
||||||
return BrewGen.populateDB(BrewGen.static());
|
return SampleBrews.populateDB(SampleBrews.static());
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should be able to query brews for a specific user', ()=>{
|
it('should be able to query brews for a specific user', ()=>{
|
||||||
|
|||||||
@@ -6,20 +6,20 @@ let PopulatedBrews = {};
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
//TODO: Add in a generator for old brews to test the old rendering code
|
//TODO: Add in a generator for old brews to test the old rendering code
|
||||||
|
|
||||||
random : (num = 20)=>{
|
// random : (num = 20)=>{
|
||||||
return _.times(num, ()=>{
|
// return _.times(num, ()=>{
|
||||||
//TODO: Build better generator, use new snippets?
|
// //TODO: Build better generator, use new snippets?
|
||||||
return {
|
// return {
|
||||||
title : 'BrewA',
|
// title : 'BrewA',
|
||||||
description : '',
|
// description : '',
|
||||||
text : '',
|
// text : '',
|
||||||
authors : _.sampleSize(['userA','userB','userC','userD'], _.random(0, 3)),
|
// authors : _.sampleSize(['userA','userB','userC','userD'], _.random(0, 3)),
|
||||||
systems : _.sampleSize(['5e', '4e', '3.5e', 'Pathfinder'], _.random(0,2)),
|
// systems : _.sampleSize(['5e', '4e', '3.5e', 'Pathfinder'], _.random(0,2)),
|
||||||
views : _.random(0,1000),
|
// views : _.random(0,1000),
|
||||||
published : !!_.random(0,1)
|
// published : !!_.random(0,1)
|
||||||
};
|
// };
|
||||||
});
|
// });
|
||||||
},
|
// },
|
||||||
old : () => {
|
old : () => {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
@@ -3,7 +3,7 @@ const _ = require('lodash');
|
|||||||
|
|
||||||
const DB = require('db.js');
|
const DB = require('db.js');
|
||||||
const BrewData = require('brew.data.js');
|
const BrewData = require('brew.data.js');
|
||||||
const BrewGen = require('./brew.gen.js');
|
const SampleBrews = require('./sample_brews.js');
|
||||||
//const Error = require('error.js');
|
//const Error = require('error.js');
|
||||||
|
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ describe('Brew Search', () => {
|
|||||||
before('Connect DB', DB.connect);
|
before('Connect DB', DB.connect);
|
||||||
before('Clear DB', BrewData.removeAll);
|
before('Clear DB', BrewData.removeAll);
|
||||||
before('Populate brews', ()=>{
|
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', ()=>{
|
it('should be able to search for all brews', ()=>{
|
||||||
return BrewData.search()
|
return BrewData.search()
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
const brewCount = _.size(BrewGen.static());
|
const brewCount = _.size(SampleBrews.static());
|
||||||
result.total.should.be.equal(brewCount);
|
result.total.should.be.equal(brewCount);
|
||||||
result.brews.length.should.be.equal(brewCount);
|
result.brews.length.should.be.equal(brewCount);
|
||||||
})
|
})
|
||||||
@@ -41,7 +41,7 @@ describe('Brew Search', () => {
|
|||||||
limit : 2
|
limit : 2
|
||||||
})
|
})
|
||||||
.then((result) => {
|
.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);
|
result.brews.length.should.be.equal(2);
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ const config = require('nconf')
|
|||||||
const Chai = require('chai')
|
const Chai = require('chai')
|
||||||
.use(require('chai-as-promised'))
|
.use(require('chai-as-promised'))
|
||||||
.use(require('chai-subset'))
|
.use(require('chai-subset'))
|
||||||
.use(require('./brew.gen.js').chaiPlugin);
|
.use(require('./sample_brews.js').chaiPlugin);
|
||||||
|
|
||||||
const log = require('loglevel');
|
const log = require('loglevel');
|
||||||
log.setLevel(config.get('log_level'));
|
log.setLevel(config.get('log_level'));
|
||||||
|
|||||||
Reference in New Issue
Block a user