mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2025-12-19 03:21:29 +00:00
Adding a search to the admin panel
This commit is contained in:
72
client/admin/homebrewAdmin/brewSearch.jsx
Normal file
72
client/admin/homebrewAdmin/brewSearch.jsx
Normal 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;
|
||||||
@@ -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>
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user