import { CheckOutlined } from "@mui/icons-material"; import { Autocomplete, Box, Button, Card, DialogActions, DialogContent, DialogTitle, TextField, Typography } from "@mui/material"; import ResponsiveDialog from "common/ResponsiveDialog"; import ResponsiveTable from "common/ResponsiveTable"; import { Option } from "common/SearchSelect"; import GrainDescriber from "grain/GrainDescriber"; import { cloneDeep } from "lodash"; import { Bin, Contract, Field, GrainBag } from "models"; import { Transaction } from "models/Transaction"; import moment from "moment"; import ObjectDescriber from "objects/ObjectDescriber"; import { pond } from "protobuf-ts/pond"; import { useBinAPI, useContractAPI, useFieldAPI, useGlobalState, useGrainBagAPI, useSnackbar, useTransactionAPI } from "providers"; import React from "react"; import { useCallback, useEffect, useState } from "react"; import TransactionDataDisplay from "transactions/transactionDataDisplay"; interface Props { bin: Bin permissions: pond.Permission[] refresh: () => void } export default function BinTransactions(props: Props){ const { bin, permissions, refresh } = props const [state, setState] = useState(pond.TransactionState.TRANSACTION_STATE_APPROVAL_REQUIRED) const transactionAPI = useTransactionAPI() const [{user}] = useGlobalState() const binAPI = useBinAPI() const grainBagAPI = useGrainBagAPI() const fieldAPI = useFieldAPI() const contractAPI = useContractAPI() const [transactions, setTransactions] = useState([]) const [possibleTransactionMatches, setPossibleTransactionMatches] = useState([]) const [tablePage, setTablePage] = useState(0) const [tablePageSize, setTablePageSize] = useState(10) const { openSnack } = useSnackbar(); const [total, setTotal] = useState(0) const [grainMessage, setGrainMessage] = useState("") //only need to do this for the bins since if a bin is picked for the secondary we need to check its inventory control type, //if it is also hybrid a matching transaction must be selected const [bins, setBins] = useState>(new Map()) const [binOptions, setBinOptions] = useState([]) const [grainBagOptions, setGrainBagOptions] = useState([]) const [fieldOptions, setFieldOptions] = useState([]) const [contractOptions, setContractOptions] = useState([]) const [openDialog, setOpenDialog] = useState(false) const [objectNames, setObjectNames] = useState(new Map()) const [selectedTransaction, setSelectedTransaction] = useState() const [selectedMatch, setselectedMatch] = useState() const [fromType, setFromType] = useState(pond.ObjectType.OBJECT_TYPE_UNKNOWN) const [fromOption, setFromOption] = useState