import React, { useRef, useEffect } from 'react'; import superagent from 'superagent'; import { fromUnixTime, formatDistanceToNow } from "date-fns"; import { formatInTimeZone } from 'date-fns-tz'; import * as ApiUtils from '../CloudApi/ApiUtils.js'; import ApiButtonModal from '../CloudApi/ApiButtonModal.jsx'; import constants, { DEFAULT_TIMEZONE } from '../CloudApi/Constants.js'; import { Header, Message, Icon, Button, Table, Label, Modal, Segment, Form } from 'semantic-ui-react' import InventoryItemPickingHint from './InventoryItemPickingHint.jsx'; export default class InventoryItemComponent extends React.Component { constructor(props) { super(props); this.state = { loading: false, deleteInventoryItemModalOpen: false, }; } showDeleteInventoryItemModal() { } onChange(e, { name, value }) { this.setState({ [name]: value }) } openForceDeleteInventoryItemModal(i, e) { this.setState({ deleteInventoryItemModalOpen: true, force: true }); } openDeleteInventoryItemModal(i, e) { this.setState({ deleteInventoryItemModalOpen: true, force: false }); } closeDeleteInventoryItemModal(i, e) { this.setState({ deleteInventoryItemModalOpen: false }); } async onCancelInventoryItem(e) { e.preventDefault(); this.setState({ loading: true }); try { let url = `/api/admin/inventory/item/${this.props.inventoryItem.id}`; let res = await superagent.delete(url); window.location.reload(); } catch (e) { window.alert("Error deleting: " + e.message); console.error(e); } this.setState({ loading: false, deleteInventoryItemModalOpen: false }); } async onAdjustQuantity() { try { let url = `/api/admin/inventory/item/${this.props.inventoryItem.id}`; let res = await superagent.put(url).send({ quantity: this.state.newQuantity }); window.location.reload(); } catch (e) { window.alert("Error adjusting quantity: " + e.message); console.error(e); } } async onDeleteInventoryItem() { this.setState({ loading: true }); try { let url = `/api/admin/inventory/item/${this.props.inventoryItem.id}?force=1`; let res = await superagent.delete(url); window.location.reload(); } catch (e) { window.alert("Error deleting: " + e.message); console.error(e); } this.setState({ loading: false, deleteInventoryItemModalOpen: false }); } render() { if (this.state.loading) { return (
) } let createdAtDateTime = fromUnixTime(this.props.inventoryItem.createdAt / 1000); const createdAt = formatInTimeZone(createdAtDateTime, DEFAULT_TIMEZONE, 'PPPp z'); const fromNow = formatDistanceToNow(createdAtDateTime, { addSuffix: true }); const history = this.props.history && this.props.history.map((historyItem, historyItemIndex) => { let createdAtDateTime = fromUnixTime(historyItem.createdAt / 1000); const createdAt = formatInTimeZone(createdAtDateTime, DEFAULT_TIMEZONE, 'PPPp z'); return (