mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2025-12-13 01:46:01 +00:00
New brew search finished on admin page
This commit is contained in:
@@ -2,16 +2,83 @@
|
|||||||
const React = require('react');
|
const React = require('react');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const cx = require('classnames');
|
const cx = require('classnames');
|
||||||
|
const request = require('superagent');
|
||||||
|
|
||||||
|
const BrewTable = require('../brewTable/brewTable.jsx');
|
||||||
|
|
||||||
|
const LIMIT = 10;
|
||||||
|
|
||||||
const AdminSearch = React.createClass({
|
const AdminSearch = React.createClass({
|
||||||
getDefaultProps: function() {
|
getDefaultProps: function() {
|
||||||
return {
|
return {
|
||||||
|
adminKey : '',
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
getInitialState: function() {
|
||||||
|
return {
|
||||||
|
totalBrews : 1,
|
||||||
|
brews: [],
|
||||||
|
|
||||||
|
searching : false,
|
||||||
|
error : null,
|
||||||
|
|
||||||
|
page : 1,
|
||||||
|
searchTerms : ''
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
handleSearch : function(e){
|
||||||
|
this.setState({
|
||||||
|
searchTerms : e.target.value
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handlePage : function(e){
|
||||||
|
this.setState({
|
||||||
|
page : e.target.value
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
search : function(){
|
||||||
|
this.setState({ searching : true, error : null });
|
||||||
|
|
||||||
|
request.get(`/api/brew`)
|
||||||
|
.query({
|
||||||
|
terms : this.state.searchTerms,
|
||||||
|
limit : LIMIT,
|
||||||
|
page : this.state.page - 1
|
||||||
|
})
|
||||||
|
.set('x-homebrew-admin', this.props.adminKey)
|
||||||
|
.end((err, res) => {
|
||||||
|
if(err){
|
||||||
|
this.setState({
|
||||||
|
searching : false,
|
||||||
|
error : err && err.toString()
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
this.setState({
|
||||||
|
brews : res.body.brews,
|
||||||
|
totalBrews : res.body.total
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
render: function(){
|
render: function(){
|
||||||
return <div className='adminSearch'>
|
return <div className='adminSearch'>
|
||||||
<h1>Admin Search</h1>
|
<h1>Admin Search</h1>
|
||||||
|
<div className='controls'>
|
||||||
|
<input className='search' type='text' value={this.state.searchTerms} onChange={this.handleSearch} />
|
||||||
|
|
||||||
|
<button onClick={this.search}> <i className='fa fa-search' /> search </button>
|
||||||
|
|
||||||
|
|
||||||
|
<div className='page'>
|
||||||
|
page:
|
||||||
|
<input type='text' value={this.state.page} onChange={this.handlePage} />
|
||||||
|
/ {Math.ceil(this.state.totalBrews / LIMIT)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<BrewTable brews={this.state.brews} />
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
.adminSearch{
|
|
||||||
|
|
||||||
|
.adminSearch{
|
||||||
|
.controls{
|
||||||
|
margin-bottom : 20px;
|
||||||
|
input.search{
|
||||||
|
height : 33px;
|
||||||
|
padding : 10px;
|
||||||
|
}
|
||||||
|
.page {
|
||||||
|
float : right;
|
||||||
|
font-weight : 800;
|
||||||
|
input{
|
||||||
|
width : 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,8 @@ const BrewLookup = React.createClass({
|
|||||||
return {
|
return {
|
||||||
query:'',
|
query:'',
|
||||||
resultBrew : null,
|
resultBrew : null,
|
||||||
searching : false
|
searching : false,
|
||||||
|
error : null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -25,13 +26,14 @@ const BrewLookup = React.createClass({
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
lookup : function(){
|
lookup : function(){
|
||||||
this.setState({ searching : true });
|
this.setState({ searching : true, error : null });
|
||||||
|
|
||||||
request.get(`/admin/lookup/${this.state.query}`)
|
request.get(`/admin/lookup/${this.state.query}`)
|
||||||
.query({ admin_key : this.props.adminKey })
|
.set('x-homebrew-admin', this.props.adminKey)
|
||||||
.end((err, res) => {
|
.end((err, res) => {
|
||||||
this.setState({
|
this.setState({
|
||||||
searching : false,
|
searching : false,
|
||||||
|
error : err && err.toString(),
|
||||||
resultBrew : (err ? null : res.body)
|
resultBrew : (err ? null : res.body)
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
@@ -43,6 +45,7 @@ const BrewLookup = React.createClass({
|
|||||||
|
|
||||||
return <BrewTable brews={[this.state.resultBrew ]} />
|
return <BrewTable brews={[this.state.resultBrew ]} />
|
||||||
|
|
||||||
|
/*
|
||||||
const brew = this.state.resultBrew;
|
const brew = this.state.resultBrew;
|
||||||
return <div className='brewRow'>
|
return <div className='brewRow'>
|
||||||
<div>{brew.title}</div>
|
<div>{brew.title}</div>
|
||||||
@@ -57,6 +60,15 @@ const BrewLookup = React.createClass({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
*/
|
||||||
|
},
|
||||||
|
|
||||||
|
renderError : function(){
|
||||||
|
if(!this.state.error) return;
|
||||||
|
|
||||||
|
return <div className='error'>
|
||||||
|
{this.state.error}
|
||||||
|
</div>
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function(){
|
render: function(){
|
||||||
@@ -66,6 +78,7 @@ const BrewLookup = React.createClass({
|
|||||||
<button onClick={this.lookup}><i className='fa fa-search'/></button>
|
<button onClick={this.lookup}><i className='fa fa-search'/></button>
|
||||||
|
|
||||||
{this.renderFoundBrew()}
|
{this.renderFoundBrew()}
|
||||||
|
{this.renderError()}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,8 +2,12 @@
|
|||||||
.brewLookup{
|
.brewLookup{
|
||||||
height : 200px;
|
height : 200px;
|
||||||
input{
|
input{
|
||||||
height : 33px;
|
height : 33px;
|
||||||
padding : 0px 10px;
|
margin-bottom : 20px;
|
||||||
margin-bottom: 20px;
|
padding : 0px 10px;
|
||||||
|
}
|
||||||
|
.error{
|
||||||
|
font-weight : 800;
|
||||||
|
color : @red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
const React = require('react');
|
|
||||||
const _ = require('lodash');
|
|
||||||
const cx = require('classnames');
|
|
||||||
|
|
||||||
const request = require('superagent');
|
|
||||||
const Moment = require('moment');
|
|
||||||
|
|
||||||
|
|
||||||
const BrewLookup = React.createClass({
|
|
||||||
getDefaultProps: function() {
|
|
||||||
return {
|
|
||||||
adminKey : '',
|
|
||||||
};
|
|
||||||
},
|
|
||||||
getInitialState: function() {
|
|
||||||
return {
|
|
||||||
query:'',
|
|
||||||
resultBrew : null,
|
|
||||||
searching : false
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
handleChange : function(e){
|
|
||||||
this.setState({
|
|
||||||
query : e.target.value
|
|
||||||
})
|
|
||||||
},
|
|
||||||
lookup : function(){
|
|
||||||
this.setState({ searching : true });
|
|
||||||
|
|
||||||
request.get(`/admin/lookup/${this.state.query}`)
|
|
||||||
.query({ admin_key : this.props.adminKey })
|
|
||||||
.end((err, res) => {
|
|
||||||
this.setState({
|
|
||||||
searching : false,
|
|
||||||
resultBrew : (err ? null : res.body)
|
|
||||||
});
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
renderFoundBrew : function(){
|
|
||||||
if(this.state.searching) return <div className='searching'><i className='fa fa-spin fa-spinner' /></div>;
|
|
||||||
if(!this.state.resultBrew) return <div className='noBrew'>No brew found.</div>;
|
|
||||||
|
|
||||||
const brew = this.state.resultBrew;
|
|
||||||
return <div className='brewRow'>
|
|
||||||
<div>{brew.title}</div>
|
|
||||||
<div>{brew.authors.join(', ')}</div>
|
|
||||||
<div><a href={'/edit/' + brew.editId} target='_blank'>/edit/{brew.editId}</a></div>
|
|
||||||
<div><a href={'/share/' + brew.shareId} target='_blank'>/share/{brew.shareId}</a></div>
|
|
||||||
<div>{Moment(brew.updatedAt).fromNow()}</div>
|
|
||||||
<div>{brew.views}</div>
|
|
||||||
</div>
|
|
||||||
},
|
|
||||||
|
|
||||||
render: function(){
|
|
||||||
return <div className='brewLookup'>
|
|
||||||
<h1>Brew Lookup</h1>
|
|
||||||
<input type='text' value={this.state.query} onChange={this.handleChange} placeholder='edit or share id...' />
|
|
||||||
<button onClick={this.lookup}><i className='fa fa-search'/></button>
|
|
||||||
|
|
||||||
{this.renderFoundBrew()}
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = BrewLookup;
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
.brewLookup{
|
|
||||||
height : 200px;
|
|
||||||
input{
|
|
||||||
height : 33px;
|
|
||||||
padding : 0px 10px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
var React = require('react');
|
|
||||||
var _ = require('lodash');
|
|
||||||
var cx = require('classnames');
|
|
||||||
|
|
||||||
var request = require('superagent');
|
|
||||||
|
|
||||||
var BrewSearch = React.createClass({
|
|
||||||
|
|
||||||
getDefaultProps: function() {
|
|
||||||
return {
|
|
||||||
admin_key : ''
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
getInitialState: function() {
|
|
||||||
return {
|
|
||||||
searchTerm: '',
|
|
||||||
brew : null,
|
|
||||||
searching : false
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
search : function(){
|
|
||||||
this.setState({
|
|
||||||
searching : true
|
|
||||||
});
|
|
||||||
|
|
||||||
request.get('/homebrew/api/search?id=' + this.state.searchTerm)
|
|
||||||
.query({
|
|
||||||
admin_key : this.props.admin_key,
|
|
||||||
})
|
|
||||||
.end((err, res)=>{
|
|
||||||
console.log(err, res, res.body.brews[0]);
|
|
||||||
this.setState({
|
|
||||||
brew : res.body.brews[0],
|
|
||||||
|
|
||||||
searching : false
|
|
||||||
})
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
handleChange : function(e){
|
|
||||||
this.setState({
|
|
||||||
searchTerm : e.target.value
|
|
||||||
});
|
|
||||||
},
|
|
||||||
handleSearchClick : function(){
|
|
||||||
this.search();
|
|
||||||
},
|
|
||||||
|
|
||||||
renderBrew : function(){
|
|
||||||
if(!this.state.brew) return null;
|
|
||||||
return <div className='brew'>
|
|
||||||
<div>Edit id : {this.state.brew.editId}</div>
|
|
||||||
<div>Share id : {this.state.brew.shareId}</div>
|
|
||||||
</div>
|
|
||||||
},
|
|
||||||
|
|
||||||
render : function(){
|
|
||||||
return <div className='search'>
|
|
||||||
<input type='text' value={this.state.searchTerm} onChange={this.handleChange} />
|
|
||||||
|
|
||||||
<button onClick={this.handleSearchClick}>Search</button>
|
|
||||||
|
|
||||||
{this.renderBrew()}
|
|
||||||
</div>
|
|
||||||
},
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = BrewSearch;
|
|
||||||
@@ -1,172 +0,0 @@
|
|||||||
var React = require('react');
|
|
||||||
var _ = require('lodash');
|
|
||||||
var cx = require('classnames');
|
|
||||||
var request = require('superagent');
|
|
||||||
|
|
||||||
var Moment = require('moment');
|
|
||||||
|
|
||||||
var BrewSearch = require('./brewSearch.jsx');
|
|
||||||
|
|
||||||
var BrewLookup = require('./brewLookup/brewLookup.jsx');
|
|
||||||
|
|
||||||
|
|
||||||
var HomebrewAdmin = React.createClass({
|
|
||||||
getDefaultProps: function() {
|
|
||||||
return {
|
|
||||||
admin_key : ''
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
getInitialState: function() {
|
|
||||||
return {
|
|
||||||
page: 0,
|
|
||||||
count : 20,
|
|
||||||
brewCache : {},
|
|
||||||
total : 0,
|
|
||||||
|
|
||||||
processingOldBrews : false
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
fetchBrews : function(page){
|
|
||||||
request.get('/api/search')
|
|
||||||
.query({
|
|
||||||
admin_key : this.props.admin_key,
|
|
||||||
count : this.state.count,
|
|
||||||
page : page
|
|
||||||
})
|
|
||||||
.end((err, res)=>{
|
|
||||||
if(err || !res.body || !res.body.brews) return;
|
|
||||||
this.state.brewCache[page] = res.body.brews;
|
|
||||||
this.setState({
|
|
||||||
brewCache : this.state.brewCache,
|
|
||||||
total : res.body.total,
|
|
||||||
count : res.body.count
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
componentDidMount: function() {
|
|
||||||
this.fetchBrews(this.state.page);
|
|
||||||
},
|
|
||||||
|
|
||||||
changePageTo : function(page){
|
|
||||||
if(!this.state.brewCache[page]){
|
|
||||||
this.fetchBrews(page);
|
|
||||||
}
|
|
||||||
this.setState({
|
|
||||||
page : page
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
clearInvalidBrews : function(){
|
|
||||||
request.get('/api/invalid')
|
|
||||||
.query({admin_key : this.props.admin_key})
|
|
||||||
.end((err, res)=>{
|
|
||||||
if(!confirm("This will remove " + res.body.count + " brews. Are you sure?")) return;
|
|
||||||
request.get('/api/invalid')
|
|
||||||
.query({admin_key : this.props.admin_key, do_it : true})
|
|
||||||
.end((err, res)=>{
|
|
||||||
alert("Done!")
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
deleteBrew : function(brewId){
|
|
||||||
if(!confirm("Are you sure you want to delete '" + brewId + "'?")) return;
|
|
||||||
request.get('/api/remove/' + brewId)
|
|
||||||
.query({admin_key : this.props.admin_key})
|
|
||||||
.end(function(err, res){
|
|
||||||
window.location.reload();
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
handlePageChange : function(dir){
|
|
||||||
this.changePageTo(this.state.page + dir);
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
renderPagnination : function(){
|
|
||||||
var outOf;
|
|
||||||
if(this.state.total){
|
|
||||||
outOf = this.state.page + ' / ' + Math.round(this.state.total/this.state.count);
|
|
||||||
}
|
|
||||||
return <div className='pagnination'>
|
|
||||||
<i className='fa fa-chevron-left' onClick={this.handlePageChange.bind(this, -1)}/>
|
|
||||||
{outOf}
|
|
||||||
<i className='fa fa-chevron-right' onClick={this.handlePageChange.bind(this, 1)}/>
|
|
||||||
</div>
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
renderBrews : function(){
|
|
||||||
var brews = this.state.brewCache[this.state.page] || _.times(this.state.count);
|
|
||||||
return _.map(brews, (brew)=>{
|
|
||||||
return <tr className={cx('brewRow', {'isEmpty' : brew.text == "false"})} key={brew.shareId || brew}>
|
|
||||||
<td><a href={'/edit/' + brew.editId} target='_blank'>{brew.editId}</a></td>
|
|
||||||
<td><a href={'/share/' + brew.shareId} target='_blank'>{brew.shareId}</a></td>
|
|
||||||
<td>{Moment(brew.createdAt).fromNow()}</td>
|
|
||||||
<td>{Moment(brew.updatedAt).fromNow()}</td>
|
|
||||||
<td>{Moment(brew.lastViewed).fromNow()}</td>
|
|
||||||
<td>{brew.views}</td>
|
|
||||||
<td>
|
|
||||||
<div className='deleteButton' onClick={this.deleteBrew.bind(this, brew.editId)}>
|
|
||||||
<i className='fa fa-trash' />
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
renderBrewTable : function(){
|
|
||||||
return <div className='brewTable'>
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Edit Id</th>
|
|
||||||
<th>Share Id</th>
|
|
||||||
<th>Created At</th>
|
|
||||||
<th>Last Updated</th>
|
|
||||||
<th>Last Viewed</th>
|
|
||||||
<th>Views</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{this.renderBrews()}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
},
|
|
||||||
|
|
||||||
render : function(){
|
|
||||||
var self = this;
|
|
||||||
return <div className='homebrewAdmin'>
|
|
||||||
|
|
||||||
<BrewLookup adminKey={this.props.admin_key} />
|
|
||||||
|
|
||||||
{/*
|
|
||||||
<h2>
|
|
||||||
Homebrews - {this.state.total}
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{this.renderPagnination()}
|
|
||||||
{this.renderBrewTable()}
|
|
||||||
|
|
||||||
<button className='clearOldButton' onClick={this.clearInvalidBrews}>
|
|
||||||
Clear Old
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<BrewSearch admin_key={this.props.admin_key} />
|
|
||||||
*/}
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = HomebrewAdmin;
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
|
|
||||||
.homebrewAdmin{
|
|
||||||
margin-bottom: 80px;
|
|
||||||
.brewTable{
|
|
||||||
table{
|
|
||||||
|
|
||||||
th{
|
|
||||||
padding : 10px;
|
|
||||||
font-weight : 800;
|
|
||||||
}
|
|
||||||
tr:nth-child(even){
|
|
||||||
background-color : fade(@green, 10%);
|
|
||||||
}
|
|
||||||
tr.isEmpty{
|
|
||||||
background-color : fade(@red, 30%);
|
|
||||||
}
|
|
||||||
td{
|
|
||||||
min-width : 100px;
|
|
||||||
padding : 10px;
|
|
||||||
text-align : center;
|
|
||||||
|
|
||||||
&.preview{
|
|
||||||
position : relative;
|
|
||||||
&:hover{
|
|
||||||
.content{
|
|
||||||
display : block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.content{
|
|
||||||
position : absolute;
|
|
||||||
display : none;
|
|
||||||
top : 100%;
|
|
||||||
left : 0px;
|
|
||||||
z-index : 1000;
|
|
||||||
max-height : 500px;
|
|
||||||
width : 300px;
|
|
||||||
padding : 30px;
|
|
||||||
background-color : white;
|
|
||||||
font-family : monospace;
|
|
||||||
text-align : left;
|
|
||||||
pointer-events : none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.deleteButton{
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
button.clearOldButton{
|
|
||||||
float : right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -9,7 +9,7 @@ const BrewTable = require('../brewTable/brewTable.jsx');
|
|||||||
const InvalidBrew = React.createClass({
|
const InvalidBrew = React.createClass({
|
||||||
getDefaultProps: function() {
|
getDefaultProps: function() {
|
||||||
return {
|
return {
|
||||||
|
adminKey : '',
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
@@ -19,7 +19,7 @@ const InvalidBrew = React.createClass({
|
|||||||
},
|
},
|
||||||
getInvalid : function(){
|
getInvalid : function(){
|
||||||
request.get(`/admin/invalid`)
|
request.get(`/admin/invalid`)
|
||||||
.query({ admin_key : this.props.adminKey })
|
.set('x-homebrew-admin', this.props.adminKey)
|
||||||
.end((err, res) => {
|
.end((err, res) => {
|
||||||
this.setState({
|
this.setState({
|
||||||
brews : res.body
|
brews : res.body
|
||||||
@@ -32,7 +32,7 @@ const InvalidBrew = React.createClass({
|
|||||||
if(!confirm('Sure you are sure?')) return;
|
if(!confirm('Sure you are sure?')) return;
|
||||||
|
|
||||||
request.delete(`/admin/invalid`)
|
request.delete(`/admin/invalid`)
|
||||||
.query({ admin_key : this.props.adminKey })
|
.set('x-homebrew-admin', this.props.adminKey)
|
||||||
.end((err, res) => {
|
.end((err, res) => {
|
||||||
console.log(err, res.body);
|
console.log(err, res.body);
|
||||||
alert('Invalid brews removed!');
|
alert('Invalid brews removed!');
|
||||||
@@ -42,9 +42,9 @@ const InvalidBrew = React.createClass({
|
|||||||
render: function(){
|
render: function(){
|
||||||
return <div className='invalidBrew'>
|
return <div className='invalidBrew'>
|
||||||
<h1>Remove Invalid Brews</h1>
|
<h1>Remove Invalid Brews</h1>
|
||||||
This will removes all brews older than 3 days and shorter than a tweet.
|
<div>This will removes all brews older than 3 days and shorter than a tweet.</div>
|
||||||
<button className='get' onClick={this.getInvalid}> Get Invalid Brews</button>
|
<button className='get' onClick={this.getInvalid}> Get Invalid Brews</button>
|
||||||
<button className='remove' onClick={this.removeInvalid}> Remove invalid Brews</button>
|
<button className='remove' disabled={this.state.brews.length == 0} onClick={this.removeInvalid}> Remove invalid Brews</button>
|
||||||
|
|
||||||
<BrewTable brews={this.state.brews} />
|
<BrewTable brews={this.state.brews} />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
.invalidBrew{
|
.invalidBrew{
|
||||||
|
button{
|
||||||
|
margin: 10px 4px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -37,9 +37,6 @@ const Homebrew = React.createClass({
|
|||||||
loginPath : this.props.loginPath
|
loginPath : this.props.loginPath
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(this.props.brew);
|
|
||||||
|
|
||||||
|
|
||||||
Router = CreateRouter({
|
Router = CreateRouter({
|
||||||
'/edit/:id' : <EditPage />,
|
'/edit/:id' : <EditPage />,
|
||||||
'/share/:id' : <SharePage />,
|
'/share/:id' : <SharePage />,
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ return Promise.resolve()
|
|||||||
.then(BrewData.removeAll)
|
.then(BrewData.removeAll)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
console.log('Adding random brews...');
|
console.log('Adding random brews...');
|
||||||
return return BrewGen.populateDB(BrewGen.random(5));
|
return BrewGen.populateDB(BrewGen.random(50));
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
console.log('Adding specific brews...');
|
console.log('Adding specific brews...');
|
||||||
return return BrewGen.populateDB(BrewGen.static());
|
return BrewGen.populateDB(BrewGen.static());
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
return DB.close();
|
return DB.close();
|
||||||
|
|||||||
@@ -46,11 +46,8 @@ router.delete('/admin/invalid', mw.adminOnly, (req, res, next)=>{
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/admin/lookup/:search', mw.adminOnly, (req, res, next) => {
|
router.get('/admin/lookup/:search', mw.adminOnly, (req, res, next) => {
|
||||||
//search for mathcing edit id
|
|
||||||
//search for matching share id
|
|
||||||
// search for partial match
|
|
||||||
|
|
||||||
BrewData.get({ $or:[
|
BrewData.get({ $or:[
|
||||||
|
//Searches for partial matches on either edit or share
|
||||||
{editId : { "$regex": req.params.search, "$options": "i" }},
|
{editId : { "$regex": req.params.search, "$options": "i" }},
|
||||||
{shareId : { "$regex": req.params.search, "$options": "i" }},
|
{shareId : { "$regex": req.params.search, "$options": "i" }},
|
||||||
]})
|
]})
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ Store.init = (state)=>{
|
|||||||
Store.getLoginPath = ()=>{
|
Store.getLoginPath = ()=>{
|
||||||
let path = State.loginPath;
|
let path = State.loginPath;
|
||||||
if(typeof window !== 'undefined'){
|
if(typeof window !== 'undefined'){
|
||||||
console.log('yo here');
|
|
||||||
path = `${path}?redirect=${encodeURIComponent(window.location.href)}`;
|
path = `${path}?redirect=${encodeURIComponent(window.location.href)}`;
|
||||||
}
|
}
|
||||||
return path;
|
return path;
|
||||||
|
|||||||
Reference in New Issue
Block a user