Skip to content

Instantly share code, notes, and snippets.

@mattmahn
Created May 28, 2017 16:29
Show Gist options
  • Save mattmahn/8b00081e41ffd02e68a897f60d632279 to your computer and use it in GitHub Desktop.
Save mattmahn/8b00081e41ffd02e68a897f60d632279 to your computer and use it in GitHub Desktop.
import React from 'react';
import config from 'config';
import moment from 'moment-timezone';
import { readAddress } from 'consus-core';
import ItemStore from '../../store/item-store';
import ListenerComponent from '../../lib/listener-component.jsx';
import ModelStore from '../../store/model-store';
import OmnibarController from '../../controllers/components/omnibar';
import StudentPanelController from '../../controllers/components/student-panel';
export default class EquipmentCard extends ListenerComponent {
constructor() {
super();
this.state = {
checkinNum: 1,
models: ModelStore.getAllModels(),
showItemDateModal: false,
showModelDateModal: false
};
}
componentWillMount() {
StudentPanelController.getModels();
}
getStores() {
return [ ModelStore ];
}
getState() {
return { models: ModelStore.getAllModels() };
}
displayEquipment(address) {
OmnibarController.displayEquipment(address);
}
renderItem(item) {
let model = this.state.models.find(model => model.address === item.address);
if (!model) {
return null;
} else {
let dueDate = moment.tz(item.timestamp * 1000, config.get('timezone'));
return <div className="item-info">
<span className="name">{item.name}</span>
<span className="addr">{item.address}</span>
<span className="dueDate">{dueDate.format(config.get('cart.due_date_format'))}</span>
</div>;
}
}
renderModel(model) {
let dueDate = moment.tz(model.dueDate * 1000, config.get('timezone'));
return <div className="model-info">
<span className="quantity">({model.quantity}&times;) </span>
<span className="name">{model.name}</span>
<span className="addr">{model.address}</span>
<span className="dueDate">{dueDate.format(config.get('cart.due_date_format'))}</span>
</div>;
}
render() {
let type = readAddress(this.props.address);
if (type === 'model') {
let model = ModelStore.getModel(this.props.address);
return <div>
{this.renderItem(model)}
{this.props.children}
</div>;
} else if (type === 'item') {
let item = ItemStore.getItem(this.props.address);
return <div>
{this.renderModel(item)}
{this.props.children}
</div>;
} else {
return <p>{`ERROR: Could not parse ${this.props.address} as item or model address!`}</p>;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment