1
0
mirror of https://github.com/stolksdorf/homebrewery.git synced 2025-12-19 12:51:30 +00:00

Adding a search to the admin panel

This commit is contained in:
Scott Tolksdorf
2016-05-17 22:48:06 -04:00
parent 5f55a59042
commit fc3587d6cb
3 changed files with 91 additions and 2 deletions

View File

@@ -0,0 +1,72 @@
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;

View File

@@ -5,6 +5,9 @@ var request = require('superagent');
var Moment = require('moment'); var Moment = require('moment');
var BrewSearch = require('./brewSearch.jsx');
var HomebrewAdmin = React.createClass({ var HomebrewAdmin = React.createClass({
getDefaultProps: function() { getDefaultProps: function() {
return { return {
@@ -82,6 +85,7 @@ var HomebrewAdmin = React.createClass({
this.changePageTo(this.state.page + dir); this.changePageTo(this.state.page + dir);
}, },
renderPagnination : function(){ renderPagnination : function(){
var outOf; var outOf;
if(this.state.total){ if(this.state.total){
@@ -98,7 +102,7 @@ var HomebrewAdmin = React.createClass({
renderBrews : function(){ renderBrews : function(){
var brews = this.state.brewCache[this.state.page] || _.times(this.state.count); var brews = this.state.brewCache[this.state.page] || _.times(this.state.count);
return _.map(brews, (brew)=>{ return _.map(brews, (brew)=>{
return <tr className={cx('brewRow', {'isEmpty' : brew.text == "false"})} key={brew.sharedId}> return <tr className={cx('brewRow', {'isEmpty' : brew.text == "false"})} key={brew.shareId || brew}>
<td><a href={'/homebrew/edit/' + brew.editId} target='_blank'>{brew.editId}</a></td> <td><a href={'/homebrew/edit/' + brew.editId} target='_blank'>{brew.editId}</a></td>
<td><a href={'/homebrew/share/' + brew.shareId} target='_blank'>{brew.shareId}</a></td> <td><a href={'/homebrew/share/' + brew.shareId} target='_blank'>{brew.shareId}</a></td>
<td>{Moment(brew.createdAt).fromNow()}</td> <td>{Moment(brew.createdAt).fromNow()}</td>
@@ -146,6 +150,8 @@ var HomebrewAdmin = React.createClass({
<button className='clearOldButton' onClick={this.clearInvalidBrews}> <button className='clearOldButton' onClick={this.clearInvalidBrews}>
Clear Old Clear Old
</button> </button>
<BrewSearch admin_key={this.props.admin_key} />
</div> </div>
} }
}); });

View File

@@ -98,7 +98,18 @@ module.exports = function(app){
var page = req.query.page || 0; var page = req.query.page || 0;
var count = req.query.count || 20; var count = req.query.count || 20;
HomebrewModel.find({}, { var query = {};
if(req.query && req.query.id){
query = {
"$or" : [{
editId : req.query.id
},{
shareId : req.query.id
}]
};
}
HomebrewModel.find(query, {
text : 0 //omit the text text : 0 //omit the text
}, { }, {
skip: page*count, skip: page*count,