You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1 line
105 KiB

  1. {"ast":null,"code":"import _slicedToArray from \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread\";\nimport _defineProperty from \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport _regeneratorRuntime from \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits\";\nvar _jsxFileName = \"/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/src/containers/Dspecs/General/GeneralECO.tsx\";\nimport React, { Component } from \"react\";\nimport { Card, CardBody, Col, Container, Row, Button, CardHeader } from \"reactstrap\";\nimport FormRow from \"../../../shared/components/form/FormRow\";\nimport BOMTable from \"../../../shared/components/form/BOMTable\";\nimport PrintButton from \"../../../shared/components/PrintButton\";\nimport { FACMessage } from '../../../shared/components/FACMessage/FACMessage';\nimport { ApprovalMessage } from '../../../shared/components/ApprovalMessage/ApprovalMessage';\nimport { SubmissionButtonsGroup } from \"../../../shared/components/SubmissionButtonsGroup/SubmissionButtonsGroup\";\nimport axios from 'axios'; // interfaces\n\n//PDF Utilities\nimport html2canvas from 'html2canvas';\nimport jsPDF from 'jspdf';\nimport { emptyBomData } from './EmptyGeneralECODataFields';\nimport { generalFormBuilder } from './generalFormBuilder'; //Set up Icons\n\nvar PencilIcon = /*#__PURE__*/React.createElement(\"span\", {\n className: \"lnr lnr-pencil\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 32,\n columnNumber: 20\n }\n});\nvar ChevronRightIcon = /*#__PURE__*/React.createElement(\"span\", {\n className: \"lnr lnr-chevron-right\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 33,\n columnNumber: 26\n }\n});\n\nvar GeneralECOForm = /*#__PURE__*/function (_Component) {\n _inherits(GeneralECOForm, _Component);\n\n function GeneralECOForm(props) {\n var _this;\n\n _classCallCheck(this, GeneralECOForm);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(GeneralECOForm).call(this, props));\n _this.approve = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var _this$state, designSpecId, partNumber1, revisionLevel;\n\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this$state = _this.state, designSpecId = _this$state.designSpecId, partNumber1 = _this$state.partNumber1, revisionLevel = _this$state.revisionLevel;\n alert(\"This will be marked as 'Approved'\");\n _context.next = 4;\n return axios.put(\"/api/designspec/changeStatus/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel, \"/Approved\")).then(function (res) {\n location.href = \"/dspecs/general/form/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n return console.error(err);\n });\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n _this.reject = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {\n var _this$state2, designSpecId, partNumber1, revisionLevel;\n\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _this$state2 = _this.state, designSpecId = _this$state2.designSpecId, partNumber1 = _this$state2.partNumber1, revisionLevel = _this$state2.revisionLevel;\n alert(\"This will be knocked back down to 'In Process' status.\");\n _context2.next = 4;\n return axios.put(\"/api/designspec/changeStatus/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel, \"/In%20Process\")).then(function (res) {\n location.href = \"/dspecs/general/form/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n return console.error(err);\n });\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n _this.approveFAC = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n alert('The FAC has been approved, submitting for final approval'); //Submitted for Approval\n\n _this.submitForApproval();\n\n case 2:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n _this.submitForApproval = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n var _this$state3, designSpecId, partNumber1, revisionLevel;\n\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n alert(\"Submitting this DSpec, Marking it as 'Submitted For Approval'\");\n _this$state3 = _this.state, designSpecId = _this$state3.designSpecId, partNumber1 = _this$state3.partNumber1, revisionLevel = _this$state3.revisionLevel;\n _context4.next = 4;\n return axios.put(\"/api/designspec/changeStatus/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel, \"/Submitted%20for%20Approval\")).then(function (res) {\n // /location.href = \"mailto:\" + defaultEmail + '?&subject=' + subject + '&body=' + body;\n var _this$state4 = _this.state,\n designSpecId = _this$state4.designSpecId,\n partNumber1 = _this$state4.partNumber1,\n revisionLevel = _this$state4.revisionLevel;\n location.href = \"/dspecs/general/form/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n console.error(err);\n alert(err);\n });\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n _this.submitForFAC = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {\n var userRes, _this$state5, designSpecId, partNumber1, revisionLevel, email, subject, msgBody, defaultEmail;\n\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n userRes = confirm(\"Do you want to send this for First Article Check?\");\n _this$state5 = _this.state, designSpecId = _this$state5.designSpecId, partNumber1 = _this$state5.partNumber1, revisionLevel = _this$state5.revisionLevel; // Submit email to user\n\n _context5.next = 4;\n return axios.put(\"/api/designspec/changeStatus/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel, \"/Submitted%20for%20FAC\")).then(function (res) {\n defaultEmail = 'jzwicker@rpmindustries.com';\n email = prompt('Who should get the email?', defaultEmail);\n subject = \"New FAC to Review\";\n msgBody = \"\\n NOTE THIS IS JUST A MOCK. WILL BE AUTO CONNECTED TO AN BIM EMAIL API FOR AUTO DELIVERY OF AN EMAIL. \\n \\n \\n \\n \\n You have a new FAC to review regarding DspecId: \".concat(designSpecId, \", PartNumber: \").concat(partNumber1, \", ERN: \").concat(revisionLevel);\n console.warn(\"Email Alert Service needed for 'Submit For FAC'\");\n location.href = \"/dspecs/general/form/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n console.error(err);\n alert(err);\n });\n\n case 4:\n _this.changeStatus('read');\n\n case 5:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n _this.makeCopyForEdit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {\n var _this$state6, designSpecId, partNumber1, revisionLevel, data;\n\n return _regeneratorRuntime.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _this$state6 = _this.state, designSpecId = _this$state6.designSpecId, partNumber1 = _this$state6.partNumber1, revisionLevel = _this$state6.revisionLevel; // XHR to a \"new\" route.\n // xhr should return the new dspec/pn/rev\n\n _context6.next = 3;\n return axios.post(\"/api/designspec/general/cloneforedit/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel)).then(function (res) {\n data = res.data;\n var newDsId = data.designSpecId;\n var newPn = data.partNumber;\n var newRev = data.revisionLevel;\n return location.href = \"/dspecs/general/form/\".concat(newDsId, \"/\").concat(newPn, \"/\").concat(newRev);\n }).catch(function (err) {\n return console.error(err);\n });\n\n case 3:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n\n _this.changeStatus = function (newStatus) {\n switch (newStatus) {\n case 'read':\n _this.setState({\n formStatus: newStatus,\n formDisabled: true\n });\n\n break;\n\n case 'edit':\n _this.setState(function (state) {\n return {\n revisionLevel: state.revisionLevel,\n formStatus: newStatus,\n formDisabled: false\n };\n });\n\n break;\n\n case 'review':\n _this.setState({\n formStatus: newStatus,\n formDisabled: true\n });\n\n break;\n }\n };\n\n _this.handleBomChange = function (e) {\n var idx = e.target.parentNode.parentNode.id.split('-')[1];\n var fieldName = e.target.name;\n var val = e.target.value;\n\n var newBoms = _this.state.boms.map(function (bom, i) {\n if (i == idx) {\n var newBom = {\n bOld: '',\n bNew: '',\n partNumber: '',\n description: ''\n };\n\n if (fieldName === 'partNumber') {\n val = parseInt(\"\".concat(val));\n }\n\n Object.assign(newBom, bom, _defineProperty({}, fieldName, val));\n return newBom;\n } else {\n return bom;\n }\n });\n\n _this.setState(_objectSpread({}, _this.state, {\n boms: newBoms\n }));\n };\n\n _this.handleNewRowChange = function (e) {\n //Pull the propertyName (id) and value from the input field.\n var _e$target = e.target,\n name = _e$target.name,\n value = _e$target.value;\n if (name == \"partNumber\" && value != \"\") value = parseInt(value); // //Update state with new property and value.\n\n _this.setState({\n newBomRow: _objectSpread({}, _this.state.newBomRow, _defineProperty({}, name, value))\n });\n };\n\n _this.addNewBomRecord = function () {\n // Grab State newRow.\n var newBomRow = _this.state.newBomRow;\n\n _this.setState(_objectSpread({}, _this.state, {\n tempBomAdditions: [].concat(_toConsumableArray(_this.state.tempBomAdditions), [newBomRow]),\n newBomRow: {\n bOld: '',\n bNew: '',\n partNumber: '',\n description: ''\n }\n }));\n\n _this.setState(function (state) {\n return _objectSpread({}, state, {\n newRow: {\n bOld: '',\n bNew: '',\n partNumber: '',\n description: ''\n }\n });\n });\n };\n\n _this.deleteBomItem = function (e) {\n //Identify Type and Inded for Delete (//TODO: Use a unique identifier, not just arrayIndex which is susceptible to bugs)\n var idForDelete = e.target.parentNode.parentNode.parentNode.id;\n\n var _idForDelete$split = idForDelete.split('-'),\n _idForDelete$split2 = _slicedToArray(_idForDelete$split, 2),\n type = _idForDelete$split2[0],\n delIdx = _idForDelete$split2[1]; // Remove from Boms\n\n\n if (type === 'bom') {\n var remainingboms = _this.state.boms.filter(function (_, idx) {\n return idx !== parseInt(delIdx);\n });\n\n var bomForRemoval = _this.state.boms.filter(function (_, idx) {\n return idx == parseInt(delIdx);\n });\n\n _this.setState(_objectSpread({}, _this.state, {\n boms: remainingboms,\n bomsForDelete: [].concat(_toConsumableArray(_this.state.bomsForDelete), _toConsumableArray(bomForRemoval))\n }));\n } // Remove from Temps (no need to flag for delete since it only exists in UI at this point.)\n\n\n if (type === 'temp') {\n var _remainingboms = _this.state.tempBomAdditions.filter(function (_, idx) {\n return idx !== parseInt(delIdx);\n });\n\n _this.setState(_objectSpread({}, _this.state, {\n tempBomAdditions: _toConsumableArray(_remainingboms)\n }));\n }\n };\n\n _this.handleChange = function (e) {\n var setOfCommonCustomers = _this.state.customerPartNumbers.map(function (cust) {\n return cust.Name;\n });\n\n var jsPartNumbers = _this.state.customerPartNumbers;\n\n if (setOfCommonCustomers.includes(e.target.name)) {\n var custName = e.target.name;\n var partNumber = e.target.value;\n var idx = jsPartNumbers.findIndex(function (pn) {\n return pn.Name === custName;\n });\n\n if (idx != -1) {\n jsPartNumbers[idx].CustomerPartNumber = partNumber;\n }\n\n _this.setState(_objectSpread({}, _this.state, {\n customerPartNumbers: jsPartNumbers\n }));\n } else {\n _this.setState(_objectSpread({}, _this.state, _defineProperty({}, e.target.name, e.target.value)));\n }\n };\n\n _this.toggleFACRequirement = function () {\n var flippedState = !_this.state.reviewRequired;\n\n _this.setState({\n reviewRequired: flippedState\n });\n };\n\n _this.saveECO = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {\n var _this$state7, designSpecId, partNumber1, revisionLevel, customerPartNumbers, billOfMaterials, basicInformation, body, configs;\n\n return _regeneratorRuntime.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n //IF USING LOCAL HOST INSTEAD\n alert(\"Saving changes on this designSpec, they will NOT be submitted for review. They will be marked 'In Progress' for future editing.\");\n _this$state7 = _this.state, designSpecId = _this$state7.designSpecId, partNumber1 = _this$state7.partNumber1, revisionLevel = _this$state7.revisionLevel;\n billOfMaterials = _this.state.boms;\n customerPartNumbers = _this.state.customerPartNumbers;\n basicInformation = {\n // SERVER SIDE MODEL DATA TYPE\n id: _this.state.id,\n // //int?\n partNumber1: Number(_this.state.partNumber1),\n // //double \n revisionLevel: _this.state.revisionLevel,\n // //int \n partCodeName: _this.state.partCodeName,\n // //string \n description: _this.state.description,\n // //string \n statusName: _this.state.statusName,\n // //string \n comments: _this.state.comments,\n // //string \n customerName: _this.state.customerName,\n // //string \n primaryCustomerPartNumber: _this.state.primaryCustomerPartNumber,\n // //string \n primaryVendorName: _this.state.primaryVendorName,\n // //string \n primaryVendorPartNumber: _this.state.primaryVendorPartNumber,\n // //string \n secondaryVendorName: _this.state.secondaryVendorName,\n // //string \n secondaryVendorPartNumber: _this.state.secondaryVendorPartNumber,\n // //string \n application: _this.state.application,\n // //string \n effectiveDate: _this.state.effectiveDate,\n // //DateTime?\n signed: _this.state.signed,\n // //string \n createDate: _this.state.createDate,\n // //DateTime?\n approved: _this.state.approved,\n // //string \n approveDate: _this.state.approveDate,\n // //DateTime?\n workInstruction: _this.state.workInstruction,\n // //string \n reasonForChange: _this.state.reasonForChange,\n // //string \n note: _this.state.note,\n // //string \n validationOfChange: _this.state.validationOfChange,\n // //string \n bomsForDelete: _this.state.bomsForDelete,\n bomsForInsert: _this.state.tempBomAdditions\n };\n body = {\n basicInformation: basicInformation,\n customerPartNumbers: customerPartNumbers,\n billOfMaterials: billOfMaterials,\n bomsForDelete: _this.state.bomsForDelete,\n bomsForInsert: _this.state.tempBomAdditions\n };\n configs = {\n headers: {\n 'Content-Type': 'application/json'\n }\n };\n\n if (!(designSpecId == \"new\")) {\n _context7.next = 14;\n break;\n }\n\n // Set a few values to num since they are NaN. Will be logically handled on the back end.\n body.basicInformation.partNumber1 = 0;\n body.basicInformation.revisionLevel = 0;\n _context7.next = 12;\n return axios.post(\"/api/partnumber/general/new\", body, configs).then(function (res) {\n var _res$data = res.data,\n designSpecId = _res$data.designSpecId,\n partNumber = _res$data.partNumber,\n revisionLevel = _res$data.revisionLevel;\n location.href = \"/dspecs/general/form/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n return alert(err);\n });\n\n case 12:\n _context7.next = 16;\n break;\n\n case 14:\n _context7.next = 16;\n return axios.put(\"/api/designspec/general/updatespec/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel), body, configs).then(function (res) {\n location.href = \"/dspecs/general/form/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n return alert(err);\n });\n\n case 16:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n\n _this.discardChanges = function () {\n var userResponse = confirm('Are you sure you want to erase all temporary changes?');\n\n if (userResponse) {\n return window.location.reload(true);\n }\n };\n\n _this.state = {\n isLoading: true,\n id: parseInt(_this.props.match.params.designSpecId),\n formStatus: 'read',\n reviewRequired: false,\n designSpecId: _this.props.match.params.designSpecId,\n partNumber1: _this.props.match.params.partNumber,\n revisionLevel: parseInt(_this.props.match.params.revisionLevel),\n formDisabled: true,\n boms: emptyBomData,\n newBomRow: {\n bOld: '',\n bNew: '',\n partNumber: '',\n description: ''\n },\n tempBomAdditions: [],\n // Basic Information\n customerPartNumbers: [{\n Name: \"Cummins\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Caterpillar\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Diesel Recon\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"DRARecon\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Komatsu\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"DDC\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Parker\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Other\",\n CustomerPartNumber: \"\"\n }],\n partCodeName: \"\",\n description: \"\",\n statusName: \"\",\n comments: \"\",\n customerName: \"\",\n primaryCustomerPartNumber: \"\",\n primaryVendorName: \"\",\n primaryVendorPartNumber: \"\",\n secondaryVendorName: \"\",\n secondaryVendorPartNumber: \"\",\n application: \"\",\n effectiveDate: undefined,\n signed: \"\",\n createDate: undefined,\n approved: \"\",\n approveDate: undefined,\n // Additional Information 2\n file: \"\",\n workInstruction: \"\",\n // Additional Information 3\n reasonForChange: \"\",\n note: \"\",\n validationOfChange: \"\",\n bomsForDelete: [],\n bomsForInsert: [],\n customerNameListForDropdown: [],\n vendorNameListForDropdown: [],\n partCodeNameListforDropdown: []\n };\n return _this;\n }\n\n _createClass(GeneralECOForm, [{\n key: \"componentDidMount\",\n value: function () {\n var _componentDidMount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8() {\n var _this$state8, designSpecId, partNumber1, revisionLevel, basicInformation, BillOfMaterials, jsPartNumbers, AllCustomerList, AllVendorsList, PartCodeList, custRes, custCt, vendorRes, vendorCt, partCodeRes, partCodeCt, initialformStatus, initFormDisabled, emptyCustomerPartNumbers;\n\n return _regeneratorRuntime.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _this$state8 = this.state, designSpecId = _this$state8.designSpecId, partNumber1 = _this$state8.partNumber1, revisionLevel = _this$state8.revisionLevel;\n BillOfMaterials = null;\n // Dropdownlist content\n AllCustomerList = [];\n AllVendorsList = [];\n PartCodeList = []; // If there is no saved localStorage data, and we are not creating a \"new designspec\" fetch the required information.\n\n if (!(designSpecId !== 'new')) {\n _context8.next = 12;\n break;\n }\n\n _context8.next = 8;\n return axios.get(\"/api/designspec/general/basicinformation/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel)).then(function (res) {\n basicInformation = res.data.items.records[0];\n }).catch(function (err) {\n console.error(err);\n });\n\n case 8:\n _context8.next = 10;\n return axios.get(\"/api/designspec/general/customerpartnumbers/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel)).then(function (res) {\n jsPartNumbers = [{\n Name: \"Cummins\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Caterpillar\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Diesel Recon\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"DRARecon\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Komatsu\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"DDC\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Parker\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Other\",\n CustomerPartNumber: \"\"\n }];\n res.data.items.records.forEach(function (xcpn) {\n var custName = xcpn.name;\n var partNumber = xcpn.customerPartNumber;\n var idx = jsPartNumbers.findIndex(function (pn) {\n return pn.Name === custName;\n });\n\n if (idx != -1) {\n jsPartNumbers[idx].CustomerPartNumber = partNumber;\n }\n });\n }).catch(function (err) {\n console.error(err);\n });\n\n case 10:\n _context8.next = 12;\n return axios.get(\"/api/designspec/general/billofmaterials/\".concat(designSpecId, \"/\").concat(partNumber1, \"/\").concat(revisionLevel)).then(function (res) {\n BillOfMaterials = res.data.items.records;\n var totalRecords = res.data.items.paging.records.length;\n var recordsPerPage = res.data.items.paging.page.length;\n\n if (totalRecords > recordsPerPage) {\n var getMore = confirm(\"There might be more records than the \".concat(recordsPerPage, \" shown here. Do you want to get the rest?\"));\n if (getMore) alert(\"Error: BIM_KQueryNotFound\");\n }\n }).catch(function (err) {\n console.error(err);\n });\n\n case 12:\n _context8.next = 14;\n return axios.get(\"/api/customer\");\n\n case 14:\n custRes = _context8.sent;\n custCt = custres.data.items.paging.records.length;\n _context8.next = 18;\n return axios.get(\"/api/customer?size=\".concat(custCt)).then(function (res) {\n AllCustomerList = res.data.items.records.map(function (customerData) {\n return customerData.name;\n });\n AllCustomerList = AllCustomerList.sort();\n }).catch(function (err) {\n return console.error(err);\n });\n\n case 18:\n _context8.next = 20;\n return axios.get(\"/api/vendor\");\n\n case 20:\n vendorRes = _context8.sent;\n vendorCt = vendorres.data.items.paging.records.length;\n _context8.next = 24;\n return axios.get(\"/api/vendor?size=\".concat(vendorCt)).then(function (res) {\n AllVendorsList = res.data.items.records.map(function (vendorData) {\n return vendorData.name;\n });\n AllVendorsList = AllVendorsList.sort();\n });\n\n case 24:\n _context8.next = 26;\n return axios.get(\"/api/partcode\");\n\n case 26:\n partCodeRes = _context8.sent;\n partCodeCt = partCoderes.data.items.paging.records.length;\n _context8.next = 30;\n return axios.get(\"/api/partcode?size=\".concat(partCodeCt)).then(function (res) {\n PartCodeList = res.data.items.records.map(function (vendorData) {\n return vendorData.name;\n });\n PartCodeList = PartCodeList.sort();\n });\n\n case 30:\n // Set the intial for state by reading from designSpec\n initialformStatus = \"read\";\n initFormDisabled = true; // Set State for a new form\n\n if (designSpecId == 'new') {\n initFormDisabled = false;\n initialformStatus = \"edit\";\n } //\n\n\n if (basicInformation && basicInformation.statusName == \"In Process\") {\n initialformStatus = \"edit\";\n initFormDisabled = false;\n }\n\n if (basicInformation && (basicInformation.statusName == \"Submitted for FAC\" || basicInformation.statusName == \"Submitted for Approval\")) {\n initialformStatus = \"review\";\n initFormDisabled = true;\n }\n\n emptyCustomerPartNumbers = [{\n Name: \"Cummins\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Caterpillar\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Diesel Recon\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"DRARecon\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Komatsu\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"DDC\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Parker\",\n CustomerPartNumber: \"\"\n }, {\n Name: \"Other\",\n CustomerPartNumber: \"\"\n }];\n this.setState(_objectSpread({}, this.state, {\n isLoading: false,\n boms: BillOfMaterials,\n customerPartNumbers: jsPartNumbers || emptyCustomerPartNumbers,\n formDisabled: initFormDisabled,\n formStatus: initialformStatus,\n reviewRequired: false,\n // Basic Information\n partCodeName: basicInformation ? basicInformation.partCodeName : '',\n description: basicInformation ? basicInformation.description : '',\n statusName: basicInformation ? basicInformation.statusName : '',\n comments: basicInformation ? basicInformation.comments : '',\n customerName: basicInformation ? basicInformation.customerName : '',\n primaryCustomerPartNumber: basicInformation ? basicInformation.primaryCustomerPartNumber : '',\n primaryVendorName: basicInformation ? basicInformation.primaryVendorName : '',\n primaryVendorPartNumber: basicInformation ? basicInformation.primaryVendorPartNumber : '',\n secondaryVendorName: basicInformation ? basicInformation.secondaryVendorName : '',\n secondaryVendorPartNumber: basicInformation ? basicInformation.secondaryVendorPartNumber : '',\n application: basicInformation ? basicInformation.application : '',\n effectiveDate: basicInformation ? basicInformation.effectiveDate : undefined,\n signed: basicInformation ? basicInformation.signed : '',\n createDate: basicInformation ? basicInformation.createDate : undefined,\n approved: basicInformation ? basicInformation.approved : '',\n approveDate: basicInformation ? basicInformation.approveDate : undefined,\n // Additional Information 2\n file: \"\",\n workInstruction: basicInformation ? basicInformation.workInstruction : '',\n // Additional Information 3\n reasonForChange: basicInformation ? basicInformation.reasonForChange : '',\n note: basicInformation ? basicInformation.note : '',\n validationOfChange: basicInformation ? basicInformation.validationOfChange : '',\n customerNameListForDropdown: AllCustomerList,\n vendorNameListForDropdown: AllVendorsList,\n partCodeNameListforDropdown: PartCodeList\n }));\n\n case 37:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function componentDidMount() {\n return _componentDidMount.apply(this, arguments);\n }\n\n return componentDidMount;\n }()\n }, {\n key: \"pdf\",\n value: function pdf() {\n var input = document.getElementById(\"pdfContent\");\n\n if (!input) {\n return;\n }\n\n html2canvas(input).then(function (canvas) {\n var imgData = canvas.toDataURL('image/png');\n var pdf = new jsPDF();\n pdf.addImage(imgData, 'PNG', 10, 10, 180, 325);\n pdf.save('download.pdf');\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$state9 = this.state,\n designSpecId = _this$state9.designSpecId,\n partNumber1 = _this$state9.partNumber1,\n revisionLevel = _this$state9.revisionLevel,\n formDisabled = _this$state9.formDisabled,\n formStatus = _this$state9.formStatus;\n\n var _generalFormBuilder = generalFormBuilder(this.state),\n basicInformation = _generalFormBuilder.basicInformation,\n additionalInformation = _generalFormBuilder.additionalInformation,\n additionalInformation2 = _generalFormBuilder.additionalInformation2,\n additionalInformation3 = _generalFormBuilder.additionalInformation3; // const parsedBoms: DesignSpecBillOfMaterialDto = bomBuilder(this.state.boms);\n\n\n var formStatusAlert;\n var editButton;\n\n switch (this.state.formStatus) {\n case 'edit':\n formStatusAlert = /*#__PURE__*/React.createElement(\"div\", {\n className: \"change-status editing\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 612,\n columnNumber: 27\n }\n }, \"Currently Editing\");\n break;\n\n case 'review':\n if (this.state.statusName == \"Submitted for FAC\") {\n formStatusAlert = /*#__PURE__*/React.createElement(FACMessage, {\n approvalMessage: this.approveFAC,\n rejectionMessage: this.reject,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 616,\n columnNumber: 29\n }\n });\n }\n\n if (this.state.statusName == \"Submitted for Approval\") {\n formStatusAlert = /*#__PURE__*/React.createElement(ApprovalMessage, {\n approvalMessage: this.approve,\n rejectionMessage: this.reject,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 619,\n columnNumber: 29\n }\n });\n }\n\n break;\n }\n\n var testPrintButton = /*#__PURE__*/React.createElement(Button, {\n className: \"btn btn-primary heading-button\",\n onClick: this.pdf,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 623,\n columnNumber: 27\n }\n }, \"Print This Page(Debug Only)\");\n editButton = /*#__PURE__*/React.createElement(\"button\", {\n disabled: this.state.formStatus == 'edit' || this.state.statusName == 'Submitted for Approval' || this.state.statusName == 'Submitted for FAC' || this.state.isLoading,\n type: \"submit\",\n className: \"btn btn-primary heading-button\",\n onClick: function onClick() {\n return _this2.makeCopyForEdit();\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 624,\n columnNumber: 18\n }\n }, PencilIcon, \" \\xA0 Edit\");\n return /*#__PURE__*/React.createElement(Container, {\n className: \"dashboard\",\n id: \"pdfContent\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 632,\n columnNumber: 7\n }\n }, /*#__PURE__*/React.createElement(Row, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 633,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(Col, {\n md: 6,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 634,\n columnNumber: 11\n }\n }, /*#__PURE__*/React.createElement(\"h3\", {\n className: \"page-title\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 635,\n columnNumber: 13\n }\n }, \"Engineering Change Order \", ChevronRightIcon, \" General \", ChevronRightIcon, \" \", partNumber1)), /*#__PURE__*/React.createElement(Col, {\n md: 6,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 640,\n columnNumber: 11\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"text-right\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 641,\n columnNumber: 13\n }\n }, testPrintButton, editButton, /*#__PURE__*/React.createElement(PrintButton, {\n dsId: designSpecId,\n pn: partNumber1,\n rev: revisionLevel,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 644,\n columnNumber: 15\n }\n })))), /*#__PURE__*/React.createElement(Row, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 652,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(Col, {\n md: 12,\n lg: 12,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 653,\n columnNumber: 11\n }\n }, formStatusAlert, /*#__PURE__*/React.createElement(Card, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 655,\n columnNumber: 13\n }\n }, /*#__PURE__*/React.createElement(CardHeader, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 656,\n columnNumber: 15\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"eco-heading\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 657,\n columnNumber: 17\n }\n }, designSpecId === 'new' ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 661,\n columnNumber: 25\n }\n }, \"PartNumber: \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 661,\n columnNumber: 42\n }\n }, 'Will Populate on save')), /*#__PURE__*/React.createElement(\"div\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 662,\n columnNumber: 25\n }\n }, \"ERN: \", /*#__PURE__*/React.createElement(\"span\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 662,\n columnNumber: 35\n }\n }, 0)), /*#__PURE__*/React.createElement(\"div\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 663,\n columnNumber: 25\n }\n }, \"D-Spec ID: \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 663,\n columnNumber: 41\n }\n }, 'Will Populate on save'))) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 667,\n columnNumber: 25\n }\n }, \"RPM Part Number: \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 667,\n columnNumber: 48\n }\n }, partNumber1)), /*#__PURE__*/React.createElement(\"div\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 668,\n columnNumber: 25\n }\n }, \"ERN: \", /*#__PURE__*/React.createElement(\"span\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 668,\n columnNumber: 35\n }\n }, revisionLevel)), /*#__PURE__*/React.createElement(\"div\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 669,\n columnNumber: 25\n }\n }, \"D-Spec ID: \", /*#__PURE__*/React.createElement(\"span\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 669,\n columnNumber: 41\n }\n }, designSpecId))))), /*#__PURE__*/React.createElement(CardBody, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 674,\n columnNumber: 15\n }\n }, /*#__PURE__*/React.createElement(FormRow, {\n handleChange: this.handleChange,\n formDirection: \"horizontal\",\n formLayout: \"third\",\n formData: basicInformation,\n formDisabled: formDisabled,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 675,\n columnNumber: 17\n }\n }))), /*#__PURE__*/React.createElement(Card, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 685,\n columnNumber: 13\n }\n }, /*#__PURE__*/React.createElement(CardHeader, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 686,\n columnNumber: 15\n }\n }, \"Additional Information\"), /*#__PURE__*/React.createElement(CardBody, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 689,\n columnNumber: 15\n }\n }, /*#__PURE__*/React.createElement(FormRow, {\n handleChange: this.handleChange,\n formDirection: \"horizontal\",\n formLayout: \"third\",\n formData: additionalInformation,\n formDisabled: this.state.formDisabled,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 690,\n columnNumber: 17\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 696,\n columnNumber: 19\n }\n }), /*#__PURE__*/React.createElement(FormRow, {\n handleChange: this.handleChange,\n formDirection: \"horizontal\",\n formLayout: \"twoone\",\n formData: additionalInformation2,\n formDisabled: this.state.formDisabled,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 697,\n columnNumber: 17\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 703,\n columnNumber: 19\n }\n }), /*#__PURE__*/React.createElement(FormRow, {\n handleChange: this.handleChange,\n formDirection: \"vertical\",\n formLayout: \"third\",\n formData: additionalInformation3,\n formDisabled: this.state.formDisabled,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 704,\n columnNumber: 17\n }\n }))), /*#__PURE__*/React.createElement(Card, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 714,\n columnNumber: 13\n }\n }, /*#__PURE__*/React.createElement(CardHeader, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 715,\n columnNumber: 15\n }\n }, \"Bill of Materials\"), /*#__PURE__*/React.createElement(CardBody, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 718,\n columnNumber: 15\n }\n }, /*#__PURE__*/React.createElement(BOMTable, {\n tempBomCount: this.state.tempBomAdditions.length,\n formStatus: formStatus,\n formDisabled: formDisabled,\n boms: partNumber1 === 'new' ? emptyBomData : this.state.boms,\n handleBomChange: this.handleBomChange,\n tempBomData: partNumber1 === 'new' ? emptyBomData : this.state.tempBomAdditions,\n emptyBomRow: this.state.newBomRow,\n handleNewRowChange: this.handleNewRowChange,\n addNewBomRecord: this.addNewBomRecord,\n deleteBomItem: this.deleteBomItem,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 719,\n columnNumber: 17\n }\n }))), this.state.formStatus == 'edit' && /*#__PURE__*/React.createElement(SubmissionButtonsGroup, {\n discardChanges: this.discardChanges,\n saveECO: this.saveECO,\n submitForApproval: this.submitForApproval,\n submitForFAC: this.submitForFAC,\n toggleFACRequirement: this.toggleFACRequirement,\n reviewRequired: this.state.reviewRequired,\n changeFormStatus: this.changeStatus,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 737,\n columnNumber: 15\n }\n }))));\n }\n }]);\n\n return GeneralECOForm;\n}(Component);\n\nexport default GeneralECOForm; // export default reduxForm({\n// form: \"vertical_form_layout_half\" // a unique identifier for this form\n// })(VerticalFormHalf);","map":{"version":3,"sources":["/Users/michielcarman/Server Code/Repository/clients-rpm-kit-manager/code/RPM.KitManager/RPM.KitManager.Web/ClientApp/src/containers/Dspecs/General/GeneralECO.tsx"],"names":["React","Component","Card","CardBody","Col","Container","Row","Button","CardHeader","FormRow","BOMTable","PrintButton","FACMessage","ApprovalMessage","SubmissionButtonsGroup","axios","html2canvas","jsPDF","emptyBomData","generalFormBuilder","PencilIcon","ChevronRightIcon","GeneralECOForm","props","approve","state","designSpecId","partNumber1","revisionLevel","alert","put","then","res","location","href","catch","err","console","error","reject","approveFAC","submitForApproval","submitForFAC","userRes","confirm","defaultEmail","email","prompt","subject","msgBody","warn","changeStatus","makeCopyForEdit","post","data","newDsId","newPn","partNumber","newRev","newStatus","setState","formStatus","formDisabled","handleBomChange","e","idx","target","parentNode","id","split","fieldName","name","val","value","newBoms","boms","map","bom","i","newBom","bOld","bNew","description","parseInt","Object","assign","handleNewRowChange","newBomRow","addNewBomRecord","tempBomAdditions","newRow","deleteBomItem","idForDelete","type","delIdx","remainingboms","filter","_","bomForRemoval","bomsForDelete","handleChange","setOfCommonCustomers","customerPartNumbers","cust","Name","jsPartNumbers","includes","custName","findIndex","pn","CustomerPartNumber","toggleFACRequirement","flippedState","reviewRequired","saveECO","billOfMaterials","basicInformation","Number","partCodeName","statusName","comments","customerName","primaryCustomerPartNumber","primaryVendorName","primaryVendorPartNumber","secondaryVendorName","secondaryVendorPartNumber","application","effectiveDate","signed","createDate","approved","approveDate","workInstruction","reasonForChange","note","validationOfChange","bomsForInsert","body","configs","headers","discardChanges","userResponse","window","reload","isLoading","match","params","undefined","file","customerNameListForDropdown","vendorNameListForDropdown","partCodeNameListforDropdown","BillOfMaterials","AllCustomerList","AllVendorsList","PartCodeList","get","items","records","forEach","xcpn","customerPartNumber","totalRecords","paging","length","recordsPerPage","page","getMore","custRes","custCt","custres","customerData","sort","vendorRes","vendorCt","vendorres","vendorData","partCodeRes","partCodeCt","partCoderes","initialformStatus","initFormDisabled","emptyCustomerPartNumbers","input","document","getElementById","canvas","imgData","toDataURL","pdf","addImage","save","additionalInformation","additionalInformation2","additionalInformation3","formStatusAlert","editButton","testPrintButton"],"mappings":"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","sourcesContent":["import React, { Component } from \"react\";\nimport { Card, CardBody, Col, Container, Row, Button, CardHeader } from \"reactstrap\";\nimport FormRow from \"../../../shared/components/form/FormRow\";\nimport BOMTable from \"../../../shared/components/form/BOMTable\";\nimport PrintButton from \"../../../shared/components/PrintButton\";\nimport { FACMessage } from '../../../shared/components/FACMessage/FACMessage'\nimport { ApprovalMessage } from '../../../shared/components/ApprovalMessage/ApprovalMessage'\nimport { SubmissionButtonsGroup } from \"../../../shared/components/SubmissionButtonsGroup/SubmissionButtonsGroup\";\nimport axios from 'axios';\n// interfaces\nimport {\n Bom,\n DesignSpecBasicInformationDto,\n DesignSpecCustomersPartNumberDto,\n DesignSpecBillOfMaterialDto\n} from '../../../shared/interfaces/Index'\n//PDF Utilities\nimport html2canvas from 'html2canvas'\nimport jsPDF from 'jspdf';\n\nimport {\n emptyBasicInformation,\n emptyAdditionalInformation,\n emptyAdditionalInformation2,\n emptyAdditionalInformation3,\n emptyBomData\n} from './EmptyGeneralECODataFields'\n\n\nimport { generalFormBuilder, bomBuilder } from './generalFormBuilder'\n//Set up Icons\nconst PencilIcon = <span className=\"lnr lnr-pencil\"></span>\nconst ChevronRightIcon = <span className=\"lnr lnr-chevron-right\"></span>\n\n\ninterface ECOFormProps {\n match: any,\n}\nexport interface DesignSpecECOFormState extends DesignSpecBasicInformationDto {\n formStatus: string,\n reviewRequired: boolean,\n designSpecId: any,\n partNumber1: any,\n revisionLevel: number,\n formDisabled: boolean\n newBomRow: Bom,\n boms: any\n customerPartNumbers: DesignSpecCustomersPartNumberDto[],\n tempBomAdditions: any;\n file: string,\n customerNameListForDropdown: string[]\n vendorNameListForDropdown: string[]\n partCodeNameListforDropdown: string[]\n isLoading: boolean\n}\n\nclass GeneralECOForm extends Component<ECOFormProps, DesignSpecECOFormState> {\n\n constructor(props: ECOFormProps) {\n super(props);\n this.state = {\n isLoading: true,\n id: parseInt(this.props.match.params.designSpecId),\n formStatus: 'read',\n reviewRequired: false,\n designSpecId: this.props.match.params.designSpecId,\n partNumber1: this.props.match.params.partNumber,\n revisionLevel: parseInt(this.props.match.params.revisionLevel),\n formDisabled: true,\n boms: emptyBomData,\n newBomRow: {\n bOld: '',\n bNew: '',\n partNumber: '',\n description: ''\n },\n tempBomAdditions: [],\n // Basic Information\n customerPartNumbers: [\n { Name: \"Cummins\", CustomerPartNumber: \"\" },\n { Name: \"Caterpillar\", CustomerPartNumber: \"\" },\n { Name: \"Diesel Recon\", CustomerPartNumber: \"\" },\n { Name: \"DRARecon\", CustomerPartNumber: \"\" },\n { Name: \"Komatsu\", CustomerPartNumber: \"\" },\n { Name: \"DDC\", CustomerPartNumber: \"\" },\n { Name: \"Parker\", CustomerPartNumber: \"\" },\n { Name: \"Other\", CustomerPartNumber: \"\" },\n ],\n partCodeName: \"\",\n description: \"\",\n statusName: \"\",\n comments: \"\",\n customerName: \"\",\n primaryCustomerPartNumber: \"\",\n primaryVendorName: \"\",\n primaryVendorPartNumber: \"\",\n secondaryVendorName: \"\",\n secondaryVendorPartNumber: \"\",\n application: \"\",\n effectiveDate: undefined,\n signed: \"\",\n createDate: undefined,\n approved: \"\",\n approveDate: undefined,\n // Additional Information 2\n file: \"\",\n workInstruction: \"\",\n // Additional Information 3\n reasonForChange: \"\",\n note: \"\",\n validationOfChange: \"\",\n bomsForDelete: [],\n bomsForInsert: [],\n customerNameListForDropdown: [],\n vendorNameListForDropdown: [],\n partCodeNameListforDropdown: [],\n };\n }\n\n\n\n async componentDidMount() {\n let { designSpecId, partNumber1, revisionLevel } = this.state;\n let basicInformation: DesignSpecBasicInformationDto | undefined;\n let BillOfMaterials: Bom | null = null;\n let jsPartNumbers: any;\n\n // Dropdownlist content\n let AllCustomerList: string[] = []\n let AllVendorsList: string[] = []\n let PartCodeList: string[] = []\n\n // If there is no saved localStorage data, and we are not creating a \"new designspec\" fetch the required information.\n if (designSpecId !== 'new') {\n await axios.get(`/api/designspec/general/basicinformation/${designSpecId}/${partNumber1}/${revisionLevel}`)\n .then(res => {\n basicInformation = res.data.items.records[0];\n })\n .catch(err => { console.error(err) })\n await axios.get(`/api/designspec/general/customerpartnumbers/${designSpecId}/${partNumber1}/${revisionLevel}`)\n .then(res => {\n jsPartNumbers = [\n { Name: \"Cummins\", CustomerPartNumber: \"\" },\n { Name: \"Caterpillar\", CustomerPartNumber: \"\" },\n { Name: \"Diesel Recon\", CustomerPartNumber: \"\" },\n { Name: \"DRARecon\", CustomerPartNumber: \"\" },\n { Name: \"Komatsu\", CustomerPartNumber: \"\" },\n { Name: \"DDC\", CustomerPartNumber: \"\" },\n { Name: \"Parker\", CustomerPartNumber: \"\" },\n { Name: \"Other\", CustomerPartNumber: \"\" },\n ];\n res.data.items.records.forEach((xcpn: any) => {\n let custName = xcpn.name;\n let partNumber = xcpn.customerPartNumber;\n\n let idx = jsPartNumbers.findIndex((pn: any) => pn.Name === custName)\n if (idx != -1) {\n jsPartNumbers[idx].CustomerPartNumber = partNumber\n }\n })\n })\n .catch(err => { console.error(err) })\n await axios.get(`/api/designspec/general/billofmaterials/${designSpecId}/${partNumber1}/${revisionLevel}`)\n .then(res => {\n BillOfMaterials = res.data.items.records\n let totalRecords = res.data.items.paging.records.length;\n let recordsPerPage = res.data.items.paging.page.length;\n if (totalRecords > recordsPerPage) {\n let getMore = confirm(`There might be more records than the ${recordsPerPage} shown here. Do you want to get the rest?`)\n if (getMore) alert(\"Error: BIM_KQueryNotFound\")\n }\n\n })\n .catch(err => { console.error(err) })\n }\n\n // XHRs for Dropdown bars // Todo: todo move to global state. Refresh only periodically.\n let custRes = await axios.get(`/api/customer`);\n const custCt = custres.data.items.paging.records.length\n await axios.get(`/api/customer?size=${custCt}`)\n .then(res => {\n AllCustomerList = res.data.items.records.map((customerData: any) => customerData.name)\n AllCustomerList = AllCustomerList.sort();\n }).catch(err => console.error(err))\n\n let vendorRes = await axios.get(`/api/vendor`)\n let vendorCt = vendorres.data.items.paging.records.length;\n await axios.get(`/api/vendor?size=${vendorCt}`)\n .then((res: any) => {\n AllVendorsList = res.data.items.records.map((vendorData: any) => vendorData.name)\n AllVendorsList = AllVendorsList.sort()\n })\n\n let partCodeRes = await axios.get(`/api/partcode`)\n let partCodeCt = partCoderes.data.items.paging.records.length;\n await axios.get(`/api/partcode?size=${partCodeCt}`)\n .then((res: any) => {\n PartCodeList = res.data.items.records.map((vendorData: any) => vendorData.name)\n PartCodeList = PartCodeList.sort()\n })\n\n // Set the intial for state by reading from designSpec\n let initialformStatus: string = \"read\";\n let initFormDisabled: boolean = true;\n\n // Set State for a new form\n if (designSpecId == 'new') {\n initFormDisabled = false;\n initialformStatus = \"edit\"\n }\n\n //\n if (basicInformation && basicInformation.statusName == \"In Process\") {\n initialformStatus = \"edit\"\n initFormDisabled = false;\n }\n\n if (basicInformation\n && (basicInformation.statusName == \"Submitted for FAC\"\n || basicInformation.statusName == \"Submitted for Approval\")) {\n initialformStatus = \"review\"\n initFormDisabled = true\n }\n\n let emptyCustomerPartNumbers = [\n { Name: \"Cummins\", CustomerPartNumber: \"\" },\n { Name: \"Caterpillar\", CustomerPartNumber: \"\" },\n { Name: \"Diesel Recon\", CustomerPartNumber: \"\" },\n { Name: \"DRARecon\", CustomerPartNumber: \"\" },\n { Name: \"Komatsu\", CustomerPartNumber: \"\" },\n { Name: \"DDC\", CustomerPartNumber: \"\" },\n { Name: \"Parker\", CustomerPartNumber: \"\" },\n { Name: \"Other\", CustomerPartNumber: \"\" },\n ];\n this.setState({\n ...this.state,\n isLoading: false,\n boms: BillOfMaterials,\n customerPartNumbers: jsPartNumbers || emptyCustomerPartNumbers,\n formDisabled: initFormDisabled,\n formStatus: initialformStatus,\n reviewRequired: false,\n // Basic Information\n partCodeName: basicInformation ? basicInformation.partCodeName : '',\n description: basicInformation ? basicInformation.description : '',\n statusName: basicInformation ? basicInformation.statusName : '',\n comments: basicInformation ? basicInformation.comments : '',\n customerName: basicInformation ? basicInformation.customerName : '',\n primaryCustomerPartNumber: basicInformation ? basicInformation.primaryCustomerPartNumber : '',\n primaryVendorName: basicInformation ? basicInformation.primaryVendorName : '',\n primaryVendorPartNumber: basicInformation ? basicInformation.primaryVendorPartNumber : '',\n secondaryVendorName: basicInformation ? basicInformation.secondaryVendorName : '',\n secondaryVendorPartNumber: basicInformation ? basicInformation.secondaryVendorPartNumber : '',\n\n application: basicInformation ? basicInformation.application : '',\n effectiveDate: basicInformation ? basicInformation.effectiveDate : undefined,\n signed: basicInformation ? basicInformation.signed : '',\n createDate: basicInformation ? basicInformation.createDate : undefined,\n approved: basicInformation ? basicInformation.approved : '',\n approveDate: basicInformation ? basicInformation.approveDate : undefined,\n // Additional Information 2\n file: \"\",\n workInstruction: basicInformation ? basicInformation.workInstruction : '',\n // Additional Information 3\n reasonForChange: basicInformation ? basicInformation.reasonForChange : '',\n note: basicInformation ? basicInformation.note : '',\n validationOfChange: basicInformation ? basicInformation.validationOfChange : '',\n customerNameListForDropdown: AllCustomerList,\n vendorNameListForDropdown: AllVendorsList,\n partCodeNameListforDropdown: PartCodeList,\n })\n }\n\n pdf() {\n const input = document.getElementById(\"pdfContent\")\n if (!input) {\n return;\n }\n html2canvas(input)\n .then((canvas) => {\n const imgData = canvas.toDataURL('image/png');\n const pdf = new jsPDF();\n pdf.addImage(imgData, 'PNG', 10, 10, 180, 325);\n pdf.save('download.pdf')\n })\n }\n\n approve = async () => {\n const { designSpecId, partNumber1, revisionLevel } = this.state;\n alert(`This will be marked as 'Approved'`)\n await axios.put(`/api/designspec/changeStatus/${designSpecId}/${partNumber1}/${revisionLevel}/Approved`)\n .then(res => {\n location.href = `/dspecs/general/form/${designSpecId}/${partNumber1}/${revisionLevel}`\n })\n .catch(err => console.error(err))\n }\n\n reject = async () => {\n const { designSpecId, partNumber1, revisionLevel } = this.state;\n alert(\"This will be knocked back down to 'In Process' status.\")\n await axios.put(`/api/designspec/changeStatus/${designSpecId}/${partNumber1}/${revisionLevel}/In%20Process`)\n .then(res => {\n location.href = `/dspecs/general/form/${designSpecId}/${partNumber1}/${revisionLevel}`\n })\n .catch(err => console.error(err))\n }\n\n approveFAC = async () => {\n alert('The FAC has been approved, submitting for final approval')\n //Submitted for Approval\n this.submitForApproval();\n\n }\n submitForApproval = async () => {\n alert(\"Submitting this DSpec, Marking it as 'Submitted For Approval'\")\n const { designSpecId, partNumber1, revisionLevel } = this.state;\n await axios.put(`/api/designspec/changeStatus/${designSpecId}/${partNumber1}/${revisionLevel}/Submitted%20for%20Approval`)\n .then(res => {\n // /location.href = \"mailto:\" + defaultEmail + '?&subject=' + subject + '&body=' + body;\n const { designSpecId, partNumber1, revisionLevel } = this.state\n location.href = `/dspecs/general/form/${designSpecId}/${partNumber1}/${revisionLevel}`\n })\n .catch(err => {\n console.error(err)\n alert(err)\n })\n }\n\n submitForFAC = async () => {\n const userRes = confirm(\"Do you want to send this for First Article Check?\")\n const { designSpecId, partNumber1, revisionLevel } = this.state;\n\n // Submit email to user\n let email;\n let subject;\n let msgBody;\n let defaultEmail;\n await axios.put(`/api/designspec/changeStatus/${designSpecId}/${partNumber1}/${revisionLevel}/Submitted%20for%20FAC`)\n .then(res => {\n defaultEmail = 'jzwicker@rpmindustries.com'\n email = prompt('Who should get the email?', defaultEmail)\n subject = `New FAC to Review`\n msgBody = `\n NOTE THIS IS JUST A MOCK. WILL BE AUTO CONNECTED TO AN BIM EMAIL API FOR AUTO DELIVERY OF AN EMAIL. \n \\n \\n \\n \n You have a new FAC to review regarding DspecId: ${designSpecId}, PartNumber: ${partNumber1}, ERN: ${revisionLevel}`\n console.warn(`Email Alert Service needed for 'Submit For FAC'`)\n location.href = `/dspecs/general/form/${designSpecId}/${partNumber1}/${revisionLevel}`\n })\n .catch(err => {\n console.error(err)\n alert(err)\n })\n this.changeStatus('read');\n }\n\n\n makeCopyForEdit = async () => {\n const { designSpecId, partNumber1, revisionLevel } = this.state\n // XHR to a \"new\" route.\n // xhr should return the new dspec/pn/rev\n let data: any;\n await axios.post(`/api/designspec/general/cloneforedit/${designSpecId}/${partNumber1}/${revisionLevel}`)\n .then(res => {\n data = res.data;\n let newDsId = data.designSpecId;\n let newPn = data.partNumber;\n let newRev = data.revisionLevel;\n return (location.href = `/dspecs/general/form/${newDsId}/${newPn}/${newRev}`);\n })\n .catch(err => console.error(err))\n }\n\n changeStatus = (newStatus: string) => {\n switch (newStatus) {\n case 'read':\n this.setState({\n formStatus: newStatus,\n formDisabled: true\n })\n break;\n case 'edit':\n this.setState((state) => ({\n revisionLevel: state.revisionLevel,\n formStatus: newStatus,\n formDisabled: false\n }));\n break;\n case 'review':\n this.setState({\n formStatus: newStatus,\n formDisabled: true\n })\n break;\n }\n }\n\n handleBomChange = (e: any) => {\n const idx: number = e.target.parentNode.parentNode.id.split('-')[1]\n const fieldName: string = e.target.name;\n let val: string | number = e.target.value;\n\n const newBoms: Bom[] = this.state.boms.map((bom: Bom, i: number) => {\n if (i == idx) {\n let newBom: Bom = {\n bOld: '',\n bNew: '',\n partNumber: '',\n description: ''\n };\n if (fieldName === 'partNumber') {\n val = parseInt(`${val}`);\n }\n Object.assign(newBom, bom, {\n [fieldName]: val\n });\n return newBom\n } else {\n return bom;\n }\n })\n this.setState({\n ...this.state,\n boms: newBoms\n })\n }\n\n handleNewRowChange = (e: any) => {\n //Pull the propertyName (id) and value from the input field.\n let { name, value } = e.target\n if (name == \"partNumber\" && value != \"\")\n value = parseInt(value);\n // //Update state with new property and value.\n this.setState({\n newBomRow: {\n ...this.state.newBomRow,\n [name]: value\n }\n })\n }\n\n addNewBomRecord = () => {\n // Grab State newRow.\n let { newBomRow } = this.state\n\n this.setState({\n ...this.state,\n tempBomAdditions: [...this.state.tempBomAdditions, newBomRow],\n newBomRow: {\n bOld: '',\n bNew: '',\n partNumber: '',\n description: ''\n }\n })\n this.setState((state) => ({\n ...state,\n newRow: {\n bOld: '',\n bNew: '',\n partNumber: '',\n description: ''\n }\n }))\n }\n\n deleteBomItem = (e: any) => {\n //Identify Type and Inded for Delete (//TODO: Use a unique identifier, not just arrayIndex which is susceptible to bugs)\n let idForDelete = e.target.parentNode.parentNode.parentNode.id;\n let [type, delIdx] = idForDelete.split('-')\n\n // Remove from Boms\n if (type === 'bom') {\n let remainingboms = this.state.boms.filter((_: any, idx: number) => idx !== parseInt(delIdx))\n let bomForRemoval = this.state.boms.filter((_: any, idx: number) => idx == parseInt(delIdx))\n this.setState({\n ...this.state,\n boms: remainingboms,\n bomsForDelete: [...this.state.bomsForDelete, ...bomForRemoval]\n })\n }\n // Remove from Temps (no need to flag for delete since it only exists in UI at this point.)\n if (type === 'temp') {\n let remainingboms = this.state.tempBomAdditions.filter((_: any, idx: number) => idx !== parseInt(delIdx))\n\n this.setState({\n ...this.state,\n tempBomAdditions: [...remainingboms]\n })\n }\n }\n\n handleChange = (e: any) => {\n let setOfCommonCustomers: any[] = this.state.customerPartNumbers.map(cust => cust.Name);\n let jsPartNumbers: any = this.state.customerPartNumbers;\n if (setOfCommonCustomers.includes(e.target.name)) {\n let custName = e.target.name;\n let partNumber = e.target.value;\n\n let idx = jsPartNumbers.findIndex((pn: any) => pn.Name === custName)\n if (idx != -1) {\n jsPartNumbers[idx].CustomerPartNumber = partNumber\n }\n this.setState({\n ...this.state,\n customerPartNumbers: jsPartNumbers\n })\n }\n else {\n this.setState({\n ...this.state,\n [e.target.name]: e.target.value\n })\n }\n }\n toggleFACRequirement = () => {\n const flippedState = !this.state.reviewRequired;\n this.setState({ reviewRequired: flippedState });\n }\n\n saveECO = async () => {\n //IF USING LOCAL HOST INSTEAD\n\n alert(\"Saving changes on this designSpec, they will NOT be submitted for review. They will be marked 'In Progress' for future editing.\")\n const { designSpecId, partNumber1, revisionLevel } = this.state;\n let customerPartNumbers: DesignSpecCustomersPartNumberDto[];\n let billOfMaterials: DesignSpecBillOfMaterialDto[];\n let basicInformation: DesignSpecBasicInformationDto;\n\n billOfMaterials = this.state.boms;\n customerPartNumbers = this.state.customerPartNumbers;\n basicInformation = { // SERVER SIDE MODEL DATA TYPE\n id: this.state.id, // //int?\n partNumber1: Number(this.state.partNumber1), // //double \n revisionLevel: this.state.revisionLevel, // //int \n partCodeName: this.state.partCodeName, // //string \n description: this.state.description, // //string \n statusName: this.state.statusName, // //string \n comments: this.state.comments, // //string \n customerName: this.state.customerName, // //string \n primaryCustomerPartNumber: this.state.primaryCustomerPartNumber, // //string \n primaryVendorName: this.state.primaryVendorName, // //string \n primaryVendorPartNumber: this.state.primaryVendorPartNumber, // //string \n secondaryVendorName: this.state.secondaryVendorName, // //string \n secondaryVendorPartNumber: this.state.secondaryVendorPartNumber, // //string \n application: this.state.application, // //string \n effectiveDate: this.state.effectiveDate, // //DateTime?\n signed: this.state.signed, // //string \n createDate: this.state.createDate, // //DateTime?\n approved: this.state.approved, // //string \n approveDate: this.state.approveDate, // //DateTime?\n workInstruction: this.state.workInstruction, // //string \n reasonForChange: this.state.reasonForChange, // //string \n note: this.state.note, // //string \n validationOfChange: this.state.validationOfChange, // //string \n bomsForDelete: this.state.bomsForDelete,\n bomsForInsert: this.state.tempBomAdditions\n }\n\n let body = {\n basicInformation,\n customerPartNumbers,\n billOfMaterials,\n bomsForDelete: this.state.bomsForDelete,\n bomsForInsert: this.state.tempBomAdditions\n }\n let configs = {\n headers: {\n 'Content-Type': 'application/json'\n }\n };\n if (designSpecId == \"new\") {\n // Set a few values to num since they are NaN. Will be logically handled on the back end.\n body.basicInformation.partNumber1 = 0;\n body.basicInformation.revisionLevel = 0;\n await axios.post(`/api/partnumber/general/new`, body, configs)\n .then(res => {\n const { designSpecId, partNumber, revisionLevel } = res.data\n location.href = `/dspecs/general/form/${designSpecId}/${partNumber}/${revisionLevel}`\n })\n .catch(err => alert(err))\n } else {\n await axios.put(`/api/designspec/general/updatespec/${designSpecId}/${partNumber1}/${revisionLevel}`, body, configs)\n .then(res => {\n location.href = `/dspecs/general/form/${designSpecId}/${partNumber1}/${revisionLevel}`\n })\n .catch(err => alert(err))\n }\n }\n\n\n discardChanges = () => {\n const userResponse = confirm('Are you sure you want to erase all temporary changes?')\n if (userResponse) {\n return window.location.reload(true);\n }\n }\n\n render() {\n const { designSpecId, partNumber1, revisionLevel, formDisabled, formStatus } = this.state;\n const {\n basicInformation,\n additionalInformation,\n additionalInformation2,\n additionalInformation3,\n } = generalFormBuilder(this.state)\n // const parsedBoms: DesignSpecBillOfMaterialDto = bomBuilder(this.state.boms);\n let formStatusAlert;\n let editButton;\n switch (this.state.formStatus) {\n case 'edit':\n formStatusAlert = <div className=\"change-status editing\">Currently Editing</div>;\n break;\n case 'review':\n if (this.state.statusName == \"Submitted for FAC\") {\n formStatusAlert = <FACMessage approvalMessage={this.approveFAC} rejectionMessage={this.reject} />\n }\n if (this.state.statusName == \"Submitted for Approval\") {\n formStatusAlert = <ApprovalMessage approvalMessage={this.approve} rejectionMessage={this.reject} />\n }\n break;\n }\n let testPrintButton = <Button className=\"btn btn-primary heading-button\" onClick={this.pdf}>Print This Page(Debug Only)</Button>\n editButton = <button\n disabled={this.state.formStatus == 'edit' || this.state.statusName == 'Submitted for Approval' || this.state.statusName == 'Submitted for FAC' || this.state.isLoading}\n type=\"submit\"\n className=\"btn btn-primary heading-button\"\n onClick={() => this.makeCopyForEdit()}\n >{PencilIcon} &nbsp; Edit</button>;\n\n return (\n <Container className=\"dashboard\" id=\"pdfContent\">\n <Row>\n <Col md={6}>\n <h3 className=\"page-title\">\n Engineering Change Order {ChevronRightIcon} General {ChevronRightIcon} {partNumber1}\n </h3>\n </Col>\n\n <Col md={6}>\n <div className=\"text-right\">\n {testPrintButton}\n {editButton}\n <PrintButton\n dsId={designSpecId}\n pn={partNumber1}\n rev={revisionLevel}\n />\n </div>\n </Col>\n </Row>\n <Row>\n <Col md={12} lg={12}>\n {formStatusAlert}\n <Card>\n <CardHeader>\n <div className=\"eco-heading\">\n {\n designSpecId === 'new' ?\n <>\n <div>PartNumber: <b>{'Will Populate on save'}</b></div>\n <div>ERN: <span>{0}</span></div>\n <div>D-Spec ID: <b>{'Will Populate on save'}</b></div>\n </>\n :\n <>\n <div>RPM Part Number: <b>{partNumber1}</b></div>\n <div>ERN: <span>{revisionLevel}</span></div>\n <div>D-Spec ID: <span>{designSpecId}</span></div>\n </>\n }\n </div>\n </CardHeader>\n <CardBody>\n <FormRow\n handleChange={this.handleChange}\n formDirection=\"horizontal\"\n formLayout=\"third\"\n formData={basicInformation}\n formDisabled={formDisabled}\n />\n </CardBody>\n </Card>\n\n <Card>\n <CardHeader>\n Additional Information\n </CardHeader>\n <CardBody>\n <FormRow\n handleChange={this.handleChange}\n formDirection=\"horizontal\"\n formLayout=\"third\"\n formData={additionalInformation}\n formDisabled={this.state.formDisabled}\n /><br />\n <FormRow\n handleChange={this.handleChange}\n formDirection=\"horizontal\"\n formLayout=\"twoone\"\n formData={additionalInformation2}\n formDisabled={this.state.formDisabled}\n /><br />\n <FormRow\n handleChange={this.handleChange}\n formDirection=\"vertical\"\n formLayout=\"third\"\n formData={additionalInformation3}\n formDisabled={this.state.formDisabled}\n />\n </CardBody>\n </Card>\n\n <Card>\n <CardHeader>\n Bill of Materials\n </CardHeader>\n <CardBody>\n <BOMTable\n tempBomCount={this.state.tempBomAdditions.length}\n formStatus={formStatus}\n formDisabled={formDisabled}\n boms={partNumber1 === 'new' ? emptyBomData : this.state.boms}\n handleBomChange={this.handleBomChange}\n tempBomData={partNumber1 === 'new' ? emptyBomData : this.state.tempBomAdditions}\n emptyBomRow={this.state.newBomRow}\n handleNewRowChange={this.handleNewRowChange}\n addNewBomRecord={this.addNewBomRecord}\n deleteBomItem={this.deleteBomItem}\n />\n\n </CardBody>\n </Card>\n\n {\n this.state.formStatus == 'edit' &&\n <SubmissionButtonsGroup\n discardChanges={this.discardChanges}\n saveECO={this.saveECO}\n submitForApproval={this.submitForApproval}\n submitForFAC={this.submitForFAC}\n toggleFACRequirement={this.toggleFACRequirement}\n reviewRequired={this.state.reviewRequired}\n changeFormStatus={this.changeStatus}\n />\n }\n\n </Col>\n </Row>\n </Container>\n );\n }\n}\n\n\n\nexport default GeneralECOForm;\n\n// export default reduxForm({\n// form: \"vertical_form_layout_half\" // a unique identifier for this form\n// })(VerticalFormHalf);\n"]},"metadata":{},"sourceType":"module"}