require('./lockTools.less');
const React = require('react');
const createClass = require('create-react-class');
const request = require('superagent');
const LockTools = createClass({
getInitialState : function() {
return {
fetching : false,
reviewCount : 0
};
},
componentDidMount : function() {
this.updateReviewCount();
},
updateReviewCount : async function() {
const newCount = await request.get('/admin/lock')
.then((res)=>{return res.body?.count || 'Unknown';});
if(newCount != this.state.reviewCount){
this.setState({
reviewCount : newCount
});
}
},
render : function() {
return
Lock Count
Number of brews currently locked: {this.state.reviewCount}
Lock Brew
NYI
;
}
});
const LockTable = createClass({
getDefaultProps : function() {
return {
title : '',
fetchURL : '/admin/locks',
resultName : '',
propertyNames : ['shareId']
};
},
getInitialState : function() {
return {
result : '',
error : '',
searching : false
};
},
clickFn(){
this.setState({ searching: true, error: null });
request.get(this.props.fetchURL)
.then((res)=>this.setState({ result: res.body }))
.catch((err)=>this.setState({ error: err }))
.finally(()=>{
this.setState({ searching: false });
});
},
render : function () {
return <>
{this.props.title}
{this.state.result[this.props.resultName] &&
<>
Total Reviews Waiting: {this.state.result[this.props.resultName].length}
{this.props.propertyNames.map((name, idx)=>{
return | {name} | ;
})}
{this.state.result[this.props.resultName].map((result, resultIdx)=>{
return {navigator.clipboard.writeText(result.shareId.toString());}}>
{this.props.propertyNames.map((name, nameIdx)=>{
return |
{result[name].toString()}
| ;
})}
;
})}
>
}
>;
}
});
const LockLookup = createClass({
getDefaultProps : function() {
return {
fetchURL : '/admin/lookup'
};
},
getInitialState : function() {
return {
query : '',
result : '',
error : '',
searching : false
};
},
handleChange(e){
this.setState({ query: e.target.value });
},
clickFn(){
this.setState({ searching: true, error: null });
request.get(`${this.props.fetchURL}/${this.state.query}`)
.then((res)=>this.setState({ result: res.body }))
.catch((err)=>this.setState({ error: err }))
.finally(()=>{
this.setState({ searching: false });
});
},
renderResult : function(){
return <>
Result:
{Object.keys(this.state.result).map((key, idx)=>{
return
| {key} |
{this.state.result[key].toString()}
|
;
})}
>;
},
render : function() {
return
{this.props.title}
{this.state.error
&&
{this.state.error.toString()}
}
{this.state.result && this.renderResult()}
;
}
});
module.exports = LockTools;