import React from 'react'; import { fromUnixTime, formatDistanceToNow } from "date-fns"; import { formatInTimeZone } from 'date-fns-tz'; import superagent from 'superagent'; import * as ApiUtils from '../CloudApi/ApiUtils.js'; import constants, { DEFAULT_TIMEZONE } from '../CloudApi/Constants.js'; import BigShipperWrapper from './BigShipperWrapper.jsx'; import { Grid, Table, Button, Label, Message } from 'semantic-ui-react' export default class BigShipmentLabel extends React.Component { constructor(props) { super(props); this.state = {}; this.iframeRef = React.createRef(); } autoPrintIframe = () => { if (this.props.autoPrint) { this.printIframe(); } } printIframe = () => { const iframe = this.iframeRef.current; if (iframe) { iframe.focus(); iframe.contentWindow.print(); } } render() { let shippingLabel = this.props.bigShipment.currentShippingLabel; // Shipping label values changed between Shippo API versions. let objectCreated = shippingLabel.object_created || shippingLabel.objectCreated; let provider = shippingLabel.rate ? (shippingLabel.rate.provider) : ""; let servicelevelName = shippingLabel.rate ? (shippingLabel.rate.servicelevel_name || shippingLabel.rate.servicelevelName) : ""; let amount = shippingLabel.rate ? (shippingLabel.rate.amount) : ""; let currency = shippingLabel.rate ? (shippingLabel.rate.currency) : ""; let trackingUrlProvider = shippingLabel.tracking_url_provider || shippingLabel.trackingUrlProvider; let trackingNumber = shippingLabel.tracking_number || shippingLabel.trackingNumber; let factoryPrintedLabelUrl = shippingLabel.upload_label_url || shippingLabel.uploadLabelUrl; let commercialInvoiceUrl = shippingLabel.commercial_invoice_url || shippingLabel.commercialInvoiceUrl; let trackingLabelUrl = shippingLabel.label_url || shippingLabel.labelUrl; let createdAt, fromNow; console.log(shippingLabel); if (objectCreated) { let createdAtDateTime = new Date(objectCreated); createdAt = formatInTimeZone(createdAtDateTime, DEFAULT_TIMEZONE, 'PPPp z'); fromNow = formatDistanceToNow(createdAtDateTime, { addSuffix: true }); } return ( Provider {provider} Service Level {servicelevelName} Amount {amount} ({currency}) {trackingNumber && Tracking Number {trackingNumber} } Files {factoryPrintedLabelUrl && (Factory printed label)}
{commercialInvoiceUrl && <> Commercial Invoice
} {trackingLabelUrl && <>Tracking label
}
Status {shippingLabel.test ? : } Created At {createdAt} ({fromNow})
The shipping label should print automatically, if not
); } }