{"ast":null,"code":"import _slicedToArray from \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread\";\nimport _regeneratorRuntime from \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits\";\nvar _jsxFileName = \"/Users/michielcarman/Projects/React Access/React_Client_App_Access/src/containers/Dspecs/Kits/KitsECO.tsx\";\nimport React, { Component } from \"react\";\nimport { Card, CardBody, Col, Container, Row, CardHeader } from \"reactstrap\";\nimport FormRow from \"../../../shared/components/form/FormRow\";\nimport BOMTableSet from \"../../../shared/components/form/BOMTableSet\";\nimport PrintButton from \"../../../shared/components/PrintButton\";\nimport { FACMessage } from \"../../../shared/components/FACMessage/FACMessage\";\nimport axios from 'axios'; //PDF Utilities\n\nimport html2canvas from 'html2canvas';\nimport jsPDF from 'jspdf';\nimport { kitsFormBuilder } from './kitsFormBuilder';\nimport { SubmissionButtonsGroup } from \"../../../shared/components/SubmissionButtonsGroup/SubmissionButtonsGroup\";\nimport { emptyBasicInformation, emptyAdditionalInformation //emptyFormData5 as formData5,\n, emptyBomData } from './EmptyKitsECODataFields';\nimport { ApprovalMessage } from \"../../../shared/components/ApprovalMessage/ApprovalMessage\"; //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});\n\nvar KitsECOForm = /*#__PURE__*/function (_Component) {\n _inherits(KitsECOForm, _Component);\n\n function KitsECOForm(props) {\n var _this;\n\n _classCallCheck(this, KitsECOForm);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(KitsECOForm).call(this, props));\n _this.approve = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var _this$state, designSpecId, partNumber, 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, partNumber = _this$state.partNumber, revisionLevel = _this$state.revisionLevel;\n alert(\"This will be submitted for final approval\");\n _context.next = 4;\n return axios.put(\"/api/designspec/changeStatus/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel, \"/Approved\")).then(function (res) {\n location.href = \"/dspecs/kits/form/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n return console.log(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, partNumber, 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, partNumber = _this$state2.partNumber, 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(partNumber, \"/\").concat(revisionLevel, \"/In%20Process\")).then(function (res) {\n location.href = \"/dspecs/kits/form/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n return console.log(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 _context3.next = 3;\n return _this.submitForApproval();\n\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n _this.submitForFAC = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n var userRes, _this$state3, designSpecId, partNumber, revisionLevel, email, subject, msgBody, defaultEmail;\n\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n userRes = confirm(\"Do you want to send this for First Article Check?\");\n _this$state3 = _this.state, designSpecId = _this$state3.designSpecId, partNumber = _this$state3.partNumber, revisionLevel = _this$state3.revisionLevel; // Submit email to user\n\n if (!userRes) {\n _context4.next = 6;\n break;\n }\n\n // Make Network Req\n alert(\"submitting this Dspec, Marking it as 'Submitted for FAC'\");\n _context4.next = 6;\n return axios.put(\"/api/designspec/changeStatus/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel, \"/Submitted%20for%20FAC\")).then(function (res) {\n console.log(res);\n console.log('Will need to call a service here.');\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(partNumber, \", ERN: \").concat(revisionLevel);\n location.href = \"/dspecs/kits/form/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n console.log(err);\n alert(err);\n });\n\n case 6:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n _this.submitForApproval = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {\n var _this$state4, designSpecId, partNumber, revisionLevel;\n\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n alert(\"Submitting this DSpec, Marking it as 'Submitted For Approval'\");\n _this$state4 = _this.state, designSpecId = _this$state4.designSpecId, partNumber = _this$state4.partNumber, revisionLevel = _this$state4.revisionLevel;\n _context5.next = 4;\n return axios.put(\"/api/designspec/changeStatus/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel, \"/Submitted%20for%20Approval\")).then(function (res) {\n location.href = \"/dspecs/kits/form/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n console.log(err);\n alert(err);\n });\n\n case 4:\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$state5, designSpecId, partNumber, revisionLevel, data;\n\n return _regeneratorRuntime.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _this$state5 = _this.state, designSpecId = _this$state5.designSpecId, partNumber = _this$state5.partNumber, revisionLevel = _this$state5.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(partNumber, \"/\").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/kits/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({\n formStatus: newStatus,\n formDisabled: false\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.toggleSubmitButton = function () {\n alert('change');\n var newState = !_this.state.reviewRequired;\n\n _this.setState({\n reviewRequired: newState\n });\n };\n\n _this.handleChange = function (e) {\n // this.setState({\n // ...this.state,\n // [e.target.name]: e.target.value\n // })\n var setOfCommonCustomers = _this.state.customerPartNumbers.map(function (cust) {\n return cust.Name;\n });\n\n var jsPartNumbers = _this.state.customerPartNumbers; // Handle the Nested Customer Numbers\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 if (e.target.name == \"engineCapacity\" || e.target.name == \"transCapacity\" || e.target.name == \"hydCapacity\") {\n _this.setState(_objectSpread({}, _this.state, _defineProperty({}, e.target.name, parseFloat(e.target.value))));\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$state6, designSpecId, partNumber, revisionLevel, customerPartNumbers, billOfMaterials, basicInformation, applicationsTab, 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 for DesignSpecId ${this.state.designSpecId}. They will not be submitted for review.`)\n // let stateStringified = JSON.stringify(this.state);\n // let designSpecId = this.state.designSpecId;\n // localStorage.setItem(designSpecId, stateStringified);\n // window.location.reload();\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$state6 = _this.state, designSpecId = _this$state6.designSpecId, partNumber = _this$state6.partNumber, revisionLevel = _this$state6.revisionLevel;\n billOfMaterials = _this.state.boms;\n customerPartNumbers = _this.state.customerPartNumbers;\n basicInformation = {\n designSpecId: parseInt(_this.state.designSpecId),\n partNumber: _this.state.partNumber,\n revisionLevel: _this.state.revisionLevel,\n // Basic Information\n partCodeName: _this.state.partCodeName,\n description: _this.state.description,\n statusName: _this.state.statusName,\n comments: _this.state.comments,\n customerName: _this.state.customerName,\n primaryCustomerPartNumber: _this.state.primaryCustomerPartNumber,\n primaryVendorName: _this.state.primaryVendorName,\n primaryVendorPartNumber: _this.state.primaryVendorPartNumber,\n secondaryVendorName: _this.state.secondaryVendorName,\n secondaryVendorPartNumber: _this.state.secondaryVendorPartNumber,\n // Additional Information\n application: _this.state.application,\n effectiveDate: _this.state.effectiveDate,\n signed: _this.state.signed,\n createDate: _this.state.createDate,\n checked: _this.state.checked,\n approveDate: _this.state.approveDate,\n workInstruction: _this.state.workInstruction,\n //formData5\n reasonForChange: _this.state.reasonForChange,\n validation: _this.state.validation,\n note: _this.state.note\n };\n applicationsTab = {\n serialPrefix: _this.state.serialPrefix || \"\",\n startingSerial: _this.state.startingSerial || \"\",\n endingSerial: _this.state.endingSerial || \"\",\n makeName: _this.state.makeName || \"\",\n modelName: _this.state.modelName || \"\",\n productName: _this.state.productName || \"\",\n engineMakeName: _this.state.engineMakeName || \"\",\n engineModelName: _this.state.engineModelName || \"\",\n arrangement: _this.state.arrangement || \"\",\n customerName: _this.state.customerName || \"\",\n oereman: _this.state.oereman || null,\n voltage: _this.state.voltage || \"\",\n type: _this.state.type || \"\",\n upfitKit: _this.state.upfitKit || null,\n universalKit: _this.state.universalKit || null,\n motor: _this.state.motor || \"\",\n electric: _this.state.electric || \"\",\n plumbing: _this.state.plumbing || \"\",\n engineCapacity: _this.state.engineCapacity ? _this.state.engineCapacity : 0,\n transCapacity: _this.state.transCapacity ? _this.state.transCapacity : 0,\n hydCapacity: _this.state.hydCapacity ? _this.state.hydCapacity : 0\n };\n body = {\n applicationsTab: applicationsTab,\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 = 16;\n break;\n }\n\n body.basicInformation.partNumber = 0;\n body.basicInformation.revisionLevel = 0;\n body.basicInformation.designSpecId = 0;\n _context7.next = 14;\n return axios.post(\"/api/partnumber/kit/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/kits/form/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n alert(err);\n console.error(err);\n });\n\n case 14:\n _context7.next = 18;\n break;\n\n case 16:\n _context7.next = 18;\n return axios.put(\"/api/designspec/kit/updatespec/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel), body, configs).then(function (res) {\n var _res$data2 = res.data,\n designSpecId = _res$data2.designSpecId,\n partNumber = _res$data2.partNumber,\n revisionLevel = _res$data2.revisionLevel; //TODO: Fix this as they all return undefined...\n\n location.href = \"/dspecs/kits/form/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel);\n }).catch(function (err) {\n console.error(err);\n alert(err);\n });\n\n case 18:\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 changes?');\n\n if (userResponse) {\n console.info('Getting rid of changes to ');\n window.location.reload(true);\n }\n\n console.info('Aborting Erasure');\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 console.log(e.target.parentNode.parentNode.id);\n console.log(e.target.name);\n console.log(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 var _objectSpread4;\n\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 var inputName = name; // Grab the Tab Name\n\n var element = document.querySelector('.bom-tab-data'); // or \"e.target.e.target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode\"\n\n var tabType = element.dataset.tabname; // //Update state with new property and value.\n\n _this.setState(_objectSpread({}, _this.state, {\n newRow: _objectSpread({}, _this.state.newRow, (_objectSpread4 = {}, _defineProperty(_objectSpread4, inputName, value), _defineProperty(_objectSpread4, \"name\", tabType), _objectSpread4))\n }));\n };\n\n _this.addNewBomRecord = function () {\n // // Grab State newRow.\n // let { newRow } = this.state\n // this.setState({\n // ...this.state,\n // tempBomAdditions: [...this.state.tempBomAdditions, newRow],\n // newRow: {\n // old: '',\n // new: '',\n // partNumber: '',\n // description: '',\n // name: '',\n // }\n // })\n // Grab State newRow.\n var newRow = _this.state.newRow;\n\n _this.setState(_objectSpread({}, _this.state, {\n tempBomAdditions: [].concat(_toConsumableArray(_this.state.tempBomAdditions), [newRow]),\n newRow: {\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 delId = _idForDelete$split2[1]; // Remove from Boms\n\n\n if (type === 'bom') {\n var remainingboms = _this.state.boms.filter(function (_, idx) {\n return _.id !== parseInt(delId);\n });\n\n _this.setState(_objectSpread({}, _this.state, {\n boms: _toConsumableArray(remainingboms)\n }));\n } // Remove from Temps\n\n\n if (type === 'temp') {\n var _remainingboms = _this.state.tempBomAdditions.filter(function (_, idx) {\n return idx !== parseInt(delId);\n });\n\n _this.setState(_objectSpread({}, _this.state, {\n tempBomAdditions: _toConsumableArray(_remainingboms)\n }));\n }\n };\n\n _this.state = {\n isLoading: true,\n formStatus: 'read',\n reviewRequired: false,\n designSpecId: _this.props.match.params.designSpecId,\n partNumber: _this.props.match.params.partNumber,\n revisionLevel: _this.props.match.params.revisionLevel,\n formDisabled: true,\n boms: _toConsumableArray(emptyBomData),\n newRow: {\n old: '',\n new: '',\n partNumber: '',\n partDescription: '',\n name: ''\n },\n tempBomAdditions: [],\n bomsForDelete: [],\n bomsForInsert: [],\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 //ApplicationsTab\n serialPrefix: \"\",\n startingSerial: \"\",\n endingSerial: \"\",\n makeName: \"\",\n modelName: \"\",\n productName: \"\",\n engineMakeName: \"\",\n engineModelName: \"\",\n arrangement: \"\",\n appCustomerName: \"\",\n oereman: null,\n voltage: \"\",\n type: \"\",\n upfitKit: null,\n universalKit: null,\n motor: \"\",\n electric: \"\",\n plumbing: \"\",\n engineCapacity: 0,\n transCapacity: 0,\n hydCapacity: 0,\n // Basic Information\n partCodeName: '',\n description: '',\n statusName: '',\n comments: '',\n customerName: '',\n primaryCustomerPartNumber: '',\n primaryVendorName: '',\n primaryVendorPartNumber: '',\n secondaryVendorName: '',\n secondaryVendorPartNumber: '',\n // Additional Information\n application: '',\n effectiveDate: null,\n signed: '',\n createDate: null,\n checked: '',\n approveDate: null,\n workInstruction: '',\n // formData5\n reasonForChange: '',\n validation: '',\n note: '',\n customerNameListForDropdown: [],\n vendorNameListForDropdown: [],\n partCodeNameListforDropdown: [],\n appMakeListForDropdown: [],\n appModelListForDropdown: [],\n appTypeListForDropdown: []\n };\n return _this;\n }\n\n _createClass(KitsECOForm, [{\n key: \"componentDidMount\",\n value: function () {\n var _componentDidMount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8() {\n var _this$state7, designSpecId, partNumber, revisionLevel, BasicInformation, BillOfMaterials, CustomerPartNumbers, jsPartNumbers, ApplicationsTab, AllCustomerList, AllVendorsList, PartCodeList, AppMakeList, AppModelList, AppTypeList, initialformStatus, initFormDisabled, custRes, custCt, vendorRes, vendorCt, partCodeRes, partCodeCt, appMakeRes, appMakeCt, appModelRes, appModelCt, appTypes, emptyCustomerPartNumbers;\n\n return _regeneratorRuntime.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _this$state7 = this.state, designSpecId = _this$state7.designSpecId, partNumber = _this$state7.partNumber, revisionLevel = _this$state7.revisionLevel;\n BillOfMaterials = null;\n CustomerPartNumbers = null;\n AllCustomerList = [];\n AllVendorsList = [];\n PartCodeList = [];\n AppMakeList = [];\n AppModelList = [];\n AppTypeList = [];\n\n if (!(designSpecId !== 'new')) {\n _context8.next = 18;\n break;\n }\n\n _context8.next = 12;\n return axios.get(\"/api/designspec/kit/basicinformation/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel)).then(function (res) {\n BasicInformation = res.data.items.records[0];\n }).catch(function (err) {\n console.log(err);\n });\n\n case 12:\n _context8.next = 14;\n return axios.get(\"/api/designspec/kit/customerpartnumbers/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").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 console.log(custName);\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.log(err);\n });\n\n case 14:\n _context8.next = 16;\n return axios.get(\"/api/designspec/kit/billofmaterials/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").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; // TODO: Handle case where bom.count > 10(need to look into pagination.)\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.log(err);\n });\n\n case 16:\n _context8.next = 18;\n return axios.get(\"/api/designspec/kit/applicationsTab/\".concat(designSpecId, \"/\").concat(partNumber, \"/\").concat(revisionLevel)).then(function (res) {\n ApplicationsTab = res.data.items.records[0];\n }).catch(function (err) {\n return console.error(err);\n });\n\n case 18:\n // Set the intial for state by reading from designSpec\n initialformStatus = \"read\";\n initFormDisabled = true; // ********************\n // Get Dropdown lists\n // ********************\n\n _context8.next = 22;\n return axios.get(\"/api/customer\");\n\n case 22:\n custRes = _context8.sent;\n custCt = custRes.data.items.paging.records.length;\n _context8.next = 26;\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 26:\n _context8.next = 28;\n return axios.get(\"/api/vendor\");\n\n case 28:\n vendorRes = _context8.sent;\n vendorCt = vendorRes.data.items.paging.records.length;\n _context8.next = 32;\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 32:\n _context8.next = 34;\n return axios.get(\"/api/partcode\");\n\n case 34:\n partCodeRes = _context8.sent;\n partCodeCt = partCodeRes.data.items.paging.records.length;\n _context8.next = 38;\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 38:\n _context8.next = 40;\n return axios.get(\"/api/make\");\n\n case 40:\n appMakeRes = _context8.sent;\n appMakeCt = appMakeRes.data.items.paging.records.length;\n _context8.next = 44;\n return axios.get(\"/api/make?size=\".concat(appMakeCt)).then(function (res) {\n AppMakeList = res.data.items.records.map(function (makeData) {\n return makeData.name;\n });\n AppMakeList.sort();\n }).catch(function (err) {\n console.error(err);\n });\n\n case 44:\n _context8.next = 46;\n return axios.get(\"/api/model\");\n\n case 46:\n appModelRes = _context8.sent;\n appModelCt = appModelRes.data.items.paging.records.length;\n _context8.next = 50;\n return axios.get(\"/api/model?size=\".concat(appModelCt)).then(function (res) {\n AppModelList = res.data.items.records.map(function (modelData) {\n return modelData.name;\n });\n AppModelList.sort();\n }).catch(function (err) {\n console.error(err);\n });\n\n case 50:\n // App Type\n appTypes = ['Integral', 'QuickFit', 'Remote', 'SCET']; //TODO: A query that grabs/ groups the application types.\n // 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 ? BillOfMaterials : _toConsumableArray(emptyBomData),\n formDisabled: initFormDisabled,\n formStatus: initialformStatus,\n reviewRequired: false,\n // designSpecId: BasicInformation ? BasicInformation.designSpecId : '',\n partNumber: BasicInformation ? BasicInformation.partNumber : '',\n revisionLevel: BasicInformation ? BasicInformation.revisionLevel : '',\n customerPartNumbers: jsPartNumbers || emptyCustomerPartNumbers,\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 // Additional Information\n application: BasicInformation ? BasicInformation.application : '',\n effectiveDate: BasicInformation ? BasicInformation.effectiveDate : null,\n signed: BasicInformation ? BasicInformation.signed : '',\n createDate: BasicInformation ? BasicInformation.createDate : null,\n checked: BasicInformation ? BasicInformation.checked : '',\n approveDate: BasicInformation ? BasicInformation.approveDate : null,\n workInstruction: BasicInformation ? BasicInformation.workInstruction : '',\n //formData5\n reasonForChange: BasicInformation ? BasicInformation.reasonForChange : '',\n validation: BasicInformation ? BasicInformation.validation : '',\n note: BasicInformation ? BasicInformation.note : '',\n // ApplicationsTab\n serialPrefix: ApplicationsTab ? ApplicationsTab.serialPrefix : '',\n startingSerial: ApplicationsTab ? ApplicationsTab.startingSerial : '',\n endingSerial: ApplicationsTab ? ApplicationsTab.endingSerial : '',\n makeName: ApplicationsTab ? ApplicationsTab.makeName : '',\n modelName: ApplicationsTab ? ApplicationsTab.modelName : '',\n productName: ApplicationsTab ? ApplicationsTab.productName : '',\n engineMakeName: ApplicationsTab ? ApplicationsTab.engineMakeName : '',\n engineModelName: ApplicationsTab ? ApplicationsTab.engineModelName : '',\n arrangement: ApplicationsTab ? ApplicationsTab.arrangement : '',\n appCustomerName: ApplicationsTab ? ApplicationsTab.appCustomerName : '',\n oereman: ApplicationsTab ? ApplicationsTab.oereman : '',\n voltage: ApplicationsTab ? ApplicationsTab.voltage : '',\n type: ApplicationsTab ? ApplicationsTab.type : '',\n upfitKit: ApplicationsTab ? ApplicationsTab.upfitKit : '',\n universalKit: ApplicationsTab ? ApplicationsTab.universalKit : '',\n motor: ApplicationsTab ? ApplicationsTab.motor : '',\n electric: ApplicationsTab ? ApplicationsTab.electric : '',\n plumbing: ApplicationsTab ? ApplicationsTab.plumbing : '',\n engineCapacity: ApplicationsTab ? ApplicationsTab.engineCapacity : 0,\n transCapacity: ApplicationsTab ? ApplicationsTab.transCapacity : 0,\n hydCapacity: ApplicationsTab ? ApplicationsTab.hydCapacity : 0,\n customerNameListForDropdown: AllCustomerList,\n vendorNameListForDropdown: AllVendorsList,\n partCodeNameListforDropdown: PartCodeList,\n appMakeListForDropdown: AppMakeList,\n appModelListForDropdown: AppModelList,\n appTypeListForDropdown: appTypes\n }));\n\n case 56:\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$state8 = this.state,\n designSpecId = _this$state8.designSpecId,\n partNumber = _this$state8.partNumber,\n revisionLevel = _this$state8.revisionLevel;\n var formStatus = this.state.formStatus;\n var formStatusAlert;\n var formDisabled = true;\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: 780,\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: 784,\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: 787,\n columnNumber: 29\n }\n });\n }\n\n break;\n }\n\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: 792,\n columnNumber: 18\n }\n }, PencilIcon, \" \\xA0 Edit\");\n\n var _kitsFormBuilder = kitsFormBuilder(this.state),\n basicInformation = _kitsFormBuilder.basicInformation,\n additionalInformation = _kitsFormBuilder.additionalInformation,\n formData5 = _kitsFormBuilder.formData5,\n boms = _kitsFormBuilder.boms,\n applicationsTab = _kitsFormBuilder.applicationsTab;\n\n return /*#__PURE__*/React.createElement(Container, {\n className: \"dashboard\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 808,\n columnNumber: 7\n }\n }, /*#__PURE__*/React.createElement(Row, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 809,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(Col, {\n md: 8,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 810,\n columnNumber: 11\n }\n }, /*#__PURE__*/React.createElement(\"h3\", {\n className: \"page-title\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 811,\n columnNumber: 13\n }\n }, \"Engineering Change Order \", /*#__PURE__*/React.createElement(\"span\", {\n className: \"lnr lnr-chevron-right\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 811,\n columnNumber: 65\n }\n }), \" Kits \", /*#__PURE__*/React.createElement(\"span\", {\n className: \"lnr lnr-chevron-right\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 811,\n columnNumber: 119\n }\n }), \" \", this.state.partNumber)), /*#__PURE__*/React.createElement(Col, {\n md: 4,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 813,\n columnNumber: 11\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"text-right\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 814,\n columnNumber: 13\n }\n }, editButton, /*#__PURE__*/React.createElement(PrintButton, {\n dsId: this.state.designSpecId,\n pn: this.state.partNumber,\n rev: this.state.revisionLevel,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 816,\n columnNumber: 15\n }\n })))), /*#__PURE__*/React.createElement(Row, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 824,\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: 825,\n columnNumber: 11\n }\n }, formStatusAlert, /*#__PURE__*/React.createElement(Card, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 827,\n columnNumber: 13\n }\n }, /*#__PURE__*/React.createElement(CardHeader, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 828,\n columnNumber: 15\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"eco-heading\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 829,\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: 833,\n columnNumber: 25\n }\n }, \"PartNumber: \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 833,\n columnNumber: 42\n }\n }, 'Will Populate on save')), /*#__PURE__*/React.createElement(\"div\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 834,\n columnNumber: 25\n }\n }, \"ERN: \", /*#__PURE__*/React.createElement(\"span\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 834,\n columnNumber: 35\n }\n }, 0)), /*#__PURE__*/React.createElement(\"div\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 835,\n columnNumber: 25\n }\n }, \"D-Spec ID: \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 835,\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: 839,\n columnNumber: 25\n }\n }, \"RPM Part Number: \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 839,\n columnNumber: 48\n }\n }, partNumber)), /*#__PURE__*/React.createElement(\"div\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 840,\n columnNumber: 25\n }\n }, \"ERN: \", /*#__PURE__*/React.createElement(\"span\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 840,\n columnNumber: 35\n }\n }, revisionLevel)), /*#__PURE__*/React.createElement(\"div\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 841,\n columnNumber: 25\n }\n }, \"D-Spec ID: \", /*#__PURE__*/React.createElement(\"span\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 841,\n columnNumber: 41\n }\n }, designSpecId))))), /*#__PURE__*/React.createElement(CardBody, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 846,\n columnNumber: 15\n }\n }, /*#__PURE__*/React.createElement(FormRow, {\n handleChange: this.handleChange,\n formDirection: \"horizontal\",\n formLayout: \"third\",\n formData: this.state.partNumber === 'new' ? emptyBasicInformation : basicInformation,\n formDisabled: this.state.formDisabled,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 847,\n columnNumber: 17\n }\n }))), /*#__PURE__*/React.createElement(Card, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 857,\n columnNumber: 13\n }\n }, /*#__PURE__*/React.createElement(CardHeader, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 858,\n columnNumber: 15\n }\n }, \"Bill of Materials\"), /*#__PURE__*/React.createElement(CardBody, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 861,\n columnNumber: 15\n }\n }, /*#__PURE__*/React.createElement(BOMTableSet, {\n handleAppChange: this.handleChange // tempBomCount={this.state.tempAdditions.length}\n ,\n formStatus: this.state.formStatus,\n formDisabled: this.state.formDisabled // boms={this.state.partNum === 'new' ? emptyBomData : this.state.boms}\n ,\n tempBomData: this.state.partNumber === 'new' ? emptyBomData : this.state.tempBomAdditions,\n emptyBomRow: this.state.newRow,\n handleNewRowChange: this.handleNewRowChange,\n addNewBomRecord: this.addNewBomRecord // deleteBomItem={this.deleteBomItem}\n ,\n deleteBomItem: this.deleteBomItem,\n applicationsTab: applicationsTab,\n bomData: this.state.partNumber === 'new' ? emptyBomData : boms,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 862,\n columnNumber: 17\n }\n }))), /*#__PURE__*/React.createElement(Card, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 879,\n columnNumber: 13\n }\n }, /*#__PURE__*/React.createElement(CardHeader, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 880,\n columnNumber: 15\n }\n }, \"Additional Information\"), /*#__PURE__*/React.createElement(CardBody, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 883,\n columnNumber: 15\n }\n }, /*#__PURE__*/React.createElement(FormRow, {\n handleChange: this.handleChange,\n formDirection: \"vertical\",\n formLayout: \"twoone\",\n formData: this.state.partNumber === 'new' ? emptyAdditionalInformation : additionalInformation,\n formDisabled: this.state.formDisabled,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 884,\n columnNumber: 17\n }\n }))), this.state.formStatus == 'edit' && /*#__PURE__*/React.createElement(SubmissionButtonsGroup, {\n discardChanges: this.discardChanges,\n submitForApproval: this.submitForApproval,\n submitForFAC: this.submitForFAC,\n saveECO: this.saveECO,\n toggleFACRequirement: this.toggleFACRequirement,\n reviewRequired: this.state.reviewRequired,\n changeFormStatus: this.changeStatus,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 896,\n columnNumber: 15\n }\n }))));\n }\n }]);\n\n return KitsECOForm;\n}(Component);\n\nexport default KitsECOForm; // export default reduxForm({\n// form: \"vertical_form_layout_half\" // a unique identifier for this form\n// })(VerticalFormHalf);\n// ","map":{"version":3,"sources":["/Users/michielcarman/Projects/React Access/React_Client_App_Access/src/containers/Dspecs/Kits/KitsECO.tsx"],"names":["React","Component","Card","CardBody","Col","Container","Row","CardHeader","FormRow","BOMTableSet","PrintButton","FACMessage","axios","html2canvas","jsPDF","kitsFormBuilder","SubmissionButtonsGroup","emptyBasicInformation","emptyAdditionalInformation","emptyBomData","ApprovalMessage","PencilIcon","KitsECOForm","props","approve","state","designSpecId","partNumber","revisionLevel","alert","put","then","res","location","href","catch","err","console","log","reject","approveFAC","submitForApproval","submitForFAC","userRes","confirm","defaultEmail","email","prompt","subject","msgBody","makeCopyForEdit","post","data","newDsId","newPn","newRev","error","changeStatus","newStatus","setState","formStatus","formDisabled","toggleSubmitButton","newState","reviewRequired","handleChange","e","setOfCommonCustomers","customerPartNumbers","map","cust","Name","jsPartNumbers","includes","target","name","custName","value","idx","findIndex","pn","CustomerPartNumber","parseFloat","toggleFACRequirement","flippedState","saveECO","billOfMaterials","boms","basicInformation","parseInt","partCodeName","description","statusName","comments","customerName","primaryCustomerPartNumber","primaryVendorName","primaryVendorPartNumber","secondaryVendorName","secondaryVendorPartNumber","application","effectiveDate","signed","createDate","checked","approveDate","workInstruction","reasonForChange","validation","note","applicationsTab","serialPrefix","startingSerial","endingSerial","makeName","modelName","productName","engineMakeName","engineModelName","arrangement","oereman","voltage","type","upfitKit","universalKit","motor","electric","plumbing","engineCapacity","transCapacity","hydCapacity","body","bomsForDelete","bomsForInsert","tempBomAdditions","configs","headers","discardChanges","userResponse","info","window","reload","handleBomChange","parentNode","id","split","fieldName","val","newBoms","bom","i","newBom","bOld","bNew","Object","assign","handleNewRowChange","inputName","element","document","querySelector","tabType","dataset","tabname","newRow","addNewBomRecord","deleteBomItem","idForDelete","delId","remainingboms","filter","_","isLoading","match","params","old","new","partDescription","appCustomerName","customerNameListForDropdown","vendorNameListForDropdown","partCodeNameListforDropdown","appMakeListForDropdown","appModelListForDropdown","appTypeListForDropdown","BillOfMaterials","CustomerPartNumbers","AllCustomerList","AllVendorsList","PartCodeList","AppMakeList","AppModelList","AppTypeList","get","BasicInformation","items","records","forEach","xcpn","customerPartNumber","totalRecords","paging","length","recordsPerPage","page","getMore","ApplicationsTab","initialformStatus","initFormDisabled","custRes","custCt","customerData","sort","vendorRes","vendorCt","vendorData","partCodeRes","partCodeCt","appMakeRes","appMakeCt","makeData","appModelRes","appModelCt","modelData","appTypes","emptyCustomerPartNumbers","input","getElementById","canvas","imgData","toDataURL","pdf","addImage","save","formStatusAlert","editButton","additionalInformation","formData5"],"mappings":"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","sourcesContent":["import React, { Component } from \"react\";\nimport { Card, CardBody, Col, Container, Row, Button, ButtonToolbar, CardHeader } from \"reactstrap\";\nimport FormRow from \"../../../shared/components/form/FormRow\";\nimport BOMTableSet from \"../../../shared/components/form/BOMTableSet\";\nimport PrintButton from \"../../../shared/components/PrintButton\";\nimport { FACMessage } from \"../../../shared/components/FACMessage/FACMessage\";\nimport axios from 'axios';\n\n//PDF Utilities\nimport html2canvas from 'html2canvas'\nimport jsPDF from 'jspdf';\nimport { kitsFormBuilder } from './kitsFormBuilder'\nimport { Bom } from '../../../shared/interfaces/Index'\nimport { SubmissionButtonsGroup } from \"../../../shared/components/SubmissionButtonsGroup/SubmissionButtonsGroup\";\n\nimport {\n emptyBasicInformation,\n emptyAdditionalInformation,\n //emptyFormData5 as formData5,\n emptyBomData\n} from './EmptyKitsECODataFields'\n\nimport {\n KitBasicInformationDto,\n KitCustomerPartNumberDto,\n KitBillOfMaterial,\n KitApplicationsTab\n} from '../../../shared/interfaces/Index'\nimport { ApprovalMessage } from \"../../../shared/components/ApprovalMessage/ApprovalMessage\";\n\n//Icons\nconst PencilIcon = \n\ninterface ECOFormProps {\n match: any,\n}\nexport interface ECOFormState extends KitBasicInformationDto, KitApplicationsTab {\n formStatus: string,\n reviewRequired: boolean,\n designSpecId: any,\n partNumber: any,\n revisionLevel: any,\n formDisabled: boolean,\n newRow: any,\n boms: any,\n tempBomAdditions: any,\n bomsForInsert: any\n bomsForDelete: any\n customerPartNumbers: KitCustomerPartNumberDto[],\n\n customerNameListForDropdown: string[],\n vendorNameListForDropdown: string[],\n partCodeNameListforDropdown: string[],\n appTypeListForDropdown: string[]\n appMakeListForDropdown: string[]\n appModelListForDropdown: string[]\n isLoading: boolean\n}\n\nclass KitsECOForm extends Component {\n\n constructor(props: ECOFormProps) {\n super(props);\n\n this.state = {\n isLoading: true,\n formStatus: 'read',\n reviewRequired: false,\n designSpecId: this.props.match.params.designSpecId,\n partNumber: this.props.match.params.partNumber,\n revisionLevel: this.props.match.params.revisionLevel,\n formDisabled: true,\n boms: [...emptyBomData],\n newRow: {\n old: '',\n new: '',\n partNumber: '',\n partDescription: '',\n name: ''\n },\n tempBomAdditions: [],\n bomsForDelete: [],\n bomsForInsert: [],\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 //ApplicationsTab\n serialPrefix: \"\",\n startingSerial: \"\",\n endingSerial: \"\",\n makeName: \"\",\n modelName: \"\",\n productName: \"\",\n engineMakeName: \"\",\n engineModelName: \"\",\n arrangement: \"\",\n appCustomerName: \"\",\n oereman: null,\n voltage: \"\",\n type: \"\",\n upfitKit: null,\n universalKit: null,\n motor: \"\",\n electric: \"\",\n plumbing: \"\",\n engineCapacity: 0,\n transCapacity: 0,\n hydCapacity: 0,\n\n\n // Basic Information\n partCodeName: '',\n description: '',\n statusName: '',\n comments: '',\n customerName: '',\n primaryCustomerPartNumber: '',\n primaryVendorName: '',\n primaryVendorPartNumber: '',\n secondaryVendorName: '',\n secondaryVendorPartNumber: '',\n\n // Additional Information\n application: '',\n effectiveDate: null,\n signed: '',\n createDate: null,\n checked: '',\n approveDate: null,\n workInstruction: '',\n // formData5\n reasonForChange: '',\n validation: '',\n note: '',\n customerNameListForDropdown: [],\n vendorNameListForDropdown: [],\n partCodeNameListforDropdown: [],\n appMakeListForDropdown: [],\n appModelListForDropdown: [],\n appTypeListForDropdown: [],\n };\n }\n\n\n async componentDidMount() {\n let { designSpecId, partNumber, revisionLevel } = this.state;\n let BasicInformation: KitBasicInformationDto | undefined;\n let BillOfMaterials: any = null;\n let CustomerPartNumbers: any = null;\n let jsPartNumbers: any;\n let ApplicationsTab: any | KitApplicationsTab;\n let AllCustomerList: string[] = [];\n let AllVendorsList: string[] = [];\n let PartCodeList: string[] = [];\n let AppMakeList: string[] = [];\n let AppModelList: string[] = [];\n let AppTypeList: string[] = []\n\n if (designSpecId !== 'new') { //FetchData\n await axios.get(`/api/designspec/kit/basicinformation/${designSpecId}/${partNumber}/${revisionLevel}`)\n .then(res => {\n BasicInformation = res.data.items.records[0];\n })\n .catch(err => { console.log(err) })\n await axios.get(`/api/designspec/kit/customerpartnumbers/${designSpecId}/${partNumber}/${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 console.log(custName)\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.log(err) })\n await axios.get(`/api/designspec/kit/billofmaterials/${designSpecId}/${partNumber}/${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 // TODO: Handle case where bom.count > 10(need to look into pagination.)\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 .catch(err => { console.log(err) })\n await axios.get(`/api/designspec/kit/applicationsTab/${designSpecId}/${partNumber}/${revisionLevel}`)\n .then(res => {\n ApplicationsTab = res.data.items.records[0];\n })\n .catch(err => console.error(err))\n }\n\n\n // Set the intial for state by reading from designSpec\n let initialformStatus: string = \"read\";\n let initFormDisabled: boolean = true;\n\n // ********************\n // Get Dropdown lists\n // ********************\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 let appMakeRes = await axios.get(`/api/make`)\n let appMakeCt = appMakeRes.data.items.paging.records.length;\n await axios.get(`/api/make?size=${appMakeCt}`)\n .then(res => {\n AppMakeList = res.data.items.records.map((makeData: any) => makeData.name)\n AppMakeList.sort()\n })\n .catch(err => {\n console.error(err)\n })\n\n let appModelRes = await axios.get(`/api/model`)\n let appModelCt = appModelRes.data.items.paging.records.length;\n await axios.get(`/api/model?size=${appModelCt}`)\n .then(res => {\n AppModelList = res.data.items.records.map((modelData: any) => modelData.name)\n AppModelList.sort()\n })\n .catch(err => {\n console.error(err)\n })\n\n // App Type\n const appTypes = ['Integral', 'QuickFit', 'Remote', 'SCET']\n //TODO: A query that grabs/ groups the application types.\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 ? BillOfMaterials : [...emptyBomData],\n formDisabled: initFormDisabled,\n formStatus: initialformStatus,\n reviewRequired: false,\n // designSpecId: BasicInformation ? BasicInformation.designSpecId : '',\n partNumber: BasicInformation ? BasicInformation.partNumber : '',\n revisionLevel: BasicInformation ? BasicInformation.revisionLevel : '',\n\n customerPartNumbers: jsPartNumbers || emptyCustomerPartNumbers,\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\n primaryVendorName: BasicInformation ? BasicInformation.primaryVendorName : '',\n primaryVendorPartNumber: BasicInformation ? BasicInformation.primaryVendorPartNumber : '',\n\n secondaryVendorName: BasicInformation ? BasicInformation.secondaryVendorName : '',\n secondaryVendorPartNumber: BasicInformation ? BasicInformation.secondaryVendorPartNumber : '',\n\n // Additional Information\n application: BasicInformation ? BasicInformation.application : '',\n effectiveDate: BasicInformation ? BasicInformation.effectiveDate : null,\n signed: BasicInformation ? BasicInformation.signed : '',\n createDate: BasicInformation ? BasicInformation.createDate : null,\n checked: BasicInformation ? BasicInformation.checked : '',\n approveDate: BasicInformation ? BasicInformation.approveDate : null,\n workInstruction: BasicInformation ? BasicInformation.workInstruction : '',\n //formData5\n reasonForChange: BasicInformation ? BasicInformation.reasonForChange : '',\n validation: BasicInformation ? BasicInformation.validation : '',\n note: BasicInformation ? BasicInformation.note : '',\n // ApplicationsTab\n serialPrefix: ApplicationsTab ? ApplicationsTab.serialPrefix : '',\n startingSerial: ApplicationsTab ? ApplicationsTab.startingSerial : '',\n endingSerial: ApplicationsTab ? ApplicationsTab.endingSerial : '',\n makeName: ApplicationsTab ? ApplicationsTab.makeName : '',\n modelName: ApplicationsTab ? ApplicationsTab.modelName : '',\n productName: ApplicationsTab ? ApplicationsTab.productName : '',\n engineMakeName: ApplicationsTab ? ApplicationsTab.engineMakeName : '',\n engineModelName: ApplicationsTab ? ApplicationsTab.engineModelName : '',\n arrangement: ApplicationsTab ? ApplicationsTab.arrangement : '',\n appCustomerName: ApplicationsTab ? ApplicationsTab.appCustomerName : '',\n oereman: ApplicationsTab ? ApplicationsTab.oereman : '',\n voltage: ApplicationsTab ? ApplicationsTab.voltage : '',\n type: ApplicationsTab ? ApplicationsTab.type : '',\n upfitKit: ApplicationsTab ? ApplicationsTab.upfitKit : '',\n universalKit: ApplicationsTab ? ApplicationsTab.universalKit : '',\n motor: ApplicationsTab ? ApplicationsTab.motor : '',\n electric: ApplicationsTab ? ApplicationsTab.electric : '',\n plumbing: ApplicationsTab ? ApplicationsTab.plumbing : '',\n engineCapacity: ApplicationsTab ? ApplicationsTab.engineCapacity : 0,\n transCapacity: ApplicationsTab ? ApplicationsTab.transCapacity : 0,\n hydCapacity: ApplicationsTab ? ApplicationsTab.hydCapacity : 0,\n\n customerNameListForDropdown: AllCustomerList,\n vendorNameListForDropdown: AllVendorsList,\n partCodeNameListforDropdown: PartCodeList,\n appMakeListForDropdown: AppMakeList,\n appModelListForDropdown: AppModelList,\n appTypeListForDropdown: appTypes,\n\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, partNumber, revisionLevel } = this.state;\n alert(`This will be submitted for final approval`)\n await axios.put(`/api/designspec/changeStatus/${designSpecId}/${partNumber}/${revisionLevel}/Approved`)\n .then(res => {\n location.href = `/dspecs/kits/form/${designSpecId}/${partNumber}/${revisionLevel}`\n })\n .catch(err => console.log(err))\n }\n reject = async () => {\n const { designSpecId, partNumber, revisionLevel } = this.state;\n alert(\"This will be knocked back down to 'In Process' status.\")\n await axios.put(`/api/designspec/changeStatus/${designSpecId}/${partNumber}/${revisionLevel}/In%20Process`)\n .then(res => {\n location.href = `/dspecs/kits/form/${designSpecId}/${partNumber}/${revisionLevel}`\n })\n .catch(err => console.log(err))\n }\n approveFAC = async () => {\n alert('The FAC has been approved, submitting for final approval')\n //Submitted for Approval\n await this.submitForApproval();\n }\n\n submitForFAC = async () => {\n const userRes = confirm(\"Do you want to send this for First Article Check?\")\n const { designSpecId, partNumber, revisionLevel } = this.state;\n\n // Submit email to user\n let email;\n let subject;\n let msgBody;\n let defaultEmail;\n if (userRes) {\n // Make Network Req\n alert(\"submitting this Dspec, Marking it as 'Submitted for FAC'\")\n\n await axios.put(`/api/designspec/changeStatus/${designSpecId}/${partNumber}/${revisionLevel}/Submitted%20for%20FAC`)\n .then(res => {\n console.log(res)\n console.log('Will need to call a service here.')\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: ${partNumber}, ERN: ${revisionLevel}`\n location.href = `/dspecs/kits/form/${designSpecId}/${partNumber}/${revisionLevel}`\n })\n .catch(err => {\n console.log(err)\n alert(err)\n })\n }\n }\n submitForApproval = async () => {\n alert(\"Submitting this DSpec, Marking it as 'Submitted For Approval'\")\n const { designSpecId, partNumber, revisionLevel } = this.state;\n\n await axios.put(`/api/designspec/changeStatus/${designSpecId}/${partNumber}/${revisionLevel}/Submitted%20for%20Approval`)\n .then(res => {\n location.href = `/dspecs/kits/form/${designSpecId}/${partNumber}/${revisionLevel}`\n })\n .catch(err => {\n console.log(err)\n alert(err)\n })\n }\n\n makeCopyForEdit = async () => {\n const { designSpecId, partNumber, 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}/${partNumber}/${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/kits/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({\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 toggleSubmitButton = () => {\n alert('change');\n const newState = !this.state.reviewRequired;\n this.setState({ reviewRequired: newState });\n }\n handleChange = (e: any) => {\n // this.setState({\n // ...this.state,\n // [e.target.name]: e.target.value\n // })\n let setOfCommonCustomers: any[] = this.state.customerPartNumbers.map(cust => cust.Name);\n let jsPartNumbers: any = this.state.customerPartNumbers;\n // Handle the Nested Customer Numbers\n if (setOfCommonCustomers.includes(e.target.name)) {\n let custName = e.target.name;\n let partNumber = e.target.value;\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 if (e.target.name == \"engineCapacity\" || e.target.name == \"transCapacity\" || e.target.name == \"hydCapacity\") {\n this.setState({\n ...this.state,\n [e.target.name]: parseFloat(e.target.value)\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 saveECO = async () => {\n //IF USING LOCAL HOST INSTEAD\n // alert(`Saving Changes for DesignSpecId ${this.state.designSpecId}. They will not be submitted for review.`)\n // let stateStringified = JSON.stringify(this.state);\n // let designSpecId = this.state.designSpecId;\n // localStorage.setItem(designSpecId, stateStringified);\n // window.location.reload();\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, partNumber, revisionLevel } = this.state;\n let customerPartNumbers: KitCustomerPartNumberDto[];\n let billOfMaterials: KitBillOfMaterial[];\n let basicInformation: KitBasicInformationDto;\n\n billOfMaterials = this.state.boms;\n customerPartNumbers = this.state.customerPartNumbers;\n basicInformation = {\n designSpecId: parseInt(this.state.designSpecId),\n partNumber: this.state.partNumber,\n revisionLevel: this.state.revisionLevel,\n\n // Basic Information\n partCodeName: this.state.partCodeName,\n description: this.state.description,\n statusName: this.state.statusName,\n comments: this.state.comments,\n customerName: this.state.customerName,\n primaryCustomerPartNumber: this.state.primaryCustomerPartNumber,\n\n primaryVendorName: this.state.primaryVendorName,\n primaryVendorPartNumber: this.state.primaryVendorPartNumber,\n\n secondaryVendorName: this.state.secondaryVendorName,\n secondaryVendorPartNumber: this.state.secondaryVendorPartNumber,\n\n // Additional Information\n application: this.state.application,\n effectiveDate: this.state.effectiveDate,\n signed: this.state.signed,\n createDate: this.state.createDate,\n checked: this.state.checked,\n approveDate: this.state.approveDate,\n workInstruction: this.state.workInstruction,\n //formData5\n reasonForChange: this.state.reasonForChange,\n validation: this.state.validation,\n note: this.state.note,\n }\n\n let applicationsTab = {\n serialPrefix: this.state.serialPrefix || \"\",\n startingSerial: this.state.startingSerial || \"\",\n endingSerial: this.state.endingSerial || \"\",\n makeName: this.state.makeName || \"\",\n modelName: this.state.modelName || \"\",\n productName: this.state.productName || \"\",\n engineMakeName: this.state.engineMakeName || \"\",\n engineModelName: this.state.engineModelName || \"\",\n arrangement: this.state.arrangement || \"\",\n customerName: this.state.customerName || \"\",\n oereman: this.state.oereman || null,\n voltage: this.state.voltage || \"\",\n type: this.state.type || \"\",\n upfitKit: this.state.upfitKit || null,\n universalKit: this.state.universalKit || null,\n motor: this.state.motor || \"\",\n electric: this.state.electric || \"\",\n plumbing: this.state.plumbing || \"\",\n engineCapacity: this.state.engineCapacity ? this.state.engineCapacity : 0,\n transCapacity: this.state.transCapacity ? this.state.transCapacity : 0,\n hydCapacity: this.state.hydCapacity ? this.state.hydCapacity : 0,\n }\n\n let body = {\n applicationsTab,\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\n if (designSpecId == 'new') {\n body.basicInformation.partNumber = 0\n body.basicInformation.revisionLevel = 0\n body.basicInformation.designSpecId = 0\n await axios.post(`/api/partnumber/kit/new`, body, configs)\n .then(res => {\n const { designSpecId, partNumber, revisionLevel } = res.data\n location.href = `/dspecs/kits/form/${designSpecId}/${partNumber}/${revisionLevel}`\n })\n .catch(err => {\n alert(err)\n console.error(err)\n })\n } else {\n await axios.put(`/api/designspec/kit/updatespec/${designSpecId}/${partNumber}/${revisionLevel}`, body, configs)\n .then(res => {\n const { designSpecId, partNumber, revisionLevel } = res.data\n //TODO: Fix this as they all return undefined...\n location.href = `/dspecs/kits/form/${designSpecId}/${partNumber}/${revisionLevel}`\n })\n .catch(err => {\n console.error(err)\n alert(err)\n })\n }\n }\n\n discardChanges = () => {\n const userResponse = confirm('Are you sure you want to erase all changes?')\n if (userResponse) {\n console.info('Getting rid of changes to ')\n window.location.reload(true);\n }\n console.info('Aborting Erasure')\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 console.log(e.target.parentNode.parentNode.id)\n console.log(e.target.name)\n console.log(e.target.value)\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 handleNewRowChange = (e: any) => {\n //Pull the propertyName (id) and value from the input field.\n const { name, value } = e.target\n const inputName = name;\n\n // Grab the Tab Name\n let element: any = document.querySelector('.bom-tab-data') // or \"e.target.e.target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode\"\n let tabType = element.dataset.tabname\n // //Update state with new property and value.\n this.setState({\n ...this.state,\n newRow: {\n ...this.state.newRow,\n [inputName]: value,\n name: tabType\n }\n })\n }\n\n addNewBomRecord = () => {\n // // Grab State newRow.\n // let { newRow } = this.state\n // this.setState({\n // ...this.state,\n // tempBomAdditions: [...this.state.tempBomAdditions, newRow],\n // newRow: {\n // old: '',\n // new: '',\n // partNumber: '',\n // description: '',\n // name: '',\n // }\n // })\n\n // Grab State newRow.\n let { newRow } = this.state\n\n this.setState({\n ...this.state,\n tempBomAdditions: [...this.state.tempBomAdditions, newRow],\n newRow: {\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\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, delId] = idForDelete.split('-')\n // Remove from Boms\n if (type === 'bom') {\n let remainingboms = this.state.boms.filter((_: any, idx: number) => _.id !== parseInt(delId))\n this.setState({\n ...this.state,\n boms: [...remainingboms]\n })\n }\n // Remove from Temps\n if (type === 'temp') {\n let remainingboms = this.state.tempBomAdditions.filter((_: any, idx: number) => idx !== parseInt(delId))\n this.setState({\n ...this.state,\n tempBomAdditions: [...remainingboms]\n })\n }\n }\n\n render() {\n const { designSpecId, partNumber, revisionLevel } = this.state\n const { formStatus } = this.state;\n let formStatusAlert;\n let formDisabled: boolean = true;\n let editButton;\n\n switch (this.state.formStatus) {\n case 'edit':\n formStatusAlert =
Currently Editing
;\n break;\n case 'review':\n if (this.state.statusName == \"Submitted for FAC\") {\n formStatusAlert = \n }\n if (this.state.statusName == \"Submitted for Approval\") {\n formStatusAlert = \n }\n break;\n }\n\n editButton = this.makeCopyForEdit()}\n >{PencilIcon}   Edit;\n\n const {\n basicInformation,\n additionalInformation,\n formData5,\n boms,\n applicationsTab\n } = kitsFormBuilder(this.state)\n\n return (\n \n \n \n

Engineering Change Order Kits {this.state.partNumber}

\n \n \n
\n {editButton}\n \n
\n \n
\n \n \n {formStatusAlert}\n \n \n
\n {\n designSpecId === \"new\" ?\n <>\n
PartNumber: {'Will Populate on save'}
\n
ERN: {0}
\n
D-Spec ID: {'Will Populate on save'}
\n \n :\n <>\n
RPM Part Number: {partNumber}
\n
ERN: {revisionLevel}
\n
D-Spec ID: {designSpecId}
\n \n }\n
\n
\n \n \n \n
\n\n \n \n Bill of Materials\n \n \n \n \n \n\n \n \n Additional Information\n \n \n \n \n \n\n {\n this.state.formStatus == 'edit' &&\n \n }\n \n
\n
\n );\n }\n}\n\nexport default KitsECOForm;\n\n\n\n\n\n\n\n// export default reduxForm({\n// form: \"vertical_form_layout_half\" // a unique identifier for this form\n// })(VerticalFormHalf);\n\n// "]},"metadata":{},"sourceType":"module"}