require('./archivePage.less'); const React = require('react'); const createClass = require('create-react-class'); const _ = require('lodash'); const cx = require('classnames'); const Moment = require('moment'); const Nav = require('naturalcrit/nav/nav.jsx'); const Navbar = require('../../navbar/navbar.jsx'); const RecentNavItem = require('../../navbar/recent.navitem.jsx').both; const Account = require('../../navbar/account.navitem.jsx'); const NewBrew = require('../../navbar/newbrew.navitem.jsx'); const HelpNavItem = require('../../navbar/help.navitem.jsx'); const request = require('superagent'); const ArchivePage = createClass({ displayName: 'ArchivePage', getDefaultProps: function () { return {}; }, getInitialState: function () { return { query : '', foundBrews : null, searching : false, error : null, }; }, handleChange(e) { this.setState({ query: e.target.value }); }, lookup() { this.setState({ searching: true, error: null }); request .get(`/admin/archive/${this.state.query}`) .then((res) => this.setState({ foundBrews: res.body })) .catch((err) => this.setState({ error: err })) .finally(() => this.setState({ searching: false })); }, renderFoundBrews() { const brews = this.state.foundBrews; if (!brews || brews.length === 0) { return
No brews found.
; } return (
{brews.map((brew, index) => (
Title:
{brew.title}
Authors:
{brew.authors.map((author, index) => ( {author} {index < brew.authors.length - 1 && ', '} ))}
Check the brew
Systems:
{brew.systems.join(', ')}
{brew.tags?.length ? ( <>
{brew.tags.map((tag, idx) => { const matches = tag.match(/^(?:([^:]+):)?([^:]+)$/); return ( {matches[2]} ); })}
) : ( <> )}
Last Updated:
{Moment(brew.updatedAt).fromNow()}
Num of Views:
{brew.views}
))}
); }, renderForm: function () { return (

Brew Lookup

{/* In the future, we should be able to filter the results by adding tags. */}
); }, renderResults: function () {}, renderNavItems: function () { return ( ); }, render: function () { return (
{this.renderNavItems()}

Welcome to the Archive

{this.renderForm()}

Your results, my lordship

{this.renderFoundBrews()}
); }, }); module.exports = ArchivePage;