import React from 'react';
import { Container, Table, Header, Loader } from 'semantic-ui-react';
import { withTracker } from 'meteor/react-meteor-data';
import PropTypes from 'prop-types';
import { Stuffs } from '../../api/stuff/StuffCollection';
import StuffItem from '../components/StuffItem';
/**
* **Deprecated**
*
* Renders a table containing all of the Stuff documents. Use <StuffItem> to render each row.
* @memberOf ui/pages
*/
class ListStuff extends React.Component {
/** If the subscription(s) have been received, render the page, otherwise show a loading icon. */
render() {
return (this.props.ready) ? this.renderPage() : <Loader active>Getting data</Loader>;
}
/** Render the page once subscriptions have been received. */
renderPage() {
return (
<Container>
<Header as="h2" textAlign="center">List Stuff</Header>
<Table celled>
<Table.Header>
<Table.Row>
<Table.HeaderCell>Name</Table.HeaderCell>
<Table.HeaderCell>Quantity</Table.HeaderCell>
<Table.HeaderCell>Condition</Table.HeaderCell>
<Table.HeaderCell>Edit</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
{this.props.stuffs.map((stuff) => <StuffItem key={stuff._id} stuff={stuff} />)}
</Table.Body>
</Table>
</Container>
);
}
}
// Require an array of Stuff documents in the props.
ListStuff.propTypes = {
stuffs: PropTypes.array.isRequired,
ready: PropTypes.bool.isRequired,
};
// withTracker connects Meteor data to React components. https://guide.meteor.com/react.html#using-withTracker
export default withTracker(() => {
// Get access to Stuff documents.
const subscription = Stuffs.subscribeStuff();
return {
stuffs: Stuffs.find({}).fetch(),
ready: subscription.ready(),
};
})(ListStuff);
Source