{"version":3,"sources":["components/GlobalStyles.js","theme/index.js","theme/shadows.js","theme/typography.js","layouts/DashboardLayout/NavBar/NavItem.js","app-data/atoms/user-atom.js","components/user-avatar.js","layouts/DashboardLayout/NavBar/index.js","components/Logo.js","layouts/DashboardLayout/TopBar.js","layouts/DashboardLayout/index.js","layouts/MainLayout/TopBar.js","layouts/MainLayout/index.js","components/Page.js","components/auth-check.js","app-data/atoms/customers-atom.js","lib/api-factory.js","app-data/atoms/locations-atom.js","views/customer/CustomerListView/EditCustomerModal.js","views/customer/CustomerListView/Results.js","views/customer/CustomerListView/Toolbar.js","views/customer/CustomerListView/index.js","views/customer/AddNewCustomerView/index.js","views/dashboard/AvailableTrodes.js","views/dashboard/TotalCustomers.js","views/dashboard/ShippedTrodes.js","views/dashboard/ReceivedTrodes.js","lib/date-functions.js","views/dashboard/LatestOrders.js","app-data/atoms/dashboard-atom.js","app-data/triggers/api-triggers.js","views/dashboard/index.js","views/auth/LoginFormParts.js","views/auth/LoginView.js","config.js","views/auth/LogoutView.js","views/errors/NotFoundView.js","app-data/atoms/trodes-atom.js","views/trodes/TrodeListView/ShipTrodeModal.js","views/trodes/TrodeListView/AlterTrodeModal.js","views/trodes/TrodeListView/Results.js","views/trodes/TrodeListView/Toolbar.js","views/trodes/TrodeListView/index.js","views/trodes/TrodeCreateView/NewTrode.js","components/MessageBox.js","views/trodes/TrodeCreateView/NewTrodeType.js","views/trodes/TrodeCreateView/NewTrodeSize.js","views/trodes/TrodeCreateView/index.js","views/trodes/ShippedTrodeListView/ReceiveTrodeModal.js","views/trodes/ShippedTrodeListView/Results.js","views/trodes/ShippedTrodeListView/Toolbar.js","views/trodes/ShippedTrodeListView/index.js","app-data/atoms/reports-atom.js","views/reports/CustomerHistory/Results.js","lib/export-to-excel.js","views/reports/CustomerHistory/Toolbar.js","views/reports/CustomerHistory/index.js","views/reports/OutstandingTrodes/Results.js","views/reports/OutstandingTrodes/Toolbar.js","views/reports/OutstandingTrodes/index.js","views/reports/SerialNumberHistory/Results.js","views/reports/SerialNumberHistory/Toolbar.js","views/reports/SerialNumberHistory/index.js","views/reports/ReturnedTrodes/Results.js","views/reports/ReturnedTrodes/Toolbar.js","views/reports/ReturnedTrodes/index.js","views/reports/ReturnTrodeForm/Results.js","views/reports/ReturnTrodeForm/Toolbar.js","views/reports/ReturnTrodeForm/index.js","views/reports/ManageNotes/index.js","views/settings/UserProfileView/Profile.js","views/settings/UserProfileView/ProfileDetails.js","views/settings/UserProfileView/Password.js","views/settings/UserProfileView/index.js","views/admin/ManageUsersView/index.js","routes.js","App.js","index.js"],"names":["useStyles","makeStyles","createStyles","boxSizing","margin","padding","html","height","width","body","backgroundColor","a","textDecoration","GlobalStyles","theme","createMuiTheme","palette","background","dark","default","colors","common","white","paper","primary","main","indigo","secondary","text","blueGrey","error","red","shadows","typography","h1","fontWeight","fontSize","letterSpacing","h2","h3","h4","h5","h6","overline","item","display","paddingTop","paddingBottom","button","color","fontWeightMedium","justifyContent","textTransform","icon","marginRight","spacing","title","active","NavItem","className","href","Icon","rest","classes","ListItem","clsx","disableGutters","Button","activeClassName","component","RouterLink","to","size","loggedInUserAtom","atom","key","email","avatar","groups","persistence_UNSTABLE","type","root","name","marginBottom","UserAvatar","fn","ln","children","props","user","useRecoilValue","avatarClassName","showName","variant","src","Avatar","alt","family_name","given_name","substring","toUpperCase","Typography","defaultProps","items","Dashboard","minimumGroup","Group","navName","subItems","RouterIcon","BarChart","SettingsIcon","SupervisorAccountIcon","mobileDrawer","desktopDrawer","top","cursor","getContrastText","deepOrange","nested","paddingLeft","subTitle","fontFamily","NavBar","onMobileClose","openMobile","location","useLocation","useRecoilState","currentUser","updateCurrentUser","React","useState","openItem","setOpen","inputEl","useRef","hasMinimumGroup","group","includes","length","useEffect","Auth","currentAuthenticatedUser","then","cogUser","attributes","signInUserSession","accessToken","payload","sub","pathname","content","Box","flexDirection","alignItems","p","Lock","style","Divider","List","map","Fragment","onClick","e","ref","uuid","Collapse","in","timeout","unmountOnExit","disablePadding","i","flexGrow","Hidden","lgUp","Drawer","anchor","onClose","open","mdDown","Logo","filter","TopBar","onMobileNavOpen","AppBar","elevation","IconButton","overflow","wrapper","flex","breakpoints","up","contentContainer","DashboardLayout","isMobileNavOpen","setMobileNavOpen","toolbar","MainLayout","Page","forwardRef","jwt","require","AuthCheck","navigate","useNavigate","loadPage","setLoadPage","usr","decoded","decode","storage","access_token","Date","now","exp","signOut","localStorage","clear","replace","getCustomersPartialAtom","getCustomersFullAtom","getCustomersDisplayAtom","customerSearchByNameKeyValueAtom","httpClient","options","token","getItem","headers","axios","create","baseURL","crossDomain","getCountriesAtom","getUnitedStatesAtom","textField","marginLeft","formControlLabel","formControlContainer","EditCustomerModal","customer","savedToDb","setSavedToDb","isActive","switches","setSwitches","_isSubmitting","updateIsSubmitting","disableReset","updateDisableReset","message","show","severity","showAction","displayMessage","updateDisplayMessage","unitedStates","countries","refreshCustomersFull","useSetRecoilState","refreshCustomerDisplay","setNewCustomerSearchKey","refreshCustomerLists","useRecoilCallback","get","results","data","handleClickOpen","handleClose","resetFunc","handleCleanup","customersRefreshed","alterCustomer","id","post","initialValues","customerName","customerNumber","stateId","countryId","validationSchema","Yup","shape","max","required","positive","integer","typeError","notOneOf","errors","handleBlur","handleChange","handleReset","validateForm","setTouched","touched","values","Dialog","aria-labelledby","DialogContent","Card","CardHeader","subheader","CardContent","Grid","container","md","xs","TextField","fullWidth","label","onBlur","onChange","SelectProps","native","value","Boolean","helperText","InputLabelProps","shrink","select","maxWidth","InputProps","input","listStyle","option","stateName","countryName","FormControl","FormLabel","FormGroup","FormControlLabel","control","Switch","checked","Alert","action","customerAccountId","response","validateFunc","valError","Object","keys","finalStateId","Number","reqBody","alterOriginalResponse","handleSubmit","disabled","DialogActions","actionLink","paginationCount","Results","showLoading","page","setPage","pageCount","setPageCount","currentSet","setCurrentSet","displayData","getCurrentSet","dataArray","_currentSet","_to","push","Math","ceil","Table","TableHead","TableRow","TableCell","TableBody","colSpan","textAlign","CircularProgress","hover","Pagination","count","event","justify","importButton","exportButton","Toolbar","customers","setCustomers","setCustomersDisplayList","selectedCustomerId","setSelectedCustomerId","setUnitedStates","setCountries","isSearching","setIsSearching","customerSearchKey","getCustomers","getCustomerById","getUnitedStates","getCountries","forEach","unshift","customersResponse","unitedStatessResponse","countriesResponse","mt","Autocomplete","getOptionLabel","getOptionSelected","renderOption","renderInput","params","singleCustomer","minHeight","card","marginTop","CustomerListView","resetDataList","reset","Container","AddNewCustomerView","isUniqueCustomerNumber","addNewCustomer","requestBody","trim","foundCustomer","postedResponse","differenceIcon","differenceValue","AvailableTrodes","gutterBottom","green","TotalCustomers","orange","ShippedTrodes","ReceivedTrodes","formatDate","date","dayjs","format","formatDateMinusDays","days","d","subtract","actions","scrollBox","LatestOrders","minWidth","order","dateSentOut","serialNumber","trodeTypeName","trodeTypeSize","trodeTypeMeasurement","getDashboadCountsAtom","getDashboadCustomersAtom","getToAPISelector","selectorFamily","uri","postToAPISelector","useSetPulseVetApiState","dispatch","counts","refreshCounts","refreshCustomers","lg","sm","xl","availableTrodesCount","customersCount","trodesShippedInLast90Days","trodesReceivedInLast90Days","StandardLoginForm","newPasswordRequired","password","NewLoginForm","new_password","first_name","last_name","ForgotPasswordModal","messages","codeSent","updateCodeSent","code","confirm_password","min","oneOf","isSubmitting","DialogTitle","DialogContentText","autoFocus","forgotPasswordSubmit","catch","err","handleResetSubmit","forgotPassword","_","handleForgotSubmit","_values","region","userPoolId","userPoolWebClientId","Amplify","configure","forgot","LoginView","displayedMessage","updateDisplayedMessage","updateNewPasswordRequired","userState","setUserState","setupUserDetails","old_password","onSubmit","signIn","username","challengeName","completeNewPassword","updatedUser","setItem","jwtToken","console","log","er","mb","align","my","LogoutView","image","NotFoundView","trodeSearchSerialNumberAtom","availableTrodesAtom","availableTrodeTypesAtom","availableTrodeSizesAtom","shippedTrodesAtom","ShipTrodeModal","trode","setSerialNumber","trodeList","setAvailableTrodes","refreshTrodes","shipTrode","trodeId","req","dateShipped","customerId","res","AlterTrodeModal","retired","trodeSizes","isUniqueSerialNumber","snapshot","getPromise","alterTrodeOrCreateNew","trodeSize","trodeTypeSizeId","request","retiredDate","retiredByUserId","handleProceed","trodeWithSN","trodeTypeId","parentId","addNewResponse","trodes","getAvailableHandler","isFetching","getTrodeBySerialNumberHandler","setTrodeSizes","getTrodeSizes","trodeSizesResponse","startAdornment","InputAdornment","position","SvgIcon","placeholder","target","onKeyPress","TrodeListView","setIsFetching","setDisplay","setShowLoading","getAvailableTrodes","getTrodeBySerialNumber","getAvailableClickHandler","getTrodeBySerialNumberClickHandler","sn","NewTrode","trodeTypes","setTrodeTypes","getTrodeTypes","_types","_sizes","trodeType","MessageBox","aria-describedby","inactiveWarning","NewTrodeType","allTrodeTypes","addNewItemToState","typeToEdit","setTypeToEdit","deactivated","setDeactivated","alert","setAlert","isUnique","postToAPI","refreshTrodeTypeList","handleEditOrCancel","edit_trodeTypeName","edit_isActive","entryErrors","indexOf","foundItem","handleEditActivedChange","editErrors","alterResponse","handleEditSave","NewTrodeSize","allTrodeSizes","sizeToEdit","setSizeToEdit","measurement","refreshTrodeSizeList","edit_trodeTypeSize","edit_trodeTypeMeasurement","toString","tabBar","tabPanel","TabPanel","other","role","TrodeCreateView","setValue","currentComponent","setCurrentComponent","setShow","a11yProps","index","Tabs","newValue","aria-label","TabIndicatorProps","Tab","textArea","ReceiveTrodeModal","refreshAvailableTrodes","refreshShippedTrodes","getFromDb","postToDb","dateReceived","notes","multiline","rows","rowsMax","dateReceivedIn","newShippingRecordResponse","shipRecordId","parent","_notes","concat","allNotes","btoa","updateTrodeResponse","getAllShippedHandler","ShippedTrodeListView","setShippedTrodes","getShippedTrodes","getAllShippedClickHandler","reportCustomerHistoryAtom","reportOutstandingTrodesAtom","reportSerialNumberHistoryAtom","reportReturnedTrodesAtom","reportReturnTrodeFormAtom","reportData","pageItemSize","anchorEl","setAnchorEl","undefined","currentTarget","Popover","anchorOrigin","vertical","horizontal","transformOrigin","filtered","x","toLowerCase","startsWith","exportToExcel","fileName","newWB","xlsx","utils","book_new","newWS","json_to_sheet","book_append_sheet","writeFile","exportButtonContainer","radioLabel","selectedValue","setSelectedValue","setChecked","_isExporting","setIsExporting","setReportData","handleRadioChange","handleCheckChange","fetchReportData","reqData","exportToExcelHandler","exportData","startDate","endDate","RadioGroup","row","defaultValue","Radio","inputProps","labelPlacement","Checkbox","defaultChecked","outstandingOnly","CustomerHistoryListView","split","OutstandingTrodesListView","SerialNumberHistoryListView","ReturnedTrodesListView","formUnderlineSection","borderBottom","formFont","formHeaderContainer","calloutColumn","selection","paddingRight","componentToPrintRef","actiontButtonContainer","trigger","current","ReturnTrodeFormView","componentRef","readOnlyTextArea","ManageNotesView","setTrode","handleCleanupAfterSubmit","checkSerialNumberLengthHandler","slice","endAdornment","hasOwnProperty","searchHandler","onInput","readOnly","atob","Profile","thumb","setThumb","readFileDataAsBase64","file","Promise","resolve","reject","reader","FileReader","onload","result","onerror","readAsDataURL","sendFile","CardActions","hidden","fileData","files","URL","createObjectURL","extension","lastIndexOf","blob","basePath","url","updateUserAttributes","direction","ProfileDetails","firstName","lastName","Password","oldPassword","newPassword","confirmPassword","changePassword","UserProfileView","ManageUsersView","userToEdit","setUserToEdit","userGroups","setUserGroups","cognitoUsers","setCognitoUsers","createNewUser","addUserToGroup","removeUserFromGroup","enableDisableUser","enable","getUserGroups","limit","Groups","sorted","sort","b","Description","getUsersByGroup","groupName","Users","mapUsersByGroup","groupUsers","obj","enabled","Enabled","Attributes","att","Name","Value","groupChangeHandler","getNewPassword","emailAddress","tempPassword","edit_enabled","edit_group","userName","temporaryPassword","GroupName","employee","NativeSelect","handleEditGroupChange","showMessage","routes","path","element","CustomerHistory","OutstandingTrodes","SerialNumberHistory","ReturnedTrodes","ReturnTrodeForm","ManageNotes","App","routing","useRoutes","StrictMode","ThemeProvider","recoilPersist","RecoilPersist","updateState","ReactDOM","render","initializeState","Suspense","fallback","document","getElementById"],"mappings":"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","file":"static/js/main.e7b3fedf.chunk.js","sourcesContent":["import { createStyles, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => createStyles({\n '@global': {\n '*': {\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n },\n html: {\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n height: '100%',\n width: '100%'\n },\n body: {\n backgroundColor: '#f4f6f8',\n height: '100%',\n width: '100%'\n },\n a: {\n textDecoration: 'none'\n },\n '#root': {\n height: '100%',\n width: '100%'\n }\n }\n}));\n\nconst GlobalStyles = () => {\n useStyles();\n\n return null;\n};\n\nexport default GlobalStyles;\n","/* eslint-disable */\n\n//import { createMuiTheme, colors } from '@material-ui/core';\nimport { unstable_createMuiStrictModeTheme as createMuiTheme, colors } from '@material-ui/core';\n\nimport shadows from './shadows';\nimport typography from './typography';\n\nconst theme = createMuiTheme({\n palette: {\n background: {\n dark: '#F4F6F8',\n default: colors.common.white,\n paper: colors.common.white\n },\n primary: {\n main: colors.indigo[500]\n },\n secondary: {\n main: colors.indigo[500]\n },\n text: {\n primary: colors.blueGrey[900],\n secondary: colors.blueGrey[600],\n error: colors.red[600]\n }\n },\n shadows,\n typography\n});\n\nexport default theme;\n","/* eslint-disable */\n\nexport default [\n 'none',\n '0 0 0 1px rgba(63,63,68,0.05), 0 1px 2px 0 rgba(63,63,68,0.15)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 2px 2px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 5px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 8px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 9px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 10px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 11px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 12px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 13px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 14px 24px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 16px 28px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 18px 30px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 20px 32px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 22px 34px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 24px 36px -8px rgba(0,0,0,0.25)'\n];\n","/* eslint-disable */\n\nexport default {\n h1: {\n fontWeight: 500,\n fontSize: 35,\n letterSpacing: '-0.24px'\n },\n h2: {\n fontWeight: 500,\n fontSize: 29,\n letterSpacing: '-0.24px'\n },\n h3: {\n fontWeight: 500,\n fontSize: 24,\n letterSpacing: '-0.06px'\n },\n h4: {\n fontWeight: 500,\n fontSize: 20,\n letterSpacing: '-0.06px'\n },\n h5: {\n fontWeight: 500,\n fontSize: 16,\n letterSpacing: '-0.05px'\n },\n h6: {\n fontWeight: 500,\n fontSize: 14,\n letterSpacing: '-0.05px'\n },\n overline: {\n fontWeight: 500\n }\n};\n","import React from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n Button,\n ListItem,\n makeStyles\n} from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: theme.palette.text.secondary,\n fontWeight: theme.typography.fontWeightMedium,\n justifyContent: 'flex-start',\n letterSpacing: 0,\n padding: '10px 8px',\n textTransform: 'none',\n width: '100%'\n },\n icon: {\n marginRight: theme.spacing(1)\n },\n title: {\n marginRight: 'auto'\n },\n active: {\n color: theme.palette.primary.main,\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n },\n '& $icon': {\n color: theme.palette.primary.main\n }\n }\n}));\n\nconst NavItem = ({\n className,\n href,\n icon: Icon,\n title,\n ...rest\n}) => {\n const classes = useStyles();\n\n return (\n \n \n {Icon && (\n \n )}\n \n {title}\n \n \n \n );\n};\n\nNavItem.propTypes = {\n className: PropTypes.string,\n href: PropTypes.string,\n icon: PropTypes.elementType,\n title: PropTypes.string\n};\n\nexport default NavItem;\n","import { atom } from \"recoil\";\r\n\r\nexport const loggedInUserAtom = atom({\r\n key: 'LOGGED_IN_USER',\r\n default: {\r\n email: '',\r\n avatar: '',\r\n groups: []\r\n },\r\n persistence_UNSTABLE: {\r\n type: 'LOGGED_IN_USER'\r\n }\r\n});\r\n","import React from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport {\r\n Avatar,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\n\r\nimport { useRecoilValue } from 'recoil';\r\nimport { loggedInUserAtom } from 'src/app-data/atoms/user-atom';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: {},\r\n name: {\r\n paddingTop: \"10px\",\r\n paddingBottom: 0,\r\n marginBottom: 0\r\n }\r\n}));\r\n\r\nconst UserAvatar = ({children, ...props}) => {\r\n const classes = useStyles();\r\n const user = useRecoilValue(loggedInUserAtom);\r\n const { avatarClassName, showName, variant, src } = props;\r\n\r\n const initials = (fn, ln) => {\r\n return fn?.substring(0, 1).toUpperCase() + ln?.substring(0, 1).toUpperCase();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {`${initials(user?.given_name, user?.family_name)}`}\r\n \r\n\r\n {showName &&\r\n \r\n {`${user?.given_name} ${user?.family_name}`}\r\n \r\n }\r\n\r\n { children && typeof children === 'function' ?\r\n (children({user: user}))\r\n :\r\n (children)\r\n }\r\n \r\n );\r\n};\r\n\r\nUserAvatar.defaultProps = {\r\n showName: true,\r\n variant: \"h5\"\r\n};\r\n\r\nUserAvatar.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.func\r\n ]),\r\n avatarClassName: PropTypes.string,\r\n showName: PropTypes.bool,\r\n variant: PropTypes.string,\r\n src: PropTypes.string\r\n};\r\n\r\nexport default UserAvatar;\r\n","import React, { useEffect } from 'react';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { v4 as uuid } from 'uuid';\nimport {\n Box,\n Divider,\n Drawer,\n Hidden,\n List,\n makeStyles,\n Button\n} from '@material-ui/core';\nimport { deepOrange } from '@material-ui/core/colors';\n\nimport {\n Router as RouterIcon,\n BarChart,\n Dashboard,\n Group,\n Lock as LockIcon,\n Settings as SettingsIcon\n} from '@material-ui/icons';\n\n//same but not recognized unless it's by itself?\nimport SupervisorAccountIcon from '@material-ui/icons/SupervisorAccount'; \n\nimport NavItem from './NavItem';\nimport ListItem from '@material-ui/core/ListItem';\nimport Collapse from '@material-ui/core/Collapse';\nimport ExpandLess from '@material-ui/icons/ExpandLess';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\n\nimport { Auth } from \"aws-amplify\";\nimport { useRecoilState } from 'recoil';\nimport { loggedInUserAtom } from 'src/app-data/atoms/user-atom';\nimport UserAvatar from 'src/components/user-avatar';\n\n\nconst items = [\n {\n href: '/app/dashboard',\n icon: Dashboard,\n title: 'Dashboard',\n //navName: 'nav_dashboard',\n minimumGroup: 'PulseVetUser'\n },\n {\n href: '#',\n icon: Group,\n title: 'Customers',\n navName: 'nav_customers',\n minimumGroup: 'PulseVetUser',\n subItems: [\n {\n href: '/app/customer-new',\n title: 'Add Customer',\n minimumGroup: 'PulseVetUser'\n },\n {\n href: '/app/customers',\n title: 'Customer Search',\n minimumGroup: 'PulseVetUser'\n }\n ]\n },\n {\n href: '#',\n icon: RouterIcon,\n title: 'Trodes',\n navName: 'nav_trode',\n minimumGroup: 'PulseVetUser',\n subItems: [\n {\n href: '/app/trodes-create',\n title: 'Create New',\n minimumGroup: 'PulseVetUser'\n },\n {\n href: '/app/available-trodes',\n title: 'Available / Ship Trodes',\n minimumGroup: 'PulseVetUser'\n },\n {\n href: '/app/shipped-trodes',\n title: 'Receive Trodes',\n minimumGroup: 'PulseVetUser'\n }\n ]\n },\n {\n href: '#',\n icon: BarChart,\n title: 'Reports',\n navName: 'nav_reports',\n minimumGroup: 'PulseVetUser',\n subItems: [\n {\n href: '/app/customer-history',\n title: 'Customer History',\n minimumGroup: 'PulseVetUser'\n },\n {\n href: '/app/outstanding-trodes',\n title: 'Outstanding Trodes',\n minimumGroup: 'PulseVetUser'\n },\n {\n href: '/app/serial-number-history',\n title: 'Serial Number History',\n minimumGroup: 'PulseVetUser'\n },\n {\n href: '/app/returned-trodes',\n title: 'Returned Trodes',\n minimumGroup: 'PulseVetUser'\n },\n {\n href: '/app/return-trode-form',\n title: 'Return Trode Form',\n minimumGroup: 'PulseVetUser'\n },\n {\n href: '/app/manage-notes',\n title: 'Manage Notes',\n minimumGroup: 'PulseVetUser'\n }\n ]\n },\n {\n href: '#',\n icon: SettingsIcon,\n title: 'User Settings',\n navName: 'nav_settings',\n minimumGroup: 'PulseVetUser',\n subItems: [\n {\n href: '/app/user-settings',\n title: 'My Profile',\n minimumGroup: 'PulseVetUser'\n }\n ]\n },\n {\n href: '#',\n icon: SupervisorAccountIcon,\n title: 'User Admin',\n navName: 'nav_admin',\n minimumGroup: 'SuperUser',\n subItems: [\n {\n href: '/app/manage-users',\n title: 'Manage Users',\n minimumGroup: 'SuperUser'\n }\n ]\n }\n];\n\n\n\nconst useStyles = makeStyles((theme) => ({\n mobileDrawer: {\n width: 256\n },\n desktopDrawer: {\n width: 256,\n top: 64,\n height: 'calc(100% - 64px)'\n },\n avatar: {\n cursor: 'pointer',\n width: 64,\n height: 64,\n color: theme.palette.getContrastText(deepOrange[500]),\n backgroundColor: deepOrange[500],\n },\n nested: { //here down\n paddingLeft: theme.spacing(4)\n },\n item: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: theme.palette.text.secondary,\n fontWeight: theme.typography.fontWeightMedium,\n justifyContent: 'flex-start',\n letterSpacing: 0,\n padding: '10px 8px',\n textTransform: 'none',\n width: '100%'\n },\n icon: {\n marginRight: theme.spacing(1)\n },\n title: {\n marginRight: 'auto'\n },\n active: {\n color: theme.palette.primary.main,\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n },\n '& $icon': {\n color: theme.palette.primary.main\n }\n },\n subTitle: {\n color: theme.palette.text.secondary,\n fontWeight: theme.typography.fontWeightMedium,\n fontFamily: theme.typography.fontFamily,\n fontSize: '14px',\n justifyContent: 'flex-start',\n letterSpacing: 0,\n padding: '1',\n textTransform: 'none',\n width: '100%'\n }\n}));\n\nconst NavBar = ({ onMobileClose, openMobile }) => {\n const classes = useStyles();\n const location = useLocation();\n\n const [currentUser, updateCurrentUser] = useRecoilState(loggedInUserAtom);\n const [openItem, setOpen] = React.useState({});\n const inputEl = React.useRef(null);\n\n const handleClick = (e, name) => {\n setOpen({\n ...openItem,\n ...{ [name]: !openItem[name] }\n });\n };\n\n const hasMinimumGroup = (group) => {\n if(currentUser?.groups?.includes('SuperUser')) {\n return true;\n }\n else {\n switch(group) {\n case 'Admin': return currentUser?.groups?.includes('Admin');\n case 'PulseVetUser': return currentUser?.groups.length !== 0;\n default: return false;\n }\n }\n }\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n\n //get user groups for permissions\n Auth.currentAuthenticatedUser().then(cogUser => { \n const { attributes } = cogUser;\n const groups = cogUser && cogUser.signInUserSession.accessToken.payload[\"cognito:groups\"];\n //console.log(\"GROUPS\", groups); //[\"PulseVetAdmin\"] or undefined\n\n if(cogUser) { //Use group in items.map(item) below to filter menu items.\n updateCurrentUser({ \n sub: attributes.sub,\n email: attributes.email,\n family_name: attributes.family_name,\n given_name: attributes.given_name,\n avatar: attributes?.['custom:avatar'] || '',\n groups: groups || []\n });\n } \n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location.pathname]);\n\n const content = (\n \n \n \n \n \n \n\n \n\n \n \n {items.map((item) => { //here\n const Icon = item.icon;\n\n if(item.subItems) {\n return hasMinimumGroup(item.minimumGroup) && (\n \n handleClick(e, item.navName)}\n ref={inputEl}\n key={`${item.title}_${uuid()}`}\n >\n \n {openItem[item.navName] ? : }\n \n\n \n \n {item.subItems.map((sub, i) => hasMinimumGroup(sub.minimumGroup) && ( //and here\n \n \n \n {sub.title}\n \n \n \n ))}\n \n \n \n );\n }\n else {\n return hasMinimumGroup(item.minimumGroup) && (\n \n );\n }\n })}\n\n \n \n \n \n );\n\n return (\n <>\n \n \n {content}\n \n \n\n \n \n {content}\n \n \n \n );\n};\n\nNavBar.propTypes = {\n onMobileClose: PropTypes.func,\n openMobile: PropTypes.bool\n};\n\nNavBar.defaultProps = {\n onMobileClose: () => {},\n openMobile: false\n};\n\nexport default NavBar;\n","import React from 'react';\n\nconst Logo = (props) => {\n return (\n \n );\n};\n\nexport default Logo;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n AppBar,\n //Badge,\n Box,\n Hidden,\n IconButton,\n Toolbar,\n makeStyles\n} from '@material-ui/core';\nimport MenuIcon from '@material-ui/icons/Menu';\n//import NotificationsIcon from '@material-ui/icons/NotificationsOutlined';\n//import InputIcon from '@material-ui/icons/Input';\nimport Logo from 'src/components/Logo';\n\nconst useStyles = makeStyles(() => ({\n root: {},\n avatar: {\n width: 60,\n height: 60\n }\n}));\n\nconst TopBar = ({\n className,\n onMobileNavOpen,\n ...rest\n}) => {\n const classes = useStyles();\n /*const [notifications] = useState([\n { id: 1, message: 'Test Message 1' },\n { id: 2, message: 'Test Message 2' }\n ]);*/\n\n return (\n \n \n \n \n \n\n \n\n {/*\n \n //variant also has dot\n \n \n \n\n \n \n \n */}\n\n \n \n \n \n \n \n \n );\n};\n\nTopBar.propTypes = {\n className: PropTypes.string,\n onMobileNavOpen: PropTypes.func\n};\n\nexport default TopBar;\n","import React, { useState } from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/core';\nimport NavBar from './NavBar';\nimport TopBar from './TopBar';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64,\n [theme.breakpoints.up('lg')]: {\n paddingLeft: 256\n }\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nconst DashboardLayout = () => {\n const classes = useStyles();\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\n\n return (\n
\n setMobileNavOpen(true)} />\n setMobileNavOpen(false)}\n openMobile={isMobileNavOpen}\n />\n
\n
\n
\n \n
\n
\n
\n
\n );\n};\n\nexport default DashboardLayout;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n AppBar,\n Toolbar,\n makeStyles\n} from '@material-ui/core';\nimport Logo from 'src/components/Logo';\n\nconst useStyles = makeStyles(({\n root: {},\n toolbar: {\n height: 64\n }\n}));\n\nconst TopBar = ({ className, ...rest }) => {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n \n );\n};\n\nTopBar.propTypes = {\n className: PropTypes.string\n};\n\nexport default TopBar;\n","import React from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/core';\nimport TopBar from './TopBar';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nconst MainLayout = () => {\n const classes = useStyles();\n\n return (\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n );\n};\n\nexport default MainLayout;\n","import React, { forwardRef } from 'react';\n//import { Helmet } from 'react-helmet'; //Unsafe component will mount issue\nimport { Helmet, HelmetProvider } from 'react-helmet-async';\nimport PropTypes from 'prop-types';\n\nconst Page = forwardRef(({ children, title = '', ...rest }, ref) => {\n return (\n
\n \n \n {title}\n \n \n {children}\n
\n );\n});\n\nPage.propTypes = {\n children: PropTypes.node.isRequired,\n title: PropTypes.string\n};\n\nexport default Page;\n","import React, { useState, useEffect } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { Auth } from \"aws-amplify\";\r\n\r\nvar jwt = require('jsonwebtoken');\r\n\r\n\r\nconst AuthCheck = (props) => {\r\n const navigate = useNavigate();\r\n const [loadPage, setLoadPage] = useState(false);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n try {\r\n //Amplify issue. calling Auth.currentAuthenticatedUser() throws an exeption if the user is not authenticatd.\r\n // https://github.com/aws-amplify/amplify-js/issues/5167\r\n const usr = await Auth.currentAuthenticatedUser();\r\n const decoded = jwt.decode(usr?.storage?.access_token);\r\n\r\n if (!decoded || Date.now() >= decoded.exp * 1000) {\r\n await Auth.signOut();\r\n localStorage.clear();\r\n return navigate('/', { replace: true });\r\n }\r\n else {\r\n setLoadPage(true);\r\n }\r\n }\r\n catch(err) { \r\n setLoadPage(false);\r\n localStorage.clear(); \r\n return navigate('/', { replace: true });\r\n }\r\n })();\r\n\r\n return () => {\r\n setLoadPage(false);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []); \r\n\r\n return ( loadPage ?\r\n <>\r\n {props.children}\r\n \r\n : \r\n <>\r\n );\r\n};\r\n\r\nexport default AuthCheck;","import { atom } from \"recoil\";\r\n\r\nexport const getCustomersPartialAtom = atom({\r\n key: 'CUSTOMERS_PARTIAL',\r\n default: []\r\n});\r\n\r\nexport const getCustomersFullAtom = atom({\r\n key: 'CUSTOMERS_FULL',\r\n default: []\r\n});\r\n\r\nexport const getCustomersDisplayAtom = atom({\r\n key: 'CUSTOMERS_FULL_DISPLAY',\r\n default: []\r\n});\r\n\r\nexport const customerSearchByNameKeyValueAtom = atom({\r\n key: 'CUSTOMERS_SEARCH_BY_NAME_KEY_VALUE',\r\n default: \"customerSearchByName\"\r\n});","import axios from 'axios';\r\n\r\nexport const httpClient = (options) => {\r\n var api_url = \"https://api.hmt-tt.com/v1\";\r\n const token = localStorage.getItem(\"access_token\");\r\n\r\n var headers = {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": `Bearer ${token}`,\r\n \"X-Requested-With\": \"XMLHttpRequest\"\r\n };\r\n\r\n if(options && options.headers) {\r\n headers = {\r\n ...headers,\r\n ...options.headers\r\n };\r\n }\r\n\r\n const ax = axios.create({\r\n baseURL: api_url,\r\n crossDomain: true,\r\n headers: headers\r\n });\r\n\r\n return ax;\r\n};\r\n","import { atom } from \"recoil\";\r\n\r\nexport const getCountriesAtom = atom({\r\n key: 'COUNTRIES_ATOM',\r\n default: []\r\n});\r\n\r\nexport const getUnitedStatesAtom = atom({\r\n key: 'UNITED_STATES_ATOM',\r\n default: []\r\n});","import React, { useState } from 'react';\r\nimport { \r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n CardHeader,\r\n Divider,\r\n Grid,\r\n TextField,\r\n makeStyles,\r\n FormControlLabel,\r\n Switch,\r\n FormLabel,\r\n FormControl,\r\n FormGroup\r\n} from '@material-ui/core';\r\nimport Alert from '@material-ui/lab/Alert';\r\n\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\n\r\nimport { useRecoilValue, useSetRecoilState, useRecoilCallback } from 'recoil';\r\nimport { getCustomersFullAtom, getCustomersDisplayAtom, customerSearchByNameKeyValueAtom } from 'src/app-data/atoms/customers-atom';\r\nimport { httpClient } from 'src/lib/api-factory';\r\nimport { v4 as uuid } from 'uuid';\r\n\r\nimport { getUnitedStatesAtom, getCountriesAtom } from 'src/app-data/atoms/locations-atom';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {},\r\n title: {\r\n fontSize: \"0.850rem\"\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n //width: 200,\r\n },\r\n formControlLabel: {\r\n fontSize: \"0.850rem\",\r\n marginLeft: theme.spacing(1),\r\n marginBottom: theme.spacing(1)\r\n },\r\n formControlContainer: {\r\n marginLeft: theme.spacing(1)\r\n }\r\n}));\r\n\r\nexport const EditCustomerModal = (props) => {\r\n const { customer } = props;\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(false);\r\n const [savedToDb, setSavedToDb] = useState(false);\r\n const [switches, setSwitches] = useState({\r\n isActive: customer.isActive\r\n });\r\n\r\n const [_isSubmitting, updateIsSubmitting] = useState(false);\r\n const [disableReset, updateDisableReset] = useState(false);\r\n const [displayMessage, updateDisplayMessage] = useState({\r\n message: \"\",\r\n show: false,\r\n severity: \"\", //error, warning, info, success\r\n showAction: false\r\n });\r\n\r\n\r\n const unitedStates = useRecoilValue(getUnitedStatesAtom);\r\n const countries = useRecoilValue(getCountriesAtom);\r\n\r\n const refreshCustomersFull = useSetRecoilState(getCustomersFullAtom);\r\n const refreshCustomerDisplay = useSetRecoilState(getCustomersDisplayAtom);\r\n const setNewCustomerSearchKey = useSetRecoilState(customerSearchByNameKeyValueAtom);\r\n\r\n const refreshCustomerLists = useRecoilCallback(() => async () => {\r\n try {\r\n const results = await httpClient().get(`/customers?all=true`);\r\n return results.data;\r\n }\r\n catch(error) {\r\n return [];\r\n } \r\n });\r\n\r\n const handleClickOpen = () => setOpen(true);\r\n\r\n const handleClose = (resetFunc) => {\r\n setOpen(false);\r\n handleCleanup(resetFunc);\r\n \r\n if(savedToDb) { \r\n (async () => {\r\n var customersRefreshed = await refreshCustomerLists();\r\n\r\n refreshCustomersFull(customersRefreshed);\r\n refreshCustomerDisplay([]); \r\n setNewCustomerSearchKey(`customerSearchByName_${uuid()}`)\r\n })();\r\n }\r\n };\r\n\r\n const handleCleanup = (resetFunc) => {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\r\n \r\n\r\n setSwitches({\r\n isActive: customer.isActive\r\n });\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n };\r\n\r\n const handleProceed = (values) => {\r\n (async () => {\r\n updateDisableReset(true);\r\n\r\n var response = await alterCustomer(customer.customerAccountId, { isActive: 0 });\r\n\r\n if(response && response.id) {\r\n updateDisplayMessage({ \r\n message: \"Customer has been altered.\",\r\n show: true,\r\n severity: \"success\", \r\n showAction: false \r\n });\r\n\r\n setSavedToDb(true);\r\n }\r\n else {\r\n updateDisplayMessage({ \r\n message: \"There was an error updating the Customer.\",\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n })();\r\n };\r\n\r\n const handleEditActivedChange = (item) => {\r\n setSwitches({\r\n ...switches,\r\n ...item\r\n });\r\n \r\n if(item.isActive === 0) {\r\n updateIsSubmitting(true);\r\n updateDisplayMessage({ \r\n message: \"Setting a Customer to inactive cannot be undone once saved.\",\r\n show: true,\r\n severity: \"warning\", \r\n showAction: true \r\n });\r\n }\r\n else {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage({ \r\n message: \"\",\r\n show: false,\r\n severity: \"warning\", \r\n showAction: false \r\n });\r\n }\r\n };\r\n\r\n const alterCustomer = useRecoilCallback(() => async (id, body) => {\r\n try {\r\n const results = await httpClient().post(`/customers/${id}/alter`, body);\r\n return results.data;\r\n }\r\n catch(error) {\r\n return [];\r\n } \r\n });\r\n\r\n const handleSubmit = (values, validateFunc, setTouched) => { \r\n const { customerName, customerNumber, stateId, countryId } = values;\r\n \r\n (async () => {\r\n try {\r\n const valError = await validateFunc();\r\n\r\n if(Object.keys(valError).length > 0) {\r\n setTouched(valError);\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n\r\n var finalStateId = (stateId !== '' && stateId !== '0' && stateId !== 0) ? Number(stateId) : 0;\r\n \r\n if(countryId !== 230 && countryId !== '230') {\r\n finalStateId = 0;\r\n }\r\n\r\n var reqBody = {\r\n customerName: customerName,\r\n customerNumber: customerNumber,\r\n stateId: finalStateId, \r\n countryId: Number(countryId)\r\n };\r\n\r\n var alterOriginalResponse = await alterCustomer(customer.customerAccountId, reqBody);\r\n\r\n if(alterOriginalResponse && alterOriginalResponse.id) { \r\n updateDisplayMessage({ \r\n message: \"The customer has been updated\",\r\n show: true,\r\n severity: \"success\",\r\n showAction: false \r\n });\r\n\r\n setSavedToDb(true);\r\n }\r\n else {\r\n updateDisplayMessage({ \r\n message: `There was an error updating the customer.`,\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n }\r\n }\r\n catch(error) {\r\n updateDisplayMessage({ \r\n message: `There was a system error: ${error && error.message}`,\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n })();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {({errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values, initialValues}) => (\r\n <>\r\n {props.children && props.children({\r\n handleClickOpen: handleClickOpen\r\n })}\r\n\r\n {\r\n (() => {\r\n initialValues.isActive = switches.isActive;\r\n })()\r\n }\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n { (values.countryId === 230 || values.countryId === '230') &&\r\n \r\n \r\n \r\n\r\n {unitedStates && unitedStates.length > 0 && unitedStates.map((option) => (\r\n \r\n ))}\r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n\r\n {countries && countries.length > 0 && countries.map((option) => (\r\n \r\n ))}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Active\r\n \r\n\r\n \r\n handleEditActivedChange({\r\n isActive: values.isActive === 1 ? 0 : 1\r\n })} \r\n />\r\n }\r\n label={values.isActive === 1 ? 'Yes' : 'No'}\r\n />\r\n \r\n \r\n \r\n\r\n {displayMessage.show &&\r\n \r\n handleProceed(values)}\r\n >\r\n Proceed\r\n \r\n }\r\n >\r\n {displayMessage.message}\r\n \r\n \r\n }\r\n \r\n \r\n\r\n \r\n\r\n \r\n handleSubmit(values, validateForm, setTouched)}\r\n disabled={_isSubmitting}\r\n type=\"submit\"\r\n >\r\n Submit\r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport {\n Box,\n Button,\n Card,\n CircularProgress,\n Grid,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n makeStyles\n} from '@material-ui/core';\n\nimport { EditCustomerModal } from './EditCustomerModal';\nimport Pagination from '@material-ui/lab/Pagination';\n\nimport { getCustomersDisplayAtom } from 'src/app-data/atoms/customers-atom';\nimport { useRecoilValue } from 'recoil';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actionLink: {\n fontSize: \"0.875rem\",\n color: \"#3f51b5\",\n padding: \"0\",\n textTransform: 'none'\n },\n paginationCount: {\n //paddingRight: theme.spacing(2),\n padding: \"5px 10px 0 0\"\n }\n}));\n\nconst Results = ({ className, showLoading, ...rest }) => {\n const classes = useStyles();\n const [page, setPage] = useState(1); \n const [pageCount, setPageCount] = useState(0); \n const [currentSet, setCurrentSet] = useState([]);\n const displayData = useRecoilValue(getCustomersDisplayAtom);\n const pageItemSize = 100;\n \n const getCurrentSet = (value, dataArray) => {\n var _currentSet = [];\n var _to = value * pageItemSize;\n var _from = _to - pageItemSize;\n\n for(let i = _from; i < _to; i++) {\n if(typeof dataArray[i] !== 'undefined') {\n _currentSet.push(dataArray[i]);\n }\n }\n \n setCurrentSet(_currentSet);\n };\n\n const handlePageChange = (event, value) => { \n setPage(value);\n getCurrentSet(value, displayData);\n };\n\n useEffect(() => { \n (async () => {\n try {\n getCurrentSet(1, displayData); \n setPageCount(Math.ceil(displayData.length / pageItemSize));\n }\n catch(error) {\n\n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [displayData]);\n\n return (\n \n \n \n \n \n \n Edit\n Customer name\n Customer #\n Location\n \n \n\n \n { showLoading && currentSet.length === 0 && (\n \n \n Loading Data...\n \n \n )}\n\n {currentSet && currentSet.map((item) => (\n \n \n \n \n \n {\n ({handleClickOpen}) => (\n \n )\n }\n \n \n \n \n\n \n {item.customerName}\n \n\n \n {item.customerNumber}\n \n\n \n {item.stateName ? `${item.stateName}, USA` : item.countryName}\n \n \n ))}\n \n
\n
\n
\n \n \n\n \n \n \n \n\n \n \n Items Found: {displayData && displayData.length}\n \n \n \n \n );\n};\n\nResults.propTypes = {\n className: PropTypes.string\n};\n\nexport default Results;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n Box,\n Button,\n Card,\n CardContent,\n Grid,\n TextField,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\n\nimport { useRecoilValue, useRecoilState, useSetRecoilState, useRecoilCallback } from 'recoil';\nimport { getCustomersDisplayAtom, getCustomersFullAtom, customerSearchByNameKeyValueAtom } from 'src/app-data/atoms/customers-atom';\nimport { getUnitedStatesAtom, getCountriesAtom } from 'src/app-data/atoms/locations-atom';\nimport { httpClient } from 'src/lib/api-factory';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n importButton: {\n marginRight: theme.spacing(1)\n },\n exportButton: {\n marginRight: theme.spacing(1)\n }\n}));\n\nconst Toolbar = ({ className, ...rest }) => {\n const classes = useStyles();\n\n const [customers, setCustomers] = useRecoilState(getCustomersFullAtom);\n const setCustomersDisplayList = useSetRecoilState(getCustomersDisplayAtom);\n const [selectedCustomerId, setSelectedCustomerId] = useState(0);\n const setUnitedStates = useSetRecoilState(getUnitedStatesAtom); \n const setCountries = useSetRecoilState(getCountriesAtom); \n const [isSearching, setIsSearching] = useState(false);\n const customerSearchKey = useRecoilValue(customerSearchByNameKeyValueAtom);\n\n const getCustomers = useRecoilCallback(() => async () => { \n try {\n const results = await httpClient().get(\"/customers?all=true\");\n return results.data;\n }\n catch(error) {\n return [];\n } \n });\n\n const getCustomerById = useRecoilCallback(() => async (id) => { \n try {\n const results = await httpClient().get(`/customers/${id}/type/accountId`);\n return results.data;\n }\n catch(error) {\n return [];\n } \n });\n\n const getUnitedStates = useRecoilCallback(() => async () => {\n try {\n const results = await httpClient().get(`/united-states`);\n return results.data;\n }\n catch(error) {\n return [];\n }\n });\n\n const getCountries = useRecoilCallback(() => async () => { \n try {\n const results = await httpClient().get(\"/countries\");\n var countries = [];\n\n if(results && results.data && results.data.length > 0) {\n results.data.forEach(item => {\n if(item.countryName === 'Japan') {\n countries.unshift(item);\n }\n else {\n countries.push(item);\n }\n });\n \n return countries;\n }\n else {\n return results.data;\n }\n }\n catch(error) {\n return [];\n } \n }); \n\n const getAllCustomersHandler = () => {\n setCustomersDisplayList(customers);\n };\n\n const searchCustomerByIdHandler = (id) => {\n (async () => {\n try {\n const singleCustomer = await getCustomerById(id);\n setCustomersDisplayList([singleCustomer]);\n }\n catch(error) {\n\n }\n\n setIsSearching(false);\n })();\n };\n\n const submitHandler = () => {\n if(selectedCustomerId !== 0) {\n setIsSearching(true);\n searchCustomerByIdHandler(selectedCustomerId);\n }\n };\n\n useEffect(() => {\n (async () => {\n try {\n //Used by dropdown list as well as 'all customers' button since it already has the full list\n const customersResponse = await getCustomers(); \n setCustomers(customersResponse);\n\n //These two get lists a single time here to be used in edit modals\n const unitedStatessResponse = await getUnitedStates();\n setUnitedStates(unitedStatessResponse);\n\n const countriesResponse = await getCountries();\n setCountries(countriesResponse);\n //end\n }\n catch(error) {\n\n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n \n\n \n \n \n \n { customers && customers.length > 0 ?\n `${option.customerName} #${option.customerNumber}`}\n getOptionSelected={(option) => option.customerAccountId}\n onChange={(event, value) => value ? setSelectedCustomerId(value.customerAccountId) : setSelectedCustomerId(0)}\n renderOption={(option) => (\n \n #{option.customerNumber}\n {option.customerName}\n \n )} \n renderInput={\n (params) => (\n \n )\n }\n />\n : \n \n No customers added. Click on 'Add Customer' to create one.\n \n }\n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nToolbar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Toolbar;\n","import React, { useEffect } from 'react';\nimport {\n Box,\n Container,\n makeStyles, \n Typography\n} from '@material-ui/core';\n\nimport Page from 'src/components/Page';\nimport AuthCheck from 'src/components/auth-check';\nimport Results from './Results';\nimport Toolbar from './Toolbar';\n\nimport { useRecoilCallback } from 'recoil';\nimport { getCustomersDisplayAtom, getCustomersFullAtom } from 'src/app-data/atoms/customers-atom';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: \"1400px\",\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n },\n card: {\n padding: theme.spacing(3),\n marginTop: theme.spacing(3),\n color: theme.palette.text.error\n }\n}));\n\nconst CustomerListView = () => {\n const classes = useStyles();\n\n const resetDataList = useRecoilCallback(({reset}) => async () => {\n reset(getCustomersDisplayAtom);\n reset(getCustomersFullAtom);\n });\n\n useEffect(() => {\n resetDataList();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n \n Customer Search\n \n\n \n\n \n \n \n \n \n \n );\n};\n\nexport default CustomerListView;","import React, { useState, useEffect } from 'react';\r\nimport {\r\n Box,\r\n Button,\r\n Card,\r\n CardHeader,\r\n CardContent,\r\n Container,\r\n Divider,\r\n Grid,\r\n makeStyles,\r\n TextField,\r\n Typography\r\n} from '@material-ui/core';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport Page from 'src/components/Page';\r\nimport AuthCheck from 'src/components/auth-check';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport { useRecoilState, useRecoilCallback } from 'recoil';\r\nimport { httpClient } from 'src/lib/api-factory';\r\nimport { getUnitedStatesAtom, getCountriesAtom } from 'src/app-data/atoms/locations-atom';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n maxWidth: \"1400px\",\r\n backgroundColor: theme.palette.background.dark,\r\n minHeight: '100%',\r\n paddingBottom: theme.spacing(3),\r\n paddingTop: theme.spacing(3)\r\n },\r\n card: {\r\n padding: theme.spacing(3),\r\n marginTop: theme.spacing(3),\r\n color: theme.palette.text.error\r\n },\r\n reset: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst AddNewCustomerView = (props) => {\r\n const classes = useStyles();\r\n\r\n const [_isSubmitting, updateIsSubmitting] = useState(false);\r\n const [displayMessage, updateDisplayMessage] = useState({\r\n message: \"\",\r\n show: false,\r\n severity: \"\", //error, warning, info, success\r\n showAction: false\r\n });\r\n\r\n const [unitedStates, setUnitedStates] = useRecoilState(getUnitedStatesAtom); \r\n const [countries, setCountries] = useRecoilState(getCountriesAtom); \r\n\r\n const getUnitedStates = useRecoilCallback(() => async () => {\r\n try {\r\n const results = await httpClient().get(`/united-states`);\r\n return results.data;\r\n }\r\n catch(error) {\r\n return [];\r\n }\r\n });\r\n\r\n const getCountries = useRecoilCallback(() => async () => { \r\n try {\r\n const results = await httpClient().get(\"/countries\");\r\n var countries = [];\r\n\r\n if(results && results.data && results.data.length > 0) {\r\n results.data.forEach(item => {\r\n if(item.countryName === 'Japan') {\r\n countries.unshift(item);\r\n }\r\n else {\r\n countries.push(item);\r\n }\r\n });\r\n \r\n return countries;\r\n }\r\n else {\r\n return results.data;\r\n }\r\n }\r\n catch(error) {\r\n return [];\r\n } \r\n });\r\n\r\n const handleCleanup = (resetFunc) => {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\r\n\r\n if (typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n };\r\n\r\n const isUniqueCustomerNumber = useRecoilCallback(() => async (customerNumber) => {\r\n try {\r\n const results = await httpClient().get(`/customers/${customerNumber}/type/customerNumber`);\r\n return results.data;\r\n }\r\n catch(error) {\r\n return error;\r\n }\r\n });\r\n\r\n const addNewCustomer = useRecoilCallback(() => async (requestBody) => {\r\n try {\r\n const results = await httpClient().post(`/customers`, requestBody);\r\n return results.data;\r\n }\r\n catch(error) {\r\n return error;\r\n }\r\n });\r\n\r\n const handleSubmit = (values, validateFunc, setTouched, resetFunc) => {\r\n const { customerName, customerNumber, stateId, countryId } = values;\r\n\r\n (async () => {\r\n try {\r\n const valError = await validateFunc();\r\n\r\n if (Object.keys(valError).length > 0) {\r\n setTouched(valError);\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n\r\n var foundCustomer = await isUniqueCustomerNumber(customerNumber.trim());\r\n\r\n if(foundCustomer && foundCustomer.customerAccountId) {\r\n updateDisplayMessage({\r\n message: \"The customer number you entered has already been used.\",\r\n show: true,\r\n severity: \"error\",\r\n showAction: false\r\n });\r\n\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n var finalStateId = (stateId !== '' && stateId !== '0' && stateId !== 0) ? Number(stateId) : 0;\r\n\r\n if (countryId !== 230 && countryId !== '230') {\r\n finalStateId = 0;\r\n }\r\n\r\n var reqBody = {\r\n customerName: customerName.trim(),\r\n customerNumber: customerNumber.trim(),\r\n stateId: finalStateId,\r\n countryId: Number(countryId)\r\n };\r\n\r\n var postedResponse = await addNewCustomer(reqBody);\r\n\r\n if (postedResponse && postedResponse.id) {\r\n updateDisplayMessage({\r\n message: \"The customer has been added.\",\r\n show: true,\r\n severity: \"success\",\r\n showAction: false\r\n });\r\n\r\n if (typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n }\r\n else {\r\n updateDisplayMessage({\r\n message: `There was an error adding the customer.`,\r\n show: true,\r\n severity: \"error\",\r\n showAction: false\r\n });\r\n }\r\n\r\n updateIsSubmitting(false);\r\n }\r\n }\r\n }\r\n catch (error) {\r\n updateDisplayMessage({\r\n message: `There was a system error: ${error && error.message}`,\r\n show: true,\r\n severity: \"error\",\r\n showAction: false\r\n });\r\n }\r\n })();\r\n };\r\n\r\n useEffect(() => {\r\n (async () => {\r\n try {\r\n const unitedStatessResponse = await getUnitedStates();\r\n setUnitedStates(unitedStatessResponse);\r\n\r\n const countriesResponse = await getCountries();\r\n setCountries(countriesResponse);\r\n }\r\n catch(error) {\r\n\r\n }\r\n })();\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Add New Customer\r\n \r\n\r\n \r\n \r\n {({ errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values }) => (\r\n <>\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {countries && countries.length > 0 && countries.map((option) => (\r\n \r\n ))}\r\n \r\n \r\n\r\n {(values.countryId === 230 || values.countryId === '230') &&\r\n \r\n \r\n \r\n\r\n {unitedStates && unitedStates.length > 0 && unitedStates.map((option) => (\r\n \r\n ))}\r\n \r\n \r\n }\r\n\r\n {displayMessage.show &&\r\n \r\n \r\n {displayMessage.message}\r\n \r\n \r\n }\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n handleSubmit(values, validateForm, setTouched, handleReset)}\r\n disabled={_isSubmitting}\r\n type=\"submit\"\r\n >\r\n Submit\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddNewCustomerView;","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n Avatar,\n Box,\n Card,\n CardContent,\n Grid,\n Typography,\n colors,\n makeStyles\n} from '@material-ui/core';\nimport MoneyIcon from '@material-ui/icons/Money';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n height: '100%'\n },\n avatar: {\n backgroundColor: colors.red[600],\n height: 56,\n width: 56\n },\n differenceIcon: {\n color: colors.red[900]\n },\n differenceValue: {\n color: colors.red[900],\n marginRight: theme.spacing(1)\n }\n}));\n\nconst AvailableTrodes = ({ className, count, ...rest }) => {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n AVAILABLE TRODES\n \n\n \n {count}\n \n \n\n \n \n \n \n \n \n\n \n \n Trodes available for shipping\n \n \n \n \n );\n};\n\nAvailableTrodes.propTypes = {\n className: PropTypes.string\n};\n\nexport default AvailableTrodes;\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n Avatar,\n Box,\n Card,\n CardContent,\n Grid,\n Typography,\n colors,\n makeStyles\n} from '@material-ui/core';\nimport PeopleIcon from '@material-ui/icons/PeopleOutlined';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n height: '100%'\n },\n avatar: {\n backgroundColor: colors.green[600],\n height: 56,\n width: 56\n },\n differenceIcon: {\n color: colors.green[900]\n },\n differenceValue: {\n color: colors.green[900],\n marginRight: theme.spacing(1)\n }\n}));\n\nconst TotalCustomers = ({ className, count, ...rest }) => {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n TOTAL CUSTOMERS\n \n \n {count}\n \n \n \n \n \n \n \n \n\n \n \n All active customers\n \n \n \n \n );\n};\n\nTotalCustomers.propTypes = {\n className: PropTypes.string\n};\n\nexport default TotalCustomers;\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n Avatar,\n Box,\n Card,\n CardContent,\n Grid,\n Typography,\n makeStyles,\n colors\n} from '@material-ui/core';\nimport InsertChartIcon from '@material-ui/icons/InsertChartOutlined';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '100%'\n },\n avatar: {\n backgroundColor: colors.orange[600],\n height: 56,\n width: 56\n }\n}));\n\nconst ShippedTrodes = ({ className, count, ...rest }) => {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n SHIPPED TRODES\n \n \n {count}\n \n \n \n \n \n \n \n \n\n \n \n All Trodes shipped in the last 90 days\n \n \n \n \n );\n};\n\nShippedTrodes.propTypes = {\n className: PropTypes.string\n};\n\nexport default ShippedTrodes;\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n Avatar,\n Box,\n Card,\n CardContent,\n Grid,\n Typography,\n makeStyles,\n colors\n} from '@material-ui/core';\nimport AssignmentTurnedInIcon from '@material-ui/icons/AssignmentTurnedIn';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '100%'\n },\n avatar: {\n backgroundColor: colors.indigo[600],\n height: 56,\n width: 56\n }\n}));\n\nconst ReceivedTrodes = ({ className, count, ...rest }) => {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n RECEIVED TRODES\n \n \n {count}\n \n \n\n \n \n \n \n \n \n\n \n \n All Trodes received in the last 90 days\n \n \n \n \n );\n};\n\nReceivedTrodes.propTypes = {\n className: PropTypes.string\n};\n\nexport default ReceivedTrodes;\n","import dayjs from 'dayjs';\r\n\r\nexport const formatDate = (date) => {\r\n return dayjs(date)\r\n .format('YYYY-MM-DD');\r\n}\r\n\r\nexport const formatDateMinusDays = (date, days) => {\r\n var d = new Date(date);\r\n\r\n return dayjs(d)\r\n .subtract(days, 'day')\r\n .format('YYYY-MM-DD');\r\n}","import React from 'react';\nimport clsx from 'clsx';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Card,\n CardHeader,\n CircularProgress,\n Divider,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport { v4 as uuid } from 'uuid';\n\nimport { formatDate } from 'src/lib/date-functions';\n\nconst useStyles = makeStyles(() => ({\n root: {},\n actions: {\n justifyContent: 'flex-end'\n },\n scrollBox: {\n height: \"500px\"\n }\n}));\n\nconst LatestOrders = ({ className, customers, ...rest }) => {\n const classes = useStyles();\n\n return (\n \n \n\n \n\n \n \n \n \n \n Date Shipped\n Customer\n Serial #\n Trode\n Size\n Location\n \n \n\n \n { customers.length === 0 && (\n \n \n Loading Orders...\n \n \n )}\n\n {customers && customers.length > 0 && customers.map((order) => (\n \n \n {formatDate(order.dateSentOut)}\n \n\n \n {order.customerName}\n \n\n \n {order.serialNumber}\n \n\n \n {order.trodeTypeName}\n \n\n \n {`${order.trodeTypeSize}${order.trodeTypeMeasurement}`}\n \n\n \n { order.stateName ? `${order.stateName}, US` : order.countryName }\n \n \n ))}\n \n
\n
\n
\n\n \n \n Last 20 Orders\n \n \n \n );\n};\n\nLatestOrders.propTypes = {\n className: PropTypes.string\n};\n\nexport default LatestOrders;\n","import { atom } from \"recoil\";\r\n\r\nexport const getDashboadCountsAtom = atom({\r\n key: 'DASHBOARD_COUNTS',\r\n default: {}\r\n});\r\n\r\nexport const getDashboadCustomersAtom = atom({\r\n key: 'DASHBOARD_CUSTOMERS',\r\n default: []\r\n});","import { selectorFamily, useRecoilCallback, useSetRecoilState } from 'recoil';\r\nimport { httpClient } from '../../lib/api-factory';\r\n\r\nexport const getToAPISelector = selectorFamily({\r\n key: 'GET_FROM_API_SELECTOR',\r\n get: uri => async () => {\r\n try {\r\n const response = await httpClient().get(uri);\r\n return response.data;\r\n }\r\n catch(error) {\r\n //console.log(\"SELECTOR ERROR\", error);\r\n return [];\r\n }\r\n }\r\n});\r\n\r\nexport const postToAPISelector = selectorFamily({\r\n key: 'POST_TO_API_SELECTOR',\r\n get: ({uri, data}) => async () => {\r\n try {\r\n const response = await httpClient().post(uri, data);\r\n return response.data;\r\n }\r\n catch(error) {\r\n //console.log(\"SELECTOR ERROR\", error);\r\n return [];\r\n }\r\n }\r\n});\r\n\r\n\r\n//custom hooks\r\nexport const useSetPulseVetApiState = (atom) => {\r\n const dispatch = useSetRecoilState(atom);\r\n \r\n return useRecoilCallback(() => async (params) => {\r\n try {\r\n var response;\r\n \r\n if(params.type === \"POST\") {\r\n response= await httpClient().post(params.uri, params.data);\r\n }\r\n else {\r\n response = await httpClient().get(params.uri);\r\n }\r\n \r\n dispatch(response.data);\r\n }\r\n catch(error) {\r\n //console.log(\"Error\", error);\r\n return {};\r\n } \r\n });\r\n};\r\n","import React, { useEffect } from 'react';\nimport {\n Container,\n Grid,\n makeStyles\n} from '@material-ui/core';\nimport Page from 'src/components/Page';\n\nimport AvailableTrodes from './AvailableTrodes';\nimport TotalCustomers from './TotalCustomers';\nimport ShippedTrodes from './ShippedTrodes';\nimport ReceivedTrodes from './ReceivedTrodes';\nimport AuthCheck from 'src/components/auth-check';\n\nimport LatestOrders from './LatestOrders';\n\nimport { useRecoilValue } from 'recoil';\nimport { getDashboadCountsAtom, getDashboadCustomersAtom } from '../../app-data/atoms/dashboard-atom';\nimport { useSetPulseVetApiState } from '../../app-data/triggers/api-triggers';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: \"1400px\",\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n }\n}));\n\n\nconst Dashboard = () => {\n const classes = useStyles();\n\n const counts = useRecoilValue(getDashboadCountsAtom);\n const customers = useRecoilValue(getDashboadCustomersAtom);\n const refreshCounts = useSetPulseVetApiState(getDashboadCountsAtom);\n const refreshCustomers = useSetPulseVetApiState(getDashboadCustomersAtom);\n\n useEffect(() => {\n (async () => {\n try {\n await refreshCounts({\n type: \"GET\",\n uri: \"/dashboard/counts\"\n });\n\n await refreshCustomers({\n type: \"GET\",\n uri: \"/dashboard/customers\"\n });\n }\n catch(error) {\n \n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n \n return (\n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default Dashboard;\n","import React, { useState } from 'react';\r\n//import PropTypes from 'prop-types';\r\nimport { TextField } from '@material-ui/core';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport { Auth } from \"aws-amplify\";\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nexport const StandardLoginForm = (props) => {\r\n const {touched, values, errors, handleBlur, handleChange, newPasswordRequired} = props;\r\n return (\r\n <>\r\n \r\n { !newPasswordRequired ?\r\n \r\n :\r\n <>\r\n }\r\n \r\n );\r\n};\r\n\r\nexport const NewLoginForm = (props) => {\r\n const {touched, values, errors, handleBlur, handleChange, newPasswordRequired} = props;\r\n return (\r\n <>\r\n { newPasswordRequired ?\r\n <>\r\n \r\n \r\n \r\n \r\n :\r\n <>\r\n }\r\n \r\n );\r\n};\r\n\r\nexport const ForgotPasswordModal = (props) => {\r\n const messages = {\r\n DEFAULT: \"A code will be sent to the email below. Once you have the code enter it into the next form that will appear.\",\r\n CODE_SENT: \"A code has been sent to the email address below. If you did not recieve a code check your junk mail. If it is not there contact the administrator.\",\r\n PASSWORD_CHANGED: \"Your password has been updated. Press the Close button below and login again with your new password.\"\r\n };\r\n const [open, setOpen] = useState(false);\r\n const [codeSent, updateCodeSent] = useState(false);\r\n const [_isSubmitting, updateIsSubmitting] = useState(false);\r\n const [displayMessage, updateDisplayMessage] = useState(messages.DEFAULT);\r\n\r\n const handleClickOpen = () => setOpen(true);\r\n\r\n const handleClose = (resetFunc) => {\r\n setOpen(false);\r\n handleCleanup(resetFunc);\r\n };\r\n\r\n const handleForgotSubmit = (values, errors) => {\r\n const { email } = values;\r\n\r\n if(Object.keys(errors).length < 1) {\r\n updateIsSubmitting(true);\r\n\r\n Auth.forgotPassword(email) \r\n .then(_ => {\r\n updateCodeSent(true);\r\n updateDisplayMessage(messages.CODE_SENT);\r\n updateIsSubmitting(false);\r\n }) \r\n .catch(err => {\r\n updateDisplayMessage(err.message);\r\n });\r\n }\r\n };\r\n\r\n const handleResetSubmit = (values, errors) => {\r\n const { email, code, new_password } = values;\r\n\r\n if(Object.keys(errors).length < 1) {\r\n updateIsSubmitting(true);\r\n\r\n Auth.forgotPasswordSubmit(email, code, new_password)\r\n .then(data => {\r\n updateDisplayMessage(messages.PASSWORD_CHANGED);\r\n }) \r\n .catch(err => {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage(err.message);\r\n });\r\n }\r\n };\r\n\r\n const handleCleanup = (resetFunc) => {\r\n updateCodeSent(false);\r\n updateIsSubmitting(false);\r\n updateDisplayMessage(messages.DEFAULT);\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {({errors, handleBlur, handleChange, handleReset, isSubmitting, touched, values}) => (\r\n <>\r\n {props.children && props.children({\r\n handleClickOpen: handleClickOpen\r\n })}\r\n\r\n \r\n Reset Password\r\n\r\n \r\n \r\n {displayMessage}\r\n \r\n\r\n {!codeSent ?\r\n \r\n : \r\n <>\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n }\r\n \r\n\r\n \r\n \r\n\r\n {!codeSent ?\r\n \r\n : \r\n <>\r\n \r\n\r\n \r\n \r\n }\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n/* Showing warning but there is no reason for it to\r\nForgotPasswordModal.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.element,\r\n PropTypes.arrayOf(PropTypes.element),\r\n PropTypes.arrayOf(PropTypes.node)\r\n ]).isRequired\r\n};*/\r\n","import React, { useState, useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport * as Yup from 'yup';\nimport { Formik } from 'formik';\nimport {\n Box,\n Button,\n Container,\n Typography,\n makeStyles,\n Grid\n} from '@material-ui/core';\nimport Alert from '@material-ui/lab/Alert';\nimport Page from 'src/components/Page';\nimport { StandardLoginForm, NewLoginForm, ForgotPasswordModal } from './LoginFormParts';\n\nimport { useRecoilState } from 'recoil';\nimport { loggedInUserAtom } from '../../app-data/atoms/user-atom';\n\nimport Amplify, { Auth } from \"aws-amplify\";\nimport { config } from '../../config';\n\nconst _values = config();\n\nAmplify.configure({\n Auth: {\n region: _values.region,\n userPoolId: _values.userPoolId,\n userPoolWebClientId: _values.userPoolWebClientId\n }\n});\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n height: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n },\n forgot: {\n fontSize: \"12px\",\n color: \"#3f51b5\",\n padding: \"0\"\n }\n}));\n\nconst LoginView = () => {\n const classes = useStyles();\n const navigate = useNavigate();\n const [displayedMessage, updateDisplayedMessage] = useState(\"Login with email address\");\n const [newPasswordRequired, updateNewPasswordRequired] = useState(false);\n const [_isSubmitting, updateIsSubmitting] = useState(false);\n const [userState, setUserState] = useRecoilState(loggedInUserAtom);\n\n const setupUserDetails = (attributes) => {\n setUserState({\n ...userState,\n ...attributes\n });\n };\n\n const [displayMessage, updateDisplayMessage] = useState({\n message: \"\",\n show: false,\n severity: \"\", //error, warning, info, success\n showAction: false\n });\n\n \n\n useEffect(() => {\n //Check to see if user is already logged in\n Auth.currentAuthenticatedUser()\n .then(usr => { \n const { attributes } = usr;\n setupUserDetails(attributes);\n navigate('/app/dashboard', { replace: true });\n })\n .catch(err => {\n //do nothing\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n {\n const { email, password } = e;\n updateIsSubmitting(true);\n \n try {\n Auth.signIn({\n username: email,\n password: password\n }).then((user) => {\n if(user.challengeName && user.challengeName === \"NEW_PASSWORD_REQUIRED\") {\n updateDisplayedMessage(\"Change Password Required. [Requirments] Minimum length 8, Requires at least 1 of the following: Special character, upper and lower case letters and at least one number.\");\n\n if(!e.new_password) {\n updateNewPasswordRequired(true);\n updateIsSubmitting(false);\n }\n else {\n Auth.completeNewPassword(\n user, \n e.new_password,\n {\n family_name: e.last_name,\n given_name: e.first_name\n }\n ).then(updatedUser => {\n localStorage.setItem(\"access_token\", updatedUser.signInUserSession.accessToken.jwtToken);\n setupUserDetails(updatedUser.attributes);\n navigate('/app/dashboard', { replace: true });\n }).catch(e => {\n console.log(e);\n });\n }\n }\n else {\n localStorage.setItem(\"access_token\", user.signInUserSession.accessToken.jwtToken);\n setupUserDetails(user.attributes);\n navigate('/app/dashboard', { replace: true });\n }\n }).catch(er => {\n updateIsSubmitting(false);\n\n switch(er.code) {\n case \"PasswordResetRequiredException\":\n //only when reset from console\n updateDisplayMessage({\n message: `${er.message}\\n Error Code 3a03f962-e108-4520-a4c6-8ac4884a2bf4`,\n show: true,\n severity: \"error\"\n });\n break;\n case \"NotAuthorizedException\":\n //If the temp password expires on a new user delete the user and recreate \n //in console. Cognito will send a new code.\n updateDisplayMessage({\n message: `${er.message}\\n Error Code c734501f-752d-4618-9624-e52a3a865355`,\n show: true,\n severity: \"error\"\n });\n break;\n default:\n updateDisplayMessage({\n message: `${er.message}\\n Error Code 5eb98b95-7e31-45ee-8e13-48aaace1ec56`,\n show: true,\n severity: \"error\"\n });\n break;\n }\n });\n }\n catch(error) {\n updateIsSubmitting(false);\n updateDisplayMessage({\n message: `${error.message}\\n Error Code e8d113ab-5cf4-4ca1-98a5-d27d602aa4de`,\n show: true,\n severity: \"error\"\n });\n }\n }}\n >\n {({errors, handleBlur, handleChange, handleSubmit, isSubmitting, touched, values}) => (\n
\n \n \n HMT Sign in\n \n\n \n Sign in to the HMT internal platform\n \n \n\n \n \n {displayedMessage}\n \n \n \n \n \n \n \n \n \n \n\n \n {displayMessage.show &&\n \n {displayMessage.message}\n \n }\n \n\n \n \n {\n ({handleClickOpen}) => (\n \n \n \n )\n }\n \n \n \n )}\n \n
\n \n \n );\n};\n\nexport default LoginView;\n","export const config = () => {\r\n return {\r\n region: \"us-east-1\",\r\n userPoolId: \"us-east-1_beuf5ifeZ\",\r\n userPoolWebClientId: \"6drsse0i0evev99vsi8nrc90p4\",\r\n }\r\n}","/* eslint-disable */\r\n\r\nimport { useEffect } from 'react';\r\nimport { Auth } from 'aws-amplify';\r\nimport {useNavigate } from 'react-router-dom';\r\n\r\n\r\nconst LogoutView = () => {\r\n const navigate = useNavigate();\r\n\r\n useEffect(() => {\r\n (async () => {\r\n try {\r\n //keep atoms and remove everything else?\r\n //var savedData = localStorage.getItem('recoil-persist');\r\n //localStorage.clear();\r\n //localStorage.setItem('recoil-persist', savedData);\r\n\r\n await Auth.signOut();\r\n localStorage.clear();\r\n navigate('/', { replace: true });\r\n }\r\n catch(error) {\r\n console.log('error signing out: ', error);\r\n }\r\n })();\r\n }, []);\r\n \r\n return (<>Signing out. You will be redirected once signed out.);\r\n}\r\n\r\nexport default LogoutView;","import React from 'react';\nimport {\n Box,\n Container,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport Page from 'src/components/Page';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n height: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n },\n image: {\n marginTop: 50,\n display: 'inline-block',\n maxWidth: '100%',\n width: 560\n }\n}));\n\nconst NotFoundView = () => {\n const classes = useStyles();\n\n return (\n \n \n \n \n 404: The page you are looking for isn’t here\n \n \n You either tried some shady route or you came here by mistake.\n Whichever it is, try using the navigation\n \n \n \n \n \n \n \n );\n};\n\nexport default NotFoundView;\n","import { atom } from \"recoil\";\r\n\r\nexport const trodeSearchSerialNumberAtom = atom({\r\n key: 'TRODE_SEARCH_SERIAL_NUMBER',\r\n default: \"\"\r\n});\r\n\r\nexport const availableTrodesAtom = atom({\r\n key: 'AVAILABLE_TRODES',\r\n default: []\r\n});\r\n\r\nexport const availableTrodeTypesAtom = atom({\r\n key: 'TRODE_TYPES',\r\n default: []\r\n});\r\n\r\nexport const availableTrodeSizesAtom = atom({\r\n key: 'TRODE_SIZES',\r\n default: []\r\n});\r\n\r\nexport const shippedTrodesAtom = atom({\r\n key: 'SHIPPED_TRODES',\r\n default: []\r\n});\r\n","import React, { useState } from 'react';\r\nimport { \r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n CardHeader,\r\n Divider,\r\n Grid,\r\n TextField,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\n\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\n\r\nimport { useRecoilValue, useRecoilState, useSetRecoilState, useRecoilCallback } from 'recoil';\r\nimport { trodeSearchSerialNumberAtom, availableTrodesAtom } from 'src/app-data/atoms/trodes-atom';\r\nimport { getCustomersPartialAtom } from 'src/app-data/atoms/customers-atom';\r\nimport { useSetPulseVetApiState } from 'src/app-data/triggers/api-triggers';\r\nimport { formatDate } from 'src/lib/date-functions';\r\nimport { httpClient } from 'src/lib/api-factory';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {},\r\n title: {\r\n fontSize: \"0.850rem\"\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n width: 200,\r\n }\r\n}));\r\n\r\nexport const ShipTrodeModal = (props) => {\r\n const { trode } = props;\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(false);\r\n const [savedToDb, setSavedToDb] = useState(false);\r\n\r\n const [_isSubmitting, updateIsSubmitting] = useState(false);\r\n const [displayMessage, updateDisplayMessage] = useState({\r\n message: \"\",\r\n show: false,\r\n severity: \"\"\r\n });\r\n\r\n const setSerialNumber = useSetRecoilState(trodeSearchSerialNumberAtom);\r\n const customers = useRecoilValue(getCustomersPartialAtom); \r\n const [trodeList, setAvailableTrodes] = useRecoilState(availableTrodesAtom);\r\n const refreshTrodes = useSetPulseVetApiState(availableTrodesAtom);\r\n\r\n const handleClickOpen = () => setOpen(true);\r\n\r\n const handleClose = (resetFunc) => {\r\n setOpen(false);\r\n handleCleanup(resetFunc);\r\n\r\n if(savedToDb) {\r\n if(trodeList.length === 1) {\r\n setAvailableTrodes([]);\r\n }\r\n else {\r\n refreshTrodes({\r\n type: \"GET\",\r\n uri: \"/trodes\",\r\n data: {}\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleCleanup = (resetFunc) => {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\r\n setSerialNumber(\"\");\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n };\r\n\r\n const shipTrode = useRecoilCallback(() => async (trodeId, req) => {\r\n try {\r\n const results = await httpClient().post(`/trode/${trodeId}/ship`, req);\r\n return results.data;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const handleSubmit = (values, resetFunc, validateFunc, setTouched) => {\r\n const { customer, dateShipped } = values;\r\n \r\n validateFunc().then((valError) => {\r\n if(Object.keys(valError).length > 0) {\r\n setTouched(valError);\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n\r\n var req = {\r\n customerId: customer, //this is customerAccountId\r\n dateSentOut: dateShipped\r\n };\r\n\r\n shipTrode(trode.trodeId, req).then((res) => { \r\n updateDisplayMessage({ \r\n message: \"Trode has been shipped and item will be remove from available Trodes below\",\r\n show: true,\r\n severity: \"success\"\r\n });\r\n\r\n setSerialNumber(\"\");\r\n setSavedToDb(true);\r\n\r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n } \r\n })\r\n .catch(er => {\r\n updateDisplayMessage({\r\n message: \"There was an error shipping this Trode\",\r\n show: true,\r\n severity: \"error\"\r\n });\r\n });\r\n }\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {({errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values}) => (\r\n <>\r\n {props.children && props.children({\r\n handleClickOpen: handleClickOpen\r\n })}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n { customers && customers.length > 0 ?\r\n `${option.customerName} #${option.customerNumber}`}\r\n onChange={(event, value) => values.customer = value && value.customerAccountId}\r\n renderOption={(option) => (\r\n \r\n #{option.customerNumber}\r\n {option.customerName}\r\n \r\n )} \r\n renderInput={\r\n (params) => (\r\n \r\n )\r\n }\r\n />\r\n :\r\n \r\n No customers added. Click on 'Add Customer' to create one.\r\n \r\n }\r\n \r\n\r\n \r\n \r\n \r\n\r\n {displayMessage.show &&\r\n \r\n {displayMessage.message}\r\n \r\n }\r\n \r\n \r\n\r\n \r\n\r\n \r\n handleSubmit(values, handleReset, validateForm, setTouched)}\r\n disabled={_isSubmitting}\r\n type=\"submit\"\r\n >\r\n Submit\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};","import React, { useState } from 'react';\r\nimport { \r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n CardHeader,\r\n Divider,\r\n Grid,\r\n TextField,\r\n makeStyles,\r\n FormControlLabel,\r\n Switch,\r\n FormLabel,\r\n FormControl,\r\n FormGroup\r\n} from '@material-ui/core';\r\nimport Alert from '@material-ui/lab/Alert';\r\n\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\n\r\nimport { useRecoilValue, useRecoilState, useSetRecoilState, useRecoilCallback } from 'recoil';\r\nimport { trodeSearchSerialNumberAtom, availableTrodesAtom, availableTrodeSizesAtom } from 'src/app-data/atoms/trodes-atom';\r\nimport { loggedInUserAtom } from 'src/app-data/atoms/user-atom';\r\nimport { getToAPISelector, postToAPISelector, useSetPulseVetApiState } from 'src/app-data/triggers/api-triggers';\r\nimport { formatDate } from 'src/lib/date-functions';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {},\r\n title: {\r\n fontSize: \"0.850rem\"\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n width: 200,\r\n },\r\n formControlLabel: {\r\n fontSize: \"0.850rem\",\r\n marginLeft: theme.spacing(1),\r\n marginBottom: theme.spacing(1)\r\n },\r\n formControlContainer: {\r\n marginLeft: theme.spacing(1)\r\n }\r\n}));\r\n\r\nexport const AlterTrodeModal = (props) => {\r\n const { trode } = props;\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(false);\r\n const [savedToDb, setSavedToDb] = useState(false);\r\n const [switches, setSwitches] = useState({\r\n retired: trode.retired\r\n });\r\n\r\n const [_isSubmitting, updateIsSubmitting] = useState(false);\r\n const [disableReset, updateDisableReset] = useState(false);\r\n const [displayMessage, updateDisplayMessage] = useState({\r\n message: \"\",\r\n show: false,\r\n severity: \"\", //error, warning, info, success\r\n showAction: false\r\n });\r\n\r\n const setSerialNumber = useSetRecoilState(trodeSearchSerialNumberAtom);\r\n const trodeSizes = useRecoilValue(availableTrodeSizesAtom);\r\n const [trodeList, setAvailableTrodes] = useRecoilState(availableTrodesAtom); \r\n const refreshTrodes = useSetPulseVetApiState(availableTrodesAtom);\r\n const currentUser = useRecoilValue(loggedInUserAtom);\r\n\r\n const handleClickOpen = () => setOpen(true);\r\n\r\n const handleClose = (resetFunc) => {\r\n setOpen(false);\r\n handleCleanup(resetFunc);\r\n \r\n if(savedToDb) { \r\n if(trodeList.length === 1) {\r\n setAvailableTrodes([]);\r\n }\r\n else {\r\n refreshTrodes({\r\n type: \"GET\",\r\n uri: \"/trodes\"\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleCleanup = (resetFunc) => {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\r\n setSerialNumber(\"\");\r\n\r\n setSwitches({\r\n retired: trode.retired\r\n });\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n };\r\n\r\n const handleProceed = (values) => {\r\n const { trodeSize, serialNumber, retired } = values;\r\n\r\n (async () => {\r\n updateDisableReset(true);\r\n\r\n var request = {\r\n trodeTypeSizeId: trodeSize,\r\n serialNumber: serialNumber,\r\n retired: retired\r\n };\r\n \r\n if(retired === 1) {\r\n request.retiredDate = formatDate(Date.now());\r\n request.retiredByUserId = (currentUser && currentUser.sub) || \"\";\r\n }\r\n\r\n console.log(request);\r\n\r\n var response = await alterTrodeOrCreateNew({\r\n uri: `/trodes/${trode.trodeId}/alter`, \r\n data: request\r\n });\r\n\r\n if(response && response.trodeId) {\r\n updateDisplayMessage({ \r\n message: \"Trode has been altered.\",\r\n show: true,\r\n severity: \"success\", \r\n showAction: false \r\n });\r\n\r\n setSavedToDb(true);\r\n }\r\n else {\r\n updateDisplayMessage({ \r\n message: \"There was an error updating the Trode.\",\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n })();\r\n };\r\n\r\n const isUniqueSerialNumber = useRecoilCallback(({snapshot}) => async (serialNumber) => { \r\n try {\r\n const results = await snapshot.getPromise(getToAPISelector(`/trode/serial-number/${serialNumber}/type/any`));\r\n return results;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const handleEditActivedChange = (item) => {\r\n setSwitches({\r\n ...switches,\r\n ...item\r\n });\r\n \r\n if(item.retired === 1) {\r\n updateIsSubmitting(true);\r\n updateDisplayMessage({ \r\n message: \"Retiring Trode cannot be undone once saved.\",\r\n show: true,\r\n severity: \"warning\", \r\n showAction: true \r\n });\r\n }\r\n else {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage({ \r\n message: \"\",\r\n show: false,\r\n severity: \"warning\", \r\n showAction: false \r\n });\r\n }\r\n };\r\n\r\n const alterTrodeOrCreateNew = useRecoilCallback(({snapshot}) => async (req) => {\r\n try {\r\n const results = await snapshot.getPromise(postToAPISelector(req));\r\n return results;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const handleSubmit = (values, validateFunc, setTouched) => { \r\n const { trodeSize, serialNumber } = values;\r\n \r\n (async () => {\r\n try {\r\n const valError = await validateFunc();\r\n\r\n if(Object.keys(valError).length > 0) {\r\n setTouched(valError);\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n\r\n var trodeWithSN = await isUniqueSerialNumber(serialNumber.trim());\r\n\r\n if(Object.keys(trodeWithSN).length > 0) {\r\n updateDisplayMessage({ \r\n message: \"Are you sure you want to alter a Trode with an existing serial number? Click 'Reset' if this was a mistake or click 'Proceed' to continue.\",\r\n show: true,\r\n severity: \"warning\", \r\n showAction: true \r\n });\r\n }\r\n else {\r\n //set original to retired = true\r\n var alterOriginalResponse = await alterTrodeOrCreateNew({ \r\n uri: `/trodes/${trode.trodeId}/alter`,\r\n data: {\r\n retired: 1\r\n }\r\n });\r\n\r\n if(alterOriginalResponse && alterOriginalResponse.trodeId) { \r\n //save new\r\n var addNewResponse = await alterTrodeOrCreateNew({ \r\n uri: `/trodes`,\r\n data: {\r\n trodeTypeId: trode.trodeTypeId,\r\n trodeTypeSizeId: trodeSize,\r\n serialNumber: serialNumber.trim(),\r\n parentId: trode.trodeId\r\n }\r\n });\r\n\r\n if(addNewResponse && addNewResponse.trodeId) {\r\n updateDisplayMessage({ \r\n message: \"The new Trode has been created and the old one has been taken out of service.\",\r\n show: true,\r\n severity: \"success\",\r\n showAction: false \r\n });\r\n\r\n setSerialNumber(\"\");\r\n setSavedToDb(true);\r\n updateDisableReset(true);\r\n }\r\n else {\r\n updateDisplayMessage({ \r\n message: `There was an error that prevented the new Trode from being created.`,\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n }\r\n else {\r\n updateDisplayMessage({ \r\n message: `There was an error taking the original Trode out of serivce. This prevented the new Trode from being created.`,\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n }\r\n }\r\n }\r\n catch(error) {\r\n updateDisplayMessage({ \r\n message: `There was a system error: ${error && error.message}`,\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n })();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {({errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values, initialValues}) => (\r\n <>\r\n {props.children && props.children({\r\n handleClickOpen: handleClickOpen\r\n })}\r\n\r\n {\r\n (() => {\r\n initialValues.retired = switches.retired;\r\n })()\r\n }\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n {trodeSizes && trodeSizes.length > 0 && trodeSizes.map((option) => (\r\n \r\n ))}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Retired\r\n \r\n\r\n \r\n handleEditActivedChange({\r\n retired: values.retired === 1 ? 0 : 1\r\n })} \r\n />\r\n }\r\n label={values.retired === 1 ? 'Yes' : 'No'}\r\n />\r\n \r\n \r\n \r\n\r\n {displayMessage.show &&\r\n \r\n handleProceed(values)}\r\n >\r\n Proceed\r\n \r\n }\r\n >\r\n {displayMessage.message}\r\n \r\n \r\n }\r\n \r\n \r\n\r\n \r\n\r\n \r\n handleSubmit(values, validateForm, setTouched)}\r\n disabled={_isSubmitting}\r\n type=\"submit\"\r\n >\r\n Submit\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport {\n Box,\n Button,\n Card,\n CircularProgress,\n Grid,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n makeStyles\n} from '@material-ui/core';\n\nimport { ShipTrodeModal } from './ShipTrodeModal';\nimport { AlterTrodeModal } from './AlterTrodeModal';\nimport Pagination from '@material-ui/lab/Pagination';\n\nimport { availableTrodesAtom } from '../../../app-data/atoms/trodes-atom';\nimport { useRecoilValue } from 'recoil';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actionLink: {\n fontSize: \"0.875rem\",\n color: \"#3f51b5\",\n padding: \"0\",\n textTransform: 'none'\n },\n paginationCount: {\n //paddingRight: theme.spacing(2),\n padding: \"5px 10px 0 0\"\n }\n}));\n\n/* \n When a trode is retired it is removed from (full) list and the list is refreshed which puts it back to page 1\n but still shows the current page you were on. If you click on a page next to the one you are on then \n back you will be back where you should be so setPage needs to be called from the alter modal with the \n current page.\n*/\n\nconst Results = ({ className, showLoading, ...rest }) => {\n const classes = useStyles();\n const [page, setPage] = useState(1); \n const [pageCount, setPageCount] = useState(0); \n const [currentSet, setCurrentSet] = useState([]);\n const trodes = useRecoilValue(availableTrodesAtom);\n const pageItemSize = 100;\n \n const getCurrentSet = (value, dataArray) => {\n var _currentSet = [];\n var _to = value * pageItemSize;\n var _from = _to - pageItemSize;\n\n for(let i = _from; i < _to; i++) {\n if(typeof dataArray[i] !== 'undefined') {\n _currentSet.push(dataArray[i]);\n }\n }\n \n setCurrentSet(_currentSet);\n };\n\n const handlePageChange = (event, value) => { \n setPage(value);\n getCurrentSet(value, trodes);\n };\n\n useEffect(() => { \n (async () => {\n try {\n getCurrentSet(1, trodes); \n setPageCount(Math.ceil(trodes.length / pageItemSize));\n }\n catch(error) {\n\n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [trodes]);\n\n return (\n \n \n \n \n \n \n Ship\n Alter\n Trode\n Serial Number\n \n \n\n \n { showLoading && currentSet.length === 0 && (\n \n \n Loading Data...\n \n \n )}\n\n {currentSet && currentSet.map((trode) => (\n \n \n \n \n \n {\n ({handleClickOpen}) => (\n \n )\n }\n \n \n \n \n\n \n \n \n \n {\n ({handleClickOpen}) => (\n \n )\n }\n \n \n \n \n\n \n {trode.trodeTypeName}\n \n\n \n {trode.serialNumber}\n \n \n ))}\n \n
\n
\n
\n \n \n\n \n \n \n \n\n \n \n Trodes Found: {trodes && trodes.length}\n \n \n \n \n );\n};\n\nResults.propTypes = {\n className: PropTypes.string\n};\n\nexport default Results;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n Box,\n Button,\n Card,\n CardContent,\n Grid,\n TextField,\n InputAdornment,\n SvgIcon,\n makeStyles\n} from '@material-ui/core';\nimport { Search as SearchIcon } from 'react-feather';\n\nimport { useRecoilState, useSetRecoilState, useRecoilCallback } from 'recoil';\nimport { trodeSearchSerialNumberAtom, availableTrodeSizesAtom } from 'src/app-data/atoms/trodes-atom';\nimport { getCustomersPartialAtom } from 'src/app-data/atoms/customers-atom';\nimport { httpClient } from 'src/lib/api-factory';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n importButton: {\n marginRight: theme.spacing(1)\n },\n exportButton: {\n marginRight: theme.spacing(1)\n }\n}));\n\nconst Toolbar = ({ className, getAvailableHandler, isFetching, getTrodeBySerialNumberHandler, isSearching, ...rest }) => {\n const classes = useStyles();\n const [serialNumber, setSerialNumber] = useRecoilState(trodeSearchSerialNumberAtom);\n\n const setCustomers = useSetRecoilState(getCustomersPartialAtom); \n const setTrodeSizes = useSetRecoilState(availableTrodeSizesAtom);\n\n\n const getCustomers = useRecoilCallback(() => async () => { \n try {\n const results = await httpClient().get(\"/customers\");\n return results.data;\n }\n catch(error) {\n return [];\n } \n });\n\n const getTrodeSizes = useRecoilCallback(() => async () => {\n try {\n const results = await httpClient().get(\"/trode-sizes\");\n return results.data;\n }\n catch(error) {\n return [];\n } \n });\n\n useEffect(() => {\n (async () => {\n try {\n const customersResponse = await getCustomers();\n setCustomers(customersResponse);\n\n const trodeSizesResponse = await getTrodeSizes();\n setTrodeSizes(trodeSizesResponse);\n }\n catch(error) {\n\n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n {/*\n */}\n { isFetching ?\n \n :\n \n }\n \n \n \n \n \n \n \n \n \n \n )\n }}\n placeholder=\"Search Trode by serial number\"\n variant=\"outlined\"\n value={serialNumber}\n onChange={e => setSerialNumber(e.target.value)}\n onKeyPress={(e) => e.key === 'Enter' && getTrodeBySerialNumberHandler(serialNumber)}\n />\n \n\n \n \n { isSearching ?\n \n :\n \n }\n \n \n \n \n \n \n );\n};\n\nToolbar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Toolbar;\n","import React, { useState, useEffect } from 'react';\nimport {\n Box,\n Card,\n Container,\n makeStyles, \n Typography\n} from '@material-ui/core';\nimport clsx from 'clsx';\nimport Page from 'src/components/Page';\nimport Results from './Results';\nimport Toolbar from './Toolbar';\nimport AuthCheck from 'src/components/auth-check';\n\nimport { availableTrodesAtom, trodeSearchSerialNumberAtom } from 'src/app-data/atoms/trodes-atom';\nimport { useSetRecoilState, useRecoilCallback } from 'recoil';\nimport { httpClient } from 'src/lib/api-factory';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: \"1400px\",\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n },\n card: {\n padding: theme.spacing(3),\n marginTop: theme.spacing(3),\n color: theme.palette.text.error\n }\n}));\n\nconst TrodeListView = ({ className }) => {\n const classes = useStyles();\n const setAvailableTrodes = useSetRecoilState(availableTrodesAtom);\n const [isFetching, setIsFetching] = useState(false);\n const [isSearching, setIsSearching] = useState(false);\n const [display, setDisplay] = useState({ show: false, message: \"\" });\n const [showLoading, setShowLoading] = useState(false);\n\n const validationMessage = \"Must enter serial number.\";\n const noMatchMessage = \"Either the serial number did not find any matches or the Trode is currently not available to ship.\";\n const noAvailableTrodesMessage = \"No availble Trodes were found for shipping.\";\n\n const getAvailableTrodes = useRecoilCallback(() => async () => { \n try {\n const results = await httpClient().get('/trodes');\n return results.data;\n }\n catch(error) {\n return error;\n } \n });\n\n const getTrodeBySerialNumber = useRecoilCallback(() => async (serialNumber) => { \n try {\n const results = await httpClient().get(`/trode/serial-number/${serialNumber}/type/available`);\n return results.data;\n }\n catch(error) {\n return error;\n } \n });\n\n const getAvailableClickHandler = useRecoilCallback(() => async () => {\n setIsFetching(true);\n setShowLoading(true);\n setDisplay({ show: false, message: \"\" });\n const results = await getAvailableTrodes();\n setAvailableTrodes(results);\n setIsFetching(false);\n\n if(results.length <= 0) {\n setDisplay({ show: true, message: noAvailableTrodesMessage });\n setShowLoading(false);\n }\n });\n\n const getTrodeBySerialNumberClickHandler = useRecoilCallback(({reset}) => async (sn) => {\n setIsSearching(true);\n setShowLoading(true);\n setDisplay({ show: false, message: \"\" });\n\n if(sn) {\n const results = await getTrodeBySerialNumber(sn);\n if(results && results.trodeId) {\n setAvailableTrodes([results]);\n }\n else {\n setAvailableTrodes([]);\n setDisplay({ show: true, message: noMatchMessage });\n }\n }\n else {\n setDisplay({ show: true, message: validationMessage });\n }\n setShowLoading(false);\n setIsSearching(false);\n reset(trodeSearchSerialNumberAtom);\n });\n\n const resetDataList = useRecoilCallback(({reset}) => async () => {\n reset(availableTrodesAtom);\n reset(trodeSearchSerialNumberAtom);\n });\n\n useEffect(() => {\n resetDataList();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n \n Available Trodes For Shipping\n \n\n \n\n { display.show &&\n \n \n {display.message}\n \n \n }\n\n \n \n \n \n \n \n );\n};\n\nexport default TrodeListView;","import React, { useState, useEffect } from 'react';\r\nimport { \r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n CardHeader,\r\n Divider,\r\n Grid,\r\n TextField,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport Alert from '@material-ui/lab/Alert';\r\n\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport { useRecoilState, useRecoilCallback } from 'recoil';\r\nimport { availableTrodeTypesAtom, availableTrodeSizesAtom } from 'src/app-data/atoms/trodes-atom';\r\nimport { postToAPISelector } from 'src/app-data/triggers/api-triggers';\r\nimport { httpClient } from 'src/lib/api-factory';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {},\r\n title: {\r\n fontSize: \"0.850rem\"\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n width: 200,\r\n },\r\n reset: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nexport const NewTrode = (props) => {\r\n const classes = useStyles();\r\n const [displayMessage, updateDisplayMessage] = useState({\r\n message: \"\",\r\n show: false,\r\n severity: \"\", //error, warning, info, success\r\n showAction: false\r\n });\r\n const [_isSubmitting, updateIsSubmitting] = useState(false);\r\n const [trodeTypes, setTrodeTypes] = useRecoilState(availableTrodeTypesAtom); \r\n const [trodeSizes, setTrodeSizes] = useRecoilState(availableTrodeSizesAtom);\r\n\r\n const isUniqueSerialNumber = useRecoilCallback(() => async (serialNumber) => { \r\n try {\r\n const results = await httpClient().get(`/trode/serial-number/${serialNumber}/type/any`);\r\n return results.data;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const alterTrodeOrCreateNew = useRecoilCallback(({snapshot}) => async (req) => {\r\n try {\r\n const results = await snapshot.getPromise(postToAPISelector(req));\r\n return results;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const getTrodeTypes = useRecoilCallback(() => async () => {\r\n try {\r\n const results = await httpClient().get(\"/trode-types\");\r\n return results.data;\r\n }\r\n catch(error) {\r\n return [];\r\n } \r\n });\r\n\r\n const getTrodeSizes = useRecoilCallback(() => async () => {\r\n try {\r\n const results = await httpClient().get(\"/trode-sizes\");\r\n return results.data;\r\n }\r\n catch(error) {\r\n return [];\r\n } \r\n });\r\n\r\n useEffect(() => {\r\n (async () => {\r\n try {\r\n var _types = await getTrodeTypes();\r\n setTrodeTypes(_types);\r\n\r\n var _sizes = await getTrodeSizes();\r\n setTrodeSizes(_sizes);\r\n }\r\n catch(error) {\r\n \r\n }\r\n })();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const handleCleanup = (resetFunc) => {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n };\r\n\r\n const handleSubmit = (values, validateFunc, setTouched, resetFunc) => { \r\n const { trodeType, trodeSize, serialNumber } = values;\r\n\r\n (async () => {\r\n try {\r\n const valError = await validateFunc();\r\n\r\n if(Object.keys(valError).length > 0) {\r\n setTouched(valError);\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n\r\n var trodeWithSN = await isUniqueSerialNumber(serialNumber.trim());\r\n\r\n if(Object.keys(trodeWithSN).length > 0) {\r\n updateDisplayMessage({ \r\n message: \"The serial number you entered is already in use. Please enter a new serial number.\",\r\n show: true,\r\n severity: \"warning\", \r\n showAction: false \r\n });\r\n\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n\r\n var addNewResponse = await alterTrodeOrCreateNew({ \r\n uri: `/trodes`,\r\n data: {\r\n trodeTypeId: trodeType,\r\n trodeTypeSizeId: trodeSize,\r\n serialNumber: serialNumber.trim()\r\n }\r\n });\r\n\r\n if(addNewResponse && addNewResponse.trodeId) {\r\n updateDisplayMessage({ \r\n message: \"The new Trode has been created.\",\r\n show: true,\r\n severity: \"success\",\r\n showAction: false \r\n });\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n }\r\n else {\r\n updateDisplayMessage({ \r\n message: `There was an error creating the new Trode. Take note of the selections you've made and contact an administrator.`,\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n }\r\n }\r\n }\r\n catch(error) {\r\n console.log(error);\r\n updateDisplayMessage({ \r\n message: `There was a system error: ${error && error.message}`,\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n })();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {({errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values}) => (\r\n <>\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n {trodeTypes && trodeTypes.length > 0 && trodeTypes.map((option) => (\r\n \r\n ))}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {trodeSizes && trodeSizes.length > 0 && trodeSizes.map((option) => (\r\n \r\n ))}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {displayMessage.show &&\r\n \r\n \r\n {displayMessage.message}\r\n \r\n \r\n }\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n handleSubmit(values, validateForm, setTouched, handleReset)}\r\n disabled={_isSubmitting}\r\n >\r\n Submit\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n makeStyles\r\n}\r\nfrom '@material-ui/core';\r\nimport Alert from '@material-ui/lab/Alert';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {},\r\n title: { //not used yet\r\n fontSize: \"0.850rem\"\r\n },\r\n content: {\r\n marginBottom: theme.spacing(4)\r\n },\r\n}));\r\n\r\n\r\nconst MessageBox = (props) => {\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleClickOpen = () => setOpen(true);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <>\r\n {props.children && props.children({\r\n handleClickOpen: handleClickOpen\r\n })}\r\n\r\n \r\n \r\n \r\n {props.title}\r\n \r\n \r\n\r\n \r\n \r\n {props.message}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default MessageBox;","import React, { useState } from 'react';\r\nimport { \r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n CardHeader,\r\n Divider,\r\n Grid,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n TextField,\r\n makeStyles,\r\n FormControlLabel,\r\n Switch\r\n} from '@material-ui/core';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport PerfectScrollbar from 'react-perfect-scrollbar';\r\n\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport { useRecoilCallback, useRecoilState } from 'recoil';\r\nimport { availableTrodeTypesAtom } from 'src/app-data/atoms/trodes-atom';\r\nimport { postToAPISelector } from 'src/app-data/triggers/api-triggers';\r\nimport { httpClient } from 'src/lib/api-factory';\r\n\r\nimport MessageBox from 'src/components/MessageBox';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {},\r\n title: {\r\n fontSize: \"0.850rem\"\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n marginBottom: theme.spacing(1)\r\n },\r\n reset: {\r\n marginRight: theme.spacing(1)\r\n },\r\n actionLink: {\r\n fontSize: \"0.875rem\",\r\n color: \"#3f51b5\",\r\n padding: \"0\",\r\n textTransform: 'none'\r\n },\r\n inactiveWarning: {\r\n fontSize: \"0.775rem\",\r\n color: \"#ff0000\",\r\n width: \"auto\"\r\n }\r\n}));\r\n\r\nexport const NewTrodeType = (props) => { \r\n const classes = useStyles();\r\n const [displayMessage, updateDisplayMessage] = useState({\r\n message: \"\",\r\n show: false,\r\n severity: \"\", //error, warning, info, success\r\n showAction: false\r\n });\r\n const [_isSubmitting, updateIsSubmitting] = useState(false);\r\n const [allTrodeTypes, addNewItemToState] = useRecoilState(availableTrodeTypesAtom);\r\n const [typeToEdit, setTypeToEdit] = useState({});\r\n const [deactivated, setDeactivated] = useState(false);\r\n const [alert, setAlert] = useState({\r\n severity: \"warning\",\r\n title: \"\",\r\n message: \"\",\r\n open: false\r\n });\r\n\r\n const isUnique = useRecoilCallback(() => async (trodeTypeName) => { \r\n try {\r\n const results = await httpClient().get(`/trode-type-by-name/${trodeTypeName}`);\r\n return results.data;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const postToAPI = useRecoilCallback(({snapshot}) => async (req) => {\r\n try {\r\n const results = await snapshot.getPromise(postToAPISelector(req));\r\n return results;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const refreshTrodeTypeList = async () => {\r\n const results = await httpClient().get(`/trode-types`);\r\n addNewItemToState(results.data);\r\n };\r\n\r\n const handleCleanup = (resetFunc) => {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n };\r\n\r\n const handleEditOrCancel = (item, resetFunc) => {\r\n setTypeToEdit(item);\r\n setDeactivated(false);\r\n\r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n };\r\n\r\n const handleEditActivedChange = (item, value) => {\r\n setTypeToEdit({...item, isActive: value === 1 ? 0 : 1})\r\n setDeactivated(!deactivated);\r\n\r\n var which = value === 1 ? 0 : 1;\r\n\r\n if(which === 0) {\r\n setAlert({\r\n ...alert,\r\n open: true,\r\n title: \"Important Message\",\r\n message: \"Once set to 'Inactive' and saved, the Trode Type will be removed. This cannot be undone. Press the Cancel button if you did not mean to do this.\",\r\n severity: \"warning\"\r\n });\r\n }\r\n };\r\n\r\n const handleEditSave = (values, validateFunc, setTouched, resetFunc) => {\r\n const { edit_trodeTypeName, edit_isActive } = values;\r\n\r\n (async () => { \r\n try {\r\n const valError = await validateFunc();\r\n var editErrors = false;\r\n\r\n Object.keys(valError).forEach(key => {\r\n if(key.indexOf('edit_') !== -1) {\r\n editErrors = true;\r\n\r\n setTouched({\r\n [key]: true\r\n });\r\n }\r\n }); \r\n\r\n if(!editErrors) { \r\n var alterResponse = await postToAPI({ \r\n uri: `/trode-types/${typeToEdit.trodeTypeId}/alter`,\r\n data: {\r\n trodeTypeName: edit_trodeTypeName.trim(),\r\n isActive: edit_isActive\r\n }\r\n });\r\n\r\n if(alterResponse && alterResponse.trodeTypeId) {\r\n await refreshTrodeTypeList();\r\n }\r\n else {\r\n setAlert({\r\n ...alert,\r\n open: true,\r\n title: \"Error Message\",\r\n message: \"There was an error and the system failed to make the update.\",\r\n severity: \"error\"\r\n });\r\n }\r\n\r\n handleEditOrCancel({}, resetFunc);\r\n }\r\n }\r\n catch(error) {\r\n console.log(error);\r\n setAlert({\r\n ...alert,\r\n open: true,\r\n title: \"Error Message\",\r\n message: \"There was an error and the system failed to make the update.\",\r\n severity: \"error\"\r\n });\r\n }\r\n })();\r\n };\r\n\r\n const handleSubmit = (values, validateFunc, setTouched, resetFunc) => {\r\n const { trodeTypeName } = values;\r\n\r\n (async () => {\r\n try {\r\n const valError = await validateFunc();\r\n var entryErrors = false;\r\n\r\n Object.keys(valError).forEach(key => {\r\n if(key.indexOf('edit_') === -1) {\r\n entryErrors = true;\r\n\r\n setTouched({\r\n [key]: true\r\n });\r\n }\r\n });\r\n\r\n if(entryErrors) {\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n\r\n var foundItem = await isUnique(trodeTypeName.trim());\r\n\r\n if(Object.keys(foundItem).length > 0) {\r\n updateDisplayMessage({ \r\n message: \"The Trode Name you entered is already in use. Please enter a new name.\",\r\n show: true,\r\n severity: \"warning\", \r\n showAction: false \r\n });\r\n\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n\r\n var addNewResponse = await postToAPI({ \r\n uri: `/trode-types`,\r\n data: {\r\n trodeTypeName: trodeTypeName.trim()\r\n }\r\n });\r\n\r\n if(addNewResponse && addNewResponse.trodeTypeId) {\r\n await refreshTrodeTypeList();\r\n\r\n updateDisplayMessage({ \r\n message: \"The new Trode Type has been created.\",\r\n show: true,\r\n severity: \"success\",\r\n showAction: false \r\n });\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n }\r\n else {\r\n updateDisplayMessage({ \r\n message: `There was an error creating the new Trode Type. Take note of the selections you've made and contact an administrator.`,\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n }\r\n }\r\n }\r\n catch(error) {\r\n updateDisplayMessage({ \r\n message: `There was a system error: ${error && error.message}`,\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n })();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {({errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values, initialValues}) => (\r\n <>\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n {displayMessage.show &&\r\n \r\n \r\n {displayMessage.message}\r\n \r\n \r\n }\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n handleSubmit(values, validateForm, setTouched, handleReset)}\r\n disabled={_isSubmitting}\r\n >\r\n Submit\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Type name\r\n Status\r\n  \r\n \r\n \r\n\r\n \r\n {allTrodeTypes && allTrodeTypes.length > 0 && allTrodeTypes.map((item) => {\r\n if(typeToEdit.trodeTypeId === item.trodeTypeId) {\r\n initialValues.edit_trodeTypeName = typeToEdit.trodeTypeName;\r\n initialValues.edit_isActive = typeToEdit.isActive;\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n handleEditActivedChange(item, values.edit_isActive)} \r\n />\r\n }\r\n label={values.edit_isActive === 1 ? 'Active' : 'Inactive'}\r\n />\r\n { deactivated && (\r\n \r\n Once set to 'Inactive' it will be removed. This cannot be undone.\r\n \r\n )}\r\n \r\n\r\n \r\n \r\n handleEditOrCancel({}, handleReset)}\r\n >\r\n Cancel\r\n \r\n\r\n handleEditSave(values, validateForm, setTouched, handleReset)}\r\n >\r\n Save\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n \r\n {item.trodeTypeName}\r\n \r\n\r\n \r\n {item.isActive === 0 ? \"InActive\" : \"Active\"}\r\n \r\n\r\n \r\n \r\n handleEditOrCancel(item)}\r\n >\r\n Edit\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n })}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n )}\r\n \r\n\r\n setAlert({...alert, open: false})}\r\n />\r\n \r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport { \r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n CardHeader,\r\n Divider,\r\n Grid,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n TextField,\r\n makeStyles,\r\n FormControlLabel,\r\n Switch\r\n} from '@material-ui/core';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport PerfectScrollbar from 'react-perfect-scrollbar';\r\n\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport { useRecoilCallback, useRecoilState } from 'recoil';\r\nimport { availableTrodeSizesAtom } from 'src/app-data/atoms/trodes-atom';\r\nimport { postToAPISelector } from 'src/app-data/triggers/api-triggers';\r\nimport { httpClient } from 'src/lib/api-factory';\r\n\r\nimport MessageBox from 'src/components/MessageBox';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {},\r\n title: {\r\n fontSize: \"0.850rem\"\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n marginBottom: theme.spacing(1)\r\n },\r\n reset: {\r\n marginRight: theme.spacing(1)\r\n },\r\n actionLink: {\r\n fontSize: \"0.875rem\",\r\n color: \"#3f51b5\",\r\n padding: \"0\",\r\n textTransform: 'none'\r\n },\r\n inactiveWarning: {\r\n fontSize: \"0.775rem\",\r\n color: \"#ff0000\",\r\n width: \"auto\"\r\n }\r\n}));\r\n\r\nexport const NewTrodeSize = (props) => { \r\n const classes = useStyles();\r\n const [displayMessage, updateDisplayMessage] = useState({\r\n message: \"\",\r\n show: false,\r\n severity: \"\", //error, warning, info, success\r\n showAction: false\r\n });\r\n const [_isSubmitting, updateIsSubmitting] = useState(false);\r\n const [allTrodeSizes, addNewItemToState] = useRecoilState(availableTrodeSizesAtom);\r\n const [sizeToEdit, setSizeToEdit] = useState({});\r\n const [deactivated, setDeactivated] = useState(false);\r\n const [alert, setAlert] = useState({\r\n severity: \"warning\",\r\n title: \"\",\r\n message: \"\",\r\n open: false\r\n });\r\n\r\n const isUnique = useRecoilCallback(() => async (size, measurement) => { \r\n try {\r\n const results = await httpClient().get(`/trode-sizes/size/${size}/measurement/${measurement}`);\r\n return results.data;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const postToAPI = useRecoilCallback(({snapshot}) => async (req) => {\r\n try {\r\n const results = await snapshot.getPromise(postToAPISelector(req));\r\n return results;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const refreshTrodeSizeList = async () => {\r\n const results = await httpClient().get(`/trode-sizes`);\r\n addNewItemToState(results.data);\r\n };\r\n\r\n const handleCleanup = (resetFunc) => {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n };\r\n\r\n const handleEditOrCancel = (item, resetFunc) => {\r\n setSizeToEdit(item);\r\n setDeactivated(false);\r\n\r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n };\r\n\r\n const handleEditActivedChange = (item, value) => {\r\n setSizeToEdit({...item, isActive: value === 1 ? 0 : 1})\r\n setDeactivated(!deactivated);\r\n\r\n var which = value === 1 ? 0 : 1;\r\n\r\n if(which === 0) {\r\n setAlert({\r\n ...alert,\r\n open: true,\r\n title: \"Important Message\",\r\n message: \"Once set to 'Inactive' and saved, the Trode Size will be removed. This cannot be undone. Press the Cancel button if you did not mean to do this.\",\r\n severity: \"warning\"\r\n });\r\n }\r\n };\r\n\r\n const handleEditSave = (values, validateFunc, setTouched, resetFunc) => {\r\n const { edit_trodeTypeSize, edit_trodeTypeMeasurement, edit_isActive } = values;\r\n\r\n (async () => { \r\n try {\r\n const valError = await validateFunc();\r\n var editErrors = false;\r\n\r\n Object.keys(valError).forEach(key => {\r\n if(key.indexOf('edit_') !== -1) {\r\n editErrors = true;\r\n\r\n setTouched({\r\n [key]: true\r\n });\r\n }\r\n }); \r\n\r\n if(!editErrors) { \r\n var alterResponse = await postToAPI({ \r\n uri: `/trode-sizes/${sizeToEdit.trodeTypeSizeId}/alter`,\r\n data: {\r\n trodeTypeSize: Number(edit_trodeTypeSize.toString().trim()),\r\n trodeTypeMeasurement: edit_trodeTypeMeasurement.trim(),\r\n isActive: edit_isActive\r\n }\r\n });\r\n\r\n if(alterResponse && alterResponse.trodeTypeSizeId) {\r\n await refreshTrodeSizeList();\r\n }\r\n else {\r\n setAlert({\r\n ...alert,\r\n open: true,\r\n title: \"Error Message\",\r\n message: \"There was an error and the system failed to make the update.\",\r\n severity: \"error\"\r\n });\r\n }\r\n\r\n handleEditOrCancel({}, resetFunc);\r\n }\r\n }\r\n catch(error) {\r\n console.log(error);\r\n setAlert({\r\n ...alert,\r\n open: true,\r\n title: \"Error Message\",\r\n message: \"There was an error and the system failed to make the update.\",\r\n severity: \"error\"\r\n });\r\n }\r\n })();\r\n };\r\n\r\n const handleSubmit = (values, validateFunc, setTouched, resetFunc) => { \r\n const { trodeTypeSize, trodeTypeMeasurement } = values;\r\n\r\n (async () => {\r\n try {\r\n const valError = await validateFunc();\r\n var entryErrors = false;\r\n\r\n Object.keys(valError).forEach(key => {\r\n if(key.indexOf('edit_') === -1) {\r\n entryErrors = true;\r\n\r\n setTouched({\r\n [key]: true\r\n });\r\n }\r\n });\r\n\r\n if(entryErrors) {\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n\r\n var foundItem = await isUnique(trodeTypeSize, trodeTypeMeasurement);\r\n\r\n if(Object.keys(foundItem).length > 0) {\r\n updateDisplayMessage({ \r\n message: \"The Trode Size you entered is already in use. Please enter a new size.\",\r\n show: true,\r\n severity: \"warning\", \r\n showAction: false \r\n });\r\n\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n\r\n var addNewResponse = await postToAPI({ \r\n uri: `/trode-sizes`,\r\n data: {\r\n trodeTypeSize: Number(trodeTypeSize.toString().trim()),\r\n trodeTypeMeasurement: trodeTypeMeasurement.trim()\r\n }\r\n });\r\n\r\n if(addNewResponse && addNewResponse.trodeTypeSizeId) {\r\n await refreshTrodeSizeList();\r\n\r\n updateDisplayMessage({ \r\n message: \"The new Trode Size has been created.\",\r\n show: true,\r\n severity: \"success\",\r\n showAction: false \r\n });\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n }\r\n else {\r\n updateDisplayMessage({ \r\n message: `There was an error creating the new Trode Size. Take note of the selections you've made and contact an administrator.`,\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n }\r\n }\r\n }\r\n catch(error) {\r\n updateDisplayMessage({ \r\n message: `There was a system error: ${error && error.message}`,\r\n show: true,\r\n severity: \"error\", \r\n showAction: false \r\n });\r\n }\r\n })();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {({errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values, initialValues}) => (\r\n <>\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n {displayMessage.show &&\r\n \r\n \r\n {displayMessage.message}\r\n \r\n \r\n }\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n handleSubmit(values, validateForm, setTouched, handleReset)}\r\n disabled={_isSubmitting}\r\n >\r\n Submit\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Type Size\r\n Measurement\r\n Status\r\n  \r\n \r\n \r\n\r\n \r\n {allTrodeSizes && allTrodeSizes.length > 0 && allTrodeSizes.map((item) => {\r\n if(sizeToEdit.trodeTypeSizeId === item.trodeTypeSizeId) {\r\n initialValues.edit_trodeTypeSize = sizeToEdit.trodeTypeSize;\r\n initialValues.edit_trodeTypeMeasurement = sizeToEdit.trodeTypeMeasurement;\r\n initialValues.edit_isActive = sizeToEdit.isActive;\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n handleEditActivedChange(item, values.edit_isActive)} \r\n />\r\n }\r\n label={values.edit_isActive === 1 ? 'Active' : 'Inactive'}\r\n />\r\n { deactivated && (\r\n \r\n Once set to 'Inactive' it will be removed. This cannot be undone.\r\n \r\n )}\r\n \r\n\r\n \r\n \r\n handleEditOrCancel({}, handleReset)}\r\n >\r\n Cancel\r\n \r\n\r\n handleEditSave(values, validateForm, setTouched, handleReset)}\r\n >\r\n Save\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n \r\n {item.trodeTypeSize}\r\n \r\n\r\n \r\n {item.trodeTypeMeasurement}\r\n \r\n\r\n \r\n {item.isActive === 0 ? \"InActive\" : \"Active\"}\r\n \r\n\r\n \r\n \r\n handleEditOrCancel(item)}\r\n >\r\n Edit\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n })}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n )}\r\n \r\n\r\n setAlert({...alert, open: false})}\r\n />\r\n \r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport {\r\n AppBar,\r\n Tab,\r\n Tabs,\r\n Box,\r\n Card,\r\n Container,\r\n makeStyles, \r\n Typography\r\n} from '@material-ui/core';\r\n\r\nimport clsx from 'clsx';\r\nimport Page from 'src/components/Page';\r\nimport AuthCheck from 'src/components/auth-check';\r\n\r\nimport { useRecoilValue } from 'recoil';\r\nimport { loggedInUserAtom } from 'src/app-data/atoms/user-atom';\r\nimport { NewTrode } from './NewTrode';\r\nimport { NewTrodeType } from './NewTrodeType';\r\nimport { NewTrodeSize } from './NewTrodeSize';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n maxWidth: \"1400px\",\r\n backgroundColor: theme.palette.background.dark,\r\n minHeight: '100%',\r\n paddingBottom: theme.spacing(3),\r\n paddingTop: theme.spacing(3),\r\n flexGrow: 1\r\n },\r\n card: {\r\n padding: theme.spacing(3),\r\n marginTop: theme.spacing(3),\r\n color: theme.palette.text.primary\r\n },\r\n tabBar: {\r\n backgroundColor: \"#4083c2\"\r\n },\r\n tabPanel: {\r\n paddingTop: theme.spacing(3),\r\n }\r\n}));\r\n\r\nconst TabPanel = (props) => {\r\n const { children, value, ...other } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nconst TrodeCreateView = ({ className, ...rest }) => {\r\n const classes = useStyles();\r\n const [value, setValue] = useState(0);\r\n const [currentComponent, setCurrentComponent] = useState();\r\n const currentUser = useRecoilValue(loggedInUserAtom);\r\n const [show, setShow] = useState(false);\r\n\r\n const a11yProps = (index) => {\r\n return {\r\n id: `simple-tab-${index}`,\r\n 'aria-controls': `simple-tabpanel-${index}`,\r\n };\r\n };\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n\r\n switch(newValue) {\r\n case 0:\r\n setCurrentComponent();\r\n break;\r\n case 1:\r\n setCurrentComponent();\r\n break;\r\n case 2:\r\n setCurrentComponent();\r\n break;\r\n default:\r\n setCurrentComponent();\r\n break;\r\n }\r\n };\r\n\r\n const hasMinimumGroup = (group) => {\r\n if(currentUser?.groups?.includes('SuperUser')) {\r\n return true;\r\n }\r\n else {\r\n switch(group) {\r\n case 'Admin': return currentUser?.groups?.includes('Admin');\r\n case 'PulseVetUser': return currentUser?.groups.length !== 0;\r\n default: return false;\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if(hasMinimumGroup('Admin')) {\r\n setShow(true);\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Create New\r\n \r\n\r\n \r\n \r\n \r\n \r\n { show && () }\r\n { show && () }\r\n \r\n \r\n\r\n \r\n {currentComponent}\r\n \r\n\r\n \r\n \r\n Create New Administration\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TrodeCreateView;","import React, { useState } from 'react';\r\nimport { \r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n CardHeader,\r\n Divider,\r\n Grid,\r\n TextField,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport Alert from '@material-ui/lab/Alert';\r\n\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\n\r\nimport { useRecoilCallback, useRecoilValue } from 'recoil';\r\nimport { availableTrodesAtom, shippedTrodesAtom, trodeSearchSerialNumberAtom } from 'src/app-data/atoms/trodes-atom';\r\nimport { useSetPulseVetApiState } from 'src/app-data/triggers/api-triggers';\r\nimport { httpClient } from 'src/lib/api-factory';\r\nimport { formatDate } from 'src/lib/date-functions';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {},\r\n title: {\r\n fontSize: \"0.850rem\"\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n width: 200\r\n },\r\n textArea: {\r\n marginLeft: theme.spacing(1),\r\n width: \"91%\"\r\n }\r\n}));\r\n\r\nexport const ReceiveTrodeModal = (props) => {\r\n const { trode } = props;\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(false);\r\n const [savedToDb, setSavedToDb] = useState(false);\r\n\r\n const [_isSubmitting, updateIsSubmitting] = useState(false);\r\n const [displayMessage, updateDisplayMessage] = useState({\r\n message: \"\",\r\n show: false,\r\n severity: \"\"\r\n });\r\n\r\n const refreshAvailableTrodes = useSetPulseVetApiState(availableTrodesAtom);\r\n const refreshShippedTrodes = useSetPulseVetApiState(shippedTrodesAtom);\r\n const serialNumber = useRecoilValue(trodeSearchSerialNumberAtom);\r\n\r\n const handleClickOpen = () => setOpen(true);\r\n\r\n const handleClose = (resetFunc) => {\r\n setOpen(false);\r\n handleCleanup(resetFunc);\r\n\r\n if(savedToDb) {\r\n refreshAvailableTrodes({ type: \"GET\", uri: \"/trodes\" });\r\n refreshShippedTrodes({ type: \"GET\", uri: serialNumber ? `/trodes-shipped?sn=${serialNumber}` : \"/trodes-shipped\" });\r\n }\r\n };\r\n\r\n const handleCleanup = (resetFunc) => {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n }\r\n };\r\n\r\n const getFromDb = useRecoilCallback(() => async (uri) => { \r\n try {\r\n const response = await httpClient().get(uri);\r\n return response.data;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const postToDb = useRecoilCallback(() => async (uri, data) => { \r\n try {\r\n const response = await httpClient().post(uri, data);\r\n return response.data;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const handleSubmit = (values, resetFunc, validateFunc, setTouched) => {\r\n const { dateReceived, notes } = values;\r\n\r\n (async () => { \r\n try {\r\n const valError = await validateFunc();\r\n var validationErrors = false;\r\n\r\n Object.keys(valError).forEach(key => {\r\n setTouched({\r\n [key]: true\r\n });\r\n }); \r\n\r\n if(!validationErrors) { \r\n updateIsSubmitting(true);\r\n \r\n //Add new shipping record\r\n var newShippingRecordResponse = await postToDb('/trodes-shipped', {\r\n trodeId: trode.trodeId, \r\n customerAccountId: trode.customerAccountId, \r\n dateSentOut: trode.dateSentOut, \r\n dateReceivedIn: dateReceived\r\n });\r\n\r\n if(newShippingRecordResponse && newShippingRecordResponse.shipRecordId) {\r\n if(notes && notes.trim() !== '') {\r\n if(trode.parentId) {\r\n var parent = await getFromDb(`/trodes/${trode.parentId}`);\r\n\r\n var _notes;\r\n if(parent.notes) {\r\n _notes = parent.notes;\r\n }\r\n\r\n _notes = _notes ? _notes.concat(`\\n`, notes.trim()) : notes.trim();\r\n\r\n if(parent && parent.trodeId) {\r\n //get parent notes, concat new note into parent note\r\n await postToDb(`/trodes/${parent.trodeId}/alter`, {\r\n notes: _notes\r\n });\r\n }\r\n }\r\n }\r\n\r\n var allNotes;\r\n if(trode.notes) {\r\n allNotes = trode.notes;\r\n }\r\n\r\n if(notes && notes.trim() !== '') {\r\n allNotes = allNotes ? allNotes.concat(`\\n`, notes.trim()) : notes.trim();\r\n }\r\n\r\n const DbNull = '';\r\n\r\n //set Trode back to available\r\n var updateTrodeResponse = await postToDb(`/trodes/${trode.trodeId}/alter`, {\r\n customerAccountId: DbNull,\r\n dateSentOut: DbNull,\r\n notes: btoa(allNotes)\r\n });\r\n\r\n if(updateTrodeResponse && updateTrodeResponse.trodeId) {\r\n updateDisplayMessage({ \r\n message: \"Trode has been received and will be added back to Available Trodes\",\r\n show: true,\r\n severity: \"success\"\r\n });\r\n \r\n setSavedToDb(true);\r\n \r\n if(typeof resetFunc === \"function\") {\r\n resetFunc();\r\n } \r\n }\r\n else {\r\n setSavedToDb(false);\r\n updateIsSubmitting(false);\r\n\r\n updateDisplayMessage({\r\n message: `There was an error setting the Trode back to 'Available'. Serial Number: ${trode.serialNumber}`,\r\n show: true,\r\n severity: \"error\"\r\n });\r\n }\r\n \r\n }\r\n else {\r\n updateDisplayMessage({\r\n message: \"There was an error adding new shipping record. The Trode was not received.\",\r\n show: true,\r\n severity: \"error\"\r\n });\r\n }\r\n }\r\n }\r\n catch(error) {\r\n console.log(error);\r\n updateDisplayMessage({\r\n message: \"There was an error receiving this Trode\",\r\n show: true,\r\n severity: \"error\"\r\n });\r\n }\r\n })();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {({errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values}) => (\r\n <>\r\n {props.children && props.children({\r\n handleClickOpen: handleClickOpen\r\n })}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {displayMessage.show &&\r\n \r\n {displayMessage.message}\r\n \r\n }\r\n \r\n \r\n\r\n \r\n\r\n \r\n handleSubmit(values, handleReset, validateForm, setTouched)}\r\n disabled={_isSubmitting}\r\n type=\"submit\"\r\n >\r\n Submit\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};","import React, { useState, useEffect } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport {\n Box,\n Button,\n Card,\n CircularProgress,\n Grid,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n makeStyles\n} from '@material-ui/core';\n\nimport { ReceiveTrodeModal } from './ReceiveTrodeModal';\nimport Pagination from '@material-ui/lab/Pagination';\n\nimport { shippedTrodesAtom } from 'src/app-data/atoms/trodes-atom';\nimport { useRecoilValue } from 'recoil';\nimport { formatDate } from 'src/lib/date-functions';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actionLink: {\n fontSize: \"0.875rem\",\n color: \"#3f51b5\",\n padding: \"0\",\n textTransform: 'none'\n },\n paginationCount: {\n //paddingRight: theme.spacing(2),\n padding: \"5px 10px 0 0\"\n }\n}));\n\nconst Results = ({ className, showLoading, ...rest }) => {\n const classes = useStyles();\n const [page, setPage] = useState(1); \n const [pageCount, setPageCount] = useState(0); \n const [currentSet, setCurrentSet] = useState([]);\n const trodes = useRecoilValue(shippedTrodesAtom);\n const pageItemSize = 100;\n\n const getCurrentSet = (value, dataArray) => {\n var _currentSet = [];\n var _to = value * pageItemSize;\n var _from = _to - pageItemSize;\n\n for(let i = _from; i < _to; i++) {\n if(typeof dataArray[i] !== 'undefined') {\n _currentSet.push(dataArray[i]);\n }\n }\n \n setCurrentSet(_currentSet);\n };\n\n const handlePageChange = (event, value) => { \n setPage(value);\n getCurrentSet(value, trodes);\n };\n\n useEffect(() => { \n (async () => {\n try {\n getCurrentSet(1, trodes);\n setPageCount(Math.ceil(trodes.length / pageItemSize));\n }\n catch(error) {\n\n }\n })();\n }, [trodes]);\n\n return (\n \n \n \n \n \n \n Receive\n Date Shipped\n Trode\n Serial Number\n Customer #\n Customer Name\n \n \n\n \n { showLoading && currentSet.length === 0 && (\n \n \n Loading Data...\n \n \n )}\n\n {currentSet && currentSet.map((trode) => (\n \n \n \n \n \n {\n ({handleClickOpen}) => (\n \n )\n }\n \n \n \n \n\n \n {formatDate(trode.dateSentOut)}\n \n\n \n {`${trode.trodeTypeName} ${trode.trodeTypeSize}${trode.trodeTypeMeasurement}`}\n \n\n \n {trode.serialNumber}\n \n\n \n {trode.customerNumber}\n \n\n \n {trode.customerName}\n \n \n ))}\n \n
\n
\n
\n \n \n\n \n \n \n \n\n \n \n Trodes Found: {trodes && trodes.length}\n \n \n \n \n );\n};\n\nResults.propTypes = {\n className: PropTypes.string\n};\n\nexport default Results;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n Box,\n Button,\n Card,\n CardContent,\n Grid,\n TextField,\n InputAdornment,\n SvgIcon,\n makeStyles\n} from '@material-ui/core';\nimport { Search as SearchIcon } from 'react-feather';\n\nimport { useRecoilState } from 'recoil';\nimport { trodeSearchSerialNumberAtom } from 'src/app-data/atoms/trodes-atom';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n importButton: {\n marginRight: theme.spacing(1)\n },\n exportButton: {\n marginRight: theme.spacing(1)\n }\n}));\n\nconst Toolbar = ({ className, getAllShippedHandler, isFetching, getTrodeBySerialNumberHandler, isSearching, ...rest }) => {\n const classes = useStyles();\n const [serialNumber, setSerialNumber] = useRecoilState(trodeSearchSerialNumberAtom);\n\n return (\n \n \n { isFetching ?\n \n :\n \n }\n \n\n \n \n \n \n \n \n \n \n \n )\n }}\n placeholder=\"Search Shipped Trode by serial number\"\n variant=\"outlined\"\n value={serialNumber}\n onChange={e => setSerialNumber(e.target.value)}\n onKeyPress={(e) => e.key === 'Enter' && getTrodeBySerialNumberHandler(serialNumber)}\n />\n \n\n \n \n { isSearching ?\n \n :\n \n }\n \n \n \n \n \n \n );\n};\n\nToolbar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Toolbar;\n","import React, { useState, useEffect } from 'react';\nimport {\n Box,\n Card,\n Container,\n makeStyles, \n Typography\n} from '@material-ui/core';\nimport clsx from 'clsx';\nimport Page from 'src/components/Page';\nimport AuthCheck from 'src/components/auth-check';\nimport Results from './Results';\nimport Toolbar from './Toolbar';\n\nimport { shippedTrodesAtom, trodeSearchSerialNumberAtom } from 'src/app-data/atoms/trodes-atom';\nimport { useSetRecoilState, useRecoilCallback } from 'recoil';\nimport { httpClient } from 'src/lib/api-factory';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: \"1400px\",\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n },\n card: {\n padding: theme.spacing(3),\n marginTop: theme.spacing(3),\n color: theme.palette.text.error\n }\n}));\n\nconst ShippedTrodeListView = ({ className }) => {\n const classes = useStyles();\n const setShippedTrodes = useSetRecoilState(shippedTrodesAtom);\n const [isFetching, setIsFetching] = useState(false);\n const [isSearching, setIsSearching] = useState(false);\n const [display, setDisplay] = useState({ show: false, message: \"\" });\n const [showLoading, setShowLoading] = useState(false);\n\n const validationMessage = \"Must enter serial number.\";\n const noMatchMessage = \"The serial number you entered did not find a match or it is retired.\";\n const noAvailableTrodesMessage = \"No shipped Trodes were found.\";\n\n const getShippedTrodes = useRecoilCallback(() => async (serialNumber) => { \n try {\n var uri = serialNumber ? `/trodes-shipped?sn=${serialNumber}` : '/trodes-shipped'\n const results = await httpClient().get(uri);\n return results.data;\n }\n catch(error) {\n return [];\n } \n });\n\n const getAllShippedClickHandler = useRecoilCallback(() => async () => {\n setIsFetching(true);\n setShowLoading(true);\n setDisplay({ show: false, message: \"\" });\n const results = await getShippedTrodes();\n setShippedTrodes(results);\n setIsFetching(false);\n\n if(results.length <= 0) {\n setDisplay({ show: true, message: noAvailableTrodesMessage });\n setShowLoading(false);\n }\n });\n\n const getTrodeBySerialNumberClickHandler = useRecoilCallback(({reset}) => async (sn) => {\n setIsSearching(true);\n setShowLoading(true);\n setDisplay({ show: false, message: \"\" });\n\n if(sn) {\n const results = await getShippedTrodes(sn);\n \n if(results && results.length > 0 && results[0].trodeId) {\n setShippedTrodes(results);\n }\n else {\n setShippedTrodes([]);\n setDisplay({ show: true, message: noMatchMessage });\n }\n }\n else {\n setDisplay({ show: true, message: validationMessage });\n }\n \n setShowLoading(false);\n setIsSearching(false);\n });\n\n const resetDataList = useRecoilCallback(({reset}) => async () => {\n reset(shippedTrodesAtom);\n reset(trodeSearchSerialNumberAtom);\n });\n\n useEffect(() => {\n resetDataList();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n \n Receive Trodes\n \n\n \n\n { display.show &&\n \n \n {display.message}\n \n \n }\n\n \n \n \n \n \n \n );\n};\n\nexport default ShippedTrodeListView;","import { atom } from \"recoil\";\r\n\r\nexport const reportCustomerHistoryAtom = atom({\r\n key: 'REPORT_CUSTOMER_HISTORY',\r\n default: []\r\n});\r\n\r\nexport const reportOutstandingTrodesAtom = atom({\r\n key: 'REPORT_OUTSTANDING_TRODES',\r\n default: []\r\n});\r\n\r\nexport const reportSerialNumberHistoryAtom = atom({\r\n key: 'REPORT_SERIAL_NUMBER_HISTORY',\r\n default: []\r\n});\r\n\r\nexport const reportReturnedTrodesAtom = atom({\r\n key: 'REPORT_RETURNED_TRODES',\r\n default: []\r\n});\r\n\r\nexport const reportReturnTrodeFormAtom = atom({\r\n key: 'REPORT_RETURN_TRODE_FORM',\r\n default: {}\r\n});","import React, { useState, useEffect } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport {\n Box,\n Card,\n CircularProgress,\n Grid,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n makeStyles,\n Popover,\n Button,\n CardContent,\n TextField,\n InputAdornment,\n SvgIcon\n} from '@material-ui/core';\nimport { Search as SearchIcon } from 'react-feather';\n\nimport Pagination from '@material-ui/lab/Pagination';\n\nimport { reportCustomerHistoryAtom } from 'src/app-data/atoms/reports-atom';\nimport { useRecoilValue } from 'recoil';\nimport {v4 as uuid} from 'uuid';\nimport { formatDate } from 'src/lib/date-functions';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actionLink: {\n fontSize: \"0.875rem\",\n color: \"#3f51b5\",\n padding: \"0\",\n textTransform: 'none'\n },\n paginationCount: {\n //paddingRight: theme.spacing(2),\n padding: \"5px 10px 0 0\"\n }\n}));\n\nconst Results = ({ className, showLoading, ...rest }) => {\n const classes = useStyles();\n const [page, setPage] = useState(1); \n const [pageCount, setPageCount] = useState(0); \n const [currentSet, setCurrentSet] = useState([]);\n const reportData = useRecoilValue(reportCustomerHistoryAtom);\n const pageItemSize = 100;\n\n //popover\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const id = open ? 'simple-popover' : undefined;\n\n const getCurrentSet = (value, dataArray) => {\n var _currentSet = [];\n var _to = value * pageItemSize;\n var _from = _to - pageItemSize;\n\n for(let i = _from; i < _to; i++) {\n if(typeof dataArray[i] !== 'undefined') {\n _currentSet.push(dataArray[i]);\n }\n }\n \n setCurrentSet(_currentSet);\n };\n\n const handlePageChange = (event, value) => { \n setPage(value);\n getCurrentSet(value, reportData);\n };\n\n const handleFilterClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleFilterClose = () => {\n setAnchorEl(null);\n };\n const handleFilterChange = (event) => {\n const { value } = event.target;\n\n if(value) {\n var filtered = reportData.filter(x => x.customerName.toLowerCase().startsWith(value.toLowerCase()));\n setCurrentSet(filtered);\n setPageCount(Math.ceil(filtered.length / pageItemSize));\n }\n else {\n getCurrentSet(page, reportData);\n setPageCount(Math.ceil(reportData.length / pageItemSize));\n }\n };\n\n const handleClearFilter = () => { \n getCurrentSet(page, reportData);\n setPageCount(Math.ceil(reportData.length / pageItemSize));\n };\n\n useEffect(() => { \n (async () => {\n try {\n getCurrentSet(1, reportData);\n setPageCount(Math.ceil(reportData.length / pageItemSize));\n }\n catch(error) {\n\n }\n })();\n }, [reportData]);\n\n return (\n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n Customer Name\n \n \n\n \n \n \n \n \n \n )\n }}\n placeholder=\"Customer Name\"\n variant=\"outlined\"\n onChange={handleFilterChange}\n />\n \n \n \n \n \n \n\n \n Customer #\n Customer\n State\n Country\n Serial #\n Trode\n Date Shipped\n Date Received\n \n \n\n \n { showLoading && currentSet.length === 0 && (\n \n \n Loading Data...\n \n \n )}\n\n {currentSet && currentSet.map((item) => (\n \n \n {item.customerNumber}\n \n\n \n {item.customerName}\n \n\n \n {item.stateName}\n \n\n \n {item.countryName === 'United States of America' ? 'United States' : item.countryName}\n \n\n \n {item.serialNumber}\n \n\n \n {`${item.trodeTypeName} ${item.trodeTypeSize}${item.trodeTypeMeasurement}`}\n \n\n \n {formatDate(item.dateSentOut)}\n \n\n \n {item.dateReceivedIn ? formatDate(item.dateReceivedIn) : 'Out with customer'}\n \n \n ))}\n \n
\n
\n
\n \n \n\n \n \n \n \n\n \n \n Items Found: {reportData && reportData.length}\n \n \n \n \n );\n};\n\nResults.propTypes = {\n className: PropTypes.string\n};\n\nexport default Results;\n","import xlsx from 'xlsx';\r\n\r\n// https://www.npmjs.com/package/xlsx\r\n\r\nexport const exportToExcel = (data, fileName) => {\r\n var newWB = xlsx.utils.book_new();\r\n\r\n var newWS = xlsx.utils.json_to_sheet(data);\r\n\r\n xlsx.utils.book_append_sheet(newWB, newWS, \"name\");\r\n\r\n xlsx.writeFile(newWB, `${fileName}.xlsx`);\r\n};\r\n\r\n\r\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n Box,\n Button,\n Card,\n CardContent,\n CardHeader,\n Divider,\n Grid,\n TextField,\n Radio,\n RadioGroup,\n Typography,\n makeStyles,\n FormControlLabel,\n FormControl,\n FormGroup,\n Checkbox\n} from '@material-ui/core';\nimport { Formik } from 'formik';\nimport * as Yup from 'yup';\nimport Alert from '@material-ui/lab/Alert';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\n\nimport { useRecoilState, useRecoilCallback } from 'recoil';\nimport { getCustomersPartialAtom } from 'src/app-data/atoms/customers-atom';\nimport { reportCustomerHistoryAtom } from 'src/app-data/atoms/reports-atom';\nimport { getCountriesAtom } from 'src/app-data/atoms/locations-atom';\nimport { httpClient } from 'src/lib/api-factory';\nimport { formatDate, formatDateMinusDays } from 'src/lib/date-functions';\nimport { exportToExcel } from 'src/lib/export-to-excel';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n exportButtonContainer: {\n marginBottom: theme.spacing(3)\n },\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n width: 200,\n },\n radioLabel: {\n fontSize: '14px'\n },\n listStyle: {\n fontSize: '16px',\n //padding: theme.spacing(2)\n }\n}));\n\nconst Toolbar = ({ className, ...rest }) => {\n const classes = useStyles();\n\n const [displayMessage, updateDisplayMessage] = useState({\n message: \"\",\n show: false,\n severity: \"\", //error, warning, info, success\n showAction: false\n });\n\n const [selectedValue, setSelectedValue] = useState('0');\n const [checked, setChecked] = useState(true);\n const [_isSubmitting, updateIsSubmitting] = useState(false);\n const [_isExporting, setIsExporting] = useState(false);\n const [customers, setCustomers] = useRecoilState(getCustomersPartialAtom); \n const [countries, setCountries] = useRecoilState(getCountriesAtom); \n const [reportData, setReportData] = useRecoilState(reportCustomerHistoryAtom);\n\n const handleRadioChange = (event) => {\n setSelectedValue(event.target.value);\n };\n\n const handleCheckChange = (event) => {\n setChecked(event.target.checked);\n };\n\n const getCustomers = useRecoilCallback(() => async () => {\n try {\n const results = await httpClient().get(\"/customers\");\n return results.data;\n }\n catch(error) {\n return [];\n } \n });\n\n const getCountries = useRecoilCallback(() => async () => { \n try {\n const results = await httpClient().get(\"/countries\");\n var countries = [];\n\n if(results && results.data && results.data.length > 0) {\n results.data.forEach(item => {\n if(item.countryName === 'Japan') {\n countries.unshift(item);\n }\n else {\n countries.push(item);\n }\n });\n \n return countries;\n }\n else {\n return results.data;\n }\n }\n catch(error) {\n return [];\n } \n });\n\n const fetchReportData = useRecoilCallback(() => async (reqData) => {\n try {\n const results = await httpClient().post(\"/reports/customer-history\", reqData);\n return results.data;\n }\n catch(error) {\n console.log(error);\n return [];\n } \n });\n\n const exportToExcelHandler = () => { \n if(reportData && reportData.length > 0) {\n var exportData = [];\n\n reportData.map(item => \n exportData.push({\n \"Serial Number\": item.serialNumber,\n \"Trode\": `${item.trodeTypeName} ${item.trodeTypeSize}${item.trodeTypeMeasurement}`,\n \"Date Shipped\": formatDate(item.dateSentOut).replace(/-/g, '/'),\n \"Date Received\": item.dateReceivedIn ? formatDate(item.dateReceivedIn).replace(/-/g, '/') : \"Out with customer\",\n \"Customer #\": item.customerNumber,\n \"Customer Name\": item.customerName,\n \"Location\": item.stateName ? `${item.stateName}, USA` : item.countryName\n })\n );\n\n setIsExporting(true);\n exportToExcel(exportData, 'customer-history-report');\n setIsExporting(false);\n }\n };\n\n const handleSubmit = (values, validateFunc, setTouched) => { \n const { customerAccountId, countryId, startDate, endDate } = values;\n\n (async () => {\n try {\n const valError = await validateFunc();\n\n if(Object.keys(valError).length > 0) {\n setTouched(valError);\n updateIsSubmitting(false);\n }\n else {\n updateIsSubmitting(true);\n\n var reportData = await fetchReportData({\n startDate: startDate,\n endDate: endDate,\n type: selectedValue === '0' ? 'cust' : 'ctry',\n id: selectedValue === '0' ? customerAccountId : countryId,\n outstandingOnly: checked\n });\n\n setReportData(reportData);\n \n if(reportData.length > 0) {\n updateDisplayMessage({ \n message: \"\",\n show: false,\n severity: \"success\"\n });\n }\n else {\n updateDisplayMessage({ \n message: \"No records were found. Revise your search criteria and try searching again.\",\n show: true,\n severity: \"warning\"\n });\n }\n }\n\n updateIsSubmitting(false);\n }\n catch(error) {\n updateDisplayMessage({ \n message: (error && error.message) || \"There was an error fetching the data\",\n show: true,\n severity: \"error\"\n });\n }\n })();\n }\n\n useEffect(() => {\n (async () => {\n try {\n const customersResponse = await getCustomers();\n setCustomers(customersResponse);\n\n const countriesResponse = await getCountries();\n setCountries(countriesResponse);\n }\n catch(error) {\n\n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n \n return (\n \n {({errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values, initialValues}) => (\n <>\n
\n \n \n \n\n \n \n\n \n\n \n \n \n \n \n }\n label={Customer}\n labelPlacement=\"end\"\n />\n\n \n }\n label={Country}\n labelPlacement=\"end\"\n />\n \n \n\n \n \n \n \n }\n label=\"Outstanding Only\"\n labelPlacement=\"end\"\n />\n \n \n \n\n { selectedValue && selectedValue === '0' &&\n \n `${option.customerName} #${option.customerNumber}`}\n onChange={(event, value) => values.customerAccountId = value && value.customerAccountId}\n renderOption={(option) => (\n \n #{option.customerNumber}\n {option.customerName}\n \n )} \n renderInput={\n (params) => (\n \n )\n }\n />\n \n }\n\n { selectedValue && selectedValue === '1' &&\n \n \n \n\n {countries && countries.length > 0 && countries.map((option) => (\n \n ))}\n \n \n }\n\n \n \n \n\n \n \n \n\n {displayMessage.show &&\n \n \n {displayMessage.message}\n \n \n }\n \n \n\n \n\n \n handleSubmit(values, validateForm, setTouched)}\n disabled={_isSubmitting}\n type=\"submit\"\n >\n { _isSubmitting ? 'Fetching Data...' : 'Submit' }\n \n \n \n
\n \n )}\n \n );\n};\n\nToolbar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Toolbar;\n","import React, { useEffect } from 'react';\nimport {\n Box,\n Container,\n makeStyles, \n Typography\n} from '@material-ui/core';\nimport Page from 'src/components/Page';\nimport AuthCheck from 'src/components/auth-check';\nimport Results from './Results';\nimport Toolbar from './Toolbar';\n\nimport { useRecoilCallback } from 'recoil';\nimport { reportCustomerHistoryAtom } from 'src/app-data/atoms/reports-atom';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: \"1400px\",\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n },\n card: {\n padding: theme.spacing(3),\n marginTop: theme.spacing(3),\n color: theme.palette.text.error\n }\n}));\n\nconst CustomerHistoryListView = ({ className }) => {\n const classes = useStyles();\n\n const resetDataList = useRecoilCallback(({reset}) => async () => {\n reset(reportCustomerHistoryAtom);\n });\n\n useEffect(() => {\n resetDataList();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n \n Customer History\n \n\n \n\n \n \n \n \n \n \n );\n};\n\nexport default CustomerHistoryListView;","import React, { useState, useEffect } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport {\n Box,\n Card,\n Grid,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n makeStyles,\n Popover,\n Button,\n CardContent,\n TextField,\n InputAdornment,\n SvgIcon\n} from '@material-ui/core';\nimport { Search as SearchIcon } from 'react-feather';\n\nimport Pagination from '@material-ui/lab/Pagination';\n\nimport { reportOutstandingTrodesAtom } from 'src/app-data/atoms/reports-atom';\nimport { useRecoilValue } from 'recoil';\nimport {v4 as uuid} from 'uuid';\nimport { formatDate } from 'src/lib/date-functions';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actionLink: {\n fontSize: \"0.875rem\",\n color: \"#3f51b5\",\n padding: \"0\",\n textTransform: 'none'\n },\n paginationCount: {\n //paddingRight: theme.spacing(2),\n padding: \"5px 10px 0 0\"\n }\n}));\n\nconst Results = ({ className, ...rest }) => {\n const classes = useStyles();\n const [page, setPage] = useState(1); \n const [pageCount, setPageCount] = useState(0); \n const [currentSet, setCurrentSet] = useState([]);\n const reportData = useRecoilValue(reportOutstandingTrodesAtom);\n const pageItemSize = 100;\n\n //popover\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const id = open ? 'simple-popover' : undefined;\n\n const getCurrentSet = (value, dataArray) => {\n var _currentSet = [];\n var _to = value * pageItemSize;\n var _from = _to - pageItemSize;\n\n for(let i = _from; i < _to; i++) {\n if(typeof dataArray[i] !== 'undefined') {\n _currentSet.push(dataArray[i]);\n }\n }\n \n setCurrentSet(_currentSet);\n };\n\n const handlePageChange = (event, value) => { \n setPage(value);\n getCurrentSet(value, reportData);\n };\n\n const handleFilterClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleFilterClose = () => {\n setAnchorEl(null);\n };\n \n const handleFilterChangeCustomerName = (event) => {\n const { value } = event.target;\n\n console.log(value);\n\n if(value) {\n var filtered = reportData.filter(x => x.customerName.toLowerCase().startsWith(value.toLowerCase()));\n\n setCurrentSet(filtered);\n setPageCount(Math.ceil(filtered.length / pageItemSize));\n }\n else {\n getCurrentSet(page, reportData);\n setPageCount(Math.ceil(reportData.length /pageItemSize));\n }\n };\n\n const handleFilterChangeTrode = (event) => {\n const { value } = event.target;\n const options = value.split(' ');\n\n //Note:\n //These are using the static list of types and sizes in \"searchTrodes\" below\n //because of the way the database is setup. The type, size and measurement 'mm' are \n //all separate. To pull the list automatically from the database to search on\n //would require some re-working of 10 plus years of data and the decision was made\n //not to do that.\n\n var type, size;\n\n if(options.length === 2) {\n type = options[0];\n size = options[1];\n }\n else if(options.length === 3) {\n type = `${options[0]} ${options[1]}`;\n size = options[2];\n }\n\n if(value) {\n var filtered = reportData.filter(x => x.trodeTypeName === type && x.trodeTypeSize.toString() === size);\n\n setCurrentSet(filtered);\n setPageCount(Math.ceil(filtered.length / pageItemSize));\n }\n else {\n getCurrentSet(page, reportData);\n setPageCount(Math.ceil(reportData.length /pageItemSize));\n }\n };\n\n const handleClearFilter = () => { \n getCurrentSet(page, reportData);\n setPageCount(Math.ceil(reportData.length / pageItemSize));\n };\n\n const searchTrodes = [\n { type: \"4 Paws\", size: \"5\" },\n { type: \"4 Paws\", size: \"20\" },\n { type: \"EquiTrode\", size: \"5\" },\n { type: \"EquiTrode\", size: \"20\" },\n { type: \"EquiTrode\", size: \"35\" },\n { type: \"EquiTrode\", size: \"80\" },\n { type: \"VersaTrode/PP\", size: \"5\" },\n { type: \"VersaTrode/PP\", size: \"20\" },\n { type: \"VersaTrode/PP\", size: \"35\" },\n { type: \"VersaTrode/PP\", size: \"80\" },\n { type: \"X Trode\", size: \"5\" },\n { type: \"X Trode\", size: \"35\" }\n ];\n\n useEffect(() => { \n (async () => {\n try {\n getCurrentSet(1, reportData);\n setPageCount(Math.ceil(reportData.length / pageItemSize));\n }\n catch(error) {\n\n }\n })();\n }, [reportData]);\n\n return (\n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n Customer Name\n \n \n\n \n \n \n \n \n \n )\n }}\n placeholder=\"Customer Name\"\n variant=\"outlined\"\n onChange={handleFilterChangeCustomerName}\n />\n \n\n \n \n \n\n {searchTrodes.map((option) => (\n \n ))}\n \n \n \n \n \n \n \n\n \n Date Shipped\n Customer\n Customer #\n Location\n Trode\n Serial #\n \n \n\n \n {currentSet && currentSet.map((item) => (\n \n \n {formatDate(item.dateSentOut)}\n \n\n \n {item.customerName}\n \n\n \n {item.customerNumber}\n \n\n \n {item.stateName ? `${item.stateName}, US` : item.countryName } \n \n\n \n {`${item.trodeTypeName} ${item.trodeTypeSize}${item.trodeTypeMeasurement}`}\n \n\n \n {item.serialNumber}\n \n \n ))}\n \n
\n
\n
\n \n \n\n \n \n \n \n\n \n \n Items Found: {reportData && reportData.length}\n \n \n \n \n );\n};\n\nResults.propTypes = {\n className: PropTypes.string\n};\n\nexport default Results;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n Box,\n Button,\n Card,\n CardContent,\n CardHeader,\n Divider,\n Grid,\n TextField,\n makeStyles,\n} from '@material-ui/core';\nimport { Formik } from 'formik';\nimport * as Yup from 'yup';\nimport Alert from '@material-ui/lab/Alert';\n\nimport { useRecoilState, useRecoilCallback } from 'recoil';\nimport { reportOutstandingTrodesAtom } from 'src/app-data/atoms/reports-atom';\nimport { httpClient } from 'src/lib/api-factory';\nimport { formatDate, formatDateMinusDays } from 'src/lib/date-functions';\nimport { exportToExcel } from 'src/lib/export-to-excel';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n exportButtonContainer: {\n marginBottom: theme.spacing(3)\n },\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n width: 200,\n },\n radioLabel: {\n fontSize: '14px'\n },\n listStyle: {\n fontSize: '16px',\n //padding: theme.spacing(2)\n }\n}));\n\nconst Toolbar = ({ className, ...rest }) => {\n const classes = useStyles();\n\n const [displayMessage, updateDisplayMessage] = useState({\n message: \"\",\n show: false,\n severity: \"\", //error, warning, info, success\n showAction: false\n });\n\n const [_isSubmitting, updateIsSubmitting] = useState(false);\n const [_isExporting, setIsExporting] = useState(false);\n const [reportData, setReportData] = useRecoilState(reportOutstandingTrodesAtom);\n\n const fetchReportData = useRecoilCallback(() => async (reqData) => {\n try {\n const results = await httpClient().post(\"/reports/outstanding-trodes\", reqData);\n return results.data;\n }\n catch(error) {\n console.log(error);\n return [];\n } \n });\n\n const exportToExcelHandler = () => { \n if(reportData && reportData.length > 0) {\n var exportData = [];\n\n reportData.map(item => \n exportData.push({\n \"Date Shipped\": formatDate(item.dateSentOut).replace(/-/g, '/'),\n \"Customer Name\": item.customerName,\n \"Customer #\": item.customerNumber,\n \"Location\": item.stateName ? `${item.stateName}, USA` : item.countryName,\n \"Trode\": `${item.trodeTypeName} ${item.trodeTypeSize}${item.trodeTypeMeasurement}`,\n \"Serial Number\": item.serialNumber\n })\n );\n\n setIsExporting(true);\n exportToExcel(exportData, 'outstanding-trodes-report');\n setIsExporting(false);\n }\n };\n\n const handleSubmit = (values, validateFunc, setTouched) => { \n const { startDate, endDate } = values;\n\n (async () => {\n try {\n const valError = await validateFunc();\n\n if(Object.keys(valError).length > 0) {\n setTouched(valError);\n updateIsSubmitting(false);\n }\n else {\n updateIsSubmitting(true);\n\n var reportData = await fetchReportData({\n startDate: startDate,\n endDate: endDate\n });\n\n setReportData(reportData);\n \n if(reportData.length > 0) {\n updateDisplayMessage({ \n message: \"\",\n show: false,\n severity: \"success\"\n });\n }\n else {\n updateDisplayMessage({ \n message: \"No records were found. Revise your search criteria and try searching again.\",\n show: true,\n severity: \"warning\"\n });\n }\n }\n\n updateIsSubmitting(false);\n }\n catch(error) {\n updateDisplayMessage({ \n message: (error && error.message) || \"There was an error fetching the data\",\n show: true,\n severity: \"error\"\n });\n }\n })();\n }\n \n return (\n \n {({errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values, initialValues}) => (\n <>\n
\n \n \n \n\n \n \n\n \n\n \n \n \n \n \n\n \n \n \n\n {displayMessage.show &&\n \n \n {displayMessage.message}\n \n \n }\n \n \n\n \n\n \n handleSubmit(values, validateForm, setTouched)}\n disabled={_isSubmitting}\n type=\"submit\"\n >\n { _isSubmitting ? 'Fetching Data...' : 'Submit' }\n \n \n \n
\n \n )}\n \n );\n};\n\nToolbar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Toolbar;\n","import React, { useEffect } from 'react';\nimport {\n Box,\n Container,\n makeStyles, \n Typography\n} from '@material-ui/core';\nimport Page from 'src/components/Page';\nimport AuthCheck from 'src/components/auth-check';\nimport Results from './Results';\nimport Toolbar from './Toolbar';\n\nimport { useRecoilCallback } from 'recoil';\nimport { reportOutstandingTrodesAtom } from 'src/app-data/atoms/reports-atom';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: \"1400px\",\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n },\n card: {\n padding: theme.spacing(3),\n marginTop: theme.spacing(3),\n color: theme.palette.text.error\n }\n}));\n\nconst OutstandingTrodesListView = ({ className }) => {\n const classes = useStyles();\n\n const resetDataList = useRecoilCallback(({reset}) => async () => {\n reset(reportOutstandingTrodesAtom);\n });\n\n useEffect(() => {\n resetDataList();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n \n Outstanding Trodes\n \n\n \n\n \n \n \n \n \n \n );\n};\n\nexport default OutstandingTrodesListView;","import React, { useState, useEffect } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport {\n Box,\n Card,\n Grid,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n makeStyles,\n Popover,\n Button,\n CardContent,\n TextField,\n InputAdornment,\n SvgIcon\n} from '@material-ui/core';\nimport { Search as SearchIcon } from 'react-feather';\n\nimport Pagination from '@material-ui/lab/Pagination';\n\nimport { reportSerialNumberHistoryAtom } from 'src/app-data/atoms/reports-atom';\nimport { useRecoilValue } from 'recoil';\nimport {v4 as uuid} from 'uuid';\nimport { formatDate } from 'src/lib/date-functions';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actionLink: {\n fontSize: \"0.875rem\",\n color: \"#3f51b5\",\n padding: \"0\",\n textTransform: 'none'\n },\n paginationCount: {\n //paddingRight: theme.spacing(2),\n padding: \"5px 10px 0 0\"\n }\n}));\n\nconst Results = ({ className, showLoading, ...rest }) => {\n const classes = useStyles();\n const [page, setPage] = useState(1); \n const [pageCount, setPageCount] = useState(0); \n const [currentSet, setCurrentSet] = useState([]);\n const reportData = useRecoilValue(reportSerialNumberHistoryAtom);\n const pageItemSize = 100;\n\n //popover\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const id = open ? 'simple-popover' : undefined;\n\n const getCurrentSet = (value, dataArray) => {\n var _currentSet = [];\n var _to = value * pageItemSize;\n var _from = _to - pageItemSize;\n\n for(let i = _from; i < _to; i++) {\n if(typeof dataArray[i] !== 'undefined') {\n _currentSet.push(dataArray[i]);\n }\n }\n \n setCurrentSet(_currentSet);\n };\n\n const handlePageChange = (event, value) => { \n setPage(value);\n getCurrentSet(value, reportData);\n };\n\n const handleFilterClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleFilterClose = () => {\n setAnchorEl(null);\n };\n const handleFilterChange = (event) => {\n const { value } = event.target;\n\n if(value) {\n var filtered = reportData.filter(x => x.customerName.toLowerCase().startsWith(value.toLowerCase()));\n setCurrentSet(filtered);\n setPageCount(Math.ceil(filtered.length / pageItemSize));\n }\n else {\n getCurrentSet(page, reportData);\n setPageCount(Math.ceil(reportData.length / pageItemSize));\n }\n };\n\n const handleClearFilter = () => { \n getCurrentSet(page, reportData);\n setPageCount(Math.ceil(reportData.length / pageItemSize));\n };\n\n useEffect(() => { \n (async () => {\n try {\n getCurrentSet(1, reportData);\n setPageCount(Math.ceil(reportData.length / pageItemSize));\n }\n catch(error) {\n\n }\n })();\n }, [reportData]);\n\n return (\n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n Customer Name\n \n \n\n \n \n \n \n \n \n )\n }}\n placeholder=\"Customer Name\"\n variant=\"outlined\"\n onChange={handleFilterChange}\n />\n \n \n \n \n \n \n\n \n Serial #\n Customer\n Customer #\n Location\n Trode\n Date Shipped\n Date Received\n Retired\n \n \n\n \n {currentSet && currentSet.map((item) => (\n \n \n {item.serialNumber}\n \n\n \n {item.customerName}\n \n\n \n {item.customerNumber}\n \n\n \n {item.stateName ? `${item.stateName}, US` : item.countryName } \n \n\n \n {`${item.trodeTypeName} ${item.trodeTypeSize}${item.trodeTypeMeasurement}`}\n \n\n \n {formatDate(item.dateSentOut)}\n \n\n \n {item.dateReceivedIn ? formatDate(item.dateReceivedIn) : 'Out with customer'}\n \n\n \n {item.retired ? 'Yes' : 'No'}\n \n \n ))}\n \n
\n
\n
\n\n \n \n \n \n\n \n \n Items Found: {reportData && reportData.length}\n \n \n \n \n );\n};\n\nResults.propTypes = {\n className: PropTypes.string\n};\n\nexport default Results;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n Box,\n Button,\n Card,\n CardContent,\n CardHeader,\n Divider,\n Grid,\n TextField,\n makeStyles,\n} from '@material-ui/core';\nimport { Formik } from 'formik';\nimport * as Yup from 'yup';\nimport Alert from '@material-ui/lab/Alert';\n\nimport { useRecoilState, useRecoilCallback } from 'recoil';\nimport { reportSerialNumberHistoryAtom } from 'src/app-data/atoms/reports-atom';\nimport { httpClient } from 'src/lib/api-factory';\nimport { formatDate, formatDateMinusDays } from 'src/lib/date-functions';\nimport { exportToExcel } from 'src/lib/export-to-excel';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n exportButtonContainer: {\n marginBottom: theme.spacing(3)\n },\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n width: 200,\n },\n radioLabel: {\n fontSize: '14px'\n },\n listStyle: {\n fontSize: '16px',\n //padding: theme.spacing(2)\n }\n}));\n\nconst Toolbar = ({ className, ...rest }) => {\n const classes = useStyles();\n\n const [displayMessage, updateDisplayMessage] = useState({\n message: \"\",\n show: false,\n severity: \"\", //error, warning, info, success\n showAction: false\n });\n\n const [_isSubmitting, updateIsSubmitting] = useState(false);\n const [_isExporting, setIsExporting] = useState(false);\n const [reportData, setReportData] = useRecoilState(reportSerialNumberHistoryAtom);\n\n const fetchReportData = useRecoilCallback(() => async (reqData) => {\n try {\n const results = await httpClient().post(\"/reports/serial-number-history\", reqData);\n return results.data;\n }\n catch (error) {\n console.log(error);\n return [];\n }\n });\n\n const exportToExcelHandler = () => { \n if (reportData && reportData.length > 0) {\n var exportData = [];\n\n reportData.map(item =>\n exportData.push({\n \"Serial Number\": item.serialNumber,\n \"Customer Name\": item.customerName,\n \"Customer #\": item.customerNumber,\n \"Location\": item.stateName ? `${item.stateName}, USA` : item.countryName,\n \"Trode\": `${item.trodeTypeName} ${item.trodeTypeSize}${item.trodeTypeMeasurement}`,\n \"Date Shipped\": formatDate(item.dateSentOut).replace(/-/g, '/'),\n \"Date Received\": item.dateReceivedIn ? formatDate(item.dateReceivedIn).replace(/-/g, '/') : 'Out with customer',\n \"Retired\": item.retired ? 'Yes' : 'No'\n })\n );\n\n setIsExporting(true);\n exportToExcel(exportData, 'serial-number-history-report');\n setIsExporting(false);\n }\n };\n\n const handleSubmit = (values, validateFunc, setTouched) => {\n const { serialNumber, startDate, endDate } = values;\n\n (async () => {\n try {\n const valError = await validateFunc();\n\n if (Object.keys(valError).length > 0) {\n setTouched(valError);\n updateIsSubmitting(false);\n }\n else {\n updateIsSubmitting(true);\n\n var reportData = await fetchReportData({\n serialNumber: serialNumber.trim(),\n startDate: startDate,\n endDate: endDate\n });\n\n setReportData(reportData);\n\n if (reportData.length > 0) {\n updateDisplayMessage({\n message: \"\",\n show: false,\n severity: \"success\"\n });\n }\n else {\n updateDisplayMessage({\n message: \"No records were found. Revise your search criteria and try searching again.\",\n show: true,\n severity: \"warning\"\n });\n }\n }\n\n updateIsSubmitting(false);\n }\n catch (error) {\n updateDisplayMessage({\n message: (error && error.message) || \"There was an error fetching the data\",\n show: true,\n severity: \"error\"\n });\n }\n })();\n }\n\n return (\n \n {({ errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values, initialValues }) => (\n <>\n
\n \n \n \n\n \n \n\n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n {displayMessage.show &&\n \n \n {displayMessage.message}\n \n \n }\n \n \n\n \n\n \n handleSubmit(values, validateForm, setTouched)}\n disabled={_isSubmitting}\n type=\"submit\"\n >\n {_isSubmitting ? 'Fetching Data...' : 'Submit'}\n \n \n \n
\n \n )}\n \n );\n};\n\nToolbar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Toolbar;\n","import React, { useEffect } from 'react';\nimport {\n Box,\n Container,\n makeStyles, \n Typography\n} from '@material-ui/core';\nimport Page from 'src/components/Page';\nimport AuthCheck from 'src/components/auth-check';\nimport Results from './Results';\nimport Toolbar from './Toolbar';\n\nimport { useRecoilCallback } from 'recoil';\nimport { reportSerialNumberHistoryAtom } from 'src/app-data/atoms/reports-atom';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: \"1400px\",\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n },\n card: {\n padding: theme.spacing(3),\n marginTop: theme.spacing(3),\n color: theme.palette.text.error\n }\n}));\n\nconst SerialNumberHistoryListView = ({ className }) => {\n const classes = useStyles();\n\n const resetDataList = useRecoilCallback(({reset}) => async () => {\n reset(reportSerialNumberHistoryAtom);\n });\n\n useEffect(() => {\n resetDataList();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n \n Serial Number History\n \n\n \n\n \n \n \n \n \n \n );\n};\n\nexport default SerialNumberHistoryListView;","import React, { useState, useEffect } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport {\n Box,\n Card,\n Grid,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n makeStyles,\n Popover,\n Button,\n CardContent,\n TextField,\n InputAdornment,\n SvgIcon\n} from '@material-ui/core';\nimport { Search as SearchIcon } from 'react-feather';\n\nimport Pagination from '@material-ui/lab/Pagination';\n\nimport { reportReturnedTrodesAtom } from 'src/app-data/atoms/reports-atom';\nimport { useRecoilValue } from 'recoil';\nimport {v4 as uuid} from 'uuid';\nimport { formatDate } from 'src/lib/date-functions';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actionLink: {\n fontSize: \"0.875rem\",\n color: \"#3f51b5\",\n padding: \"0\",\n textTransform: 'none'\n },\n paginationCount: {\n //paddingRight: theme.spacing(2),\n padding: \"5px 10px 0 0\"\n }\n}));\n\nconst Results = ({ className, showLoading, ...rest }) => {\n const classes = useStyles();\n const [page, setPage] = useState(1); \n const [pageCount, setPageCount] = useState(0); \n const [currentSet, setCurrentSet] = useState([]);\n const reportData = useRecoilValue(reportReturnedTrodesAtom);\n const pageItemSize = 100;\n\n //popover\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const id = open ? 'simple-popover' : undefined;\n\n const getCurrentSet = (value, dataArray) => {\n var _currentSet = [];\n var _to = value * pageItemSize;\n var _from = _to - pageItemSize;\n\n for(let i = _from; i < _to; i++) {\n if(typeof dataArray[i] !== 'undefined') {\n _currentSet.push(dataArray[i]);\n }\n }\n \n setCurrentSet(_currentSet);\n };\n\n const handlePageChange = (event, value) => { \n setPage(value);\n getCurrentSet(value, reportData);\n };\n\n const handleFilterClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleFilterClose = () => {\n setAnchorEl(null);\n };\n const handleFilterChange = (event) => {\n const { value } = event.target;\n\n if(value) {\n var filtered = reportData.filter(x => x.customerName.toLowerCase().startsWith(value.toLowerCase()));\n setCurrentSet(filtered);\n setPageCount(Math.ceil(filtered.length / pageItemSize));\n }\n else {\n getCurrentSet(page, reportData);\n setPageCount(Math.ceil(reportData.length / pageItemSize));\n }\n };\n\n const handleClearFilter = () => { \n getCurrentSet(page, reportData);\n setPageCount(Math.ceil(reportData.length / pageItemSize));\n };\n\n useEffect(() => { \n (async () => {\n try {\n getCurrentSet(1, reportData);\n setPageCount(Math.ceil(reportData.length / pageItemSize));\n }\n catch(error) {\n\n }\n })();\n }, [reportData]);\n\n return (\n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n Customer Name\n \n \n\n \n \n \n \n \n \n )\n }}\n placeholder=\"Customer Name\"\n variant=\"outlined\"\n onChange={handleFilterChange}\n />\n \n \n \n \n \n \n\n \n Customer\n Customer #\n Location\n Trode\n Serial #\n Date Shipped\n Date Received\n Retired\n \n \n\n \n {currentSet && currentSet.map((item) => (\n \n \n {item.customerName}\n \n\n \n {item.customerNumber}\n \n\n \n {item.stateName ? `${item.stateName}, US` : item.countryName } \n \n\n \n {`${item.trodeTypeName} ${item.trodeTypeSize}${item.trodeTypeMeasurement}`}\n \n\n \n {item.serialNumber}\n \n\n \n {formatDate(item.dateSentOut)}\n \n\n \n {formatDate(item.dateReceivedIn)}\n \n\n \n {item.retired ? 'Yes' : 'No'}\n \n \n ))}\n \n
\n
\n
\n\n \n \n \n \n\n \n \n Items Found: {reportData && reportData.length}\n \n \n \n \n );\n};\n\nResults.propTypes = {\n className: PropTypes.string\n};\n\nexport default Results;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n Box,\n Button,\n Card,\n CardContent,\n CardHeader,\n Divider,\n Grid,\n TextField,\n makeStyles,\n} from '@material-ui/core';\nimport { Formik } from 'formik';\nimport * as Yup from 'yup';\nimport Alert from '@material-ui/lab/Alert';\n\nimport { useRecoilState, useRecoilCallback } from 'recoil';\nimport { reportReturnedTrodesAtom } from 'src/app-data/atoms/reports-atom';\nimport { httpClient } from 'src/lib/api-factory';\nimport { formatDate, formatDateMinusDays } from 'src/lib/date-functions';\nimport { exportToExcel } from 'src/lib/export-to-excel';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n exportButtonContainer: {\n marginBottom: theme.spacing(3)\n },\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n width: 200,\n },\n radioLabel: {\n fontSize: '14px'\n },\n listStyle: {\n fontSize: '16px',\n //padding: theme.spacing(2)\n }\n}));\n\n// - Remove required from serial number?\n\nconst Toolbar = ({ className, ...rest }) => {\n const classes = useStyles();\n\n const [displayMessage, updateDisplayMessage] = useState({\n message: \"\",\n show: false,\n severity: \"\", //error, warning, info, success\n showAction: false\n });\n\n const [_isSubmitting, updateIsSubmitting] = useState(false);\n const [_isExporting, setIsExporting] = useState(false);\n const [reportData, setReportData] = useRecoilState(reportReturnedTrodesAtom);\n\n const fetchReportData = useRecoilCallback(() => async (reqData) => {\n try {\n const results = await httpClient().post(\"/reports/returned-trodes\", reqData);\n return results.data;\n }\n catch (error) {\n console.log(error);\n return [];\n }\n });\n\n const exportToExcelHandler = () => {\n if (reportData && reportData.length > 0) {\n var exportData = [];\n\n reportData.map(item =>\n exportData.push({\n \"Customer Name\": item.customerName,\n \"Customer #\": item.customerNumber,\n \"Location\": item.stateName ? `${item.stateName}, USA` : item.countryName,\n \"Trode\": `${item.trodeTypeName} ${item.trodeTypeSize}${item.trodeTypeMeasurement}`,\n \"Serial Number\": item.serialNumber,\n \"Date Shipped\": formatDate(item.dateSentOut).replace(/-/g, '/'),\n \"Date Received\": formatDate(item.dateReceivedIn).replace(/-/g, '/'),\n \"Retired\": item.retired ? 'Yes' : 'No'\n })\n );\n\n setIsExporting(true);\n exportToExcel(exportData, 'returned-trodes-report');\n setIsExporting(false);\n }\n };\n\n const handleSubmit = (values, validateFunc, setTouched) => {\n const { serialNumber, startDate, endDate } = values;\n\n (async () => {\n try {\n const valError = await validateFunc();\n\n if (Object.keys(valError).length > 0) {\n setTouched(valError);\n updateIsSubmitting(false);\n }\n else {\n updateIsSubmitting(true);\n\n var reportData = await fetchReportData({\n serialNumber: (serialNumber && serialNumber.trim()) || null,\n startDate: startDate,\n endDate: endDate\n });\n\n setReportData(reportData);\n\n if (reportData.length > 0) {\n updateDisplayMessage({\n message: \"\",\n show: false,\n severity: \"success\"\n });\n }\n else {\n updateDisplayMessage({\n message: \"No records were found. Revise your search criteria and try searching again.\",\n show: true,\n severity: \"warning\"\n });\n }\n }\n\n updateIsSubmitting(false);\n }\n catch (error) {\n updateDisplayMessage({\n message: (error && error.message) || \"There was an error fetching the data\",\n show: true,\n severity: \"error\"\n });\n }\n })();\n }\n\n return (\n \n {({ errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values, initialValues }) => (\n <>\n
\n \n \n \n\n \n \n\n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n {displayMessage.show &&\n \n \n {displayMessage.message}\n \n \n }\n \n \n\n \n\n \n handleSubmit(values, validateForm, setTouched)}\n disabled={_isSubmitting}\n type=\"submit\"\n >\n {_isSubmitting ? 'Fetching Data...' : 'Submit'}\n \n \n \n
\n \n )}\n \n );\n};\n\nToolbar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Toolbar;\n","import React, { useEffect } from 'react';\nimport {\n Box,\n Container,\n makeStyles, \n Typography\n} from '@material-ui/core';\nimport Page from 'src/components/Page';\nimport AuthCheck from 'src/components/auth-check';\nimport Results from './Results';\nimport Toolbar from './Toolbar';\n\nimport { useRecoilCallback } from 'recoil';\nimport { reportReturnedTrodesAtom } from 'src/app-data/atoms/reports-atom';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: \"1400px\",\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n },\n card: {\n padding: theme.spacing(3),\n marginTop: theme.spacing(3),\n color: theme.palette.text.error\n }\n}));\n\nconst ReturnedTrodesListView = ({ className }) => {\n const classes = useStyles();\n\n const resetDataList = useRecoilCallback(({reset}) => async () => {\n reset(reportReturnedTrodesAtom);\n });\n\n useEffect(() => {\n resetDataList();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n \n Returned Trodes\n \n\n \n\n \n \n \n \n \n \n );\n};\n\nexport default ReturnedTrodesListView;","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Card,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n makeStyles,\n} from '@material-ui/core';\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\nimport PanoramaFishEyeIcon from '@material-ui/icons/PanoramaFishEye';\n\nimport { reportReturnTrodeFormAtom } from 'src/app-data/atoms/reports-atom';\nimport { useRecoilValue } from 'recoil';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n formUnderlineSection: {\n borderBottom: \"1px solid #999999\"\n },\n formFont: {\n fontSize: \"0.850rem\"\n },\n formHeaderContainer: {\n paddingTop: theme.spacing(3)\n },\n calloutColumn: {\n paddingLeft: theme.spacing(3),\n maxWidth: \"130px\",\n borderBottom: \"1px solid #999999\"\n },\n selection: {\n paddingRight: theme.spacing(3)\n }\n}));\n\nconst Results = ({ className, componentToPrintRef, ...rest }) => {\n const classes = useStyles();\n const reportData = useRecoilValue(reportReturnTrodeFormAtom);\n\n return (Object.keys(reportData).length > 0 &&\n \n \n \n \n \n \n \n \n \n \n\n \n {reportData && (\n <>\n \n \n \n TRODE RETURN FORM\n
\n Upon receiving your refurbished trode, complete this form and include it with the return \n shipment of your used trode. The expended trode should be returned in the box that the \n refurbished trode was received in. A preprinted FedEx return label is included for your \n convenience. Note: Returning a used trode will not automatically trigger a refurbished \n trode order. If you need to place an order for a refurbished trode, please contact PulseVet \n at 800-245-4417 or orders@pulsevet.com. \n
\n
\n
\n\n \n \n \n SERIAL #:\n \n \n\n \n  \n \n \n\n \n \n \n FACILITY:\n \n \n\n \n \n {`(${reportData.customerNumber}) ${reportData.customerName}`}\n \n \n \n\n \n \n \n ADDRESS:\n \n \n\n \n  \n \n \n\n \n \n \n LOCATION:\n \n \n\n \n City:\n State: {reportData.stateName && reportData.stateName !== '' ? `${reportData.stateName}` : ''}\n \n \n\n \n \n  \n \n\n \n Zip:\n Country: {reportData.stateName && reportData.stateName !== '' ? 'US' : reportData.countryName}\n \n \n\n \n \n \n CONTACT:\n \n \n\n \n  \n \n \n\n \n \n \n PHONE:\n \n \n\n \n  \n \n \n\n \n \n \n TRODE:\n \n \n\n \n \n VersaTron: \n \n \n\n \n 5mm\n 20mm\n 35mm\n 80mm\n \n \n\n \n \n  \n \n\n \n \n VersaTron/ProPulse: \n \n \n\n \n 5mm\n 20mm\n \n \n\n \n \n  \n \n\n \n \n X-Trode: \n \n \n\n \n Shallow\n Deep\n \n \n\n \n \n \n Reason for Trode Return:\n \n \n \n\n \n \n \n No pulses/shocks remaining\n \n \n \n\n \n \n \n \n Trode is past expiration AND deflation has made it unusable. [Note: PulseVet ensures trode function during \n a 6-month period. Trodes may be used beyond a 6 month period if shocks remain and the trode shows no sign \n of malfunction.]\n \n \n \n \n\n \n \n \n \n Damaged/Faulty: Please complete the following: \n \n \n \n \n\n \n \n \n \n Explanation of problem experienced: \n \n \n \n \n\n \n \n \n  \n \n \n \n\n \n \n \n \n Error code displayed: \n \n \n \n \n\n \n \n \n \n Is this event associated with an injury to client, user, or bystander during operation? If yes, explain: \n \n \n \n \n\n \n \n \n  \n \n \n \n\n \n \n \n \n Did this event prevent or interrupt a client treatment once sedation or anesthesia had been administered? If yes, explain:\n \n \n \n \n\n \n \n \n  \n \n \n \n\n \n \n \n \n Additional comments: (If the space provided is insufficient to describe the event, please attach an additional page to this report.) \n \n \n \n \n\n \n \n \n  \n \n \n \n\n \n \n \n  \n \n \n \n\n \n \n \n \n Was a service call also requested? If yes, date? \n \n \n \n \n\n \n \n \n Signature of contact completing this form:\n \n \n \n\n \n \n \n Date:\n \n \n \n\n \n \n \n 11390 Old Roswell Road, Suite 120 Alpharetta, GA 30009
\n 678.987.5100 (p) • 1.800.245.4417 (toll-free U.S. phone) • +1 678.987.5100 (international phone)
\n 678.987.5101 (f) • 1.800.246.2895 (toll-free U.S. fax) • +1 678.987.5101 (international fax)
\n www.pulsevet.com\n
\n
\n
\n \n )}\n
\n
\n
\n \n );\n};\n\nResults.propTypes = {\n className: PropTypes.string\n};\n\nexport default Results;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n Box,\n Button,\n Card,\n CardContent,\n CardHeader,\n Divider,\n Grid,\n TextField,\n makeStyles\n} from '@material-ui/core';\nimport { Formik } from 'formik';\nimport * as Yup from 'yup';\nimport Alert from '@material-ui/lab/Alert';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport ReactToPrint from 'react-to-print';\n\nimport { useRecoilState, useSetRecoilState, useRecoilCallback } from 'recoil';\nimport { getCustomersPartialAtom } from 'src/app-data/atoms/customers-atom';\nimport { reportReturnTrodeFormAtom } from 'src/app-data/atoms/reports-atom';\nimport { httpClient } from 'src/lib/api-factory';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actiontButtonContainer: {\n marginBottom: theme.spacing(3)\n },\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n width: 200,\n }\n}));\n\nconst Toolbar = ({ className, componentToPrintRef, ...rest }) => {\n const classes = useStyles();\n\n const [displayMessage, updateDisplayMessage] = useState({\n message: \"\",\n show: false,\n severity: \"\", //error, warning, info, success\n showAction: false\n });\n\n const [_isSubmitting, updateIsSubmitting] = useState(false);\n const [customers, setCustomers] = useRecoilState(getCustomersPartialAtom); \n const setReportData = useSetRecoilState(reportReturnTrodeFormAtom);\n\n\n const getCustomers = useRecoilCallback(() => async () => {\n try {\n const results = await httpClient().get(\"/customers\");\n return results.data;\n }\n catch(error) {\n return [];\n } \n });\n\n const getCustomerById = useRecoilCallback(() => async (id) => { \n try {\n const results = await httpClient().get(`/customers/${id}/type/accountId`);\n return results.data;\n }\n catch(error) {\n return [];\n } \n });\n\n const handleSubmit = (values, validateFunc, setTouched) => { \n const { customerAccountId } = values;\n\n (async () => {\n try {\n const valError = await validateFunc();\n\n if(Object.keys(valError).length > 0) {\n setTouched(valError);\n updateIsSubmitting(false);\n }\n else {\n updateIsSubmitting(true);\n\n var reportData = await getCustomerById(customerAccountId);\n\n setReportData(reportData);\n \n if(Object.keys(reportData).length > 0) {\n updateDisplayMessage({ \n message: \"\",\n show: false,\n severity: \"success\"\n });\n }\n else {\n updateDisplayMessage({ \n message: \"No records were found. Revise your search criteria and try searching again.\",\n show: true,\n severity: \"warning\"\n });\n }\n }\n\n updateIsSubmitting(false);\n }\n catch(error) {\n updateDisplayMessage({ \n message: (error && error.message) || \"There was an error fetching the data\",\n show: true,\n severity: \"error\"\n });\n }\n })();\n }\n\n useEffect(() => {\n (async () => {\n try {\n const customersResponse = await getCustomers();\n setCustomers(customersResponse);\n }\n catch(error) {\n\n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n \n return (\n \n {({errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values, initialValues}) => (\n <>\n
\n \n \n \n }\n content={() => componentToPrintRef.current}\n />\n \n\n \n \n\n \n\n \n \n \n `${option.customerName} #${option.customerNumber}`}\n onChange={(event, value) => values.customerAccountId = value && value.customerAccountId}\n renderOption={(option) => (\n \n #{option.customerNumber}\n {option.customerName}\n \n )} \n renderInput={\n (params) => (\n \n )\n }\n />\n \n\n {displayMessage.show &&\n \n \n {displayMessage.message}\n \n \n }\n \n \n\n \n\n \n handleSubmit(values, validateForm, setTouched)}\n disabled={_isSubmitting}\n type=\"submit\"\n >\n { _isSubmitting ? 'Fetching Data...' : 'Submit' }\n \n \n \n
\n \n )}\n \n );\n};\n\nToolbar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Toolbar;\n","import React, { useEffect, useRef } from 'react';\nimport {\n Box,\n Container,\n makeStyles, \n Typography\n} from '@material-ui/core';\nimport Page from 'src/components/Page';\nimport AuthCheck from 'src/components/auth-check';\nimport Results from './Results';\nimport Toolbar from './Toolbar';\n\nimport { useRecoilCallback } from 'recoil';\nimport { reportReturnTrodeFormAtom } from 'src/app-data/atoms/reports-atom';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: \"1400px\",\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n },\n card: {\n padding: theme.spacing(3),\n marginTop: theme.spacing(3),\n color: theme.palette.text.error\n }\n}));\n\nconst ReturnTrodeFormView = ({ className }) => {\n const classes = useStyles();\n const componentRef = useRef();\n\n const resetDataList = useRecoilCallback(({reset}) => async () => {\n reset(reportReturnTrodeFormAtom);\n });\n\n useEffect(() => {\n resetDataList();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n \n Return Trode Form\n \n\n \n\n \n \n \n \n \n \n );\n};\n\nexport default ReturnTrodeFormView;","import React, { useState } from 'react';\r\nimport {\r\n Box,\r\n Button,\r\n Card,\r\n CardHeader,\r\n CardContent,\r\n Container,\r\n Divider,\r\n Grid,\r\n makeStyles,\r\n TextField,\r\n Typography\r\n} from '@material-ui/core';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport Page from 'src/components/Page';\r\nimport AuthCheck from 'src/components/auth-check';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport { useRecoilCallback } from 'recoil';\r\nimport { httpClient } from 'src/lib/api-factory';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n maxWidth: \"1400px\",\r\n backgroundColor: theme.palette.background.dark,\r\n minHeight: '100%',\r\n paddingBottom: theme.spacing(3),\r\n paddingTop: theme.spacing(3)\r\n },\r\n card: {\r\n padding: theme.spacing(3),\r\n marginTop: theme.spacing(3),\r\n color: theme.palette.text.error\r\n },\r\n reset: {\r\n marginRight: theme.spacing(1)\r\n },\r\n textField: {\r\n width: 350\r\n },\r\n readOnlyTextArea: {\r\n backgroundColor: \"#eee\"\r\n }\r\n}));\r\n\r\nconst ManageNotesView = (props) => {\r\n const classes = useStyles();\r\n\r\n const [_isSubmitting, updateIsSubmitting] = useState(false);\r\n const [displayMessage, updateDisplayMessage] = useState({\r\n message: \"\",\r\n show: false,\r\n severity: \"\", //error, warning, info, success\r\n showAction: false\r\n });\r\n const [trode, setTrode] = useState({});\r\n\r\n const getTrodeBySerialNumber = useRecoilCallback(() => async (serialNumber) => { \r\n try {\r\n const results = await httpClient().get(`/trode/serial-number/${serialNumber}/type/all`); //available\r\n return results.data;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const getFromDb = useRecoilCallback(() => async (uri) => { \r\n try {\r\n const response = await httpClient().get(uri);\r\n return response.data;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n });\r\n\r\n const postToDb = useRecoilCallback(() => async (uri, data) => { \r\n try {\r\n const response = await httpClient().post(uri, data);\r\n return response.data;\r\n }\r\n catch(error) {\r\n return error;\r\n } \r\n }); \r\n\r\n const handleResetHandler = (resetFunc) => {\r\n updateIsSubmitting(false);\r\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\r\n setTrode({});\r\n\r\n resetFunc?.();\r\n };\r\n\r\n const handleCleanupAfterSubmit = (resetFunc) => {\r\n updateIsSubmitting(false);\r\n setTrode({});\r\n resetFunc?.();\r\n };\r\n\r\n const checkSerialNumberLengthHandler = (e) => {\r\n e.target.value = e.target.value.toString().slice(0, 14);\r\n };\r\n\r\n const searchHandler = (values, validateFunc, setTouched) => {\r\n const { serialNumber } = values;\r\n\r\n (async () => {\r\n try {\r\n const valError = await validateFunc();\r\n\r\n if(valError && valError.hasOwnProperty('serialNumber')) { \r\n setTouched({\r\n serialNumber: true\r\n });\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n \r\n const results = await getTrodeBySerialNumber(serialNumber);\r\n\r\n if(results && results.trodeId) {\r\n setTrode(results);\r\n updateDisplayMessage({ show: false });\r\n }\r\n else {\r\n updateDisplayMessage({\r\n message: \"No records were found. Revise your search criteria and try searching again.\",\r\n show: true,\r\n severity: \"warning\",\r\n showAction: false\r\n });\r\n }\r\n updateIsSubmitting(false);\r\n }\r\n }\r\n catch(error) {\r\n\r\n }\r\n })();\r\n };\r\n\r\n const handleSubmit = (values, validateFunc, setTouched, resetFunc) => {\r\n const { notes } = values;\r\n\r\n (async () => {\r\n try {\r\n const valError = await validateFunc();\r\n\r\n if(valError && valError.hasOwnProperty('notes')) { \r\n setTouched({\r\n notes: true\r\n });\r\n updateIsSubmitting(false);\r\n }\r\n else {\r\n updateIsSubmitting(true);\r\n\r\n if (notes && notes.trim() !== '') {\r\n if (trode.parentId) {\r\n var parent = await getFromDb(`/trodes/${trode.parentId}`);\r\n\r\n var _notes;\r\n if (parent.notes) {\r\n _notes = parent.notes;\r\n }\r\n\r\n _notes = _notes ? _notes.concat(`\\n`, notes.trim()) : notes.trim();\r\n\r\n if (parent && parent.trodeId) {\r\n //get parent notes, concat new note into parent note\r\n await postToDb(`/trodes/${parent.trodeId}/alter`, {\r\n notes: btoa(_notes)\r\n });\r\n }\r\n }\r\n }\r\n\r\n var allNotes;\r\n if(trode.notes) {\r\n allNotes = trode.notes;\r\n }\r\n\r\n if(notes && notes.trim() !== '') {\r\n allNotes = allNotes ? allNotes.concat(`\\n`, notes.trim()) : notes.trim();\r\n }\r\n\r\n var updateTrodeResponse = await postToDb(`/trodes/${trode.trodeId}/alter`, {\r\n notes: btoa(allNotes)\r\n });\r\n\r\n if (updateTrodeResponse && updateTrodeResponse.trodeId) {\r\n updateDisplayMessage({\r\n message: \"The note has been saved to the Trode.\",\r\n show: true,\r\n severity: \"success\"\r\n });\r\n\r\n handleCleanupAfterSubmit(resetFunc);\r\n }\r\n else {\r\n updateIsSubmitting(false);\r\n\r\n updateDisplayMessage({\r\n message: `There was an error saving the note to the Trode`,\r\n show: true,\r\n severity: \"error\"\r\n });\r\n }\r\n }\r\n }\r\n catch (error) {\r\n updateDisplayMessage({\r\n message: `There was a system error: ${error && error.message}`,\r\n show: true,\r\n severity: \"error\",\r\n showAction: false\r\n });\r\n }\r\n })();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Manage Notes\r\n \r\n\r\n \r\n \r\n {({ errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values }) => (\r\n <>\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n searchHandler(values, validateForm, setTouched)}\r\n disabled={_isSubmitting}\r\n >\r\n Search\r\n \r\n )\r\n }}\r\n onInput = {checkSerialNumberLengthHandler} \r\n />\r\n \r\n\r\n { trode && Object.keys(trode).length > 0 &&\r\n \r\n \r\n {`Trode: ${trode.trodeTypeName} ${trode.serialNumber}`}\r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {displayMessage.show &&\r\n \r\n \r\n {displayMessage.message}\r\n \r\n \r\n }\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n handleSubmit(values, validateForm, setTouched, handleReset)}\r\n disabled={_isSubmitting}\r\n type=\"submit\"\r\n >\r\n Submit\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ManageNotesView;","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n Box,\n Button,\n Card,\n CardActions,\n CardContent,\n Divider,\n Grid,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport { deepOrange } from '@material-ui/core/colors';\nimport { Auth } from \"aws-amplify\";\nimport { useRecoilState, useRecoilCallback } from 'recoil';\nimport { loggedInUserAtom } from 'src/app-data/atoms/user-atom';\nimport { v4 as uuid } from 'uuid';\n\nimport UserAvatar from 'src/components/user-avatar';\nimport { httpClient } from 'src/lib/api-factory';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n avatar: {\n height: 100,\n width: 100,\n color: theme.palette.getContrastText(deepOrange[500]),\n backgroundColor: deepOrange[500]\n }\n}));\n\nconst Profile = ({ className, ...rest }) => {\n const classes = useStyles();\n const [thumb, setThumb] = useState(\"\");\n const [userState, setUserState] = useRecoilState(loggedInUserAtom);\n\n const readFileDataAsBase64 = (file) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = (event) => {\n resolve(event.target.result);\n };\n\n reader.onerror = (err) => {\n reject(err);\n };\n\n reader.readAsDataURL(file);\n });\n }\n\n const uploadHandler = (event) => {\n var fileData = event.target.files[0]; \n setThumb(URL.createObjectURL(fileData));\n \n var extension = fileData?.name?.substring(fileData.name.lastIndexOf('.') + 1);\n //var size = fileData.size; //need this to validate size\n\n console.log(fileData);\n\n (async () => {\n const user = await Auth.currentAuthenticatedUser();\n const { attributes } = user;\n\n var blob = await readFileDataAsBase64(fileData);\n var data = blob.replace(\"data:image/png;base64,\", \"\");\n var fileName = `${attributes.sub}_${uuid()}.${extension}`;\n\n var result = await sendFile({\n fileData: data, \n fileName: fileName\n });\n\n console.log(\"URL:\", result);\n\n const basePath = \"https://pulsevet-admin-ui-avatars.s3.amazonaws.com\";\n \n if(result && result.url) {\n await Auth.updateUserAttributes(user, {\n 'custom:avatar': `${basePath}/${fileName}`\n });\n\n setUserState({\n ...userState,\n avatar: `${basePath}/${fileName}`\n });\n }\n })();\n };\n\n const sendFile = useRecoilCallback(() => async (request) => {\n try {\n const results = await httpClient().post('/files', request);\n return results.data;\n }\n catch(error) {\n console.log(\"File Upload Error\", error);\n return {};\n } \n });\n\n return (\n
\n \n \n \n \n {\n ({user}) => (\n \n {user.email}\n \n )\n }\n \n \n \n\n \n\n \n \n Upload Picture\n \n \n \n\n \n\n \n \n \n
\n \n Images that have the same width and height work best.
\n Please use images with a small file size.\n
\n
\n
\n
\n
\n \n \n );\n};\n\nProfile.propTypes = {\n className: PropTypes.string\n};\n\nexport default Profile;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Button,\n Card,\n CardContent,\n CardHeader,\n Divider,\n Grid,\n TextField,\n //makeStyles\n} from '@material-ui/core';\nimport Alert from '@material-ui/lab/Alert';\nimport { Formik } from 'formik';\nimport * as Yup from 'yup';\nimport { Auth } from \"aws-amplify\";\n\nimport { useRecoilState } from 'recoil';\nimport { loggedInUserAtom } from 'src/app-data/atoms/user-atom';\n\n\n// const useStyles = makeStyles(() => ({\n// root: {}\n// }));\n\nconst ProfileDetails = ({ className, ...rest }) => {\n //const classes = useStyles();\n\n const [_isSubmitting, updateIsSubmitting] = useState(false);\n const [displayMessage, updateDisplayMessage] = useState({\n message: \"\",\n show: false,\n severity: \"\", //error, warning, info, success\n showAction: false\n });\n\n const [userState, setUserState] = useRecoilState(loggedInUserAtom);\n //const phoneRegExp = /^((\\\\+[1-9]{1,4}[ \\\\-]*)|(\\\\([0-9]{2,3}\\\\)[ \\\\-]*)|([0-9]{2,4})[ \\\\-]*)*?[0-9]{3,4}?[ \\\\-]*[0-9]{3,4}?$/\n\n const handleSubmit = (values, validateFunc, setTouched) => {\n const { firstName, lastName } = values; //phoneNumber\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\n\n (async () => {\n try {\n const valError = await validateFunc();\n\n if (Object.keys(valError).length > 0) {\n setTouched(valError);\n updateIsSubmitting(false);\n }\n else {\n updateIsSubmitting(true);\n\n Auth.currentAuthenticatedUser()\n .then(user => { \n Auth.updateUserAttributes(user, {\n 'family_name': lastName,\n 'given_name': firstName,\n //'phone_number': phoneNumber || '',\n 'updated_at': Date.now().toString()\n })\n .then(res => {\n setUserState({\n ...userState,\n ...{\n 'family_name': lastName,\n 'given_name': firstName,\n //'phone_number': phoneNumber || ''\n }\n });\n\n updateDisplayMessage({\n message: \"Your information has been updated.\",\n show: true,\n severity: \"success\",\n showAction: false\n });\n })\n .catch(err => {\n console.log(err);\n updateDisplayMessage({\n message: `There was an error changing your information.`,\n show: true,\n severity: \"error\",\n showAction: false\n });\n });\n })\n .catch(err => {\n updateDisplayMessage({\n message: `Unauthorized. Log out and then log back in.`,\n show: true,\n severity: \"error\",\n showAction: false\n });\n });\n\n updateIsSubmitting(false);\n }\n }\n catch (error) {\n updateDisplayMessage({\n message: `There was a system error: ${error && error.message}`,\n show: true,\n severity: \"error\",\n showAction: false\n });\n }\n })();\n };\n\n return (\n \n {({ errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values }) => (\n <>\n \n \n\n \n\n \n \n \n \n \n\n \n \n \n\n {/* \n \n */}\n\n {displayMessage.show &&\n \n \n {displayMessage.message}\n \n \n }\n \n \n\n \n\n \n handleSubmit(values, validateForm, setTouched)}\n disabled={_isSubmitting}\n type=\"submit\"\n >\n Save Details\n \n \n \n \n )}\n \n );\n};\n\nProfileDetails.propTypes = {\n className: PropTypes.string\n};\n\nexport default ProfileDetails;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Button,\n Card,\n CardContent,\n CardHeader,\n Divider,\n Grid,\n TextField,\n makeStyles\n} from '@material-ui/core';\nimport Alert from '@material-ui/lab/Alert';\nimport { Formik } from 'formik';\nimport * as Yup from 'yup';\nimport { Auth } from \"aws-amplify\";\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n card: {\n padding: theme.spacing(3),\n marginTop: theme.spacing(3),\n color: theme.palette.text.error\n },\n reset: {\n marginRight: theme.spacing(1)\n }\n}));\n\nconst Password = ({ className, ...rest }) => {\n const classes = useStyles();\n\n const [_isSubmitting, updateIsSubmitting] = useState(false);\n const [displayMessage, updateDisplayMessage] = useState({\n message: \"\",\n show: false,\n severity: \"\", //error, warning, info, success\n showAction: false\n });\n\n const handleCleanup = (resetFunc) => {\n updateIsSubmitting(false);\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\n\n resetFunc?.();\n };\n\n const handleSubmit = (values, validateFunc, setTouched, resetFunc) => {\n const { oldPassword, newPassword } = values;\n\n (async () => {\n try {\n const valError = await validateFunc();\n\n if (Object.keys(valError).length > 0) {\n setTouched(valError);\n updateIsSubmitting(false);\n }\n else {\n updateIsSubmitting(true);\n\n Auth.currentAuthenticatedUser()\n .then(user => {\n return Auth.changePassword(user, oldPassword, newPassword);\n })\n .then(data => {\n //console.log(\"PASSWORD CHANGED\", data);\n\n updateDisplayMessage({\n message: \"Your password has been updated.\",\n show: true,\n severity: \"success\",\n showAction: false\n });\n })\n .catch(err => {\n //console.log(\"PASSWORD CHANGE ERROR\", err);\n\n updateDisplayMessage({\n message: `There was an error changing your password.`,\n show: true,\n severity: \"error\",\n showAction: false\n });\n });\n\n resetFunc?.();\n updateIsSubmitting(false);\n }\n }\n catch (error) {\n updateDisplayMessage({\n message: `There was a system error: ${error && error.message}`,\n show: true,\n severity: \"error\",\n showAction: false\n });\n }\n })();\n };\n\n return (\n \n {({ errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values }) => (\n <>\n \n \n\n \n\n \n \n \n \n \n\n \n \n New Password Requirments
\n Minimum length 8, Requires at least 1 of the following: Upper and lower case letters and at least one number.\n
\n
\n\n \n \n \n\n \n \n \n\n {displayMessage.show &&\n \n \n {displayMessage.message}\n \n \n }\n
\n
\n\n \n\n \n \n\n handleSubmit(values, validateForm, setTouched, handleReset)}\n disabled={_isSubmitting}\n type=\"submit\"\n >\n Submit\n \n \n
\n \n )}\n \n );\n};\n\nPassword.propTypes = {\n className: PropTypes.string\n};\n\nexport default Password;\n","import React from 'react';\r\nimport {\r\n Box,\r\n Container,\r\n Grid,\r\n makeStyles,\r\n Typography\r\n} from '@material-ui/core';\r\nimport Page from 'src/components/Page';\r\nimport AuthCheck from 'src/components/auth-check';\r\nimport Profile from './Profile';\r\nimport ProfileDetails from './ProfileDetails';\r\nimport Password from './Password';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n maxWidth: \"1400px\",\r\n backgroundColor: theme.palette.background.dark,\r\n minHeight: '100%',\r\n paddingBottom: theme.spacing(3),\r\n paddingTop: theme.spacing(3)\r\n }\r\n}));\r\n\r\nconst UserProfileView = () => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n User Profile\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default UserProfileView;","import React, { useState, useEffect } from 'react';\nimport {\n Box,\n Button,\n Card,\n CardHeader,\n CardContent,\n Container,\n Divider,\n Grid,\n makeStyles,\n TextField,\n Typography,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n FormControlLabel,\n Switch\n} from '@material-ui/core';\nimport Alert from '@material-ui/lab/Alert';\nimport NativeSelect from '@material-ui/core/NativeSelect';\nimport Page from 'src/components/Page';\nimport AuthCheck from 'src/components/auth-check';\nimport { Formik } from 'formik';\nimport * as Yup from 'yup';\nimport { v4 as uuid } from 'uuid';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport { useRecoilCallback } from 'recoil';\nimport { httpClient } from 'src/lib/api-factory';\nimport MessageBox from 'src/components/MessageBox';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: \"1400px\",\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(3)\n },\n title: {\n fontSize: \"0.850rem\"\n },\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n marginBottom: theme.spacing(1)\n },\n reset: {\n marginRight: theme.spacing(1)\n },\n actionLink: {\n fontSize: \"0.875rem\",\n color: \"#3f51b5\",\n padding: \"0\",\n textTransform: 'none'\n },\n inactiveWarning: {\n fontSize: \"0.775rem\",\n color: \"#ff0000\",\n width: \"auto\"\n }\n}));\n\nconst ManageUsersView = (props) => {\n const classes = useStyles();\n const [displayMessage, updateDisplayMessage] = useState({\n message: \"\",\n show: false,\n severity: \"\", //error, warning, info, success\n showAction: false\n });\n const [alert, setAlert] = useState({\n severity: \"warning\",\n title: \"\",\n message: \"\",\n open: false\n });\n const [_isSubmitting, updateIsSubmitting] = useState(false);\n const [userToEdit, setUserToEdit] = useState({});\n const [userGroups, setUserGroups] = useState([]);\n const [cognitoUsers, setCognitoUsers] = useState([]);\n\n const createNewUser = useRecoilCallback(() => async (req) => {\n try {\n const results = await httpClient().post(`/admin/create-user`, req);\n return results.data;\n }\n catch (error) {\n return error;\n }\n });\n\n const addUserToGroup = useRecoilCallback(() => async (req) => {\n try {\n const results = await httpClient().post(`/admin/add-user-to-group`, req);\n return results.data;\n }\n catch (error) {\n return error;\n }\n });\n\n const removeUserFromGroup = useRecoilCallback(() => async (req) => {\n try {\n const results = await httpClient().post(`/admin/remove-user-from-group`, req);\n return results.data;\n }\n catch (error) {\n return error;\n }\n });\n\n const enableDisableUser = useRecoilCallback(() => async (enable, req) => {\n try {\n const url = enable ? \"/admin/enable-user\" : \"/admin/disable-user\"\n const results = await httpClient().post(url, req);\n return results.data;\n }\n catch (error) {\n return error;\n }\n });\n\n const getUserGroups = useRecoilCallback(() => async () => {\n try {\n const results = await httpClient().post(`/admin/list-groups`, { limit: \"60\" });\n var groups = results?.data?.Groups;\n var sorted = [];\n\n if(groups) {\n sorted = groups.sort((a, b) => (a.Description < b.Description) ? 1 : -1)\n }\n\n return sorted;\n }\n catch (error) {\n return error;\n }\n });\n\n const getUsersByGroup = useRecoilCallback(() => async (groupName) => {\n try {\n const results = await httpClient().post(`/admin/list-users-in-group`, { limit: \"60\", group: groupName });\n return results?.data?.Users || [];\n }\n catch (error) {\n return error;\n }\n });\n\n const mapUsersByGroup = async (groupName) => {\n if(groupName) {\n var groups = [];\n var groupUsers = await getUsersByGroup(groupName);\n\n groupUsers?.map(user => {\n var obj = {\n enabled: user.Enabled,\n group: groupName\n };\n\n user?.Attributes?.map(att => {\n if(att.Name === \"sub\") {\n obj.sub = att.Value;\n }\n if(att.Name === \"email\") {\n obj.email = att.Value;\n }\n if(att.Name === \"given_name\") {\n obj.firstName = att.Value;\n }\n if(att.Name === \"family_name\") {\n obj.lastName = att.Value;\n }\n\n return {};\n });\n \n groups.push(obj);\n return {};\n });\n\n setCognitoUsers(groups);\n }\n };\n\n const groupChangeHandler = async (e) => {\n if(e.target.value !== \"0\") {\n mapUsersByGroup(e.target.value)\n }\n };\n\n const getNewPassword = () => `T${uuid()}`;\n\n const handleCleanup = (resetFunc) => {\n updateIsSubmitting(false);\n updateDisplayMessage({ message: \"\", show: false, severity: \"\" });\n resetFunc?.();\n };\n\n const handleEditOrCancel = (user, resetFunc) => {\n setUserToEdit(user);\n resetFunc?.();\n };\n\n const handleEditActivedChange = (e) => {\n setUserToEdit({\n ...userToEdit,\n enabled: e.target.checked\n });\n };\n\n const handleEditGroupChange = (e) => {\n setUserToEdit({\n ...userToEdit,\n group: e.target.value\n });\n };\n\n const handleEditSave = (values, employee, resetFunc) => {\n const { edit_enabled, edit_group, } = values;\n\n const showMessage = (message) => {\n setAlert({\n ...alert,\n open: true,\n title: \"Success\",\n message: message,\n severity: \"success\"\n });\n }\n\n (async () => {\n try {\n if(!edit_enabled && edit_enabled !== employee.enabled) {\n await enableDisableUser(edit_enabled, {\n userName: employee.email\n });\n\n mapUsersByGroup(employee.group);\n showMessage(\"The status of the user was successfully changed.\");\n }\n else if(edit_enabled && edit_group !== employee.group) {\n if(edit_enabled && edit_enabled !== employee.enabled) {\n await enableDisableUser(edit_enabled, {\n userName: employee.email\n });\n }\n\n await removeUserFromGroup({\n group: employee.group,\n userName: employee.email\n });\n\n await addUserToGroup({\n group: edit_group,\n userName: employee.email\n });\n\n mapUsersByGroup(employee.group);\n showMessage(\"The user details have been changed. If the user's group was changed the user will no longer show in the group you currently have selected.\");\n }\n\n handleEditOrCancel({}, resetFunc);\n }\n catch (error) {\n setAlert({\n ...alert,\n open: true,\n title: \"Error Message\",\n message: \"There was an error and the system failed to make the update.\",\n severity: \"error\"\n });\n }\n })();\n };\n\n const handleSubmit = (values, validateFunc, setTouched, resetFunc) => {\n const { firstName, lastName, emailAddress, tempPassword } = values;\n\n (async () => {\n try {\n const valError = await validateFunc();\n\n if (Object.keys(valError).length > 0) {\n setTouched(valError);\n updateIsSubmitting(false);\n }\n else {\n updateIsSubmitting(true);\n\n try {\n await createNewUser({\n firstName: firstName.trim(),\n lastName: lastName.trim(),\n userName: emailAddress.trim(),\n temporaryPassword: tempPassword.trim()\n });\n\n //When new user created add them to the lowest access group by default\n await addUserToGroup({\n group: \"PulseVetUser\",\n userName: emailAddress.trim()\n });\n\n updateDisplayMessage({\n message: \"The new user has been created.\",\n show: true,\n severity: \"success\"\n });\n\n resetFunc?.();\n updateIsSubmitting(false);\n }\n catch(error) {\n updateDisplayMessage({\n message: `There was an error creating the new user.`,\n show: true,\n severity: \"error\",\n showAction: false\n });\n\n updateIsSubmitting(false);\n }\n }\n }\n catch (error) {\n updateDisplayMessage({\n message: `There was a system error: ${error && error.message}`,\n show: true,\n severity: \"error\",\n showAction: false\n });\n }\n })();\n };\n\n useEffect(() => {\n (async () => {\n try {\n var groups = await getUserGroups();\n setUserGroups(groups);\n }\n catch (error) {\n\n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n \n Manage Users\n \n\n \n {({ errors, handleBlur, handleChange, handleReset, validateForm, setTouched, touched, values, initialValues }) => (\n <>\n \n <>\n \n \n\n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n {displayMessage.show &&\n \n \n {displayMessage.message}\n \n \n }\n \n \n\n \n\n \n {\n handleCleanup(handleReset);\n initialValues.tempPassword = getNewPassword();\n }}\n className={classes.reset}\n >\n Reset\n \n\n {\n handleSubmit(values, validateForm, setTouched, handleReset);\n initialValues.tempPassword = getNewPassword();\n }}\n disabled={_isSubmitting}\n >\n Submit\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n Name\n Email\n Status\n Current Group\n\n \n \n \n\n {userGroups && userGroups.length > 0 && userGroups.map((option) => (\n \n ))}\n \n \n \n \n\n \n {cognitoUsers && cognitoUsers.map((employee) => {\n if (userToEdit.sub === employee.sub) {\n initialValues.edit_enabled = userToEdit.enabled;\n initialValues.edit_group = userToEdit.group;\n\n return (\n \n \n {`${employee.firstName} ${employee.lastName}`}\n \n\n \n {employee.email}\n \n\n \n handleEditActivedChange(e)}\n />\n }\n label={values.edit_enabled ? 'Active' : 'Inactive'}\n />\n \n\n \n { values.edit_enabled ?\n handleEditGroupChange(e)}\n name=\"userGroup\"\n inputProps={{ 'aria-label': 'userGroup' }}\n >\n {userGroups && userGroups.length > 0 && userGroups.map((option) => (\n \n ))}\n \n :\n <>\n }\n \n\n \n \n handleEditOrCancel({}, handleReset)}\n >\n Cancel\n \n\n \n handleEditSave(\n {\n edit_enabled: values.edit_enabled, \n edit_group: values.edit_group\n }, \n employee, \n handleReset\n )\n }\n >\n Save\n \n \n \n \n )\n }\n else {\n return (\n \n \n {`${employee.firstName} ${employee.lastName}`}\n \n\n \n {employee.email}\n \n\n \n {employee.enabled ? \"Active\" : \"Inactive\"}\n \n\n \n {employee.group}\n \n\n \n \n handleEditOrCancel(employee)}\n >\n Edit\n \n \n \n \n )\n }\n })}\n \n
\n
\n
\n
\n
\n
\n\n setAlert({ ...alert, open: false })}\n />\n \n )}\n \n
\n
\n
\n );\n};\n\nexport default ManageUsersView;","import React from 'react';\nimport { Navigate } from 'react-router-dom';\nimport DashboardLayout from 'src/layouts/DashboardLayout';\nimport MainLayout from 'src/layouts/MainLayout';\n\nimport CustomerListView from 'src/views/customer/CustomerListView';\nimport AddNewCustomerView from 'src/views/customer/AddNewCustomerView';\nimport DashboardView from 'src/views/dashboard';\nimport LoginView from 'src/views/auth/LoginView';\nimport LogoutView from 'src/views/auth/LogoutView';\nimport NotFoundView from 'src/views/errors/NotFoundView';\n\n//trodes\nimport TrodeListView from 'src/views/trodes/TrodeListView';\nimport TrodeCreateView from 'src/views/trodes/TrodeCreateView';\nimport ShippedTrodeListView from 'src/views/trodes/ShippedTrodeListView';\n\n//reports\nimport CustomerHistoryListView from 'src/views/reports/CustomerHistory';\nimport OutstandingTrodesListView from 'src/views/reports/OutstandingTrodes';\nimport SerialNumberHistoryListView from 'src/views/reports/SerialNumberHistory';\nimport ReturnedTrodesListView from 'src/views/reports/ReturnedTrodes';\nimport ReturnTrodeFormView from 'src/views/reports/ReturnTrodeForm';\nimport ManageNotesView from 'src/views/reports/ManageNotes';\n\n//User Settings\nimport UserProfileView from 'src/views/settings/UserProfileView';\n\n//User Admin\nimport ManageUsersView from 'src/views/admin/ManageUsersView';\n\n\nconst routes = () => [\n {\n path: 'app',\n element: ,\n children: [\n //dashboard\n { path: 'dashboard', element: },\n\n //customers\n { path: 'customers', element: },\n { path: 'customer-new', element: },\n\n //trodes\n { path: 'available-trodes', element: },\n { path: 'trodes-create', element: },\n { path: 'shipped-trodes', element: },\n\n //reports\n { path: 'customer-history', element: },\n { path: 'outstanding-trodes', element: },\n { path: 'serial-number-history', element: },\n { path: 'returned-trodes', element: },\n { path: 'return-trode-form', element: },\n { path: 'manage-notes', element: },\n\n //settings\n { path: 'user-settings', element: },\n\n //admin\n { path: 'manage-users', element: },\n\n //404\n { path: '*', element: }\n ]\n },\n {\n path: '/',\n element: ,\n children: [\n { path: 'login', element: },\n { path: 'logout', element: },\n { path: '404', element: },\n { path: '/', element: },\n { path: '*', element: }\n ]\n }\n];\n\nexport default routes;\n","import 'react-perfect-scrollbar/dist/css/styles.css';\nimport React from 'react';\nimport { useRoutes } from 'react-router-dom';\nimport { ThemeProvider } from '@material-ui/core';\nimport GlobalStyles from 'src/components/GlobalStyles';\nimport theme from 'src/theme';\nimport routes from 'src/routes';\n\n\nconst App = () => {\n const routing = useRoutes(routes());\n\n return (\n \n \n \n {routing}\n \n \n );\n};\n\nexport default App;","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport App from './App';\n//import reportWebVitals from './reportWebVitals';\nimport { RecoilRoot } from 'recoil';\nimport recoilPersist from 'recoil-persist';\n\nconst { RecoilPersist, updateState } = recoilPersist();\n\nReactDOM.render(\n \n \n \n Loading...}>\n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n//reportWebVitals();\n"],"sourceRoot":""}