/*eslint max-lines: ["warn", {"max": 300, "skipBlankLines": true, "skipComments": true}]*/ 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}





; } }); const LockBrew = createClass({ getInitialState : function() { return { brewId : '', code : 1000, editMessage : '', shareMessage : '' }; }, handleChange : function(e, varName) { const output = {}; output[varName] = e.target.value; this.setState(output); }, submit : function(e){ e.preventDefault(); if(!this.state.editMessage) return; const newLock = { code : parseInt(this.state.code) || 100, editMessage : this.state.editMessage, shareMessage : this.state.shareMessage, applied : new Date, locked : true }; request.post(`/admin/lock/${this.state.brewId}`) .send(newLock) .set('Content-Type', 'application/json') .then((response)=>{ console.log(response.body); }); }, renderInput : function (name) { return this.handleChange(e, name)} autoComplete='off' required/>; }, render : function() { return

Lock Brew





; } }); 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 ; })} {this.state.result[this.props.resultName].map((result, resultIdx)=>{ return {navigator.clipboard.writeText(result.shareId.toString());}}> {this.props.propertyNames.map((name, nameIdx)=>{ return ; })} ; })}
{name}
{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(){ console.log(this.state.result); 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;