{"version":3,"sources":["images/logo.png","images/logo@2x.png","images/account.svg","images/big-icon/icon-ink.svg","images/big-icon/icon-meter.svg","images/big-icon/icon-printer.svg","images/big-icon/icon-tools.svg","images/home/welcome-banner.jpg","images sync /.(jpg|png|svg)$","images/1920x960_banner.jpg","images/bg.jpg","images/icons/icon-arrow-down.svg","images/icons/icon-checked-white.svg","images/icons/icon-checked.svg","images/icons/icon-correct.svg","images/icons/icon-document.svg","images/icons/icon-dropdown-arrow.svg","images/icons/icon-help-white.svg","images/icons/icon-help.svg","images/icons/icon-search-green.svg","images/icons/icon-search-yellow.svg","images/icons/icon-search.svg","images/icons/icon-sort-alpha.svg","images/icons/icon-verified.svg","images/myaccount_banner.jpg","images/sidebanner.png","images/sidebanner_old.png","images/tooltip-triangle.svg","assets.js","polyfills.js","scripts/_services/authentication.service.js","scripts/_services/registration.service.js","scripts/_services/user.service.js","scripts/_services/meter.service.js","scripts/_services/equipment.service.js","scripts/_services/invoice.service.js","scripts/_services/usage.service.js","scripts/_services/order.service.js","scripts/_services/admin.service.js","scripts/_services/address.service.js","scripts/_services/contact.service.js","scripts/_services/refresh.service.js","scripts/_helpers/auth-header.js","scripts/_helpers/handle-response.js","scripts/_helpers/history.js","scripts/_helpers/roles.js","scripts/_helpers/config.js","scripts/_helpers/showPdf.js","scripts/_helpers/getError.js","scripts/_helpers/getParam.js","scripts/_helpers/getSerialNo.js","scripts/_helpers/updateEquipmentSerialNo.js","scripts/components/routing/PrivateRoute.js","scripts/components/parts/Button.js","scripts/context/app-context.js","scripts/components/parts/CopyClipboard.js","scripts/components/parts/Table/Table.js","scripts/components/parts/Table/Tablelvl2Context.js","scripts/components/parts/Table/TableHead.js","scripts/components/parts/Table/TableBody.js","scripts/components/parts/Table/TableRow.js","scripts/components/parts/Table/TableCell.js","scripts/components/form/helpers.js","scripts/components/form/FormField.js","scripts/utils/browser-detect.js","scripts/components/form/Input.js","scripts/components/form/Password.js","scripts/components/form/Select.js","scripts/components/form/Checkbox.js","scripts/components/form/Textarea.js","scripts/_helpers/getDepartments.js","scripts/components/parts/DetailsForm.js","scripts/components/parts/Dropdown.js","scripts/components/parts/Footer.js","scripts/components/parts/Header.js","scripts/components/parts/LocationField.js","scripts/components/parts/NotificationBar.js","scripts/components/parts/Panel.js","scripts/components/parts/PanelNotification.js","scripts/components/parts/Search.js","scripts/components/parts/StrengthMeter.js","scripts/components/parts/Tab.js","scripts/utils/w.js","scripts/components/parts/Tooltip.js","scripts/components/parts/Loading.js","scripts/components/parts/MobileMenu.js","scripts/components/parts/Address.js","scripts/components/parts/MultiStep.js","scripts/components/parts/StepsNav.js","scripts/components/parts/Reveal.js","scripts/components/parts/LinkGroup.js","scripts/components/parts/ButtonGroup.js","scripts/components/parts/WelcomePanel.js","scripts/components/parts/Card.js","scripts/components/parts/CardExternal.js","scripts/components/parts/ScrollToTop.js","scripts/components/layouts/LayoutPage.js","scripts/components/layouts/LayoutPanel.js","scripts/components/parts/Icons/IconInk.js","scripts/components/parts/Icons/IconPrinter.js","scripts/components/parts/Icons/IconTools.js","scripts/components/parts/Icons/IconMeter.js","scripts/vars/colors.js","scripts/components/pages/Home.js","scripts/components/pages/Login.js","scripts/components/pages/Register/CheckAccount.js","scripts/components/pages/Register/Welcome.js","scripts/components/pages/Register/LoginDetails.js","scripts/components/pages/Register/EmailSent.js","scripts/components/pages/Register/index.js","scripts/components/pages/ForgottenDetails.js","scripts/components/pages/ContactUs.js","scripts/components/pages/MeterReadings/Edit.js","scripts/components/pages/MeterReadings/Confirm.js","scripts/components/pages/MeterReadings/index.js","scripts/components/pages/ServiceCall/SelectEquipment.js","scripts/components/pages/ServiceCall/LogServiceCall.js","scripts/components/pages/ServiceCall/index.js","scripts/components/pages/ServiceCall/Confirmation.js","scripts/components/pages/ServiceHistory.js","scripts/components/pages/MyDetails.js","scripts/components/pages/OurContacts/ListContacts.js","scripts/components/pages/OurContacts/AddContact.js","scripts/components/pages/OurContacts/ViewContact.js","scripts/components/pages/OurContacts/ReplaceContact.js","scripts/components/pages/OurContacts/EditContact.js","scripts/components/pages/OurContacts/index.js","scripts/components/pages/UnpaidInvoices.js","scripts/components/pages/BilledUsage.js","scripts/components/pages/PendingOrder.js","scripts/components/pages/LogOut.js","scripts/components/pages/AccountDisabled.js","scripts/components/pages/SwitchAccounts.js","scripts/components/pages/ValidateUser.js","scripts/components/pages/ConsumableReturnsPolicy.js","scripts/App.js","serviceWorker.js","index.js"],"names":["module","exports","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","r","require","document","msCapsLockWarningOff","currentUserSubject","BehaviorSubject","JSON","parse","localStorage","getItem","authenticationService","login","logout","value","body","UserID","userID","UserName","userName","Token","sessionStorage","requestOptions","method","headers","assign","authHeader","stringify","removeItem","next","refreshService","stopRefreshCycle","fetch","config","apiUrl","then","handleResponse","success","console","log","switchTo","getByClientNo","clientNo","refresh","response","accessToken","refreshToken","newUser","currentUserValue","setItem","currentUser","asObservable","userGroups","display","checkAccess","permissionType","permissions","updateUser","updateFn","username","password","a","user","contact","client","clients","rolePermissions","roles","reduce","b","default","addressService","getAll","ClientNo","addresses","AccountNum","RefreshToken","registrationService","register","data","forgottenPassword","EmailAddress","account","checkAccount","serial","SerialNo","validateUser","VKey","userService","meterService","submitReadings","meters","ValidateOnly","getAllByEmailToken","RunNum","Email","MetersID","Resend","submitReadingsByEmailToken","payload","Authorization","getAllByContact","equipmentService","getServiceHistory","requestServiceCall","RequestService","AddressKey","changeLocation","MachineID","invoiceService","getAllUnpaid","accountNum","getInvoiceData","invoiceNo","invoiceDetail","usageService","getAllBilled","getUsagePdf","MachinesID","Model","Year","orderService","getPendingOrders","ContNo","contNo","cancelOrder","orderId","clientno","lcnClient","consolidateOrder","addressKey","shipTodayOrder","adminService","searchAccountById","forRegistration","SerialNum","contactService","addContact","deleteContact","getById","editContact","StdCode","replaceContact","refreshIntervId","startRefreshCycle","now","Date","getTime","clearInterval","setInterval","checkRefresh","refreshIntervTime","_","text","error","ok","indexOf","status","statusText","Promise","reject","history","createBrowserHistory","edit_name","view_contact","edit_contact","add_contact","AuthenticatedUsers","ServerAdministrators","switch_accounts","showPdf","binaryString","window","atob","binaryLen","length","bytes","Uint8Array","i","ascii","charCodeAt","file","Blob","type","fileURL","URL","createObjectURL","open","getError","defaultError","errormessage","message","title","getParam","object","key","filter","k","toLowerCase","getSerialNo","serialNo","trim","updateEquipmentSerialNo","item","PrivateRoute","Component","component","rest","render","props","findIndex","p","to","pathname","state","from","location","Button","this","children","modifier","tooltip","className","disabled","noClick","fullWidth","Tag","Link","onClick","stopPropagation","AppContext","createContext","modal","isOpen","openModal","closeModal","bar","showBar","handleCopy","content","context","onCopy","contextType","Table","layout","Tablelvl2Context","React","tablelvl2","variant","TableHead","classes","push","Provider","join","TableBody","TableRow","isSelected","TableCell","sort","align","valign","other","useContext","isInitialValid","validationSchema","isValidSync","initialValues","isFieldValidClass","name","errors","touched","isFieldValid","detailsSchema","firstName","Yup","required","lastName","phone","address","jobTitle","department","email","checkCapsLock","getModifierState","mapContactEquipments","equipments","machineContacts","copy","check","equipment","machine","machinesID","contType","forEach","some","m","service","consum","billing","getContactFromFields","fields","cellPhone","getMachinesFromFields","machines","prop","arr","split","FormField","renderError","form","capsLockOn","label","isRequired","labelPos","pos","htmlFor","size","ua","navigator","userAgent","msie","parseInt","substring","rv","edge","detectIE","isMobile","vendor","opera","MOBILE_WINDOW","test","MOBILE_ANDROID","MSStream","detectMobile","Input","focused","focus","force","setTimeout","ref","current","handleKeyUp","setState","handleMouseDown","suggestionsFilter","suggestions","values","s","handleFocus","handleBlur","justClickedOnSuggestionsContainer","setFieldTouched","handleChange","target","replace","setFieldValue","onDocumentMouseUp","pressedSuggestion","justSelectedSuggestion","input","onDocumentMouseDown","event","node","detail","getAttribute","suggestionsContainer","parentNode","suggestionProps","itemIndex","onMouseEnter","onSuggestionMouseEnter","onMouseLeave","onSuggestionMouseLeave","onMouseDown","onSuggestionMouseDown","onTouchStart","onSuggestionTouchStart","onTouchMove","onSuggestionTouchMove","onSuggestionClick","justMouseEntered","createRef","autofocus","addEventListener","prevProps","removeEventListener","disabledLink","onKeyUp","innerRef","focusFunc","onChange","onFocus","onBlur","link","data-suggestion-index","Password","showingPassword","isFocused","toggleShow","strength","noIcon","showTooltip","NOOP_REACT_SELECT_STYLES","Select","selectedOption","onSelect","defaultValue","options","find","modifiers","pre","fieldWidth","style","width","classNamePrefix","isSearchable","styles","Checkbox","Textarea","action","DetailsForm","renderTable","renderHeadCheckbox","heading","allChecked","checked","idx","model","createCheckbox","firstNameDisabled","lastNameDisabled","autoComplete","isDisabled","href","placeholder","deptOptions","Dropdown","renderItem","index","NavLink","activeClassName","items","Footer","variation","rel","Header","isMobileMenuOpen","toggleMobileMenu","closeMobileMenu","renderMenu","preventDefault","menu","mobile_menu","concat","user_menu","splice","logo","src","logoImg","srcSet","logoImg2x","alt","toggle","withRouter","LocationField","isEditing","select","edit","unedit","save","onSubmit","small","fromEmail","NotificationBar","Panel","bottom","veryBottom","onClose","dangerouslySetInnerHTML","__html","PanelNotification","Search","toString","search","onSearch","handleKeyPress","errorPosition","onKeyPress","StrengthMeter","Tab","inst","W","tick","h","Math","max","documentElement","clientHeight","innerHeight","w","clientWidth","innerWidth","_instance","Tooltip","isVisible","checkPosition","hide","show","arrowStyle","contentRef","events","Loading","ticks","t","MobileMenu","idsOpen","toggleLevel","ids","level","slice","renderLevel","parent_ids","Address","inputValue","handleInputChange","newValue","promiseOptions","cacheOptions","defaultOptions","components","DropdownIndicator","IndicatorSeparator","noOptionsMessage","onInputChange","MultiStep","currentId","stepId","moveTo","scrollTo","getStepUrl","steps","queryString","step","param","stringified","finishStep","onFinishStep","nextStep","goToStep","prevStep","checkUrl","injectedProps","StepsNav","currentIndex","isCurrent","Reveal","LinkGroup","ButtonGroup","icon","WelcomePanel","Card","CardExternal","ScrollToTop","Fragment","LayoutPage","control","grey","container","containerProps","finalItem","LayoutPanel","IconInk","fill","color","xmlns","height","viewBox","d","data-name","IconPrinter","IconTools","IconMeter","colors","Home","Login","renderForm","isValid","isFailed","handleSubmit","startPage","setStatus","setErrors","setSubmitting","setTouched","loading","showLoading","hideLoading","errorCount","triggerHelpMsg","shape","CheckAccount","accountNumber","serialNumber","newData","tradeName","Welcome","FirstName","LastName","Phone","JobTitle","Department","LoginDetails","isTaken","userId","validateForm","taken","min","matches","EmailSent","Register","saveData","ForgottenDetails","resetForm","ContactUs","back","goBack","Edit","searchValue","meterTypeFilter","focusInput","renderMeters","meter","renderMachine","newReading","currentTarget","focusedID","justSubmitted","selected","updateLocation","hasFocusedInput","metersID","submitLocation","colSubmitted","cellSubmitted","meterName","billingType","lastReading","lastUpdated","maxLength","filterBySearch","filterByType","sendReadings","updateSelected","Array","querySelectorAll","isFinished","Confirm","focusMeter","importStatus","importError","params","Meters","MeterReadings","metersCopy","newSelected","querySelector","reuqestMeters","contactMeters","contactMeter","dateDisplay","SelectEquipment","filterValue","handleOptionChange","selectEquipment","newEquipments","selectedEquipment","colSpan","equip","modelDescription","renderStepNav","typesOfCall","LogServiceCall","textareaRef","updateDescription","noActions","updateCallType","updateAddress","ContactName","ContactPhone","ContactEmail","CallType","typeOfCall","CallDescription","description","renderDisplay","c","callType","ServiceCall","equipmentsCopy","ServiceHistory","serviceHistory","processData","moment","callDate","format","notes","MyDetails","dirty","fieldsCopy","contactData","changed","newPassword","actions","ListContacts","contacts","machConts","contactTypeFilter","nameFilter","sortByCol","sortDirection","filteredEquipments","u","newContacts","filteredContacts","fullName","sorted","localeCompare","prototype","reverse","call","wordBreak","renderTab","AddContact","ViewContact","match","mobile","dept","contactTypes","ReplaceContact","changeReplace","option","value_replace","value_with","contactReplace","contactWith","ContTypes","OldContNo","NewContNo","replaceAction","consumables","checkboxes","when","is","otherwise","EditContact","OurContacts","exact","path","UnpaidInvoices","statementDetail","invoiceDate","dueDisplay","dueDate","notAvaliable","handleView","invoice","canDisplay","parseFloat","invoiceAmount","toFixed","total","BilledUsage","years","yearSelected","usageYears","year","y","machineUsage","applyYearFilter","applySearchFilter","renderAll","filtered","renderResults","filterByYear","PendingOrder","orders","selectedOrder","shipDate","date","shipDate_display","cancelModal","qty","itemDesc","cancelShipment","consolidateModal","initialAddress","consolidateShipment","reuqestOrders","shipModal","selectOrder","order","getOrderById","renderTabs","shipment_status","shipments","ordStatusId","shipment","renderShipment","renderOrders","disableToday","disableConsolidate","disableCancel","LogOut","SwitchAccounts","switch","ValidateUser","ConsumableReturnsPolicy","Modal","setAppElement","App","themeSections","barTimeoutId","appContext","timeout","hideBar","handleOnAction","handleOnActive","handleOnIdle","idleTimer","subscribe","x","classList","add","remove","onActive","onIdle","onAction","debounce","basename","process","onRequestClose","shouldCloseOnOverlayClick","shouldCloseOnEsc","shouldFocusAfterRender","portalClassName","overlayClassName","AccountDisabled","Boolean","hostname","ReactDOM","getElementById","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.98d73e26.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/logo.c94ab01f.png\";","module.exports = __webpack_public_path__ + \"static/media/logo@2x.bb2fb918.png\";","module.exports = __webpack_public_path__ + \"static/media/account.64f39b32.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-ink.88cfd563.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-meter.b33f9122.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-printer.a63060d1.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-tools.addcb046.svg\";","module.exports = __webpack_public_path__ + \"static/media/welcome-banner.b8aac32e.jpg\";","var map = {\n\t\"./1920x960_banner.jpg\": 478,\n\t\"./account.svg\": 375,\n\t\"./bg.jpg\": 479,\n\t\"./big-icon/icon-ink.svg\": 376,\n\t\"./big-icon/icon-meter.svg\": 377,\n\t\"./big-icon/icon-printer.svg\": 378,\n\t\"./big-icon/icon-tools.svg\": 379,\n\t\"./home/welcome-banner.jpg\": 380,\n\t\"./icons/icon-arrow-down.svg\": 480,\n\t\"./icons/icon-checked-white.svg\": 481,\n\t\"./icons/icon-checked.svg\": 482,\n\t\"./icons/icon-correct.svg\": 483,\n\t\"./icons/icon-document.svg\": 484,\n\t\"./icons/icon-dropdown-arrow.svg\": 485,\n\t\"./icons/icon-help-white.svg\": 486,\n\t\"./icons/icon-help.svg\": 487,\n\t\"./icons/icon-search-green.svg\": 488,\n\t\"./icons/icon-search-yellow.svg\": 489,\n\t\"./icons/icon-search.svg\": 490,\n\t\"./icons/icon-sort-alpha.svg\": 491,\n\t\"./icons/icon-verified.svg\": 492,\n\t\"./logo.png\": 143,\n\t\"./logo@2x.png\": 210,\n\t\"./myaccount_banner.jpg\": 493,\n\t\"./sidebanner.png\": 494,\n\t\"./sidebanner_old.png\": 495,\n\t\"./tooltip-triangle.svg\": 496\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 477;","module.exports = __webpack_public_path__ + \"static/media/1920x960_banner.2bb2ff23.jpg\";","module.exports = __webpack_public_path__ + \"static/media/bg.8e99feff.jpg\";","module.exports = __webpack_public_path__ + \"static/media/icon-arrow-down.d940fdde.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-checked-white.b5c9616f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-checked.7ad66a3f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-correct.3910cb18.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-document.36e2112a.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-dropdown-arrow.e388d43c.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-help-white.046db1ec.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-help.2f2d8a30.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-search-green.ac099d95.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-search-yellow.16419183.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-search.61f55425.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-sort-alpha.e42e91ec.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-verified.ea0afef7.svg\";","module.exports = __webpack_public_path__ + \"static/media/myaccount_banner.88d45968.jpg\";","module.exports = __webpack_public_path__ + \"static/media/sidebanner.f879a112.png\";","module.exports = __webpack_public_path__ + \"static/media/sidebanner_old.405af87b.png\";","module.exports = __webpack_public_path__ + \"static/media/tooltip-triangle.52b780ff.svg\";","import './styles/main.scss';\n\nimportAll(require.context(\"./images\", true, /\\.(jpg|png|svg)$/));\nfunction importAll(r) {\n return r.keys().map(r);\n}\n","import \"es6-promise/auto\";\nimport \"core-js/es/symbol\";\nimport \"core-js/es/object\";\nimport \"core-js/es/function\";\nimport \"core-js/es/parse-int\";\nimport \"core-js/es/parse-float\";\nimport \"core-js/es/number\";\nimport \"core-js/es/math\";\nimport \"core-js/es/string\";\nimport \"core-js/es/date\";\nimport \"core-js/es/array\";\nimport \"core-js/es/regexp\";\nimport \"core-js/es/map\";\nimport \"core-js/es/weak-map\";\nimport \"core-js/es/set\";\n\n// Remove IE11 tooltip for Capslock\nif (document.msCapsLockWarningOff === false) {\n document.msCapsLockWarningOff = true;\n}\n","import { BehaviorSubject } from \"rxjs\";\n\nimport { addressService, refreshService } from \"scripts/_services\";\nimport { handleResponse, config, authHeader, roles } from \"scripts/_helpers\";\n\nconst currentUserSubject = new BehaviorSubject(\n JSON.parse(localStorage.getItem(\"currentUser\"))\n);\n\nconst currentUser = currentUserSubject.asObservable();\n\nconst userGroups = [\n { value: \"AuthenticatedUsers\", display: \"Authenticated Users\" },\n { value: \"MeterReaders\", display: \"Meter Readers\" },\n { value: \"LocationAdmins\", display: \"Location Admins\" },\n { value: \"OrganisationAdmins\", display: \"Organisation Admins\" },\n { value: \"Accounts\", display: \"Accounts\" },\n { value: \"ICBSAdministrators\", display: \"ICBS Administrators\" },\n { value: \"ReportViewers\", display: \"Report Viewers\" },\n { value: \"UserAdministrators\", display: \"User Administrators\" },\n];\n\nexport const authenticationService = {\n login,\n logout,\n switchTo,\n getByClientNo,\n refresh,\n currentUser,\n userGroups,\n checkAccess,\n updateUser,\n get currentUserValue() {\n return currentUserSubject.value;\n },\n};\n\nfunction checkAccess(permissionType) {\n if (currentUserSubject.value) {\n if (currentUserSubject.value.permissions) {\n return currentUserSubject.value.permissions[permissionType];\n }\n }\n\n return false;\n}\n\n/*\n * Allows to update user object\n * Primarily used in MyDetails, when successfully update details\n */\nfunction updateUser(updateFn) {\n let newUser = JSON.parse(\n JSON.stringify(authenticationService.currentUserValue)\n );\n\n /*\n * Run update function, that returns new user object\n */\n newUser = updateFn(newUser);\n\n localStorage.setItem(\"currentUser\", JSON.stringify(newUser));\n currentUserSubject.next(newUser);\n}\n\nasync function login(username, password) {\n const requestOptions = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ username, password }),\n };\n\n try {\n let response = await fetch(\n `${config.apiUrl}/security/authenticate`,\n requestOptions\n ).then(handleResponse);\n\n const { user, accessToken, contact, refreshToken } = response;\n const client = response.clients[0];\n user.client = client;\n user.contact = contact;\n user.accessToken = accessToken;\n\n // Role specific permissions\n const rolePermissions = user.roles.reduce((a, b) => {\n console.log(b, roles[b]);\n return Object.assign(a, roles[b]);\n }, {});\n\n // Merge with default permissions for any user\n user.permissions = Object.assign({}, roles.default, rolePermissions);\n\n /*\n * Get all addresses for this client on login\n * To be used for address search\n */\n const { addresses } = await addressService.getAll({\n ClientNo: client.clientNo,\n accessToken,\n });\n\n user.client.addresses = addresses;\n\n // store user details and jwt token in local storage to keep user logged in between page refreshes\n localStorage.setItem(\"currentUser\", JSON.stringify(user));\n currentUserSubject.next(user);\n\n // store refresh token in session storage\n sessionStorage.setItem(\"refreshToken\", refreshToken);\n\n return user;\n } catch (err) {\n throw err;\n }\n}\n\nfunction logout() {\n if (!currentUserSubject.value) return;\n\n const body = {\n UserID: currentUserSubject.value.userID,\n UserName: currentUserSubject.value.userName,\n Token: sessionStorage.getItem(\"refreshToken\"),\n };\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify(body),\n };\n\n // remove user from local storage to log user out\n localStorage.removeItem(\"currentUser\");\n currentUserSubject.next(null);\n\n // remove refresh token from session storage\n sessionStorage.removeItem(\"refreshToken\");\n\n /*\n * Stop token refresh cycle, when user logs out\n */\n refreshService.stopRefreshCycle();\n\n return fetch(`${config.apiUrl}/security/token/revoke`, requestOptions)\n .then(handleResponse)\n .then((success) => {\n console.log(\"Logout Successful\", body);\n\n return true;\n });\n}\n\nfunction refresh() {\n const body = {\n UserID: currentUserSubject.value.userID,\n UserName: currentUserSubject.value.userName,\n Token: sessionStorage.getItem(\"refreshToken\"),\n };\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify(body),\n };\n\n console.log(\"Request refresh\", body);\n\n return fetch(`${config.apiUrl}/security/token/refresh`, requestOptions)\n .then(handleResponse)\n .then((response) => {\n console.log(\"Refresh Successful\", response);\n const { accessToken, refreshToken } = response;\n\n const newUser = JSON.parse(\n JSON.stringify(authenticationService.currentUserValue)\n );\n newUser.accessToken = accessToken;\n\n // switch user from local storage to new one\n localStorage.setItem(\"currentUser\", JSON.stringify(newUser));\n currentUserSubject.next(newUser);\n\n // store refresh token in session storage\n sessionStorage.setItem(\"refreshToken\", refreshToken);\n\n return true;\n });\n}\n\nfunction getByClientNo(clientNo) {\n const requestOptions = {\n method: \"POST\",\n headers: authHeader(),\n body: JSON.stringify({ clientNo }),\n };\n console.log(\"getByClientNo\", requestOptions);\n return fetch(`${config.apiUrl}/clients/getbyclientno`, requestOptions).then(\n handleResponse\n );\n}\n\nasync function switchTo({ AccountNum, ClientNo, client }) {\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({\n UserID: currentUserSubject.value.userID,\n UserName: currentUserSubject.value.userName,\n RefreshToken: sessionStorage.getItem(\"refreshToken\"),\n AccountNum,\n ClientNo,\n }),\n };\n\n try {\n let response = await fetch(\n `${config.apiUrl}/security/switchTo`,\n requestOptions\n ).then(handleResponse);\n\n console.log(\"Switch Successful\", response);\n const {\n accessToken,\n // accountNum,\n // clientName,\n clientNo,\n refreshToken,\n } = response;\n\n console.log(\"old\", authenticationService.currentUserValue.accessToken);\n const newUser = JSON.parse(\n JSON.stringify(authenticationService.currentUserValue)\n );\n\n console.log(\"new\", accessToken);\n newUser.accessToken = accessToken;\n newUser.client = client;\n\n /*\n * Get all addresses for this client on login\n * To be used for address search\n */\n const { addresses } = await addressService.getAll({\n ClientNo: clientNo,\n accessToken,\n });\n\n newUser.client.addresses = addresses;\n\n // switch user from local storage to new one\n localStorage.setItem(\"currentUser\", JSON.stringify(newUser));\n currentUserSubject.next(newUser);\n\n // store refresh token in session storage\n sessionStorage.setItem(\"refreshToken\", refreshToken);\n } catch (err) {\n throw err;\n }\n}\n","import { handleResponse, config } from \"scripts/_helpers\";\n\nexport const registrationService = {\n register,\n forgottenPassword,\n checkAccount,\n validateUser,\n};\n\nfunction checkAccount(account, serial) {\n const requestOptions = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ AccountNum: account, SerialNo: serial }),\n };\n\n console.log(\"checkAccount\", requestOptions);\n\n return fetch(`${config.apiUrl}/security/checkaccount`, requestOptions)\n .then(handleResponse)\n .then((account) => {\n console.log(\"account\", account);\n return account;\n });\n}\n\nfunction register(data) {\n const requestOptions = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n };\n\n return fetch(`${config.apiUrl}/users/registerUser`, requestOptions)\n .then(handleResponse)\n .then((user) => {\n return user;\n });\n}\n\nfunction forgottenPassword(EmailAddress) {\n const requestOptions = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ EmailAddress }),\n };\n\n return fetch(`${config.apiUrl}/users/passwordReset`, requestOptions)\n .then(handleResponse)\n .then((account) => {\n return account;\n });\n}\n\nfunction validateUser({ VKey, UserID }) {\n const requestOptions = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ VKey, UserID }),\n };\n\n console.log(\"validateUser\", requestOptions);\n\n return fetch(`${config.apiUrl}/users/validateUser`, requestOptions)\n .then(handleResponse)\n .then((account) => {\n console.log(\"account\", account);\n return account;\n });\n}\n","import { authHeader, handleResponse, config } from \"scripts/_helpers\";\nimport { authenticationService } from \"scripts/_services\";\n\nexport const userService = {\n updateUser,\n};\n\nfunction updateUser(data) {\n const { userID } = authenticationService.currentUserValue;\n data.userID = userID;\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify(data),\n };\n\n console.log(\"updateUser API\", data);\n\n return fetch(`${config.apiUrl}/users/update`, requestOptions).then(\n handleResponse\n );\n}\n","// import config from 'config';\nimport { authHeader, handleResponse, config } from \"scripts/_helpers\";\nimport { authenticationService } from \"scripts/_services\";\n\nexport const meterService = {\n getAll,\n submitReadings,\n getAllByEmailToken,\n submitReadingsByEmailToken,\n getAllByContact,\n};\n\nfunction getAll() {\n const ClientNo = authenticationService.currentUserValue.client.clientNo;\n console.log(\"getAll meterService\", ClientNo);\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ ClientNo }),\n };\n\n return fetch(`${config.apiUrl}/meter/getByClientNo`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction getAllByContact() {\n const ClientNo = authenticationService.currentUserValue.client.clientNo;\n console.log(\"getAllByContact meterService\", ClientNo);\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ ClientNo }),\n };\n\n return fetch(`${config.apiUrl}/meter/getByContact`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction submitReadings(meters, ValidateOnly = false) {\n const clientNo = authenticationService.currentUserValue.client.clientNo;\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ meters, clientNo, ValidateOnly }),\n };\n\n console.log(\"submitReadings API\", requestOptions);\n\n return fetch(`${config.apiUrl}/meter/submitReadings`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction getAllByEmailToken(RunNum, Email, MetersID, Resend) {\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign({ \"Content-Type\": \"application/json\" }),\n body: JSON.stringify({ RunNum, Email, MetersID, Resend }),\n };\n return fetch(`${config.apiUrl}/meter/getByRunNum`, requestOptions)\n .then(handleResponse)\n .then((response) => {\n sessionStorage.setItem(\"emailToken\", response.accessToken);\n\n return response;\n });\n}\n\nfunction submitReadingsByEmailToken(payload) {\n console.log(payload);\n const requestOptions = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${sessionStorage.getItem(\"emailToken\")}`,\n },\n body: JSON.stringify(payload),\n };\n\n console.log(\"submitReadingsByEmailToken API\", requestOptions);\n\n return fetch(\n `${config.apiUrl}/meter/submitReadingsByToken`,\n requestOptions\n ).then(handleResponse);\n}\n","// import config from 'config';\nimport { authHeader, handleResponse, config } from \"scripts/_helpers\";\nimport { authenticationService } from \"scripts/_services\";\n\nexport const equipmentService = {\n getAll,\n getServiceHistory,\n requestServiceCall,\n changeLocation,\n};\n\nfunction getAll() {\n const ClientNo = authenticationService.currentUserValue.client.clientNo;\n console.log(\"getAll equipmentService\", ClientNo);\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ ClientNo }),\n };\n\n return fetch(`${config.apiUrl}/equipment/getByClientNo`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction changeLocation({ MachineID, AddressKey }) {\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ MachineID, AddressKey }),\n };\n\n console.log(\"changeLocation API\", requestOptions);\n\n return fetch(\n `${config.apiUrl}/equipment/updateLocation`,\n requestOptions\n ).then(handleResponse);\n}\n\nfunction getServiceHistory() {\n const ClientNo = authenticationService.currentUserValue.client.clientNo;\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ ClientNo }),\n };\n console.log(\"getServiceHistory API\", requestOptions);\n\n return fetch(\n `${config.apiUrl}/servicehistory/getByClientNo`,\n requestOptions\n ).then(handleResponse);\n}\n\nfunction requestServiceCall(RequestService) {\n const ClientNo = authenticationService.currentUserValue.client.clientNo;\n RequestService.AddressKey = ClientNo;\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify(RequestService),\n };\n\n console.log(\"requestServiceCall API\", requestOptions);\n\n return fetch(\n `${config.apiUrl}/servicehistory/requestservice`,\n requestOptions\n ).then(handleResponse);\n}\n","import { authHeader, handleResponse, config } from \"scripts/_helpers\";\nimport { authenticationService } from \"scripts/_services\";\n\nexport const invoiceService = {\n getAllUnpaid,\n getInvoiceData,\n};\n\nfunction getAllUnpaid() {\n const {\n clientNo: ClientNo,\n accountNum: AccountNum,\n } = authenticationService.currentUserValue.client;\n console.log(\"getAllUnpaid invoiceService\", ClientNo, AccountNum);\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ ClientNo, AccountNum }),\n };\n\n return fetch(\n `${config.apiUrl}/client/getUnpaidInvoices`,\n requestOptions\n ).then(handleResponse);\n}\n\nfunction getInvoiceData({ id, invoiceNo, invoiceDetail }) {\n const {\n accountNum: AccountNum,\n } = authenticationService.currentUserValue.client;\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ id, invoiceNo, AccountNum, invoiceDetail }),\n };\n\n return fetch(`${config.apiUrl}/client/getInvoiceData`, requestOptions).then(\n handleResponse\n );\n}\n","// import config from 'config';\nimport { authHeader, handleResponse, config } from \"scripts/_helpers\";\nimport { authenticationService } from \"scripts/_services\";\n\nexport const usageService = {\n getAllBilled,\n getUsagePdf,\n};\n\nfunction getAllBilled() {\n const ClientNo = authenticationService.currentUserValue.client.clientNo;\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ ClientNo }),\n };\n\n return fetch(\n `${config.apiUrl}/equipment/getByClientNoForUsage`,\n requestOptions\n ).then(handleResponse);\n}\n\nfunction getUsagePdf(MachinesID, Model, SerialNo, Year) {\n const AccountNum = authenticationService.currentUserValue.client.accountNum;\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({\n AccountNum,\n MachinesID,\n Model,\n SerialNo,\n Year,\n }),\n };\n\n return fetch(\n `${config.apiUrl}/equipment/usageByMachineID`,\n requestOptions\n ).then(handleResponse);\n}\n","// import config from 'config';\nimport { authHeader, handleResponse, config } from \"scripts/_helpers\";\nimport { authenticationService } from \"scripts/_services\";\n\nexport const orderService = {\n getPendingOrders,\n cancelOrder,\n consolidateOrder,\n shipTodayOrder,\n\n // getPendingOrdersByEmailToken,\n // cancelOrderByEmailToken,\n // consolidateOrderByEmailToken,\n // shipTodayOrderByEmailToken,\n};\n\nfunction getPendingOrders() {\n const ContNo = authenticationService.currentUserValue.contact.contNo;\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ ContNo }),\n };\n\n return fetch(\n `${config.apiUrl}/orders/getOrdersByContact`,\n requestOptions\n ).then(handleResponse);\n}\n\nfunction cancelOrder({ orderId, clientno, lcnClient }) {\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ orderId, clientno, lcnClient }),\n };\n\n console.log(\"cancelOrder API\", requestOptions);\n\n return fetch(`${config.apiUrl}/orders/CancelOrder`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction consolidateOrder({ orderId, clientno, lcnClient, addressKey }) {\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ orderId, clientno, lcnClient, addressKey }),\n };\n\n console.log(\"consolidateOrder API\", requestOptions);\n\n return fetch(`${config.apiUrl}/orders/ConsolidateOrder`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction shipTodayOrder({ orderId, clientno, lcnClient, addressKey }) {\n console.log(orderId, clientno, lcnClient, addressKey);\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ orderId, clientno, lcnClient, addressKey }),\n };\n\n console.log(\"consolidateOrder API\", requestOptions);\n\n return fetch(`${config.apiUrl}/orders/ShipOrder`, requestOptions).then(\n handleResponse\n );\n}\n\n// function getPendingOrdersByEmailToken(token) {\n// const requestOptions = { method: \"GET\", headers: authHeader() };\n// return fetch(\n// `${config.apiUrl}/pending-orders-by-email/${token}`,\n// requestOptions\n// ).then(handleResponse);\n// }\n\n// function cancelOrderByEmailToken(order_id, token) {\n// const requestOptions = {\n// method: \"POST\",\n// headers: Object.assign(\n// { \"Content-Type\": \"application/json\" },\n// authHeader()\n// ),\n// body: JSON.stringify({ order_id, token }),\n// };\n\n// console.log(\"cancelOrder API\", requestOptions);\n\n// return fetch(\n// `${config.apiUrl}/pending-orders/cancel-by-email`,\n// requestOptions\n// ).then(handleResponse);\n// }\n\n// function consolidateOrderByEmailToken(order_id, address, token) {\n// const requestOptions = {\n// method: \"POST\",\n// headers: Object.assign(\n// { \"Content-Type\": \"application/json\" },\n// authHeader()\n// ),\n// body: JSON.stringify({ order_id, address, token }),\n// };\n\n// console.log(\"consolidateOrder API\", requestOptions);\n\n// return fetch(\n// `${config.apiUrl}/pending-orders/consolidate-by-email`,\n// requestOptions\n// ).then(handleResponse);\n// }\n\n// function shipTodayOrderByEmailToken(order_id, address, token) {\n// const requestOptions = {\n// method: \"POST\",\n// headers: Object.assign(\n// { \"Content-Type\": \"application/json\" },\n// authHeader()\n// ),\n// body: JSON.stringify({ order_id, address, token }),\n// };\n\n// console.log(\"consolidateOrder API\", requestOptions);\n\n// return fetch(\n// `${config.apiUrl}/pending-orders/ship-today-by-email`,\n// requestOptions\n// ).then(handleResponse);\n// }\n","// import config from 'config';\nimport { authHeader, handleResponse, config } from \"scripts/_helpers\";\n\nexport const adminService = {\n searchAccountById,\n};\n\nfunction searchAccountById(AccountNum) {\n console.log(\"searchAccountById\", AccountNum);\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ AccountNum }),\n };\n\n return fetch(`${config.apiUrl}/client/getByAccountNum`, requestOptions).then(\n handleResponse\n );\n}\n","import { handleResponse, config } from \"scripts/_helpers\";\n\nexport const addressService = {\n getAll,\n forRegistration,\n};\n\nfunction getAll({ ClientNo, accessToken }) {\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n { Authorization: `Bearer ${accessToken}` }\n ),\n body: JSON.stringify({ ClientNo }),\n };\n\n console.log(\"requestAddresses API\", requestOptions);\n\n return fetch(`${config.apiUrl}/address/getAll`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction forRegistration({ AccountNum, SerialNum }) {\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign({ \"Content-Type\": \"application/json\" }),\n body: JSON.stringify({ AccountNum, SerialNum }),\n };\n\n console.log(\"forRegistration API\", requestOptions);\n\n return fetch(`${config.apiUrl}/address/forRegistration`, requestOptions).then(\n handleResponse\n );\n}\n","// import config from 'config';\nimport { authHeader, handleResponse, config } from \"scripts/_helpers\";\nimport { authenticationService } from \"scripts/_services\";\n\nexport const contactService = {\n getAll,\n addContact,\n deleteContact,\n getById,\n editContact,\n replaceContact,\n};\n\nfunction getAll() {\n const ClientNo = authenticationService.currentUserValue.client.clientNo;\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ ClientNo }),\n };\n console.log(\"getAll\", ClientNo);\n return fetch(`${config.apiUrl}/contact/getByClientNo`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction addContact(data) {\n const ClientNo = authenticationService.currentUserValue.client.clientNo;\n\n data.contact.ClientNo = ClientNo;\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify(data),\n };\n\n console.log(\"addContact API\", data);\n\n return fetch(`${config.apiUrl}/contact/add`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction deleteContact(ContNo) {\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ ContNo }),\n };\n\n console.log(\"deleteContact API\", requestOptions);\n\n return fetch(`${config.apiUrl}/contact/delete`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction editContact(data) {\n const ClientNo = authenticationService.currentUserValue.client.clientNo;\n\n data.contact.ClientNo = ClientNo;\n data.contact.StdCode = \"09\";\n\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify(data),\n };\n\n console.log(\"editContact API\", data);\n\n return fetch(`${config.apiUrl}/contact/update`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction replaceContact(data) {\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify(data),\n };\n\n console.log(\"replaceContact API\", data);\n\n return fetch(`${config.apiUrl}/contact/replace`, requestOptions).then(\n handleResponse\n );\n}\n\nfunction getById(ContNo) {\n const requestOptions = {\n method: \"POST\",\n headers: Object.assign(\n { \"Content-Type\": \"application/json\" },\n authHeader()\n ),\n body: JSON.stringify({ ContNo }),\n };\n console.log(\"getById\", requestOptions);\n return fetch(`${config.apiUrl}/contact/getByContNo`, requestOptions).then(\n handleResponse\n );\n}\n","import { authenticationService } from \"scripts/_services\";\n\nexport const refreshService = {\n startRefreshCycle,\n stopRefreshCycle,\n};\n\n/*\n * ID for the refresh interval\n * Will be used to cancel the interval when user logs out.\n */\nlet refreshIntervId;\n\n/*\n * Refresh interval time in minutes\n */\nconst refreshIntervTime = 9;\n\n/*\n * Start refresh cycle\n * Send an API request every (9 min) to get new access and refresh token\n * if user was idle for (10 min), he will be logged out, and the cycle stops\n */\nfunction startRefreshCycle() {\n const now = new Date().getTime();\n\n // Check if timer already started before\n const refreshSetupTime = sessionStorage.getItem(\"refreshSetupTime\");\n\n // if it didn't, set it to now\n if (refreshSetupTime == null) {\n sessionStorage.setItem(\"refreshSetupTime\", now);\n }\n\n /*\n * Every second, run check function\n * Checks if time reached 9 minutes since start\n */\n clearInterval(refreshIntervId);\n\n refreshIntervId = setInterval(checkRefresh, 1000);\n}\n\nfunction checkRefresh() {\n const now = new Date().getTime();\n const refreshSetupTime = sessionStorage.getItem(\"refreshSetupTime\");\n\n // Check if time went past refreshIntervTime\n if (now - refreshSetupTime > refreshIntervTime * 60 * 1000) {\n stopRefreshCycle();\n\n // Run refresh token\n authenticationService.refresh().then((_) => {\n // If refresh successful, start cycle again\n startRefreshCycle();\n });\n }\n}\n\nfunction stopRefreshCycle() {\n // Stop the interval\n clearInterval(refreshIntervId);\n\n // Reset timer\n sessionStorage.removeItem(\"refreshSetupTime\");\n}\n","import { authenticationService } from \"scripts/_services\";\n\nexport function authHeader() {\n // return authorization header with jwt token\n const currentUser = authenticationService.currentUserValue;\n if (currentUser && currentUser.accessToken) {\n return { Authorization: `Bearer ${currentUser.accessToken}` };\n } else {\n return {};\n }\n}\n","import { authenticationService } from \"scripts/_services\";\n\nexport function handleResponse(response) {\n return response.text().then((text) => {\n if (response.ok) {\n const data = text && JSON.parse(text);\n return data;\n } else {\n if ([401, 403].indexOf(response.status) !== -1) {\n // auto logout if 401 Unauthorized or 403 Forbidden response returned from api\n authenticationService.logout();\n // window.location.reload(true);\n }\n\n // const data = text && JSON.parse(text);\n\n let error;\n\n // console.log(JSON.parse(text));\n\n if (typeof text === \"string\") {\n error = text && JSON.parse(text);\n } else {\n error = (text && JSON.parse(text)) || response.statusText;\n }\n\n return Promise.reject(error);\n }\n });\n}\n","import { createBrowserHistory } from 'history';\n\nexport const history = createBrowserHistory();","export const roles = {\n default: {\n edit_name: true,\n view_contact: true,\n edit_contact: true,\n add_contact: true,\n },\n AuthenticatedUsers: {\n //\n },\n ServerAdministrators: {\n switch_accounts: true,\n },\n};\n","export const config = {\n // apiUrl: \"https://myaccount-fbnz.fujifilm.com\",\n apiUrl: \"https://localhost:44325\",\n // apiUrl: \"https://myaccountdev-fbnz.fujifilm.com\",\n};\n","export const showPdf = (data) => {\n let binaryString = window.atob(data);\n let binaryLen = binaryString.length;\n let bytes = new Uint8Array(binaryLen);\n\n for (let i = 0; i < binaryLen; i++) {\n let ascii = binaryString.charCodeAt(i);\n bytes[i] = ascii;\n }\n\n //Create a Blob from the PDF Stream\n const file = new Blob([bytes], {\n type: \"application/pdf\",\n });\n\n //Build a URL from the file\n const fileURL = URL.createObjectURL(file);\n //Open the URL on new Window\n window.open(fileURL);\n};\n","export const getError = (error, defaultError = null) => {\n if (typeof error === \"string\") {\n return error;\n }\n\n if (typeof error === \"object\") {\n return (\n error.errormessage ||\n error.message ||\n error.title ||\n defaultError ||\n \"Error\"\n );\n }\n};\n","export const getParam = (object, key) => {\n return object[\n Object.keys(object).filter(function (k) {\n return k.toLowerCase() === key.toLowerCase();\n })[0]\n ];\n};\n","/*\n * Function to clean / check serialNo for validity\n */\nexport const getSerialNo = (serialNo) => {\n if (typeof serialNo === \"string\") {\n const value = serialNo.trim();\n\n if (value === \"\") {\n return null;\n }\n\n if (value.toLowerCase().indexOf(\"non\") !== -1) {\n return null;\n }\n\n if (value.toLowerCase().indexOf(\"awaiting\") !== -1) {\n return null;\n }\n\n return value;\n }\n\n if (typeof serialNo === \"number\") {\n return serialNo;\n }\n};\n","import { getSerialNo } from \"scripts/_helpers\";\n\nexport const updateEquipmentSerialNo = (item) => {\n item.serialNo = getSerialNo(item.serialNo);\n};\n","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\n\nimport { authenticationService } from 'scripts/_services';\n\nexport const PrivateRoute = ({ component: Component, roles, permissions, ...rest }) => (\n {\n const currentUser = authenticationService.currentUserValue;\n \n // console.log(currentUser);\n if (!currentUser) {\n // not logged in so redirect to login page with the return url\n return \n }\n\n // check if route is restricted by role\n // if (roles && roles.findIndex(r => r.role_id === currentUser.role.role_id) === -1) {\n // // role not authorised so redirect to home page\n // return \n // }\n\n // check if route is restricted by permissions\n if (permissions && permissions.findIndex(p => typeof currentUser.permissions[p] !== 'undefined' && currentUser.permissions[p]) === -1) {\n // role not authorised so redirect to home page\n console.log('no permissions');\n return \n }\n\n // authorised so return component\n return \n }} />\n)","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\n\n/*\nPossible props:\n\n- modifier (modifier class)\n- tooltip (tooltip content)\n- type (for example \"submit\") - will use \n- to (For link) - will use Link\n- disabled = true / false\n*/\n\nclass Button extends Component {\n render() {\n const {\n children,\n modifier,\n tooltip,\n type,\n className,\n disabled,\n noClick,\n fullWidth,\n ...rest\n } = this.props;\n\n let Tag = \"button\";\n if (this.props.to) Tag = Link;\n if (noClick) Tag = \"div\";\n\n return (\n \n
{children}
\n {tooltip ? (\n {\n e.stopPropagation();\n }}\n >\n {tooltip}\n \n ) : (\n \"\"\n )}\n \n );\n }\n}\n\nexport { Button };\n","import { createContext } from \"react\";\n\nexport const AppContext = createContext({\n modal: {\n isOpen: false,\n children: null,\n openModal: () => {},\n closeModal: () => {},\n },\n bar: {\n isOpen: false,\n props: {},\n showBar: () => {},\n }\n});\n","import React, {Component} from 'react';\nimport {CopyToClipboard} from 'react-copy-to-clipboard';\nimport { AppContext } from \"scripts/context/app-context\";\n\nclass CopyClipboard extends Component {\n static contextType = AppContext;\n\n handleCopy = () => {\n const { bar } = this.context;\n const content = `Text has been copied to your clipboard.`;\n const modifier = `blue`;\n const props = {content, modifier};\n\n bar.showBar(props);\n };\n\n render() {\n const { value } = this.props;\n\n return (\n \n
\n
\n );\n }\n}\n\nexport {CopyClipboard};\n ","import React, { Component } from \"react\";\n\nclass Table extends Component {\n render() {\n const { layout } = this.props;\n return (\n \n {this.props.children}\n
\n );\n }\n}\n\nexport { Table };\n","import * as React from \"react\";\n\n/**\n * @ignore - internal component.\n */\n\nconst Tablelvl2Context = React.createContext();\n\nexport default Tablelvl2Context;\n","import React, { Component } from \"react\";\nimport Tablelvl2Context from \"./Tablelvl2Context\";\n\nconst tablelvl2 = {\n variant: \"head\",\n};\n\nclass TableHead extends Component {\n render() {\n const { modifier } = this.props;\n\n let classes = [];\n if (modifier) classes.push(`table-head--${modifier}`);\n\n return (\n \n \n {this.props.children}\n \n \n );\n }\n}\n\nexport { TableHead };\n","import React, { Component } from \"react\";\nimport Tablelvl2Context from \"./Tablelvl2Context\";\n\nconst tablelvl2 = {\n variant: \"body\",\n};\n\nclass TableBody extends Component {\n render() {\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nexport { TableBody };\n","import React, { Component } from \"react\";\n\nclass TableRow extends Component {\n render() {\n const { isSelected, ...rest } = this.props;\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nexport { TableRow };\n","import React from \"react\";\nimport Tablelvl2Context from \"./Tablelvl2Context\";\n\nfunction TableCell(props) {\n const {\n children,\n className,\n modifier,\n sort,\n align,\n valign,\n type,\n ...other\n } = props;\n const tablelvl2 = React.useContext(Tablelvl2Context);\n const isHeadCell = tablelvl2 && tablelvl2.variant === \"head\";\n\n const Component = isHeadCell ? \"th\" : \"td\";\n const classes = [];\n\n if (className) classes.push(className);\n if (modifier) classes.push(`table-cell--${modifier}`);\n if (type) classes.push(`table-cell--type-${type}`);\n if (tablelvl2.modifier) classes.push(`table-cell--${tablelvl2.modifier}`);\n if (align) classes.push(`table-cell--align-${align}`);\n if (valign) classes.push(`table-cell--valign-${valign}`);\n\n // console.log(other);\n return (\n \n
\n {children}\n\n {sort ? (\n
\n ) : null}\n
\n
\n );\n}\n\nexport { TableCell };\n","import * as Yup from \"yup\";\n\nexport function isInitialValid(props) {\n if (!props.validationSchema) return true;\n return props.validationSchema.isValidSync(props.initialValues);\n}\n\nexport function isFieldValid(name, props) {\n const { errors, touched } = props;\n return touched[name] && typeof errors[name] === \"undefined\";\n}\n\nexport function isFieldValidClass(name, props) {\n return isFieldValid(name, props) ? \"is-valid\" : \"is-invalid\";\n}\n\nexport const detailsSchema = {\n firstName: Yup.string().required(\"First name is required\"),\n lastName: Yup.string().required(\"Last name is required\"),\n phone: Yup.string().required(\"Phone is required\"),\n address: Yup.string().required(\"Phone is required\"),\n jobTitle: Yup.string().required(\"Job title is required\"),\n department: Yup.string().required(\"Department is required\"),\n email: Yup.string().email(\"Invalid email\").required(\"Email is required\"),\n};\n\nexport const passwordSchema = (name) => {\n return {\n [name]: Yup.string()\n .min(6, \"Minimum 6 characters\")\n .max(15, \"Maximum 15 characters\")\n .matches(/(.*[0-9]){2}/, { message: \"At least 2 numerals\" })\n .matches(/(.*[a-z]){2}/, { message: \"At least 2 letters\" }),\n };\n};\n\nexport function checkCapsLock(e) {\n return e.getModifierState(\"CapsLock\");\n}\n\n/*\n * Usually each contact has \"machineContacts\" array\n * It's a map of equipments that belongs to the contact\n * \"Equipments\" array with all the data returned separately.\n * This function is to map out \"Equipments\" with \"machineContacts\" array\n * To de used in Details Form\n */\n\nexport function mapContactEquipments(equipments, machineContacts) {\n const copy = JSON.parse(JSON.stringify(equipments));\n\n const check = (equipment, machine, type) => {\n const { machinesID, contType } = machine;\n return machinesID === equipment.machinesID && contType === type;\n };\n\n copy.forEach((e) => {\n e.meters = machineContacts.some((m) => check(e, m, \"Meter\")) ? \"1\" : \"0\";\n e.service = machineContacts.some((m) => check(e, m, \"Service\")) ? \"1\" : \"0\";\n e.consum = machineContacts.some((m) => check(e, m, \"Consumables\"))\n ? \"1\"\n : \"0\";\n e.billing = machineContacts.some((m) => check(e, m, \"Billing\")) ? \"1\" : \"0\";\n });\n\n return copy;\n}\n\nexport function getContactFromFields(fields, contNo) {\n const contact = {\n // contNo: \"021 171 88\",\n // title: \"Mr\",\n firstName: fields.firstName,\n lastName: fields.lastName,\n email: fields.email,\n // stdCode: \"09\",\n phone: fields.phone,\n cellPhone: fields.cellPhone,\n department: fields.department,\n jobTitle: fields.jobTitle,\n // location: \"Albany\",\n address: fields.address,\n // clientNo: \"CL123456\",\n };\n\n // If contNo provided - atm doesnt exist for AddContact\n if (contNo) {\n contact.contNo = contNo;\n }\n\n return contact;\n}\n\nexport function getMachinesFromFields(fields, contNo) {\n const machines = [];\n /*\n * Map out machine checkboxes\n */\n for (const prop in fields) {\n const arr = prop.split(\"-\");\n\n /*\n * Check if prop starts with \"machine-\" and it's checked\n */\n if (arr[0] === \"machine\" && fields[prop]) {\n const machine = {\n machinesID: arr[1],\n contType: arr[2],\n };\n\n // If contNo provided - atm doesnt exist for AddContact\n if (contNo) {\n machine.contNo = contNo;\n }\n machines.push(machine);\n }\n }\n\n return machines;\n}\n","import React, { Component } from \"react\";\nimport { ErrorMessage } from \"formik\";\nimport { Tooltip } from \"scripts/components/parts\";\n\n/*\nPossible props:\n\n- label: {\n pos: 'above', 'inline',\n className: '',\n text: String\n}\n\n- tooltip\n- isRequired - true / false\n- name: String (Formik name id)\n*/\n\nclass FormField extends Component {\n renderError = () => {\n const { name, form, capsLockOn } = this.props;\n\n let error = \"\";\n\n if (name) {\n error = (\n \n );\n }\n\n if (form) {\n if (!form.errors[name] && capsLockOn) {\n error =
Caps lock is on
;\n }\n }\n\n return error;\n };\n\n render() {\n const { label, name, children, tooltip, isRequired } = this.props;\n\n // Check if there is a label, and whats it's position\n // If no position, assign default\n const labelPos = label ? label.pos || \"above\" : null;\n\n return (\n
\n {label ? (\n
\n \n {this.renderError()}\n
\n ) : (\n \"\"\n )}\n\n
{children}
\n
\n );\n }\n}\n\nexport { FormField };\n","export function detectIE() {\n var ua = window.navigator.userAgent;\n\n // Test values; Uncomment to check result …\n\n // IE 10\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\n\n // IE 11\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\n\n // Edge 12 (Spartan)\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\n\n // Edge 13\n // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';\n\n var msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n var trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n var edge = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n }\n\n // other browser\n return false;\n}\n\nexport const isIE = detectIE();\n\nexport function detectMobile() {\n const userAgent = navigator.userAgent || navigator.vendor || window.opera;\n\n const MOBILE_WINDOW = /windows phone/i.test(userAgent);\n const MOBILE_ANDROID = /android/i.test(userAgent);\n const MOBILE_IOS = (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream);\n\n return MOBILE_IOS || MOBILE_ANDROID || MOBILE_WINDOW;\n}\n\nexport const isMobile = detectMobile();\n\nexport const mobileBreakpoint = 768;","import React, { Component } from \"react\";\nimport { isMobile } from \"scripts/utils/browser-detect\";\nimport { Tooltip } from \"scripts/components/parts\";\nimport { Field } from \"formik\";\nimport { Link } from \"react-router-dom\";\nimport {\n isFieldValidClass,\n Password,\n FormField,\n checkCapsLock,\n} from \"scripts/components/form\";\n\n/*\nPossible props:\n\n- label: {\n pos: 'above', 'inline',\n className: '',\n text: String\n}\n\n- name: String (Formik name id)\n- type: String (Field type)\n- form: props object (Passed from Formik)\n- tooltip: content for tooltip\n*/\n\nclass Input extends Component {\n state = {\n capsLockOn: false,\n focused: false,\n };\n\n constructor(props) {\n super(props);\n\n this.ref = React.createRef();\n }\n\n focus = (force = false) => {\n // const { autofocus, name } = this.props;\n // console.log(this.ref, 'focus')\n\n // If mobile, don't focus\n if (isMobile && !force) return;\n\n setTimeout(() => {\n // console.log(this.ref.current, 'focus')\n\n if (this.ref.current) {\n this.ref.current.focus();\n }\n }, 1);\n };\n\n handleKeyUp = (e) => {\n this.setState({ capsLockOn: checkCapsLock(e) });\n // console.log(\"handleKeyUp\", checkCapsLock(e));\n };\n\n handleMouseDown = (e) => {\n this.setState({ capsLockOn: checkCapsLock(e) });\n // console.log(\"handleMouseDown\", checkCapsLock(e));\n };\n\n componentDidMount() {\n const { autofocus } = this.props;\n // Focus field if this.props.focused exists\n // When coming back from \"Confrim\" to \"Edit\"\n if (autofocus) this.focus();\n\n document.addEventListener(\"mousedown\", this.onDocumentMouseDown);\n document.addEventListener(\"mouseup\", this.onDocumentMouseUp);\n }\n\n componentDidUpdate(prevProps) {\n const { autofocus } = this.props;\n\n if (autofocus !== prevProps.autofocus) {\n // Focus field if this.props.focused exists\n // When coming back from \"Confrim\" to \"Edit\"\n // console.log(name, \"autofocus:\", autofocus);\n if (autofocus) this.focus();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener(\"mousedown\", this.onDocumentMouseDown);\n document.removeEventListener(\"mouseup\", this.onDocumentMouseUp);\n }\n\n suggestionsFilter = () => {\n const { focused } = this.state;\n const { suggestions, form, name } = this.props;\n\n if (suggestions && form.values[name] && focused) {\n // if (suggestions && form.values[name]) {\n return suggestions.filter(\n (s) =>\n s.value.toLowerCase().indexOf(form.values[name].toLowerCase()) !== -1\n );\n } else {\n return null;\n }\n };\n\n handleFocus = () => {\n this.setState({ focused: true });\n };\n\n handleBlur = (e) => {\n if (this.justClickedOnSuggestionsContainer) {\n this.ref.current.focus();\n return;\n }\n\n const { form, name } = this.props;\n\n this.setState({ focused: false });\n\n // this is going to call setFieldTouched and manually update touched.\n if (form) {\n form.setFieldTouched(name, true);\n form.handleBlur(e);\n }\n };\n\n handleChange = (e) => {\n const { name, form } = this.props;\n let { value } = e.target;\n\n // Remove any emoji char\n value = value.replace(\n /([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2011-\\u26FF]|\\uD83E[\\uDD10-\\uDDFF])/g,\n \"\"\n );\n form.setFieldValue(name, value);\n };\n\n onDocumentMouseUp = () => {\n if (this.pressedSuggestion && !this.justSelectedSuggestion) {\n this.input.focus();\n }\n this.pressedSuggestion = null;\n };\n\n onDocumentMouseDown = (event) => {\n this.justClickedOnSuggestionsContainer = false;\n\n let node =\n (event.detail && event.detail.target) || // This is for testing only. Please show me a better way to emulate this.\n event.target;\n\n while (node !== null && node !== document) {\n if (\n node.getAttribute &&\n node.getAttribute(\"data-suggestion-index\") !== null\n ) {\n // Suggestion was clicked\n this.justClickedOnSuggestionsContainer = true;\n return;\n }\n\n if (node === this.suggestionsContainer) {\n // Something else inside suggestions container was clicked\n this.justClickedOnSuggestionsContainer = true;\n return;\n }\n\n node = node.parentNode;\n }\n };\n\n suggestionProps = (itemIndex) => {\n return {\n \"data-suggestion-index\": itemIndex,\n onMouseEnter: this.onSuggestionMouseEnter,\n onMouseLeave: this.onSuggestionMouseLeave,\n onMouseDown: this.onSuggestionMouseDown,\n onTouchStart: this.onSuggestionTouchStart,\n onTouchMove: this.onSuggestionTouchMove,\n onClick: this.onSuggestionClick,\n };\n };\n onSuggestionMouseEnter = (event) => {\n if (event.target === this.pressedSuggestion) {\n this.justSelectedSuggestion = true;\n }\n\n this.justMouseEntered = true;\n\n setTimeout(() => {\n this.justMouseEntered = false;\n });\n };\n onSuggestionMouseLeave = (event) => {\n if (\n this.justSelectedSuggestion &&\n event.target === this.pressedSuggestion\n ) {\n this.justSelectedSuggestion = false;\n }\n };\n onSuggestionMouseDown = (event) => {\n // Checking if this.justSelectedSuggestion is already true to not duplicate touch events in chrome\n // See: https://github.com/facebook/react/issues/9809#issuecomment-413978405\n if (!this.justSelectedSuggestion) {\n this.justSelectedSuggestion = true;\n this.pressedSuggestion = event.target;\n }\n };\n onSuggestionTouchStart = (e) => {\n this.justSelectedSuggestion = true;\n // todo: event.preventDefault when https://github.com/facebook/react/issues/2043\n // todo: gets released so onSuggestionMouseDown won't fire in chrome\n };\n onSuggestionTouchMove = (e) => {\n this.justSelectedSuggestion = false;\n this.pressedSuggestion = null;\n this.ref.current.focus();\n };\n onSuggestionClick = (e) => {\n this.setState({ focused: false });\n\n setTimeout(() => {\n this.justSelectedSuggestion = false;\n });\n };\n\n render() {\n const { capsLockOn } = this.state;\n const {\n label,\n name,\n type,\n form,\n tooltip,\n isRequired,\n autofocus,\n value,\n suggestions,\n disabledLink,\n disabled,\n ...rest\n } = this.props;\n\n return (\n \n {type === \"password\" ? (\n \n ) : (\n
\n {disabledLink && disabled && form.values[name] ? (\n \n {form.values[name]}\n \n ) : (\n \"\"\n )}\n\n \n\n {this.suggestionsFilter() ? (\n
\n {this.suggestionsFilter().map((s, i) => {\n return (\n \n {s.value}\n \n );\n })}\n
\n ) : (\n \"\"\n )}\n\n {tooltip ? (\n
\n {tooltip}\n
\n ) : (\n \"\"\n )}\n
\n )}\n \n );\n }\n}\n\nexport { Input };\n","import React, { Component } from \"react\";\nimport { Tooltip, StrengthMeter } from \"scripts/components/parts\";\nimport { Field } from \"formik\";\nimport { isFieldValidClass } from \"scripts/components/form\";\n\nclass Password extends Component {\n state = {\n showingPassword: false,\n isFocused: false,\n };\n\n toggleShow = () => {\n const { showingPassword } = this.state;\n const { focusFunc } = this.props;\n\n this.setState({\n showingPassword: !showingPassword,\n });\n\n focusFunc(true);\n };\n\n handleFocus = (e) => {\n this.setState({ isFocused: true });\n };\n\n handleBlur = (e) => {\n const { handleBlur } = this.props.form;\n\n handleBlur(e);\n this.setState({ isFocused: false });\n };\n\n render() {\n const { showingPassword, isFocused } = this.state;\n const { name, form, tooltip, strength, focusFunc, ...rest } = this.props;\n const password = form.values[name];\n\n return (\n
\n
\n {showingPassword ? \"Hide\" : \"Show\"}\n
\n\n \n\n {tooltip ? (\n \n

\n 6-15 characters long\n
\n At least 2 numerals\n

\n \n ) : (\n \"\"\n )}\n\n {strength && password.length > 0 ? (\n
\n \n
\n ) : (\n \"\"\n )}\n
\n );\n }\n}\n\nexport { Password };\n","import React, { Component } from \"react\";\nimport { FormField } from \"scripts/components/form\";\nimport { default as SelectPlugin } from \"react-select\";\n\n/*\nPossible props:\n\n- label: {\n pos: 'above', 'inline',\n className: '',\n text: String\n}\n\n- name: String (Formik name id)\n- options: Array[{\n title: String, \n value: String,\n selected: true / false\n}, ..] (Array of options)\n- pre - pre-text to use in the current option display\n- modifiers: Array(String, String...) (Modifiers)\n- form: props object (Passed from Formik)\n- onSelect - optional - pass function to execute on change / select\n- tooltip\n- placeholder - custom placrholder when nothing is selected\n*/\n\n// const NOOP = () => {};\nconst NOOP_REACT_SELECT_STYLES = {\n // clearIndicator: NOOP,\n // container: NOOP,\n // control: NOOP,\n // dropdownIndicator: NOOP,\n // group: NOOP,\n // groupHeading: NOOP,\n // indicatorsContainer: NOOP,\n // indicatorSeparator: NOOP,\n // input: NOOP,\n // loadingIndicator: NOOP,\n // loadingMessage: NOOP,\n // menu: NOOP,\n // menuList: NOOP,\n // menuPortal: NOOP,\n // multiValue: NOOP,\n // multiValueLabel: NOOP,\n // multiValueRemove: NOOP,\n // noOptionsMessage: NOOP,\n // option: NOOP,\n // placeholder: NOOP,\n // singleValue: NOOP,\n // valueContainer: NOOP\n};\n\nclass Select extends Component {\n state = {\n selectedOption: null,\n };\n\n componentDidMount() {\n const { defaultValue, form, name, options } = this.props;\n\n if (defaultValue) {\n this.setState({ selectedOption: defaultValue });\n } else {\n if (form) {\n const selectedOption = options.find(\n (o) => o.value === form.initialValues[name]\n );\n\n if (selectedOption) {\n this.setState({ selectedOption });\n }\n }\n }\n }\n\n componentDidUpdate() {\n const { selectedOption } = this.state;\n const { options } = this.props;\n\n // When reloading component\n // If new this.props.options doesnt have selectedOption,\n // Reset selectedOption\n if (\n selectedOption !== null &&\n options.findIndex((o) => o.value === selectedOption.value) === -1\n ) {\n this.handleChange(null);\n }\n }\n\n handleChange = (selectedOption) => {\n const { name, form, onSelect } = this.props;\n this.setState({ selectedOption });\n\n // If not inside a form, don't\n if (form) {\n // Hook to update form value\n const value = selectedOption ? selectedOption.value : null;\n form.setFieldValue(name, value);\n }\n\n if (onSelect) {\n onSelect(selectedOption);\n }\n };\n\n render() {\n const { selectedOption } = this.state;\n const {\n options,\n form,\n pre,\n modifiers,\n label,\n name,\n tooltip,\n defaultValue,\n fieldWidth,\n isRequired,\n ...rest\n } = this.props;\n\n let value;\n if (form) {\n value = options.find((o) => o.value === form.values[name]) || null;\n } else {\n value = selectedOption;\n }\n\n return (\n \n `select--${m}`) : \"\"\n }`}\n >\n \n \n \n );\n }\n}\n\nexport { Select };\n","import React, {Component} from 'react';\nimport { Field } from 'formik';\n\n/*\nPossible props:\n\n- label: {\n text: String\n}\n\n- name: String (Formik name id)\n*/\n\nclass Checkbox extends Component {\n render() {\n const { label, name, modifiers, ...rest } = this.props;\n\n return (\n
`checkbox--${m}`) : ''}`} label={label ? label.text : ''} name={name}>\n \n \n \n
\n );\n }\n}\n\nexport { Checkbox };","import React, { Component } from \"react\";\nimport { Field } from \"formik\";\nimport { isFieldValidClass, FormField } from \"scripts/components/form\";\n\n/*\nPossible props:\n\n- label: {\n pos: 'above', 'inline',\n className: '',\n text: String\n}\n\n- name: String (Formik name id)\n- form: props object (Passed from Formik)\n*/\n\nclass Textarea extends Component {\n render() {\n const { label, name, form, action, isRequired, ...rest } = this.props;\n\n return (\n \n
\n {action ?
{action}
: \"\"}\n\n {form ? (\n \n ) : (\n \n )}\n
\n
\n );\n }\n}\n\nexport { Textarea };\n","export default [\n { value: \"Administration\", label: \"Administration\" },\n { value: \"Advertising\", label: \"Advertising\" },\n { value: \"Customer Service\", label: \"Customer Service\" },\n { value: \"Design\", label: \"Design\" },\n {\n value: \"Executive Management\",\n label: \"Executive Management\",\n },\n { value: \"Finance\", label: \"Finance\" },\n { value: \"General\", label: \"General\" },\n { value: \"Human Resources\", label: \"Human Resources\" },\n {\n value: \"Information Services\",\n label: \"Information Services\",\n },\n { value: \"Logistics\", label: \"Logistics\" },\n { value: \"Marketing\", label: \"Marketing\" },\n { value: \"Operational\", label: \"Operational\" },\n { value: \"Personnel\", label: \"Personnel\" },\n { value: \"Public Relations\", label: \"Public Relations\" },\n { value: \"Publishing\", label: \"Publishing\" },\n { value: \"Purchasing\", label: \"Purchasing\" },\n { value: \"Sales\", label: \"Sales\" },\n { value: \"Technical\", label: \"Technical\" },\n { value: \"Other\", label: \"Other\" },\n];\n","import React, { Component, Fragment } from \"react\";\nimport {\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableBody,\n} from \"scripts/components/parts/Table\";\nimport { Tab, Address } from \"scripts/components/parts\";\nimport { Input, Checkbox, FormField, Select } from \"scripts/components/form\";\n\nimport { AppContext } from \"scripts/context/app-context\";\nimport { authenticationService } from \"scripts/_services\";\n\nimport deptOptions from \"scripts/_helpers/getDepartments\";\n\nclass DetailsForm extends Component {\n static contextType = AppContext;\n\n renderTable = () => {\n if (!this.props.equipments) return null;\n\n const { disabled, form } = this.props;\n const { equipments } = this.props;\n\n const renderHeadCheckbox = (heading, key) => {\n const id = `all-${key}`;\n\n const toggleAll = (e) => {\n const { checked } = e.target;\n\n equipments.forEach((equipment) => {\n const { machinesID } = equipment;\n const name = `machine-${machinesID}-${key}`;\n\n form.setFieldValue(name, checked);\n });\n };\n\n const allChecked = !equipments.some((equipment) => {\n const { machinesID } = equipment;\n const name = `machine-${machinesID}-${key}`;\n return !form.values[name];\n });\n\n return (\n \n {heading}\n {disabled ? null : (\n \n \n \n \n )}\n \n );\n };\n\n return (\n
\n \n \n \n \n Serial number\n \n Model\n \n Location\n \n {renderHeadCheckbox(\"Meters\", \"Meter\")}\n \n \n {renderHeadCheckbox(\"Service\", \"Service\")}\n \n \n {renderHeadCheckbox(\"Consum\", \"Consumables\")}\n \n \n {renderHeadCheckbox(\"Billing\", \"Billing\")}\n \n \n \n \n {equipments.map((equipment, idx) => {\n const { machinesID, model, address, serialNo } = equipment;\n\n const createCheckbox = (value, key) => {\n const name = `machine-${machinesID}-${key}`;\n\n // Update table default value\n // Should be moved outside, to actual formik initialisation\n form.initialValues[name] = value === \"1\";\n\n return (\n \n );\n };\n\n return (\n \n {serialNo}\n {model}\n {address}\n \n {createCheckbox(equipment.meters, \"Meter\")}\n \n \n {createCheckbox(equipment.service, \"Service\")}\n \n \n {createCheckbox(equipment.consum, \"Consumables\")}\n \n \n {createCheckbox(equipment.billing, \"Billing\")}\n \n \n );\n })}\n \n
\n
\n
\n );\n };\n\n render() {\n const { disabled, form, type, suggestions } = this.props;\n let firstNameDisabled = disabled;\n let lastNameDisabled = disabled;\n const { currentUserValue } = authenticationService;\n\n if (!currentUserValue.permissions.edit_name) {\n firstNameDisabled = true;\n lastNameDisabled = true;\n }\n\n if (type === \"add\") {\n firstNameDisabled = false;\n lastNameDisabled = false;\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 \n
\n\n
\n o.value === form.initialValues.department\n )}\n options={deptOptions}\n />\n
\n
\n\n
\n \n
\n\n {this.renderTable()}\n
\n );\n }\n}\n\nexport { DetailsForm };\n","import React, {Component} from 'react';\nimport { NavLink } from \"react-router-dom\";\n\nclass Dropdown extends Component {\n\n renderItem = (item, index) => {\n const { title, children, link, onClick, href, target } = item;\n let Tag = link ? NavLink : 'div';\n const props = {};\n \n if (link) {\n props.to = link;\n props.activeClassName = 'is-current';\n }\n\n if (href) {\n Tag = 'a'\n props.href = href;\n\n if (target) {\n props.target = target;\n }\n }\n \n return (\n
\n \n {title}\n \n { children ? \n
\n {children.map(this.renderItem)}\n
\n : ''}\n
\n );\n };\n\n render() {\n const { items } = this.props;\n\n return (\n
\n {items.map(this.renderItem)}\n
\n );\n }\n}\n\nexport {Dropdown};\n ","import React, { Component } from \"react\";\n\nclass Footer extends Component {\n render() {\n const { variation } = this.props;\n\n return (\n
\n
\n
\n \n Privacy Policy\n \n \n Terms of use\n \n
\n
\n Copyright FUJIFILM Business Innovation New Zealand Ltd 2006-2021 All\n rights reserved.\n
\n
\n
\n );\n }\n}\n\nexport { Footer };\n","import React, { Component } from \"react\";\r\nimport { Link, NavLink } from \"react-router-dom\";\r\nimport { Dropdown, Button, MobileMenu } from \"scripts/components/parts\";\r\nimport { authenticationService } from \"scripts/_services\";\r\nimport { AppContext } from \"scripts/context/app-context\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport logoImg from \"../../../images/logo.png\";\r\nimport logoImg2x from \"../../../images/logo@2x.png\";\r\n\r\nclass Header extends Component {\r\n static contextType = AppContext;\r\n\r\n state = {\r\n isMobileMenuOpen: false,\r\n };\r\n\r\n componentDidUpdate(prevProps) {\r\n /* \r\n If changed URL - for example clicked back button\r\n Close the menu\r\n */\r\n if (this.props.location !== prevProps.location) {\r\n this.setState({ isMobileMenuOpen: false });\r\n }\r\n }\r\n\r\n toggleMobileMenu = () => {\r\n const { isMobileMenuOpen } = this.state;\r\n this.setState({ isMobileMenuOpen: !isMobileMenuOpen });\r\n };\r\n\r\n closeMobileMenu = () => {\r\n this.setState({ isMobileMenuOpen: false });\r\n };\r\n\r\n renderMenu = (item, index) => {\r\n const { title, children, link } = item;\r\n let Tag = NavLink;\r\n const props = {};\r\n props.activeClassName = \"is-current\";\r\n props.to = link || \"\";\r\n\r\n if (link) {\r\n if (children) {\r\n props.onClick = (e) => {\r\n e.preventDefault();\r\n };\r\n } else {\r\n // Tag = NavLink;\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n {title}\r\n \r\n {children ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n );\r\n };\r\n\r\n render() {\r\n const { isMobileMenuOpen } = this.state;\r\n const { currentUserValue: currentUser, checkAccess } =\r\n authenticationService;\r\n\r\n const menu = [\r\n {\r\n title: \"Service\",\r\n link: \"/service-call\",\r\n children: [{ title: \"Select equipment\", link: \"/service-call\" }],\r\n },\r\n {\r\n title: \"Meter readings\",\r\n link: \"/meter-readings\",\r\n },\r\n {\r\n title: \"Accounts\",\r\n link: \"/accounts\",\r\n children: [\r\n { title: \"Our contacts\", link: \"/accounts/our-contacts\" },\r\n { title: \"Service history\", link: \"/accounts/service-history\" },\r\n {\r\n title: \"Our usage\",\r\n children: [\r\n { title: \"Unpaid invoices\", link: \"/accounts/unpaid-invoices\" },\r\n { title: \"Billed usage\", link: \"/accounts/billed-usage\" },\r\n ],\r\n },\r\n ],\r\n },\r\n\r\n {\r\n title: \"Consumables & Supplies\",\r\n link: \"/pending-order-management\",\r\n children: [\r\n {\r\n title: \"Queued Auto Replenishments\",\r\n link: \"/pending-order-management\",\r\n },\r\n {\r\n title: \"Purchase Consumables\",\r\n href: \"http://direct-fbnz.fujifilm.com\",\r\n target: \"_blank\",\r\n },\r\n {\r\n title: \"Purchase Paper & Print Supplies\",\r\n href: \"https://paperandink.co.nz\",\r\n target: \"_blank\",\r\n },\r\n {\r\n title: \"Consumable Returns Policy\",\r\n link: \"/consumable-returns-policy\",\r\n },\r\n ],\r\n },\r\n {\r\n title: \"Contact us\",\r\n link: \"/contact-us\",\r\n },\r\n ];\r\n\r\n const mobile_menu = currentUser\r\n ? menu.concat([\r\n { title: \"My details\", link: \"/my-details\" },\r\n /*{ title: \"Contact us\", link: \"/contact-us\" },*/\r\n { title: \"Log out\", link: \"/log-out\" },\r\n ])\r\n : [\r\n { title: \"Log in\", link: \"/login\" },\r\n { title: \"Forgotten details\", link: \"/forgotten-details\" },\r\n { title: \"Register new user\", link: \"/register\" },\r\n { title: \"Contact us\", link: \"/contact-us\" },\r\n ];\r\n\r\n let user_menu = [\r\n { title: \"My details\", link: \"/my-details\" },\r\n { title: \"Log out\", link: \"/log-out\" },\r\n ];\r\n\r\n // Adding switch account item if user has permissions\r\n if (checkAccess(\"switch_accounts\")) {\r\n user_menu.splice(1, 0, {\r\n title: \"Switch accounts\",\r\n link: \"/switch-accounts\",\r\n });\r\n\r\n mobile_menu.splice(mobile_menu.length - 2, 0, {\r\n title: \"Switch accounts\",\r\n link: \"/switch-accounts\",\r\n });\r\n }\r\n\r\n const logo = (\r\n \"Logo\"\r\n );\r\n\r\n return (\r\n \r\n
\r\n
\r\n {currentUser ? (\r\n {logo}\r\n ) : (\r\n \r\n {logo}\r\n \r\n )}\r\n
\r\n\r\n {currentUser && (\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 withRouter(Header);\r\n","import React, { Component } from \"react\";\nimport { Button, Address } from \"scripts/components/parts\";\n\nclass LocationField extends Component {\n state = {\n isEditing: false,\n selectedOption: null,\n };\n\n select = (selectedOption) => {\n this.setState({ selectedOption });\n };\n\n edit = (e) => {\n e.stopPropagation();\n this.setState({ isEditing: true });\n };\n\n unedit = () => {\n this.setState({ isEditing: false });\n };\n\n save = () => {\n if (this.state.selectedOption === null) return;\n const { onSubmit } = this.props;\n\n onSubmit(this.state.selectedOption).then(() => {\n this.setState({ isEditing: false });\n });\n };\n\n render() {\n const { location, small } = this.props;\n const { isEditing } = this.state;\n const { fromEmail } = this.props;\n\n return (\n
\n
{location}
\n {fromEmail ? null : (\n
\n Change location\n
\n )}\n e.stopPropagation()}\n >\n
\n \n
\n \n );\n }\n}\n\nexport { LocationField };\n","import React, {Component} from 'react';\n\nclass NotificationBar extends Component {\n\n render() {\n const { props, isOpen } = this.props;\n const { content, modifier } = props;\n\n if (isOpen) {\n return (\n
\n
{content}
\n
\n );\n } else {\n return null;\n }\n }\n}\n\nexport {NotificationBar};\n ","import React, { Component } from \"react\";\n\nclass Panel extends Component {\n render() {\n const {\n children,\n title,\n text,\n bottom,\n veryBottom,\n className,\n onClose,\n } = this.props;\n\n return (\n \n {onClose ? (\n
\n ) : (\n \"\"\n )}\n
\n {title ? (\n \n ) : (\n \"\"\n )}\n {text ?
{text}
: \"\"}\n
{children}
\n {bottom ?
{bottom}
: \"\"}\n {veryBottom ? (\n
{veryBottom}
\n ) : (\n \"\"\n )}\n
\n \n );\n }\n}\n\nexport { Panel };\n","import React, {Component} from 'react';\nimport { Button } from \"scripts/components/parts\";\n\nclass PanelNotification extends Component {\n render() {\n const { onClose, text, className } = this.props;\n \n return (\n
\n
\n { text ? \n
{text}
\n : '' }\n
\n \n
\n
\n
\n );\n }\n}\n\nexport {PanelNotification};\n ","import React, { Component } from \"react\";\n\nclass Search extends Component {\n state = {\n value: \"\",\n };\n\n handleChange = (e) => {\n const { onChange } = this.props;\n const value = e.target.value.toString();\n\n this.setState({ value });\n\n if (onChange) onChange(value);\n };\n\n search = () => {\n const { onSearch } = this.props;\n const { value } = this.state;\n\n if (onSearch) onSearch(value);\n };\n\n handleKeyPress = (e) => {\n if (e.key === \"Enter\") {\n this.search();\n }\n };\n\n render() {\n const { value } = this.state;\n const { pre, placeholder, error, errorPosition, fieldWidth } = this.props;\n\n return (\n
\n
{pre}
\n
\n {error ? (\n \n {error.message}\n
\n ) : null}\n
\n \n
\n
\n
\n \n );\n }\n}\n\nexport { Search };\n","import React, { Component } from \"react\";\n\nclass StrengthMeter extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n strength: 0,\n message: \"\",\n };\n }\n\n componentDidMount() {\n this.check();\n }\n\n componentDidUpdate(prevProps) {\n const { password } = this.props;\n if (password !== prevProps.password) {\n this.check();\n }\n }\n\n check = () => {\n const { password } = this.props;\n let strength = 0;\n let message = \"Weak\";\n\n if (password.length >= 6) {\n strength = 1;\n\n if (/(.*[0-9]){2}/.test(password)) {\n strength = 2;\n message = \"Getting there\";\n\n if (password.length >= 9) {\n strength = 3;\n message = \"Ka pai - Good\";\n }\n\n if (\n password.length >= 13 &&\n /[-!$%^&*()_+|~=`{}[\\]:\";'<>?,./]/.test(password)\n ) {\n strength = 4;\n message = \"Ka mau te wehi - Fantastic!\";\n }\n }\n }\n\n this.setState({\n strength,\n message,\n });\n };\n\n render() {\n const { strength, message } = this.state;\n\n return (\n
\n
\n
{message}
\n \n );\n }\n}\n\nexport { StrengthMeter };\n","import React, { Component } from \"react\";\n\nclass Tab extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isOpen: false,\n };\n }\n\n componentDidMount() {\n const { isOpen } = this.props;\n if (isOpen) {\n this.setState({ isOpen: true });\n }\n }\n\n toggle = () => {\n const { isOpen } = this.state;\n this.setState({ isOpen: !isOpen });\n };\n\n render() {\n const { title, children, modifier, content } = this.props;\n const { isOpen } = this.state;\n\n return (\n \n
\n
{title}
\n
{content}
\n
\n
\n
{children}
\n
\n );\n }\n}\n\nexport { Tab };\n","let inst = null;\n\nfunction w(){\n if(!inst) inst = new W();\n return inst;\n}\n\nclass W {\n h;\n w;\n\n static instance(){\n if(this._instance) return this._instance;\n return this._instance = new this();\n }\n\n constructor(){\n this.tick();\n // this.tick = debounce(this.tick, 250);\n window.addEventListener(\"resize\", this.tick);\n }\n\n tick = () => {\n this.h = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n\n this.w = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n}\n\nexport { W, w };","import React, { Component } from \"react\";\nimport { w } from \"scripts/utils/w\";\nimport { isMobile } from \"scripts/utils/browser-detect\";\n\n/*\nPossible props:\n\n\n- size: 'small', 'normal',\n- className: String,\n- isVisible: optional prop, to determine the conrol of hide/show\n- children - content of tooltip\n*/\n\nclass Tooltip extends Component {\n state = {\n isVisible: false,\n pos: \"right\",\n };\n\n constructor(props) {\n super(props);\n this.w = w();\n this.contentRef = React.createRef();\n }\n\n checkPosition = () => {\n // const rect = this.contentRef.current.getBoundingClientRect();\n // console.log(rect.left, rect.right);\n // if (rect.left < 0 || rect.right > this.w.w) {\n // this.setState({ pos: \"top\" });\n // const style = {};\n // const arrowStyle = {};\n // if (rect.left < 0) {\n // const left = Math.round(Math.abs(rect.left) + 15);\n // style.transform = `translate3d(${left}px, 0, 0)`;\n // arrowStyle.transform = `translate3d(${-left}px, 0, 0)`;\n // }\n // if (rect.right > this.w.w) {\n // const left = Math.round(Math.abs(rect.left) - 15);\n // style.transform = `translate3d(${-left}px, 0, 0)`;\n // arrowStyle.transform = `translate3d(${left - 30 - 20 - 9}px, 0, 0)`;\n // }\n // this.setState({ style, arrowStyle });\n // } else {\n // this.setState({ pos: \"right\" });\n // }\n };\n\n componentDidUpdate(prevProps) {\n const { showTooltip } = this.props;\n // Typical usage (don't forget to compare props):\n if (showTooltip !== prevProps.showTooltip) {\n if (showTooltip) this.show();\n else this.hide();\n }\n }\n\n toggle = () => {\n const { isVisible } = this.state;\n\n if (isVisible) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n show = () => {\n const { isVisible } = this.state;\n if (isVisible) return;\n\n this.checkPosition();\n this.setState({ isVisible: true });\n };\n\n hide = () => {\n const { isVisible } = this.state;\n if (!isVisible) return;\n\n // Remove styles, so can detect tooltip position again\n this.setState({ isVisible: false, style: {}, arrowStyle: {} });\n };\n\n render() {\n let { pos, isVisible } = this.state;\n let {\n children,\n className,\n size,\n noIcon,\n showTooltip,\n align,\n ...rest\n } = this.props;\n\n let events = {};\n\n if (isMobile) {\n events.onClick = this.toggle;\n } else {\n events.onMouseEnter = this.show;\n events.onMouseLeave = this.hide;\n }\n\n let classes = [];\n\n if (className) classes.push(className);\n if (noIcon) classes.push(\"tooltip--no-icon\");\n if (isMobile) classes.push(\"tooltip--mobile\");\n if (pos) classes.push(`tooltip--${pos}`);\n if (align) classes.push(`tooltip--${pos}`);\n classes.push(`tooltip--${size || \"normal\"}`);\n classes.push(`tooltip--align-${align || \"right\"}`);\n\n return (\n
\n {!noIcon ?
: \"\"}\n \n
\n {children}\n
\n
\n
\n );\n }\n}\n\nexport { Tooltip };\n","import React, {Component} from 'react';\n\nclass Loading extends Component {\n\n render() {\n const { isOpen } = this.props;\n let ticks = [];\n for (let i = 0; i < 12; i++) {\n ticks.push(); \n }\n\n if (isOpen) {\n return (\n
\n
\n {ticks.map(t => t)}\n
\n
\n );\n } else {\n return null;\n }\n }\n}\n\nexport {Loading};\n ","import React, { Component } from \"react\";\nimport { NavLink } from \"react-router-dom\";\nimport { AppContext } from \"scripts/context/app-context\";\n\nclass MobileMenu extends Component {\n static contextType = AppContext;\n\n state = {\n idsOpen: [],\n };\n\n toggleLevel = (ids, level) => {\n const { idsOpen } = this.state;\n\n // If already open -> then close\n if (idsOpen[level] === ids[level]) {\n // console.log('same', idsOpen, level, idsOpen.slice(0, level))\n this.setState({ idsOpen: idsOpen.slice(0, level) });\n } else {\n this.setState({ idsOpen: ids });\n }\n };\n\n renderLevel = (item, index, level, parent_ids) => {\n const { idsOpen } = this.state;\n const { toggle } = this.props;\n const { title, children, link, target, href } = item;\n const ids = parent_ids.concat([index]);\n let Tag = link ? NavLink : \"div\";\n const props = {};\n const isOpen = idsOpen[level] === index;\n\n if (link) {\n props.to = link;\n props.onClick = toggle;\n props.activeClassName = \"is-current\";\n }\n\n if (href) {\n Tag = \"a\";\n props.href = href;\n\n if (target) {\n props.target = target;\n }\n }\n\n if (children) {\n props.onClick = (e) => {\n e.preventDefault();\n this.toggleLevel(ids, level);\n };\n }\n\n return (\n \n \n {title}\n \n {children ? (\n
\n {children.map((i, index) =>\n this.renderLevel(i, index, level + 1, ids)\n )}\n
\n ) : (\n \"\"\n )}\n \n );\n };\n\n render() {\n const { menu } = this.props;\n\n return (\n
\n {menu.map((item, index) => this.renderLevel(item, index, 0, []))}\n
\n );\n }\n}\n\nexport { MobileMenu };\n","import React, { Component } from \"react\";\nimport { default as SelectPlugin } from \"react-select\";\nimport { authenticationService } from \"scripts/_services\";\n\nclass Address extends Component {\n state = {\n inputValue: \"\",\n selectedOption: null,\n };\n\n componentDidMount() {\n const { form, name } = this.props;\n if (form) {\n const value = form.initialValues[name];\n\n if (value && value !== \"\") {\n this.setState({ selectedOption: { value, label: value } });\n }\n }\n }\n\n handleChange = (selectedOption) => {\n const { name, form, onSelect } = this.props;\n this.setState({ selectedOption });\n\n // If not inside a form, don't\n if (form) {\n // Hook to update form value\n const value = selectedOption ? selectedOption.value : null;\n form.setFieldValue(name, value);\n }\n\n if (onSelect) {\n onSelect(selectedOption);\n }\n };\n\n handleInputChange = (newValue) => {\n const inputValue = newValue; //.replace(/\\W/g, '');\n this.setState({ inputValue });\n return inputValue;\n };\n\n promiseOptions = (inputValue) => {\n // new Promise((resolve) => {\n // if (inputValue === \"\") {\n // resolve([]);\n // return;\n // }\n // addressService.getAll().then(\n // ({ addresses }) => {\n // console.log(\"addresses\", addresses);\n // resolve(\n // addresses.map(({ address }) => {\n // return { value: address, label: address };\n // })\n // );\n // },\n // (error) => {\n // resolve([]);\n // }\n // );\n // });\n };\n\n handleBlur = () => {\n const { form, name, onBlur } = this.props;\n // this is going to call setFieldTouched and manually update touched.topcis\n if (form) form.setFieldTouched(name, true);\n if (onBlur) onBlur();\n };\n\n render() {\n const { form, onSelect, onBlur, name, modifier, options, small, ...rest } =\n this.props;\n const { selectedOption, inputValue } = this.state;\n\n let addresses;\n\n if (!options) {\n addresses =\n authenticationService?.currentUserValue?.client?.addresses.map((a) => {\n return {\n value: a.clientNo,\n label: a.address,\n };\n });\n }\n\n // console.log(options, addresses);\n\n return (\n null,\n IndicatorSeparator: () => null,\n }}\n noOptionsMessage={() =>\n inputValue === \"\" ? null : \"No addresses were found.\"\n }\n onInputChange={this.handleInputChange}\n />\n );\n }\n}\n\nexport { Address };\n","import React, { Component } from \"react\";\nimport queryString from \"query-string\";\n\nclass MultiStep extends Component {\n // same as stepId\n // Used to allow url change, before state was updated\n currentId = 0;\n\n state = {\n stepId: 0, // current last finished step\n };\n\n componentDidMount() {\n this.checkUrl();\n }\n\n componentDidUpdate(prevProps) {\n // Listen to url change\n if (this.props.location !== prevProps.location) {\n // console.log(\"Url changed\", this.props.location, prevProps.location);\n this.checkUrl();\n }\n }\n\n checkUrl() {\n const { steps, location } = this.props;\n const { currentId } = this;\n const { step } = queryString.parse(location.search);\n const index = steps.findIndex((s) => s.param === step);\n\n // console.log(\"CheckUrl\", currentId);\n\n // if has step\n if (step) {\n // console.log(\"Exists: step\", step);\n\n // Does it exists in array\n if (index < 0) {\n // if not, redirect to current\n // console.log(\"Redirect / replace: step is not part of array\", step);\n this.props.history.replace(this.getStepUrl(currentId));\n } else {\n // console.log(\"Valid step.\");\n\n if (index === currentId) {\n // console.log(\"Current step. do nothing\");\n } else if (index < currentId) {\n // console.log(\"Previous step. change state\");\n\n // go to that step\n this.moveTo(index);\n } else {\n // console.log(\"Next step. Update url to current\");\n this.props.history.replace(this.getStepUrl(currentId));\n }\n }\n } else {\n // if went to url with no params - i.e. first step\n // switch to that step, if not already\n // console.log(\"Not defined: step - landed on first step\", step);\n this.moveTo(0);\n }\n }\n\n moveTo = (id) => {\n this.setState({ stepId: id });\n this.currentId = id;\n window.scrollTo(0, 0);\n };\n\n getStepUrl = (stepId) => {\n const { steps, location } = this.props;\n const search = queryString.parse(location.search);\n\n if (stepId === 0) {\n // If first step, delete step param from search string\n delete search.step;\n } else {\n // otherwise assign that step\n search.step = steps[stepId].param;\n }\n\n const stringified = queryString.stringify(search);\n location.search = stringified;\n // console.log(location.search);\n\n return location;\n };\n\n finishStep = (data) => {\n const { stepId } = this.state;\n const { onFinishStep } = this.props;\n if (onFinishStep) onFinishStep(data, stepId);\n this.nextStep();\n };\n\n nextStep = () => {\n const { steps } = this.props;\n const { stepId } = this.state;\n\n if (stepId < steps.length - 1) {\n this.goToStep(stepId + 1);\n }\n };\n\n prevStep = () => {\n const { stepId } = this.state;\n\n if (stepId > 0) {\n this.goToStep(stepId - 1);\n }\n };\n\n goToStep = (stepId) => {\n this.moveTo(stepId);\n this.props.history.push(this.getStepUrl(stepId));\n };\n\n render() {\n const { steps, ...rest } = this.props;\n const { stepId } = this.state;\n const { finishStep, prevStep, nextStep, goToStep } = this;\n\n const Component = steps[stepId].component;\n\n const injectedProps = { finishStep, prevStep, nextStep, goToStep, stepId };\n\n return ;\n }\n}\n\nexport { MultiStep };\n","import React, { Component } from \"react\";\n\nclass StepsNav extends Component {\n renderItem = (item, index) => {\n const { currentIndex } = this.props;\n const { title, onClick } = item;\n const isCurrent = index === currentIndex;\n\n const classes = [\"steps__item\"];\n\n if (!isCurrent && onClick) classes.push(\"is-clickable\");\n if (isCurrent) classes.push(\"is-current-step\");\n\n return (\n
\n {index + 1} {title}\n
\n );\n };\n\n render() {\n const { items } = this.props;\n\n return
{items.map(this.renderItem)}
;\n }\n}\n\nexport { StepsNav };\n","import React, { Component } from \"react\";\n\nclass Reveal extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isOpen: false,\n };\n }\n\n componentDidMount() {\n const { isOpen } = this.props;\n if (isOpen) {\n this.setState({ isOpen: true });\n }\n }\n\n toggle = () => {\n const { isOpen } = this.state;\n this.setState({ isOpen: !isOpen });\n };\n\n render() {\n const { children } = this.props;\n const { isOpen } = this.state;\n\n return (\n {\n if (!isOpen) {\n this.toggle();\n }\n }}\n >\n {children}\n
\n \n );\n }\n}\n\nexport { Reveal };\n","import React, { Component } from \"react\";\n\nclass LinkGroup extends Component {\n render() {\n const { children } = this.props;\n\n return
{children}
;\n }\n}\n\nexport { LinkGroup };\n","import React, { Component } from \"react\";\n\nclass ButtonGroup extends Component {\n render() {\n const { children } = this.props;\n\n return
{children}
;\n }\n}\n\nexport { ButtonGroup };\n","import React, { Component } from \"react\";\n\nconst items = [\n {\n icon: require(\"../../../images/big-icon/icon-printer.svg\"),\n title: \"MANAGE YOUR ACCOUNT\",\n },\n {\n icon: require(\"../../../images/big-icon/icon-meter.svg\"),\n title: \"SUBMIT A METER READING\",\n },\n {\n icon: require(\"../../../images/big-icon/icon-tools.svg\"),\n title: \"LOG A SERVICE CALL\",\n },\n {\n icon: require(\"../../../images/big-icon/icon-ink.svg\"),\n title: \"ORDER CONSUMABLES\",\n },\n];\n\nclass WelcomePanel extends Component {\n renderItem = ({ icon, title }) => {\n return (\n
\n
\n {title}\n
\n \n
\n );\n };\n\n render() {\n return (\n
\n
\n
\n

Welcome to MyAccount

\n

\n Manage all your printing devices, enter meter readings, order consumables, and more from our easy-to-use web portal.\n

\n
\n\n
\n {items.map(this.renderItem)}\n
\n\n
\n
Need to register?
\n
\n With MyAccount, you can check your usage, update billing details, order toner and more. If you need to create an account, click ‘Register New User’ or call our Contact Centre on 0800 493 769.\n
\n
\n
\n
\n );\n }\n}\n\nexport { WelcomePanel };\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nclass Card extends Component {\n render() {\n const { title, icon, to } = this.props;\n\n return (\n \n
{icon}
\n \n \n );\n }\n}\n\nexport { Card };\n","import React, { Component } from \"react\";\n\nclass CardExternal extends Component {\n render() {\n const { title, icon, to } = this.props;\n\n return (\n \n
{icon}
\n \n
\n );\n }\n}\n\nexport { CardExternal };","import React, { Component } from \"react\";\nimport { withRouter } from \"react-router-dom\";\n\nclass ScrollToTop extends Component {\n componentDidUpdate(prevProps) {\n if (this.props.location !== prevProps.location) {\n window.scrollTo(0, 0);\n }\n }\n\n render() {\n return ;\n }\n}\n\nexport default withRouter(ScrollToTop);\n","import React, { Component } from \"react\";\nimport {\n Footer,\n // Breadcrumbs\n} from \"scripts/components/parts\";\nimport { Breadcrumbs } from \"react-breadcrumbs-dynamic\";\nimport { Link } from \"react-router-dom\";\n\nclass LayoutPage extends Component {\n render() {\n const { children, className, title, control, action, message, grey } =\n this.props;\n\n return (\n \n
\n
\n {/*
\n \n \"\"\n \n
*/}\n\n
\n
\n {/* */}\n \n
\n\n {title || control ? (\n
\n
{title}
\n
{control}
\n
\n ) : null}\n\n
\n {message ? (\n
{message}
\n ) : (\n \"\"\n )}\n {children}\n {action ? (\n
{action}
\n ) : (\n \"\"\n )}\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n );\n }\n}\n\nexport { LayoutPage };\n","import React, { Component } from \"react\";\nimport { Footer, WelcomePanel } from \"scripts/components/parts\";\n\nclass LayoutPanel extends Component {\n render() {\n const { children, className } = this.props;\n\n return (\n
\n
\n
\n \n
\n
{children}
\n
\n
\n
\n
\n\n
\n
\n );\n }\n}\n\nexport { LayoutPanel };\n","import React, { Component } from \"react\";\n\nclass IconInk extends Component {\n render() {\n const { color } = this.props;\n\n const fill = color || `#fff`;\n\n return (\n \n \n \n \n \n \n \n );\n }\n}\n\nexport { IconInk };\n","import React, { Component } from \"react\";\n\nclass IconPrinter extends Component {\n render() {\n const { color } = this.props;\n\n const fill = color || `#fff`;\n\n return (\n \n \n \n );\n }\n}\n\nexport { IconPrinter };\n","import React, { Component } from \"react\";\n\nclass IconTools extends Component {\n render() {\n const { color } = this.props;\n\n const fill = color || `#fff`;\n\n return (\n \n \n \n \n );\n }\n}\n\nexport { IconTools };\n","import React, { Component } from \"react\";\n\nclass IconMeter extends Component {\n render() {\n const { color } = this.props;\n\n const fill = color || `#fff`;\n\n return (\n \n \n \n \n );\n }\n}\n\nexport { IconMeter };\n","export const colors = {\n emerald: `#01916d`,\n};\n","import React, { Component } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport { authenticationService } from \"scripts/_services\";\nimport { Card } from \"scripts/components/parts\";\nimport { CardExternal } from \"scripts/components/parts\";\nimport { IconInk } from \"scripts/components/parts/Icons/IconInk\";\nimport { IconPrinter } from \"scripts/components/parts/Icons/IconPrinter\";\nimport { IconTools } from \"scripts/components/parts/Icons/IconTools\";\nimport { IconMeter } from \"scripts/components/parts/Icons/IconMeter\";\nimport { colors } from \"scripts/vars/colors\";\n\nclass Home extends Component {\n render() {\n const { currentUserValue: currentUser } = authenticationService;\n\n return (\n \n
\n

\n Welcome to MyAccount {currentUser.firstName}\n

\n
({currentUser.client.name})
\n {/*
\n

MyAccount is a central place to:

\n
    \n
  • \n Change details for your account, service, or billing contacts\n
  • \n
  • Update location details for your Fujifilm equipment
  • \n
  • Enter meter readings
  • \n
  • Log service calls
  • \n
\n
*/}\n
\n }\n title=\"SERVICE\"\n />\n }\n title=\"METER READINGS\"\n />\n }\n title=\"ACCOUNTS\"\n />\n }\n title=\"CONSUMABLES\"\n />\n }\n title=\"SUPPLIES\"\n />\n
\n\n
\n \n \"\"\n \n
\n\n
\n
\n

Your Feedback Matters

\n

\n We’re always keen to hear from our customers, so please give us\n your feedback through our Voice of Customer portal{\" \"}\n \n here\n \n .\n

\n
\n\n
\n

Courier Service Delays

\n

\n Most national courier services are currently running behind\n schedule, so be sure to order any consumables like toner a few\n days in advance.\n

\n
\n
\n
\n
\n );\n }\n}\n\nexport default Home;\n","import React, { Component, Fragment } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Formik, Form } from \"formik\";\nimport * as Yup from \"yup\";\nimport { AppContext } from \"scripts/context/app-context\";\n\nimport { Panel, Button, ButtonGroup } from \"scripts/components/parts\";\nimport { LayoutPanel } from \"scripts/components/layouts\";\nimport { Input, isInitialValid } from \"scripts/components/form\";\nimport { authenticationService } from \"scripts/_services\";\nimport { getError } from \"scripts/_helpers\";\n\nclass Login extends Component {\n static contextType = AppContext;\n\n constructor(props) {\n super(props);\n\n // redirect to home if already logged in\n if (authenticationService.currentUserValue) {\n this.props.history.push(\"/\");\n }\n\n this.state = {\n errorCount: 0,\n };\n }\n\n renderForm = (props) => {\n const { status, isValid } = props;\n\n const isFailed = status && !status.success;\n\n return (\n
\n
\n \n
\n
\n \n
\n\n {status &&
{status.message}
}\n\n
\n \n \n \n \n
\n
\n );\n };\n\n handleSubmit = async (\n { username, password, startPage },\n { setStatus, setErrors, setSubmitting, setFieldValue, setTouched }\n ) => {\n const { showLoading, hideLoading } = this.context.loading;\n const { errorCount } = this.state;\n const { bar } = this.context;\n\n showLoading();\n setStatus();\n\n try {\n await authenticationService.login(username, password);\n // const { from } = this.props.location.state || { from: { pathname: \"/\" } };\n hideLoading();\n this.props.history.push({ pathname: \"/\" });\n // setStatus({success: true})\n } catch (err) {\n hideLoading();\n setSubmitting(false);\n\n setStatus({\n success: false,\n message: getError(err, \"Username or password is incorrect\"),\n });\n\n setFieldValue(\"password\", \"\");\n setTouched([\"password\"], false);\n\n // if (disabled) {\n // this.props.history.push(\"/account-disabled\");\n // return null;\n // }\n\n bar.showBar(\n {\n content: getError(err, \"Username or password is incorrect\"),\n modifier: \"red\",\n },\n 8000\n );\n\n // If error is 5 or more, trigger help message\n this.setState({ errorCount: errorCount + 1 });\n if (errorCount >= 4) {\n this.triggerHelpMsg();\n }\n }\n };\n\n triggerHelpMsg = () => {\n const { openModal, closeModal } = this.context.modal;\n const title = \"Need help?\";\n const text = (\n \n

You've entered incorrect details 5 times.

\n \n
\n );\n\n const bottom = (\n

\n \n I don't have an account yet\n \n

\n );\n\n const children = ;\n\n openModal(children);\n };\n\n render() {\n const title = \"Log in\";\n const text =

Login to your MyAccount

Please be aware Site Maintenance is scheduled from 6am Thursday 7 November until 6am Monday 11 November.

Any orders placed during this time will be held for processing until week commencing Monday 11 November.

For any orders or service requests you may require during the scheduled maintenance period, please consider submitting these before Thursday 7 November.

;\n const bottom = (\n

\n Did you forget your log in details?\n

\n );\n\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default Login;\n","import React, { Component, Fragment } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Formik, Form } from \"formik\";\nimport * as Yup from \"yup\";\nimport { registrationService } from \"scripts/_services\";\nimport { AppContext } from \"scripts/context/app-context\";\n\nimport { LayoutPanel } from \"scripts/components/layouts\";\nimport { Button, Panel } from \"scripts/components/parts\";\nimport { Input, isInitialValid } from \"scripts/components/form\";\n\nclass CheckAccount extends Component {\n static contextType = AppContext;\n\n renderForm = (props) => {\n const { isValid, status } = props;\n\n return (\n
\n
\n \n

\n You can locate your account number\n on a recent invoice.\n

\n

\n For further assistance please\n call 0800 493 769.\n

\n \n }\n />\n
\n
\n \n

You can locate your serial number on your machine.

\n

\n For further assistance please\n call 0800 493 769.\n

\n \n }\n />\n
\n\n {status &&
{status}
}\n\n
\n \n
\n
\n );\n };\n\n handleSubmit = (\n { accountNumber, serialNumber },\n { setStatus, setSubmitting }\n ) => {\n const { showLoading, hideLoading } = this.context.loading;\n const { data } = this.props;\n const { finishStep } = this.props.injectedProps;\n\n showLoading();\n setStatus();\n\n registrationService.checkAccount(accountNumber, serialNumber).then(\n (response) => {\n const newData = JSON.parse(JSON.stringify(data));\n\n newData.tradeName = response.tradeName;\n newData.AccountNum = accountNumber;\n newData.SerialNo = serialNumber;\n hideLoading();\n // Finish this step of registration, update with new data\n finishStep(newData);\n },\n (error) => {\n hideLoading();\n setSubmitting(false);\n setStatus(`Account or serial number doesn't exist`);\n }\n );\n };\n\n render() {\n const { accountNumber, serialNumber } = this.props.data;\n const title = \"Register\";\n const text = (\n

\n Welcome to our new-look MyAccount.\n
\n Are you already a user?\n

\n );\n\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default CheckAccount;\n","import React, { Component, Fragment } from \"react\";\nimport { Formik, Form } from \"formik\";\nimport * as Yup from \"yup\";\n\nimport { LayoutPanel } from \"scripts/components/layouts\";\nimport { Button, Panel, Address } from \"scripts/components/parts\";\nimport {\n isInitialValid,\n Input,\n FormField,\n Select,\n} from \"scripts/components/form\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport deptOptions from \"scripts/_helpers/getDepartments\";\nimport { addressService } from \"scripts/_services\";\n\nclass Welcome extends Component {\n static contextType = AppContext;\n\n state = {\n addresses: null,\n };\n\n async componentDidMount() {\n const { showLoading, hideLoading } = this.context.loading;\n const { AccountNum, SerialNo } = this.props.data;\n\n showLoading();\n\n try {\n const { addresses } = await addressService.forRegistration({\n AccountNum,\n SerialNum: SerialNo,\n });\n\n this.setState({ addresses });\n hideLoading();\n } catch (err) {\n hideLoading();\n console.log(\"error\", err);\n }\n }\n\n renderForm = (props) => {\n const { isValid } = props;\n\n const addresses = this.state?.addresses?.map((a) => {\n return {\n value: a.clientNo,\n label: a.address,\n };\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 o.value === props.initialValues.department\n )}\n options={deptOptions}\n />\n
\n\n
\n \n \n \n
\n\n
\n \n
\n
\n );\n };\n\n handleSubmit = (fields, { setStatus, setSubmitting }) => {\n const { data } = this.props;\n const { finishStep } = this.props.injectedProps;\n\n const newData = JSON.parse(JSON.stringify(data));\n newData.FirstName = fields.firstName;\n newData.LastName = fields.lastName;\n newData.Email = fields.email;\n newData.Phone = fields.phone;\n newData.JobTitle = fields.jobTitle;\n newData.Department = fields.department;\n newData.AddressKey = fields.address;\n\n finishStep(newData);\n };\n\n render() {\n const { data } = this.props;\n const { firstName, lastName, email } = this.props.data;\n const title = \"Welcome!\";\n const text = (\n \n

\n We have you recorded as a customer from\n
\n {data.tradeName}\n

\n

If this is incorrect please call 0800 493 769.

\n
\n );\n\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default Welcome;\n","import React, { Component } from \"react\";\nimport { Formik, Form } from \"formik\";\nimport * as Yup from \"yup\";\nimport { registrationService } from \"scripts/_services\";\n\nimport { LayoutPanel } from \"scripts/components/layouts\";\nimport { Button, Panel } from \"scripts/components/parts\";\nimport { isInitialValid, Input } from \"scripts/components/form\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { getError } from \"scripts/_helpers\";\n\nclass LoginDetails extends Component {\n static contextType = AppContext;\n\n state = {\n isTaken: false,\n };\n\n renderForm = (props) => {\n const { status, isValid } = props;\n\n return (\n
\n
\n \n
\n
\n \n
\n\n {status &&
{status}
}\n\n
\n \n
\n
\n );\n };\n\n handleSubmit = (\n { userId, password },\n { setStatus, setSubmitting, validateForm }\n ) => {\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n const { data } = this.props;\n const { finishStep } = this.props.injectedProps;\n const newData = JSON.parse(JSON.stringify(data));\n\n // Add new details to dataObj\n newData.UserName = userId;\n newData.Password = password;\n\n showLoading();\n setStatus();\n\n registrationService.register(newData).then(\n (data) => {\n hideLoading();\n // If succedful, redirect to login, show succes message\n // history.push(\"/login\");\n\n finishStep(newData);\n const content = `Please check your email to activate your account.`;\n const props = { content };\n\n bar.showBar(props, 8000);\n },\n (error) => {\n console.log(\"error\", error);\n hideLoading();\n setSubmitting(false);\n\n if (error.taken) {\n this.setState({ isTaken: userId });\n validateForm();\n } else {\n setStatus(getError(error));\n }\n }\n );\n };\n\n render() {\n const { data } = this.props;\n\n const title = \"Create log in\";\n const text = (\n

\n You're nearly registered, {data.FirstName.trim()}!
\n These details are how you'll log in next time.\n

\n );\n\n return (\n \n \n {\n // console.log('Check taken', this.state.isTaken);\n return value !== this.state.isTaken;\n }),\n password: Yup.string()\n .required(\"Password is required\")\n .min(6, \"Minimum 6 characters\")\n .max(15, \"Maximum 15 characters\")\n .matches(/(.*[0-9]){2}/, { message: \"At least 2 numerals\" })\n .matches(/(.*[a-z]){2}/, { message: \"At least 2 letters\" }),\n })}\n onSubmit={this.handleSubmit}\n children={this.renderForm}\n />\n \n \n );\n }\n}\n\nexport default LoginDetails;\n","import React, { Component } from \"react\";\n\nimport { LayoutPanel } from \"scripts/components/layouts\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { Button, Panel } from \"scripts/components/parts\";\n\nclass EmailSent extends Component {\n static contextType = AppContext;\n\n render() {\n const { data } = this.props;\n\n const title = \"Email sent\";\n const text = (\n

\n Please check your email ({data.Email}) to activate your account.\n

\n );\n\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default EmailSent;\n","import React, { Component } from \"react\";\n\nimport CheckAccount from \"./CheckAccount\";\nimport Welcome from \"./Welcome\";\nimport LoginDetails from \"./LoginDetails\";\nimport EmailSent from \"./EmailSent\";\nimport { MultiStep } from \"scripts/components/parts\";\n\nconst steps = [\n { param: \"\", title: \"Check account\", component: CheckAccount },\n { param: \"welcome\", title: \"Welcome\", component: Welcome },\n {\n param: \"login-details\",\n title: \"Create log in\",\n component: LoginDetails,\n },\n {\n param: \"email-sent\",\n title: \"Email sent\",\n component: EmailSent,\n },\n];\n\nclass Register extends Component {\n state = {\n data: {},\n };\n\n saveData = (data) => {\n this.setState({ data });\n };\n\n render() {\n let { data } = this.state;\n\n return (\n \n );\n }\n}\n\nexport default Register;\n","import React, { Component } from \"react\";\nimport * as Yup from \"yup\";\nimport { Link } from \"react-router-dom\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { Formik, Form } from \"formik\";\nimport { registrationService } from \"scripts/_services\";\nimport { getError } from \"scripts/_helpers\";\n\nimport { LayoutPanel } from \"scripts/components/layouts\";\nimport { Panel, Button } from \"scripts/components/parts\";\nimport { isInitialValid, Input } from \"scripts/components/form\";\n\nclass ForgottenDetails extends Component {\n static contextType = AppContext;\n\n renderForm = (props) => {\n const { status, isValid } = props;\n\n return (\n
\n
\n \n
\n\n {status &&
{status}
}\n\n
\n \n
\n
\n );\n };\n\n handleSubmit = ({ email }, { setStatus, setSubmitting, resetForm }) => {\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n\n showLoading();\n setStatus();\n\n registrationService.forgottenPassword(email).then(\n (data) => {\n hideLoading();\n // If succedful show succes message\n const content = `An email has been sent to you with a temporary link.`;\n const props = { content };\n\n bar.showBar(props);\n\n resetForm();\n },\n (error) => {\n hideLoading();\n setSubmitting(false);\n setStatus(getError(error));\n }\n );\n };\n\n render() {\n const title = \"Forgotten
details\";\n const text = (\n

\n If you’ve forgotten your\n
\n Username or password, we will send you a temporary link to reset it.\n

\n );\n const bottom = (\n

\n Return to log in\n

\n );\n\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default ForgottenDetails;\n","import React, { Component, Fragment } from \"react\";\nimport { Panel} from \"scripts/components/parts\";\nimport { Link } from \"react-router-dom\";\nimport { LayoutPanel } from \"scripts/components/layouts\";\nimport { authenticationService } from 'scripts/_services';\n\nclass ContactUs extends Component {\n\n componentDidMount() {\n const currentUser = authenticationService.currentUserValue;\n \n if (currentUser) {\n authenticationService.refresh();\n }\n }\n \n back = (e) => {\n e.preventDefault();\n // console.log(this.props.location, this.props.history);\n // const { from } = this.props.location.state || { from: { pathname: \"/\" } };\n // this.props.history.push(from);\n this.props.history.goBack();\n };\n\n render() {\n const title = 'Contact us';\n const text = (\n \n

\n Please call 0800 493 769 or{\" \"}
\n Email us\n

\n
\n );\n\n const veryBottom = (\n

\n Back\n

\n );\n\n return (\n \n \n \n );\n }\n}\n\nexport default ContactUs;\n","import React, { Component, Fragment } from \"react\";\n\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport { Tab, Button, LocationField, Search } from \"scripts/components/parts\";\nimport { Select } from \"scripts/components/form\";\nimport { isMobile } from \"scripts/utils/browser-detect\";\nimport {\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableBody,\n} from \"scripts/components/parts/Table\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { equipmentService } from \"scripts/_services\";\n\nclass Edit extends Component {\n static contextType = AppContext;\n\n state = {\n searchValue: \"\",\n meterTypeFilter: \"\",\n };\n\n constructor(props) {\n super(props);\n this.focusInput = React.createRef();\n }\n\n focus = () => {\n // If mobile, don't focus\n if (isMobile) return;\n\n if (this.focusInput.current) {\n setTimeout(() => {\n this.focusInput.current.focus();\n }, 1);\n }\n };\n\n componentDidMount() {\n // Focus field if this.props.focused exists\n // When coming back from \"Confrim\" to \"Edit\"\n this.focus();\n }\n\n renderMeters = () => {\n const { meters } = this.props;\n const { meterTypeFilter } = this.state;\n\n if (meterTypeFilter !== \"\") {\n }\n const machines = [];\n\n meters\n .filter((meter) => {\n if (meterTypeFilter === \"mine\") {\n return meter.contact;\n }\n\n return true;\n })\n .forEach((meter) => {\n const machine = machines.find((m) => m.serialNo === meter.serialNo);\n\n if (machine) {\n machine.meters.push(meter);\n } else {\n machines.push({\n serialNo: meter.serialNo,\n machinesID: meter.machinesID,\n address: meter.address,\n meters: [meter],\n });\n }\n });\n\n return machines.map(this.renderMachine);\n };\n\n handleChange = (e) => {\n // Replace any letters from the input\n let newReading = e.target.value.replace(/\\D/, \"\").trim(); //.replace(/^0+/, \"\");\n\n // Remove any emoji char\n newReading = newReading.replace(\n /([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2011-\\u26FF]|\\uD83E[\\uDD10-\\uDDFF])/g,\n \"\"\n );\n\n if (newReading !== \"\") {\n newReading = parseInt(newReading);\n }\n\n e.currentTarget.value = newReading;\n };\n\n renderMachine = (machine, index) => {\n const { serialNo, machinesID } = machine;\n const { searchValue } = this.state;\n const { focusedID, justSubmitted, selected, fromEmail, updateLocation } =\n this.props;\n\n const hasFocusedInput = machine.meters.some(\n ({ metersID }) => metersID === focusedID\n );\n\n // If serialNo doesnt' have searchValue inside\n if (serialNo.toLowerCase().indexOf(searchValue.toLowerCase()) === -1) {\n return null;\n }\n\n const submitLocation = async ({ value, label }) => {\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n\n showLoading();\n\n try {\n await equipmentService.changeLocation({\n MachineID: machinesID,\n AddressKey: value,\n });\n\n updateLocation({ address: label, serialNo });\n\n bar.showBar({\n content: `Location for ${serialNo} has been changed.`,\n });\n\n hideLoading();\n } catch (err) {\n hideLoading();\n bar.showBar({ content: `Error: ${err}.`, modifier: \"red\" });\n console.log(err);\n }\n };\n\n // Check if some value in the column was just submitted\n const colSubmitted = justSubmitted.some((item) =>\n machine.meters.some((meter) => meter.metersID === item.metersID)\n );\n\n return (\n \n }\n >\n \n \n \n Meter\n \n Billing type\n \n \n Last reading\n \n \n Last updated\n \n Reading\n \n \n\n \n {machine.meters.map((meter, idx) => {\n const { metersID } = meter;\n let defaultValue;\n\n // Check if value in the cell was just submitted\n const cellSubmitted = justSubmitted.some(\n (item) => item.metersID === meter.metersID\n );\n\n // Default value = if meters in the selected array\n defaultValue =\n selected?.find((s) => s.metersID === metersID)?.newReading ||\n \"\";\n\n // Otherwise, if meter has newReading provided by the API\n if (!defaultValue) {\n defaultValue = meter.newReading > 0 ? meter.newReading : \"\";\n }\n\n return (\n \n {meter.meterName}\n {meter.billingType}\n \n {meter.lastReading}\n \n \n {meter.lastUpdated}\n \n \n \n \n \n );\n })}\n \n
\n \n );\n };\n\n filterBySearch = (searchValue) => {\n this.setState({ searchValue });\n };\n\n filterByType = ({ value }) => {\n this.setState({ meterTypeFilter: value });\n };\n\n sendReadings = () => {\n const { updateSelected } = this.props;\n const { finishStep } = this.props.injectedProps;\n const { bar } = this.context;\n\n const inputs = Array.from(\n document.querySelectorAll('input[name^=\"meter-\"]')\n );\n\n const meters = inputs\n .filter((i) => i.value !== \"\")\n .map((i) => {\n return { metersID: i.name.split(\"-\")[1], newReading: i.value };\n });\n\n // If no values avaliable\n if (meters.length === 0) {\n bar.showBar({ content: \"No meters changed\", modifier: \"blue\" });\n return;\n }\n\n updateSelected(meters);\n finishStep();\n };\n\n render() {\n const { isFinished, meters, fromEmail } = this.props;\n if (!meters) return null;\n\n // const title = `Meter readings for ${company || dateDisplay}`;\n const title = `Meter readings`;\n\n const action = (\n \n );\n const control = (\n \n
\n \n
\n {fromEmail ? null : (\n
\n \n
\n )}\n
\n );\n\n let message = null;\n\n if (isFinished) {\n message = (\n \n You have already entered meter readings for this month.\n
\n If this is incorrect please contact your Administration Officer.\n
\n );\n }\n\n return (\n \n {this.renderMeters()}\n \n );\n }\n}\n\nexport default Edit;\n","import React, { Component } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport { Tab, Button } from \"scripts/components/parts\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\nimport { meterService } from \"scripts/_services\";\nimport queryString from \"query-string\";\nimport { getParam, getError } from \"scripts/_helpers\";\n\nimport {\n Table,\n TableRow,\n TableCell,\n TableBody,\n} from \"scripts/components/parts/Table\";\n\nclass Confirm extends Component {\n static contextType = AppContext;\n\n state = {\n // Internal meters state - validated\n meters: null,\n };\n\n async componentDidMount() {\n const { bar } = this.context;\n const { showLoading, hideLoading } = this.context.loading;\n const { fromEmail, location } = this.props;\n showLoading();\n\n try {\n let response;\n /*\n Only submit for validation. Not actually submitting.\n */\n if (fromEmail) {\n const params = queryString.parse(location.search);\n\n const RunNum = getParam(params, \"RunNum\");\n const Email = getParam(params, \"Email\");\n const MetersID = getParam(params, \"MetersID\") || getParam(params, \"id\");\n\n response = await meterService.submitReadingsByEmailToken({\n RunNum: parseInt(RunNum),\n Email: Email,\n MetersID: MetersID,\n Meters: this.props.selected,\n ValidateOnly: true,\n Resend: true,\n });\n } else {\n response = await meterService.submitReadings(this.props.selected, true);\n }\n\n const { meters } = response;\n\n console.log(\"valid\", meters);\n\n this.setState({ meters });\n hideLoading();\n } catch (err) {\n bar.showBar(\n {\n content: getError(err),\n modifier: \"red\",\n },\n 8000\n );\n console.log(err);\n hideLoading();\n\n this.setState({ meters: [] });\n }\n }\n\n renderMeters = () => {\n const { meters } = this.state;\n\n const machines = [];\n\n meters.forEach((meter) => {\n const machine = machines.find((m) => m.serialNo === meter.serialNo);\n\n if (machine) {\n machine.meters.push(meter);\n } else {\n machines.push({\n serialNo: meter.serialNo,\n machinesID: meter.machinesID,\n address: meter.address,\n meters: [meter],\n });\n }\n });\n\n return machines.map(this.renderMachine);\n };\n\n renderMachine = (machine, index) => {\n const { focusMeter } = this.props;\n const { prevStep } = this.props.injectedProps;\n const { serialNo } = machine;\n\n return (\n \n \n \n {machine.meters.map((meter, idx) => (\n \n {meter.meterName}\n \n {meter.newReading}\n \n \n \n {meter.importError}\n \n \n \n {\n focusMeter(meter.metersID);\n prevStep();\n }}\n modifier={\"text\"}\n >\n Edit\n \n \n \n ))}\n \n
\n
\n );\n };\n\n render() {\n const { submitReadings } = this.props;\n const { meters } = this.state;\n const { goToStep } = this.props.injectedProps;\n if (!meters) return null;\n\n const title = \"Please confirm\";\n\n const action = (\n {\n submitReadings();\n goToStep(0);\n }}\n modifier={\"solid-inline\"}\n >\n Confirm readings\n \n );\n\n return meters.length === 0 ? (\n \n \n Please confirm\n \n
\n
\n

There has been a problem with validating meters.

\n
\n
\n
\n ) : (\n \n \n Please confirm\n \n {this.renderMeters()}\n \n );\n }\n}\n\nexport default Confirm;\n","import React, { Component, Fragment } from \"react\";\n\nimport Edit from \"./Edit\";\nimport Confirm from \"./Confirm\";\nimport { meterService } from \"scripts/_services\";\nimport { getParam } from \"scripts/_helpers\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { MultiStep } from \"scripts/components/parts\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\nimport { LayoutPage } from \"scripts/components/layouts\";\n\nimport queryString from \"query-string\";\n\nconst steps = [\n { param: \"\", component: Edit },\n { param: \"confirm\", component: Confirm },\n];\n\nclass MeterReadings extends Component {\n static contextType = AppContext;\n\n state = {\n focusedID: null,\n justSubmitted: [], // An array of just submitted meters, to display in green for 3 seconds\n\n meters: null,\n\n /*\n Array of selected / edited meters\n [\n [ 234, 346346 ] - first value - meterID, second newReading\n ]\n */\n selected: [],\n };\n\n async componentDidMount() {\n this.reuqestMeters();\n }\n\n async reuqestMeters() {\n const { fromEmail, location } = this.props;\n const { bar } = this.context;\n const { showLoading, hideLoading } = this.context.loading;\n showLoading();\n\n try {\n let response;\n let meters;\n\n if (fromEmail) {\n const params = queryString.parse(location.search);\n const RunNum = getParam(params, \"RunNum\");\n const Email = getParam(params, \"Email\");\n const MetersID = getParam(params, \"MetersID\") || getParam(params, \"id\");\n const Resend = getParam(params, \"Resend\");\n\n response = await meterService.getAllByEmailToken(\n parseInt(RunNum),\n Email,\n MetersID,\n Resend === \"true\"\n );\n\n // Added filter, to filter out all imported readings\n meters = response.meters.filter((m) => m.importStatus !== \"Imported\");\n } else {\n response = await meterService.getAll();\n\n meters = response.meters;\n const { meters: contactMeters } = await meterService.getAllByContact();\n\n console.log(meters, contactMeters);\n\n contactMeters.forEach((contactMeter) => {\n const index = meters.findIndex(\n (meter) => meter.metersID === contactMeter.metersID\n );\n if (index >= 0) {\n meters[index].contact = true;\n }\n });\n }\n\n this.setState({ meters });\n hideLoading();\n } catch (err) {\n bar.showBar(\n {\n content: \"There has been a problem with getting meters\",\n modifier: \"red\",\n },\n 8000\n );\n console.log(err);\n hideLoading();\n }\n }\n\n /*\n * Updates \"selected\" array of meters with inputs, that have value\n */\n updateSelected = (meters) => {\n const selected = [];\n const metersCopy = JSON.parse(JSON.stringify(this.state.meters));\n\n meters.forEach(({ metersID, newReading }) => {\n const index = selected.findIndex((item) => item.metersID === metersID);\n\n if (index >= 0) {\n selected[index].newReading = parseInt(newReading);\n } else {\n const newSelected = metersCopy.find((m) => m.metersID === metersID);\n newSelected.newReading = parseInt(newReading);\n selected.push(newSelected);\n }\n });\n\n console.log(\"updateSelected\", selected);\n\n this.setState({ selected });\n };\n\n /*\n * Updates address for meters with \"serialNo\"\n */\n updateLocation = ({ address, serialNo }) => {\n const metersCopy = JSON.parse(JSON.stringify(this.state.meters));\n\n metersCopy\n .filter((m) => m.serialNo === serialNo)\n .forEach((m) => {\n m.address = address;\n });\n\n console.log(\"updateLocation\", metersCopy);\n\n this.setState({ meters: metersCopy });\n };\n\n focusMeter = (metersID) => {\n if (metersID) {\n this.setState({ focusedID: metersID });\n } else {\n this.setState({ focusedID: null });\n }\n };\n\n /*\n * Sends readings to the API\n */\n submitReadings = async () => {\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n const { fromEmail, location } = this.props;\n const { selected } = this.state;\n // let metersCopy = JSON.parse(JSON.stringify(meters));\n const justSubmitted = [];\n showLoading();\n\n try {\n let response;\n\n if (fromEmail) {\n const params = queryString.parse(location.search);\n const RunNum = getParam(params, \"RunNum\");\n const Email = getParam(params, \"Email\");\n const MetersID = getParam(params, \"MetersID\") || getParam(params, \"id\");\n const Resend = getParam(params, \"Resend\");\n\n response = await meterService.submitReadingsByEmailToken({\n RunNum: parseInt(RunNum),\n Email: Email,\n MetersID: MetersID,\n Meters: selected,\n ValidateOnly: false,\n Resend: Resend === \"true\",\n });\n } else {\n response = await meterService.submitReadings(selected);\n }\n\n hideLoading();\n\n /*\n * Loop through response meters\n */\n response.meters.forEach((meter) => {\n /*\n * If meter was successfully imported\n * update justSubmitted array\n */\n if (meter.importStatus === \"Imported\") {\n justSubmitted.push(meter);\n }\n });\n\n // Reset all selected inputs\n selected.forEach((s) => {\n document.querySelector(`input[name='meter-${s.metersID}']`).value = \"\";\n });\n\n // Remove just submitted from the array in 10 seconds\n setTimeout(() => {\n this.setState({ justSubmitted: [] });\n }, 10000);\n\n // request updated Meters\n await this.reuqestMeters();\n\n // Update state\n this.setState({ justSubmitted, selected: [] });\n\n // Show bar with the message\n const { importError } = response;\n\n bar.showBar({ content: importError });\n // if (importStatus === \"Error\") {\n // bar.showBar({ content: importError, modifier: \"red\" });\n // } else {\n // bar.showBar({ content: importError });\n // }\n } catch (error) {\n hideLoading();\n bar.showBar({ content: `Error: ${error}.`, modifier: \"red\" });\n }\n };\n\n render() {\n const {\n meters,\n selected,\n focusedID,\n dateDisplay,\n justSubmitted,\n } = this.state;\n\n // console.log(meters);\n if (meters === null) return null;\n\n if (meters.length > 0) {\n const isFinished = !meters.some(\n (meter) => meter.importStatus !== \"Imported\"\n );\n\n return (\n \n {!this.props.fromEmail ? (\n \n Meter readings\n \n ) : null}\n \n \n );\n } else {\n return (\n \n Meter readings\n\n
\n
Thank you!
\n
\n

\n Thanks for your help - you've supplied us with all the readings.\n

\n

There are no readings left to submit for this period.

\n
\n
\n
\n );\n }\n }\n}\n\nexport default MeterReadings;\n","import React, { Component } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport { Button, Search } from \"scripts/components/parts\";\nimport {\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableBody,\n} from \"scripts/components/parts/Table\";\n\nclass SelectEquipment extends Component {\n state = {\n filterValue: \"\",\n };\n\n filter = (filterValue) => {\n this.setState({ filterValue });\n };\n\n handleOptionChange = (e) => {\n const { selectEquipment } = this.props;\n selectEquipment(e.target.value);\n };\n\n renderTable = (newEquipments) => {\n const { selectedEquipment } = this.props;\n const { finishStep } = this.props.injectedProps;\n\n return (\n \n \n \n Description\n Serial number\n Log a call\n \n \n\n \n {newEquipments.map((equip, idx) => {\n const { machinesID } = equip;\n let isSelected = false;\n if (selectedEquipment)\n isSelected = selectedEquipment.machinesID === machinesID;\n\n return (\n \n \n {equip.modelDescription}\n \n {equip.serialNo || \"\"}\n \n \n \n \n \n \n Next\n \n \n \n );\n })}\n \n
\n );\n };\n\n render() {\n const { equipments, renderStepNav } = this.props;\n const { filterValue } = this.state;\n\n if (!equipments) return null;\n const title = \"Select equipment\";\n\n let newEquipments = JSON.parse(JSON.stringify(equipments));\n\n if (filterValue) {\n newEquipments = newEquipments.filter(\n (e) =>\n e.serialNo &&\n e.serialNo.toLowerCase().indexOf(filterValue.toLowerCase()) !== -1\n );\n }\n\n const error =\n newEquipments.length < 1\n ? { message: \"No results match your search, ngana anō - try again.\" }\n : false;\n\n const control = (\n \n );\n\n const action = renderStepNav(this.props.injectedProps);\n\n return (\n \n {this.renderTable(newEquipments)}\n \n );\n }\n}\n\nexport default SelectEquipment;\n","import React, { Component, Fragment } from \"react\";\n\nimport { Button, Address } from \"scripts/components/parts\";\nimport { isMobile } from \"scripts/utils/browser-detect\";\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport {\n Input,\n Select,\n Textarea,\n isInitialValid,\n FormField,\n} from \"scripts/components/form\";\nimport { Formik, Form } from \"formik\";\nimport * as Yup from \"yup\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\n\nimport { equipmentService, authenticationService } from \"scripts/_services\";\n\nconst typesOfCall = [\n { value: \"Service\", label: \"Service call\" },\n { value: \"Analyst\", label: \"Analyst call\" },\n { value: \"Training\", label: \"Training call\" },\n];\n\nclass LogServiceCall extends Component {\n static contextType = AppContext;\n\n constructor(props) {\n super(props);\n this.textareaRef = React.createRef();\n }\n\n focus = () => {\n // If mobile, don't focus\n if (isMobile) return;\n\n if (this.textareaRef.current) {\n setTimeout(() => {\n this.textareaRef.current.focus();\n // this.textareaRef.current.value = \"\";\n }, 1);\n }\n };\n\n componentDidMount() {\n // Focus textarea\n this.focus();\n console.log(\"componentDidMount\");\n }\n\n renderForm = (props) => {\n const { updateDescription } = this.props;\n const { serialNo } = this.props.selectedEquipment;\n const { status, isValid } = props;\n/* const { modelDescription } = this.props.modelDescription;*/\n const { prevStep } = this.props.injectedProps;\n\n const noActions = this.props.selectedEquipment.modelDescription ? this.props.selectedEquipment.modelDescription.substring(0, 3) === 'EOL' : false ;\n\n const handleChange = (e) => {\n props.handleChange(e);\n updateDescription(e.target.value);\n };\n\n return (\n \n
\n {noActions\n ?\n \n

\n The machine serial number you have entered has reached its End of Service life and can no longer have toner or service calls ordered for it. Please contact your Account Manager to discuss options.
\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 Change serial number\n
\n }\n isRequired={true}\n form={props}\n onChange={handleChange}\n innerRef={this.textareaRef}\n />\n
\n
\n
\n \n

\n Service calls are for repair work on the hardware of a\n machine.\n

\n

\n Analyst calls are for software, network, or cost recovery\n solutions.\n

\n \n }\n />\n
\n\n
\n \n
\n
\n\n {status &&
{status}
}\n
\n }\n \n );\n };\n\n handleSubmit = async (fields, { setStatus, setSubmitting }) => {\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n const {\n updateCallType,\n updateAddress,\n updateDescription,\n selectEquipment,\n } = this.props;\n const { finishStep } = this.props.injectedProps;\n const { machinesID, serialNo, address } = this.props.selectedEquipment;\n\n showLoading();\n setStatus();\n\n const RequestService = {\n SerialNo: serialNo,\n MachinesID: machinesID,\n ContactName: fields.contact,\n ContactPhone: fields.phone,\n ContactEmail: fields.email,\n CallType: fields.typeOfCall,\n CallDescription: fields.description,\n };\n\n try {\n await equipmentService.requestServiceCall(RequestService);\n\n // Update address, if the field was changed\n if (address !== fields.address) {\n await equipmentService.changeLocation({\n MachineID: machinesID,\n AddressKey: fields.address,\n });\n\n updateAddress(machinesID, fields.address);\n }\n\n hideLoading();\n updateCallType(fields[\"typeOfCall\"]);\n selectEquipment(null);\n updateDescription(\"\");\n finishStep();\n\n bar.showBar({\n content: `Your ${fields[\n \"typeOfCall\"\n ].toLowerCase()} request has been received.`,\n });\n } catch (error) {\n console.log(error);\n hideLoading();\n setSubmitting(false);\n\n bar.showBar(\n {\n content: \"There has been a problem with logging a service call\",\n modifier: \"red\",\n },\n 4000\n );\n }\n };\n\n render() {\n const { contact } = authenticationService.currentUserValue;\n const { selectedEquipment, renderStepNav, description } = this.props;\n if (!selectedEquipment) return null;\n\n const { address } = selectedEquipment;\n console.log(\"address\", address);\n const title = \"Log a service call\";\n\n const action = renderStepNav(this.props.injectedProps);\n\n return (\n \n \n Log a service call\n \n\n {this.renderDisplay}\n \n \n );\n }\n}\n\nexport default LogServiceCall;\n","import React, { Component, Fragment } from \"react\";\r\n\r\nimport SelectEquipment from \"./SelectEquipment\";\r\nimport LogServiceCall from \"./LogServiceCall\";\r\nimport Confirmation from \"./Confirmation\";\r\n\r\nimport { LayoutPage } from \"scripts/components/layouts\";\r\nimport { MultiStep, StepsNav } from \"scripts/components/parts\";\r\nimport { AppContext } from \"scripts/context/app-context\";\r\nimport { equipmentService, authenticationService } from \"scripts/_services\";\r\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\r\nimport { getSerialNo } from \"scripts/_helpers\";\r\n\r\nconst steps = [\r\n {\r\n param: \"\",\r\n title: \"Select equipment\",\r\n component: SelectEquipment,\r\n },\r\n { param: \"log-a-call\", title: \"Log a call\", component: LogServiceCall },\r\n {\r\n param: \"confirmation\",\r\n title: \"Receive confirmation\",\r\n component: Confirmation,\r\n },\r\n];\r\n\r\nclass ServiceCall extends Component {\r\n static contextType = AppContext;\r\n\r\n state = {\r\n equipments: null,\r\n selectedEquipment: null,\r\n description: \"\",\r\n callType: \"\",\r\n };\r\n\r\n async componentDidMount() {\r\n const { showLoading, hideLoading } = this.context.loading;\r\n\r\n showLoading();\r\n\r\n try {\r\n const { equipments } = await equipmentService.getAll();\r\n console.log(\"equipments\", equipments);\r\n\r\n equipments.forEach((item) => {\r\n item.serialNo = getSerialNo(item.serialNo);\r\n });\r\n\r\n this.setState({ equipments });\r\n hideLoading();\r\n } catch (err) {\r\n console.log(err);\r\n hideLoading();\r\n }\r\n }\r\n\r\n updateCallType = (callType) => {\r\n this.setState({ callType });\r\n };\r\n\r\n updateAddress = (machinesID, addressKey) => {\r\n const equipmentsCopy = JSON.parse(JSON.stringify(this.state.equipments));\r\n equipmentsCopy.forEach((e) => {\r\n if (e.machinesID === machinesID) {\r\n // Find that address in the array of clients addresses\r\n // Todo: remove that with better approach\r\n e.address = authenticationService?.currentUserValue?.client?.addresses.find(\r\n (a) => a.clientNo === addressKey\r\n )?.address;\r\n }\r\n });\r\n\r\n this.setState({ equipments: equipmentsCopy });\r\n };\r\n\r\n updateDescription = (description) => {\r\n this.setState({ description });\r\n };\r\n\r\n selectEquipment = (machinesID) => {\r\n // If deliberately unselecting\r\n if (machinesID === null) {\r\n this.setState({ selectedEquipment: null, description: \"\" });\r\n }\r\n\r\n const { equipments } = this.state;\r\n const selectedEquipment = equipments.find(\r\n (e) => e.machinesID === machinesID\r\n );\r\n\r\n if (typeof selectedEquipment !== \"undefined\") {\r\n this.setState({ selectedEquipment, description: \"\" });\r\n }\r\n };\r\n\r\n renderStepNav = ({ stepId, goToStep }) => {\r\n return (\r\n {\r\n const item = { title };\r\n if (index < stepId)\r\n item.onClick = () => {\r\n goToStep(index);\r\n };\r\n return item;\r\n })}\r\n />\r\n );\r\n };\r\n\r\n render() {\r\n const { equipments, selectedEquipment, description, callType } = this.state;\r\n\r\n if (equipments === null || equipments.length <= 0) {\r\n const title = \"Select equipment\";\r\n return (\r\n \r\n \r\n Select equipment\r\n \r\n\r\n
\r\n
\r\n

There are no active equipment for service request.

\r\n
\r\n
\r\n
\r\n );\r\n }\r\n else {\r\n return (\r\n \r\n Select equipment\r\n\r\n \r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default ServiceCall;\r\n","import React, { Component } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\n\nfunction isVowel(c) {\n return [\"a\", \"e\", \"i\", \"o\", \"u\"].indexOf(c.toLowerCase()) !== -1;\n}\n\nclass Confirmation extends Component {\n render() {\n const { renderStepNav, callType } = this.props;\n const title = \"Confirmation\";\n\n let text = (\n \n Your request for {isVowel(callType[0]) ? \"an\" : \"a\"}{\" \"}\n {callType.toLowerCase()} has been received.\n \n );\n\n if (callType === \"Analyst\") {\n text = `Your request for an analyst has been received.`;\n }\n\n if (callType === \"Training\") {\n text = `Your request for a trainer has been received.`;\n }\n\n const action = renderStepNav(this.props.injectedProps);\n\n return (\n \n \n Confirmation\n \n\n
\n
Thank you!
\n
\n

{text}

\n

One of our team will be in touch with you shortly.

\n
\n
\n
\n );\n }\n}\n\nexport default Confirmation;\n","import React, { Component } from \"react\";\r\nimport { LayoutPage } from \"scripts/components/layouts\";\r\nimport { Reveal } from \"scripts/components/parts\";\r\nimport { getSerialNo } from \"scripts/_helpers\";\r\n\r\nimport {\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n} from \"scripts/components/parts/Table\";\r\n\r\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\r\nimport { AppContext } from \"scripts/context/app-context\";\r\nimport moment from \"moment\";\r\n\r\nimport { equipmentService } from \"scripts/_services\";\r\n\r\nclass ServiceHistory extends Component {\r\n static contextType = AppContext;\r\n\r\n state = {\r\n serviceHistory: null,\r\n };\r\n\r\n async componentDidMount() {\r\n const { showLoading, hideLoading } = this.context.loading;\r\n const { bar } = this.context;\r\n showLoading();\r\n\r\n try {\r\n const { serviceHistory } = await equipmentService.getServiceHistory();\r\n\r\n console.log(serviceHistory);\r\n hideLoading();\r\n this.processData({ serviceHistory });\r\n } catch (err) {\r\n bar.showBar(\r\n {\r\n content: \"There has been a problem with getting service history\",\r\n modifier: \"red\",\r\n },\r\n 8000\r\n );\r\n hideLoading();\r\n }\r\n }\r\n\r\n processData = ({ serviceHistory }) => {\r\n serviceHistory.forEach((s) => {\r\n s.serialNo = getSerialNo(s.serialNo);\r\n s.dateDisplay = moment(s.callDate).format(\"DD/MM/YY [at] h:mma\");\r\n });\r\n\r\n this.setState({ serviceHistory });\r\n };\r\n\r\n renderTable = () => {\r\n const { serviceHistory } = this.state;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Date logged\r\n \r\n Serial number\r\n Your description\r\n \r\n \r\n\r\n \r\n {serviceHistory.map((item, idx) => {\r\n return (\r\n \r\n \r\n {item.dateDisplay}\r\n \r\n {item.serialNo}\r\n \r\n {item.notes}\r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n };\r\n\r\n render() {\r\n const { serviceHistory } = this.state;\r\n if (!serviceHistory) return null;\r\n\r\n const title = \"Service history\";\r\n if (serviceHistory.length > 0) {\r\n return (\r\n \r\n \r\n Service history\r\n \r\n {this.renderTable()}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n Service history\r\n \r\n\r\n
\r\n
\r\n

\r\n You have not raised any Service or Analyst Calls in My Account\r\n yet.\r\n

\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default ServiceHistory;\r\n","import React, { Component } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport { Formik, Form } from \"formik\";\nimport { Button, DetailsForm } from \"scripts/components/parts\";\nimport { getError, updateEquipmentSerialNo } from \"scripts/_helpers\";\nimport {\n Input,\n isInitialValid,\n detailsSchema,\n passwordSchema,\n getContactFromFields,\n getMachinesFromFields,\n mapContactEquipments,\n} from \"scripts/components/form\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\n\nimport {\n userService,\n authenticationService,\n equipmentService,\n contactService,\n} from \"scripts/_services\";\n\nimport * as Yup from \"yup\";\n\nclass MyDetails extends Component {\n static contextType = AppContext;\n\n state = {\n contact: null,\n user: null,\n equipments: null,\n };\n\n async componentDidMount() {\n const user = authenticationService.currentUserValue;\n const { showLoading, hideLoading } = this.context.loading;\n\n this.setState({ user });\n showLoading();\n\n try {\n const { equipments } = await equipmentService.getAll();\n const { contact, machineContacts } = await contactService.getById(\n user.contact.contNo\n );\n\n equipments.forEach(updateEquipmentSerialNo);\n\n hideLoading();\n this.setState({\n contact,\n equipments: mapContactEquipments(equipments, machineContacts),\n });\n } catch (err) {\n hideLoading();\n }\n }\n\n renderForm = (props) => {\n const { isValid, status, dirty } = props;\n const { equipments, contact } = this.state;\n\n return (\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n\n \n\n {status &&
{status}
}\n\n
\n \n Save changes\n \n
\n \n );\n };\n\n handleSubmit = async (\n fields,\n { setStatus, setSubmitting, resetForm },\n initialValues\n ) => {\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n const { contNo } = authenticationService.currentUserValue.contact;\n const contact = getContactFromFields(fields, contNo);\n let fieldsCopy = JSON.parse(JSON.stringify(fields));\n\n showLoading();\n setStatus();\n\n const contactData = {\n contact,\n machineContacts: getMachinesFromFields(fields, contNo),\n };\n\n const changed = (name) => {\n return fields[name] !== initialValues[name];\n };\n\n try {\n /*\n * If userName or password changed\n * Do a separate \"user update\" call\n */\n if (changed(\"userName\") || changed(\"newPassword\")) {\n await userService.updateUser({\n userName: fields.userName,\n password: fields.newPassword,\n });\n fieldsCopy.newPassword = \"\";\n resetForm({ values: fieldsCopy });\n\n /*\n * If changed userName\n * Make sure to update username in localCache\n */\n if (changed(\"userName\")) {\n authenticationService.updateUser((user) => {\n user.userName = fields.userName;\n return user;\n });\n }\n }\n\n /*\n * Submit\n * Do a \"contact update\" call\n */\n await contactService.editContact(contactData);\n\n /*\n * Update current user with new contact\n */\n authenticationService.updateUser((user) => {\n user.contact = Object.assign(user.contact, contact);\n return user;\n });\n\n hideLoading();\n // Reset the form with submitted values\n // resetForm({ values: data });\n bar.showBar({ content: `Your changes have been saved.` });\n\n window.scrollTo(0, 0);\n } catch (error) {\n hideLoading();\n setSubmitting(false);\n setStatus(getError(error));\n }\n };\n\n render() {\n if (!this.state.user || !this.state.contact) return null;\n const { userName } = this.state.user;\n const {\n firstName,\n lastName,\n address,\n cellPhone,\n phone,\n jobTitle,\n department,\n email,\n } = this.state.contact;\n const title = \"My details\";\n\n const initialValues = {\n userName: userName || \"\",\n newPassword: \"\",\n firstName: firstName || \"\",\n lastName: lastName || \"\",\n address: address || \"\",\n cellPhone: cellPhone || \"\",\n phone: phone || \"\",\n jobTitle: jobTitle || \"\",\n department: department || \"\",\n email: email || \"\",\n };\n\n return (\n \n My details\n\n {\n this.handleSubmit(fields, actions, initialValues);\n }}\n children={this.renderForm}\n />\n \n );\n }\n}\n\nexport default MyDetails;\n","import React, { Component, Fragment } from \"react\";\n\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport {\n Button,\n Search,\n Panel,\n Tab,\n LinkGroup,\n ButtonGroup,\n} from \"scripts/components/parts\";\nimport { Select } from \"scripts/components/form\";\nimport {\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableBody,\n} from \"scripts/components/parts/Table\";\n\nimport { updateEquipmentSerialNo } from \"scripts/_helpers\";\nimport { Link } from \"react-router-dom\";\nimport { AppContext } from \"scripts/context/app-context\";\n\nimport { contactService, authenticationService } from \"scripts/_services\";\n\nclass ListContacts extends Component {\n static contextType = AppContext;\n\n state = {\n contacts: null,\n machConts: null,\n equipments: null,\n contactTypeFilter: \"\",\n nameFilter: \"\",\n sortByCol: null,\n sortDirection: false,\n filteredEquipments: null,\n };\n\n async componentDidMount() {\n const { showLoading, hideLoading } = this.context.loading;\n showLoading();\n\n console.log(\"mounted ListContacts\");\n\n try {\n const {\n contacts,\n machConts,\n machines: equipments,\n } = await contactService.getAll();\n\n equipments.forEach(updateEquipmentSerialNo);\n // Don't include myself\n console.log(\"contacts\", contacts);\n hideLoading();\n this.setState({ contacts, machConts, equipments });\n } catch (err) {\n console.log(err);\n hideLoading();\n }\n }\n\n filterByType = ({ value }) => {\n this.setState({ contactTypeFilter: value });\n };\n\n filterBySearch = (searchValue) => {\n const { equipments } = this.state;\n\n if (searchValue.trim() === \"\") {\n this.setState({ filteredEquipments: null, nameFilter: \"\" });\n return;\n }\n\n // Find any equipments with search\n const filteredEquipments = equipments?.filter(\n (item) =>\n item.serialNo &&\n item.serialNo.toLowerCase().indexOf(searchValue.toLowerCase()) !== -1\n );\n\n // If found some seralNum\n if (filteredEquipments && filteredEquipments.length > 0) {\n this.setState({\n filteredEquipments,\n nameFilter: \"\",\n });\n } else {\n this.setState({ filteredEquipments: null, nameFilter: searchValue });\n }\n };\n\n deleteContact = (contNo) => {\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n const { contacts } = this.state;\n const { openModal, closeModal } = this.context.modal;\n\n const index = contacts.findIndex((u) => u.contNo === contNo);\n const { firstName, lastName } = contacts[index];\n\n const title = \"Delete?\";\n const text = (\n \n

\n \n {firstName} {lastName}\n \n will be deleted from your account.\n

\n

This will remove them as a contact for any and all machines.

\n
\n );\n\n const submitDelete = () => {\n showLoading();\n\n contactService.deleteContact(contNo).then((success) => {\n const newContacts = JSON.parse(JSON.stringify(contacts)).filter(\n (u) => u.contNo !== contNo\n );\n this.setState({ contacts: newContacts });\n hideLoading();\n closeModal();\n bar.showBar({ content: `Your contact has been deleted.` });\n });\n };\n\n const children = (\n \n \n \n \n \n \n );\n\n openModal(children);\n };\n\n filteredContacts = () => {\n const { contactTypeFilter, nameFilter, machConts } = this.state;\n let contacts = JSON.parse(JSON.stringify(this.state.contacts));\n\n console.log(\"contactTypeFilter\", contactTypeFilter);\n if (contactTypeFilter !== \"\") {\n contacts = contacts.filter((c) => {\n const { contNo } = c;\n\n // Find all the machines for the contNo\n const machines = machConts.filter((m) => m.contNo === contNo);\n\n return machines.some(\n (m) => m.contType.toLowerCase() === contactTypeFilter.toLowerCase()\n );\n });\n }\n\n if (nameFilter !== \"\") {\n contacts = contacts.filter(\n (u) =>\n `${u.firstName} ${u.lastName}`\n .toLowerCase()\n .indexOf(nameFilter.toLowerCase()) !== -1\n );\n }\n\n return contacts;\n };\n\n renderTable = (contacts) => {\n const { sortByCol, sortDirection } = this.state;\n const currentUser = authenticationService.currentUserValue;\n\n contacts.forEach((contact) => {\n contact.fullName = `${contact.firstName} ${contact.lastName}`;\n });\n\n let sorted = contacts;\n\n if (sortByCol) {\n sorted = sorted.sort((a, b) => a[sortByCol].localeCompare(b[sortByCol]));\n\n if (sortDirection) {\n Array.prototype.reverse.call(sorted);\n }\n }\n\n return (\n \n \n \n {\n this.setState({\n sortByCol: \"fullName\",\n sortDirection: !sortDirection,\n });\n }}\n >\n Contact\n \n Email\n {\n this.setState({\n sortByCol: \"location\",\n sortDirection: !sortDirection,\n });\n }}\n >\n Location\n \n \n Job title\n \n {currentUser.permissions.edit_contact ? (\n Action\n ) : null}\n \n \n\n \n {sorted.map((contact, idx) => {\n return (\n \n \n {currentUser.permissions.view_contact ? (\n \n {contact.fullName}\n \n ) : (\n contact.fullName\n )}\n \n \n \n {contact.email}\n \n \n {contact.location}\n {contact.jobTitle}\n\n {currentUser.permissions.edit_contact ? (\n \n \n \n Replace\n \n \n Edit\n \n
this.deleteContact(contact.contNo)}>\n Delete\n
\n
\n
\n ) : null}\n
\n );\n })}\n
\n
\n );\n };\n\n renderTab = (equipment, index) => {\n const { machinesID, serialNo } = equipment;\n // Filter to only include machineConts with current MachineId\n const machConts = this.state.machConts.filter(\n (m) => m.machinesID === machinesID\n );\n let contacts = this.filteredContacts();\n\n console.log(machConts, this.state.machConts, machinesID);\n // Filter to only include contacts that have a paired value inside machineConts\n contacts = contacts.filter((c) =>\n machConts.some((m) => m.contNo === c.contNo)\n );\n\n return contacts.length > 0 ? (\n \n {this.renderTable(contacts)}\n \n ) : null;\n };\n\n render() {\n const { contacts, nameFilter, filteredEquipments } = this.state;\n if (!contacts) return null;\n const currentUser = authenticationService.currentUserValue;\n\n const title = \"Our contacts\";\n const options = [\n { value: \"\", label: \"All contacts\" },\n { value: \"Meter\", label: \"Meter reading contacts\" },\n { value: \"Service\", label: \"Service contacts\" },\n { value: \"Consumables\", label: \"Consumable contacts\" },\n { value: \"Billing\", label: \"Billing contacts\" },\n ];\n\n let data = this.filteredContacts();\n const error =\n (!data || data.length === 0) && nameFilter !== \"\" && !filteredEquipments\n ? { message: \"No results match your search, ngana anō - try again.\" }\n : false;\n\n const control = (\n \n
\n \n
\n
\n \n
\n
\n );\n\n const action = currentUser.permissions.add_contact ? (\n \n ) : null;\n\n return (\n \n {filteredEquipments\n ? filteredEquipments.map(this.renderTab)\n : this.renderTable(this.filteredContacts())}\n \n );\n }\n}\n\nexport default ListContacts;\n","import React, { Component } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\n\nimport { Button, DetailsForm } from \"scripts/components/parts\";\nimport { Formik, Form } from \"formik\";\nimport {\n isInitialValid,\n detailsSchema,\n getContactFromFields,\n getMachinesFromFields,\n} from \"scripts/components/form\";\n\nimport { contactService } from \"scripts/_services\";\nimport { getError, updateEquipmentSerialNo } from \"scripts/_helpers\";\nimport * as Yup from \"yup\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\n\nclass AddContact extends Component {\n static contextType = AppContext;\n\n state = {\n equipments: null,\n suggestions: null,\n };\n\n async componentDidMount() {\n const { showLoading, hideLoading } = this.context.loading;\n\n showLoading();\n\n try {\n const { contacts, machines: equipments } = await contactService.getAll();\n\n equipments.forEach(updateEquipmentSerialNo);\n const suggestions = contacts.map((contact) => {\n return {\n value: `${contact.firstName} ${contact.lastName}`,\n link: `/accounts/our-contacts/view-contact/${contact.contNo}`,\n };\n });\n\n equipments.forEach((e) => {\n e.meters = \"0\";\n e.service = \"0\";\n e.consum = \"0\";\n e.billing = \"0\";\n });\n\n console.log(equipments);\n this.setState({ suggestions, equipments });\n\n hideLoading();\n } catch (err) {\n hideLoading();\n }\n }\n\n renderForm = (props) => {\n const { isValid, status } = props;\n\n return (\n
\n \n\n {status &&
{status}
}\n\n
\n \n
\n \n );\n };\n\n handleSubmit = async (fields, { setStatus, setSubmitting, resetForm }) => {\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n\n const data = {\n contact: getContactFromFields(fields),\n machineContacts: getMachinesFromFields(fields),\n };\n\n showLoading();\n setStatus();\n\n try {\n const response = await contactService.addContact(data);\n console.log(\"response\", response);\n hideLoading();\n // Reset the form\n resetForm();\n bar.showBar({\n content: `This new contact has been added successfully.`,\n });\n this.props.history.push(\"/accounts/our-contacts\");\n } catch (err) {\n hideLoading();\n setSubmitting(false);\n setStatus(getError(err));\n }\n };\n\n render() {\n const title = \"Add new contact\";\n\n return (\n \n \n Add new contact\n \n \n \n );\n }\n}\n\nexport default AddContact;\n","import React, { Component } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport { DetailsForm } from \"scripts/components/parts\";\nimport { Formik, Form } from \"formik\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport {\n contactService,\n equipmentService,\n // authenticationService,\n} from \"scripts/_services\";\nimport { updateEquipmentSerialNo } from \"scripts/_helpers\";\nimport { mapContactEquipments } from \"scripts/components/form\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\n\nclass ViewContact extends Component {\n static contextType = AppContext;\n\n state = {\n contact: null,\n };\n\n async componentDidMount() {\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n const { id } = this.props.match.params;\n\n showLoading();\n\n try {\n const { contact, machineContacts } = await contactService.getById(id);\n const { equipments } = await equipmentService.getAll();\n\n equipments.forEach(updateEquipmentSerialNo);\n this.setState({\n contact,\n equipments: mapContactEquipments(equipments, machineContacts),\n });\n\n hideLoading();\n } catch (err) {\n bar.showBar({\n content: `Error, no user with this ID.`,\n modifier: \"red\",\n });\n hideLoading();\n }\n }\n\n render() {\n const { contact, equipments } = this.state;\n if (!contact) return null;\n const {\n firstName,\n lastName,\n address,\n mobile,\n phone,\n jobTitle,\n dept,\n email,\n department,\n } = contact;\n\n const title = \"View contact\";\n\n return (\n \n \n View contact\n \n {\n return (\n
\n \n \n );\n }}\n />\n
\n );\n }\n}\n\nexport default ViewContact;\n","import React, { Component } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport { Button, Panel, ButtonGroup } from \"scripts/components/parts\";\nimport {\n Select,\n isInitialValid,\n FormField,\n Checkbox,\n} from \"scripts/components/form\";\nimport { Formik, Form } from \"formik\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\nimport * as Yup from \"yup\";\nimport { getError } from \"scripts/_helpers\";\n\nimport { contactService } from \"scripts/_services\";\n\n/*\n * Value is used to send to API\n */\nconst contactTypes = [\n { name: \"meter\", text: \"Meter reading\", value: \"Meter\" },\n { name: \"billing\", text: \"Billing\", value: \"Billing\" },\n { name: \"service\", text: \"Service\", value: \"Service\" },\n { name: \"consumables\", text: \"Consumables\", value: \"Consumables\" },\n];\nclass ReplaceContact extends Component {\n static contextType = AppContext;\n\n state = {\n contacts: null,\n selected: null,\n };\n\n async componentDidMount() {\n const { showLoading, hideLoading } = this.context.loading;\n const { id } = this.props.match.params;\n\n showLoading();\n\n try {\n const { contacts } = await contactService.getAll();\n\n const options = contacts.map((c) => {\n return {\n value: c.contNo,\n label: `${c.firstName} ${c.lastName}`,\n };\n });\n\n this.setState({\n contacts: options,\n selected: options.find((c) => c.value === id),\n });\n\n hideLoading();\n } catch (err) {\n hideLoading();\n }\n }\n\n changeReplace = (option) => {\n this.setState({ selected: option });\n };\n\n renderForm = (props) => {\n const { contacts, selected } = this.state;\n const { isValid, status } = props;\n\n return (\n
\n
\n
\n \n
\n
\n\n
\n
\n u.value !== selected.value)}\n placeholder={\"Select contact\"}\n />\n
\n
\n\n
\n \n {contactTypes.map((item, index) => {\n const { name, text } = item;\n\n return (\n \n );\n })}\n \n
\n\n
Contact for any linked serial numbers.
\n\n {status &&
{status}
}\n\n
\n \n
\n
\n );\n };\n\n handleSubmit = (fields, { setStatus, setSubmitting, resetForm }) => {\n const { showLoading, hideLoading } = this.context.loading;\n const { openModal, closeModal } = this.context.modal;\n const { bar } = this.context;\n const { contacts } = this.state;\n\n const { value_replace, value_with } = fields;\n const contactReplace = contacts.find((c) => c.value === value_replace);\n const contactWith = contacts.find((c) => c.value === value_with);\n\n const ContTypes = [];\n\n contactTypes.forEach((c) => {\n // If the checkbox under this name is true\n if (fields[c.name]) {\n ContTypes.push(c.value);\n }\n });\n const data = {\n OldContNo: value_replace,\n NewContNo: value_with,\n ContTypes,\n };\n\n // Function to be used when clicked \"Replace\"\n const replaceAction = async () => {\n showLoading();\n setStatus();\n\n try {\n const response = await contactService.replaceContact(data);\n console.log(response);\n closeModal();\n hideLoading();\n\n // Reset the form with submitted values\n // resetForm({ })\n bar.showBar({ content: `These contacts have been updated.` });\n this.props.history.push(\"/accounts/our-contacts\");\n } catch (err) {\n closeModal();\n hideLoading();\n setSubmitting(false);\n setStatus(getError(err));\n }\n };\n\n const title = \"Replace\";\n const text = (\n

\n Any serial numbers that had\n {contactReplace.label}\n as the selected type of contact\n
\n will now have\n {contactWith.label}\n set as a contact instead.\n

\n );\n\n const bottom = (\n

\n This will not delete the account of\n {contactReplace.label}\n

\n );\n\n const children = (\n \n \n \n \n \n \n );\n\n openModal(children);\n };\n\n render() {\n const { contacts, selected } = this.state;\n if (!contacts) return null;\n const title = \"Replace contact\";\n\n return (\n \n \n Replace contact\n \n {\n const t = (value) => {\n return value === \"true\";\n };\n\n const check = !(\n t(meter) ||\n t(billing) ||\n t(service) ||\n t(consumables)\n );\n // console.log(check, !!t(meter), t(billing), t(service), t(consumables))\n return check;\n },\n then: Yup.bool().required(\"At least one checkbox is required\"),\n otherwise: Yup.bool(),\n }\n ),\n })}\n children={this.renderForm}\n onSubmit={this.handleSubmit}\n />\n \n );\n }\n}\n\nexport default ReplaceContact;\n","import React, { Component } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\n\nimport { Button, DetailsForm } from \"scripts/components/parts\";\nimport {\n isInitialValid,\n detailsSchema,\n getContactFromFields,\n getMachinesFromFields,\n mapContactEquipments,\n} from \"scripts/components/form\";\n\nimport { Formik, Form } from \"formik\";\nimport * as Yup from \"yup\";\nimport { getError, updateEquipmentSerialNo } from \"scripts/_helpers\";\n\nimport { contactService, equipmentService } from \"scripts/_services\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\n\nclass EditContact extends Component {\n static contextType = AppContext;\n\n state = {\n contact: null,\n equipments: null,\n // machineContacts: null,\n };\n\n async componentDidMount() {\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n const { id } = this.props.match.params;\n\n showLoading();\n\n try {\n const { contact, machineContacts } = await contactService.getById(id);\n const { equipments } = await equipmentService.getAll();\n\n equipments.forEach(updateEquipmentSerialNo);\n\n this.setState({\n contact,\n equipments: mapContactEquipments(equipments, machineContacts),\n });\n hideLoading();\n } catch (err) {\n bar.showBar({\n content: `Error, no user with this ID.`,\n modifier: \"red\",\n });\n hideLoading();\n }\n }\n\n renderForm = (props) => {\n const { contact } = this.state;\n const { isValid, dirty, status } = props;\n\n return (\n
\n \n\n {/* \n \n \n \n User Groups\n Member of\n \n \n\n \n {userGroups.map((group, idx) => (\n \n {group.display}\n \n \n \n \n ))}\n \n
\n
*/}\n\n {status &&
{status}
}\n\n
\n \n SAVE CHANGES\n \n
\n \n );\n };\n\n handleSubmit = async (fields, { setStatus, setSubmitting, resetForm }) => {\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n const { id: contNo } = this.props.match.params;\n\n const data = {\n contact: getContactFromFields(fields, contNo),\n machineContacts: getMachinesFromFields(fields, contNo),\n };\n\n showLoading();\n setStatus();\n\n try {\n const response = await contactService.editContact(data);\n console.log(\"response\", response);\n hideLoading();\n bar.showBar({ content: `This contact has been updated.` });\n this.props.history.push(\"/accounts/our-contacts\");\n } catch (error) {\n hideLoading();\n setSubmitting(false);\n setStatus(getError(error));\n }\n };\n\n render() {\n const { contact } = this.state;\n if (!contact) return null;\n const {\n firstName,\n lastName,\n address,\n cellPhone,\n phone,\n jobTitle,\n department,\n email,\n } = contact;\n\n const title = \"Edit contact\";\n\n return (\n \n \n Edit contact\n \n\n \n \n );\n }\n}\n\nexport default EditContact;\n","import React, { Component, Fragment } from \"react\";\nimport { PrivateRoute } from \"scripts/components/routing/PrivateRoute\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\n\nimport ListContacts from \"./ListContacts\";\nimport AddContact from \"./AddContact\";\nimport ViewContact from \"./ViewContact\";\nimport ReplaceContact from \"./ReplaceContact\";\nimport EditContact from \"./EditContact\";\n\nclass OurContacts extends Component {\n render() {\n return (\n \n \n Our contacts\n \n\n \n \n \n \n \n \n );\n }\n}\n\nexport default OurContacts;\n","import React, { Component, Fragment } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport {\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableBody,\n} from \"scripts/components/parts/Table\";\n// import { Link } from \"react-router-dom\";\nimport { PanelNotification } from \"scripts/components/parts\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport moment from \"moment\";\n\nimport { showPdf } from \"scripts/_helpers\";\nimport { invoiceService } from \"scripts/_services\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\n\nclass UnpaidInvoices extends Component {\n static contextType = AppContext;\n\n state = {\n statementDetail: null,\n };\n\n async componentDidMount() {\n const { showLoading, hideLoading } = this.context.loading;\n showLoading();\n\n try {\n const { statementDetail } = await invoiceService.getAllUnpaid();\n\n console.log(statementDetail);\n this.processData({ statementDetail });\n hideLoading();\n } catch (err) {\n hideLoading();\n }\n }\n\n processData = ({ statementDetail }) => {\n statementDetail.forEach((i) => {\n i.dateDisplay = moment(i.invoiceDate).format(\"DD/MM/YY\");\n i.dueDisplay = moment(i.dueDate).format(\"DD/MM/YY\");\n });\n\n this.setState({ statementDetail });\n };\n\n notAvaliable = (e) => {\n e.preventDefault();\n const { openModal, closeModal } = this.context.modal;\n const text = (\n \n

This kind of invoice is not available yet from MyAccount.

\n

\n Please talk to your FBNZ Admin Officer for more information.\n

\n
\n );\n\n const children = ;\n\n openModal(children);\n };\n\n renderTable = () => {\n const { statementDetail } = this.state;\n const { showLoading, hideLoading } = this.context.loading;\n const { bar } = this.context;\n\n return (\n \n \n \n Invoice #\n \n Date\n \n Due\n Details\n Amount\n \n \n\n \n {statementDetail.map((item, idx) => {\n // const isDisabled = !item.link || item.link === \"\";\n const { id, invoiceNo, invoiceDetail } = item;\n\n // When cliked on view\n const handleView = async () => {\n showLoading();\n\n // Try retrive that pdf\n try {\n const { invoice } = await invoiceService.getInvoiceData({\n id,\n invoiceNo,\n invoiceDetail,\n });\n\n showPdf(invoice);\n console.log(\"Example PDF\", invoice);\n\n hideLoading();\n } catch (err) {\n bar.showBar(\n {\n content:\n typeof err === \"string\"\n ? err\n : \"There has been a problem with viewing the pdf\",\n modifier: \"red\",\n },\n 8000\n );\n console.log(err);\n hideLoading();\n }\n };\n\n if (item.canDisplay) {\n return (\n \n \n \n\n {/* \n {item.invoice}\n */}\n \n \n {item.dateDisplay}\n \n {item.dueDisplay}\n {item.invoiceDetail}\n \n {`$${parseFloat(item.invoiceAmount).toFixed(2)}`}\n \n \n );\n }\n else {\n return (\n \n \n \n \n \n {item.dateDisplay}\n \n {item.dueDisplay}\n {item.invoiceDetail}\n \n {`$${parseFloat(item.invoiceAmount).toFixed(2)}`}\n \n \n );\r\n }\n })}\n \n
\n );\n };\n\n render() {\n const { statementDetail } = this.state;\n if (!statementDetail) return null;\n\n const title = \"Unpaid invoices\";\n const total = statementDetail.reduce(\n (a, b) => a + parseFloat(b.invoiceAmount),\n 0\n );\n\n return (\n \n \n Unpaid invoices\n \n {statementDetail.length === 0 ? (\n
\n
\n

You have no unpaid invoices

\n
\n
\n ) : (\n {this.renderTable()}\n )}\n\n
\n Total due: ${total.toFixed(2)}\n
\n
\n );\n }\n}\n\nexport default UnpaidInvoices;\n","import React, { Component, Fragment } from \"react\";\r\n\r\nimport { LayoutPage } from \"scripts/components/layouts\";\r\nimport { Search, Tab } from \"scripts/components/parts\";\r\nimport {\r\n Table,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n} from \"scripts/components/parts/Table\";\r\nimport { Select } from \"scripts/components/form\";\r\n\r\nimport { showPdf, getSerialNo } from \"scripts/_helpers\";\r\nimport { AppContext } from \"scripts/context/app-context\";\r\nimport { usageService } from \"scripts/_services\";\r\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\r\n\r\nclass BilledUsage extends Component {\r\n static contextType = AppContext;\r\n\r\n state = {\r\n equipments: null,\r\n years: [],\r\n yearSelected: null,\r\n searchValue: \"\",\r\n };\r\n\r\n async componentDidMount() {\r\n const { showLoading, hideLoading } = this.context.loading;\r\n const { bar } = this.context;\r\n showLoading();\r\n\r\n try {\r\n const { equipments } = await usageService.getAllBilled();\r\n this.processData({ equipments });\r\n hideLoading();\r\n } catch (err) {\r\n bar.showBar(\r\n {\r\n content: \"There has been a problem with getting billed usage\",\r\n modifier: \"red\",\r\n },\r\n 8000\r\n );\r\n console.log(err);\r\n hideLoading();\r\n }\r\n }\r\n\r\n processData = ({ equipments }) => {\r\n const years = [];\r\n\r\n equipments.forEach((item) => {\r\n item.serialNo = getSerialNo(item.serialNo);\r\n item.usageYears.forEach((year) => {\r\n // If this year is not included in the array\r\n // Add it\r\n if (years.findIndex((y) => y.value === parseInt(year)) === -1) {\r\n years.push({ value: parseInt(year), label: year });\r\n }\r\n });\r\n });\r\n\r\n function compare(a, b) {\r\n return parseInt(a) < parseInt(b) ? -1 : 1;\r\n }\r\n\r\n years.sort(compare);\r\n\r\n this.setState({ equipments, years, yearSelected: years[0] });\r\n };\r\n\r\n renderTable = (equipments) => {\r\n if (!equipments || equipments.length === 0) return null;\r\n const { yearSelected } = this.state;\r\n const { showLoading, hideLoading } = this.context.loading;\r\n const { bar } = this.context;\r\n\r\n return (\r\n \r\n \r\n {equipments.map((item, idx) => {\r\n const { machinesID, serialNo, model } = item;\r\n\r\n // When cliked on view\r\n const handleView = async () => {\r\n showLoading();\r\n\r\n // Try retrive that pdf\r\n try {\r\n const { machineUsage } = await usageService.getUsagePdf(\r\n machinesID,\r\n model,\r\n serialNo,\r\n yearSelected.label\r\n );\r\n\r\n showPdf(machineUsage);\r\n console.log(\"Example PDF\", machineUsage);\r\n\r\n hideLoading();\r\n } catch (err) {\r\n bar.showBar(\r\n {\r\n content:\r\n typeof err === \"string\"\r\n ? err\r\n : \"There has been a problem with viewing the pdf\",\r\n modifier: \"red\",\r\n },\r\n 8000\r\n );\r\n console.log(err);\r\n hideLoading();\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n Serial number {serialNo}\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n };\r\n\r\n applyYearFilter = (equipments) => {\r\n const { yearSelected } = this.state;\r\n if (yearSelected === \"\") return null;\r\n return equipments.filter((item) =>\r\n item.usageYears.some((year) => year === yearSelected.label)\r\n );\r\n };\r\n\r\n applySearchFilter = (equipments) => {\r\n const { searchValue } = this.state;\r\n if (searchValue === \"\") return null;\r\n return equipments.filter(\r\n (item) =>\r\n item.serialNo &&\r\n item.serialNo.toLowerCase().indexOf(searchValue.toLowerCase()) !== -1\r\n );\r\n };\r\n\r\n renderAll = () => {\r\n const { equipments } = this.state;\r\n let filtered = JSON.parse(JSON.stringify(equipments));\r\n\r\n filtered = this.applyYearFilter(filtered);\r\n return this.renderTable(filtered);\r\n };\r\n\r\n renderResults = () => {\r\n const { equipments } = this.state;\r\n let filtered = JSON.parse(JSON.stringify(equipments));\r\n\r\n filtered = this.applyYearFilter(filtered);\r\n filtered = this.applySearchFilter(filtered);\r\n\r\n if (!filtered || filtered.length === 0) return;\r\n\r\n return (\r\n \r\n {this.renderTable(filtered)}\r\n \r\n );\r\n };\r\n\r\n filterByYear = (yearSelected) => {\r\n this.setState({ yearSelected });\r\n };\r\n\r\n filterBySearch = (searchValue) => {\r\n this.setState({ searchValue });\r\n };\r\n\r\n render() {\r\n const { equipments, years, yearSelected, searchValue } = this.state;\r\n if (!equipments) return null;\r\n \r\n if (equipments.length > 0) {\r\n const title = `Billed usage for ${yearSelected.label}`;\r\n\r\n let filtered = this.applySearchFilter(\r\n JSON.parse(JSON.stringify(equipments))\r\n );\r\n const error =\r\n (!filtered || filtered.length === 0) && searchValue !== \"\"\r\n ? { message: \"No results match your search, ngana anō - try again.\" }\r\n : false;\r\n\r\n const control = (\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n\r\n return (\r\n \r\n \r\n Billed usage\r\n \r\n\r\n {this.renderResults()}\r\n\r\n \r\n {this.renderAll()}\r\n \r\n \r\n );\r\n }\r\n else {\r\n const title = \"Billed usage\";\r\n return (\r\n \r\n \r\n Billed usage\r\n \r\n\r\n
\r\n
\r\n

No results match your search, ngana anō - try again.

\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default BilledUsage;\r\n","import React, { Component, Fragment } from \"react\";\r\nimport { LayoutPage } from \"scripts/components/layouts\";\r\nimport {\r\n Button,\r\n Tooltip,\r\n Panel,\r\n Tab,\r\n Address,\r\n ButtonGroup,\r\n} from \"scripts/components/parts\";\r\n\r\nimport { Formik, Form } from \"formik\";\r\nimport {\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n} from \"scripts/components/parts/Table\";\r\nimport { AppContext } from \"scripts/context/app-context\";\r\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\r\nimport { isInitialValid, FormField } from \"scripts/components/form\";\r\n\r\nimport * as Yup from \"yup\";\r\n\r\nimport {\r\n orderService,\r\n authenticationService,\r\n // equipmentService,\r\n} from \"scripts/_services\";\r\nimport { getError, getSerialNo } from \"scripts/_helpers\";\r\nimport moment from \"moment\";\r\n\r\nclass PendingOrder extends Component {\r\n static contextType = AppContext;\r\n\r\n state = {\r\n orders: null,\r\n selectedOrder: null,\r\n };\r\n\r\n componentDidMount() {\r\n this.reuqestOrders();\r\n }\r\n\r\n async reuqestOrders() {\r\n const { showLoading, hideLoading } = this.context.loading;\r\n showLoading();\r\n\r\n try {\r\n const { orders } = await orderService.getPendingOrders();\r\n // const { equipments } = await equipmentService.getAll();\r\n\r\n // To delete\r\n // orders[0].ordStatusId = 5;\r\n // orders[1].ordStatusId = 5;\r\n // orders[2].ordStatusId = 5;\r\n // orders[5].ordStatusId = 5;\r\n\r\n this.processData({ orders });\r\n hideLoading();\r\n } catch (err) {\r\n console.log(err);\r\n hideLoading();\r\n\r\n // Set order to empty array, so display empty page\r\n // If user doesnt have access to the orders for example\r\n this.setState({ orders: [] });\r\n }\r\n }\r\n\r\n processData = ({ orders }) => {\r\n /*\r\n * Sort orders by date\r\n */\r\n orders\r\n .sort(\r\n (a, b) =>\r\n moment(a.shipDate).format(\"YYYYMMDD\") -\r\n moment(b.shipDate).format(\"YYYYMMDD\")\r\n )\r\n .forEach((item) => {\r\n const { shipDate } = item;\r\n item.serialNo = getSerialNo(item.serialNo);\r\n // item.address = equipments.find(\r\n // (e) => e.serialNo?.trim() === serialNo?.trim()\r\n // )?.address;\r\n\r\n const date = moment(shipDate);\r\n item.shipDate_display = date.isValid() ? date.format(\"DD/MM/YYYY\") : \"\";\r\n });\r\n\r\n this.setState({ orders });\r\n };\r\n\r\n cancelModal = () => {\r\n const { orderId, qty, itemDesc, lcnClient, clientno } =\r\n this.state.selectedOrder;\r\n\r\n const { bar } = this.context;\r\n const { showLoading, hideLoading } = this.context.loading;\r\n const { openModal, closeModal } = this.context.modal;\r\n\r\n const title = \"Cancel
shipment\";\r\n\r\n const text = (\r\n \r\n

\r\n Shipment of{\" \"}\r\n \r\n {qty} {itemDesc}\r\n {\" \"}\r\n will be cancelled.\r\n

\r\n

This action cannot be undone from inside MyAccount.

\r\n
\r\n );\r\n\r\n const cancelShipment = async () => {\r\n showLoading();\r\n\r\n try {\r\n await orderService.cancelOrder({ orderId, clientno, lcnClient });\r\n\r\n const orders = JSON.parse(JSON.stringify(this.state.orders)).filter(\r\n (o) => o.orderId !== orderId\r\n );\r\n\r\n this.processData({ orders });\r\n hideLoading();\r\n closeModal();\r\n bar.showBar({ content: `This consumable has been cancelled.` });\r\n window.scrollTo(0, 0);\r\n } catch (err) {\r\n hideLoading();\r\n }\r\n };\r\n\r\n const children = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n openModal(children);\r\n };\r\n\r\n consolidateModal = () => {\r\n const { showLoading, hideLoading } = this.context.loading;\r\n const { bar } = this.context;\r\n const { openModal, closeModal } = this.context.modal;\r\n const { orderId, lcnClient, clientno, qty, itemDesc } =\r\n this.state.selectedOrder;\r\n const { addresses } = authenticationService.currentUserValue.client;\r\n const initialAddress = addresses.find(\r\n (a) => a.clientNo === lcnClient\r\n )?.address;\r\n\r\n const consolidateShipment = async (\r\n { address },\r\n { setStatus, setSubmitting }\r\n ) => {\r\n showLoading();\r\n setStatus();\r\n\r\n const data = {\r\n orderId,\r\n clientno,\r\n lcnClient,\r\n };\r\n\r\n // Only pass AddressKey if address changed from initial value\r\n if (address !== initialAddress) {\r\n data.addressKey = address;\r\n }\r\n\r\n try {\r\n await orderService.consolidateOrder(data);\r\n\r\n // Update submitted order to \"Consolidated\"\r\n // const orders = JSON.parse(JSON.stringify(this.state.orders));\r\n // orders.forEach((o) => {\r\n // if (o.orderId === orderId) {\r\n // o.ordStatusId = 4;\r\n // }\r\n // });\r\n\r\n // request updated orders\r\n await this.reuqestOrders();\r\n\r\n closeModal();\r\n hideLoading();\r\n bar.showBar({\r\n content: `This consumable will be shipped with your next scheduled order.`,\r\n });\r\n window.scrollTo(0, 0);\r\n\r\n // this.setState({ orders, selectedOrder: null });\r\n this.setState({ selectedOrder: null });\r\n } catch (err) {\r\n hideLoading();\r\n setSubmitting(false);\r\n setStatus(getError(err));\r\n bar.showBar({ content: `Error: ${getError(err)}.`, modifier: \"red\" });\r\n }\r\n };\r\n\r\n const title = \"Consolidate\";\r\n const text = (\r\n \r\n

\r\n \r\n {qty} {itemDesc}\r\n {\" \"}\r\n will be shipped with your next scheduled order.\r\n

\r\n
\r\n );\r\n\r\n const children = (\r\n \r\n \r\n {(props) => (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n {props.status && (\r\n
{props.status}
\r\n )}\r\n\r\n
\r\n \r\n
\r\n
\r\n )}\r\n \r\n \r\n );\r\n\r\n openModal(children);\r\n };\r\n\r\n shipModal = () => {\r\n const { showLoading, hideLoading } = this.context.loading;\r\n const { bar } = this.context;\r\n const { orderId, lcnClient, clientno, qty, itemDesc } =\r\n this.state.selectedOrder;\r\n const { openModal, closeModal } = this.context.modal;\r\n const { addresses } = authenticationService.currentUserValue.client;\r\n const initialAddress = addresses.find(\r\n (a) => a.clientNo === lcnClient\r\n )?.address;\r\n\r\n const handleSubmit = async (fields, { setStatus, setSubmitting }) => {\r\n showLoading();\r\n setStatus();\r\n\r\n const { address } = fields;\r\n\r\n const data = {\r\n orderId,\r\n clientno,\r\n lcnClient,\r\n };\r\n\r\n // Only pass AddressKey if address changed from initial value\r\n if (address !== initialAddress) {\r\n data.addressKey = address;\r\n }\r\n\r\n try {\r\n await orderService.shipTodayOrder(data);\r\n\r\n // Update submitted order to \"Ship today\"\r\n // const orders = JSON.parse(JSON.stringify(this.state.orders));\r\n // orders.forEach((o) => {\r\n // if (o.orderId === orderId) {\r\n // o.ordStatusId = 3;\r\n // }\r\n // });\r\n\r\n await this.reuqestOrders();\r\n\r\n closeModal();\r\n hideLoading();\r\n\r\n bar.showBar({\r\n content: `This consumable will be on the next shipment.`,\r\n });\r\n\r\n window.scrollTo(0, 0);\r\n\r\n // this.setState({ orders, selectedOrder: null });\r\n this.setState({ selectedOrder: null });\r\n } catch (err) {\r\n hideLoading();\r\n setSubmitting(false);\r\n setStatus(getError(err));\r\n\r\n bar.showBar({ content: `Error: ${getError(err)}.`, modifier: \"red\" });\r\n }\r\n };\r\n\r\n const title = \"Ship today\";\r\n const text = (\r\n \r\n

\r\n \r\n {qty} {itemDesc}\r\n {\" \"}\r\n will be sent to you in the next possible shipment.\r\n

\r\n
\r\n );\r\n\r\n const children = (\r\n \r\n \r\n {(props) => (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n {props.status && (\r\n
{props.status}
\r\n )}\r\n\r\n
\r\n \r\n
\r\n
\r\n )}\r\n \r\n \r\n );\r\n\r\n openModal(children);\r\n };\r\n\r\n selectOrder = (e) => {\r\n const orderId = parseInt(e.target.value);\r\n const order = this.getOrderById(orderId);\r\n\r\n if (order) {\r\n this.setState({ selectedOrder: order });\r\n }\r\n };\r\n\r\n getOrderById = (orderId) => {\r\n const { orders } = this.state;\r\n return orders.find((o) => o.orderId === orderId);\r\n };\r\n\r\n renderTabs = (shipment_status) => {\r\n let shipments = [];\r\n\r\n /*\r\n * Filter out \"Ship today\" orders\r\n */\r\n if (shipment_status === \"today\") {\r\n shipments.push({\r\n title: `Shipping today`,\r\n orders: this.state.orders.filter(\r\n ({ ordStatusId }) => ordStatusId === 3\r\n ),\r\n });\r\n }\r\n\r\n /*\r\n * Filter out \"Consolidated\" orders\r\n */\r\n if (shipment_status === \"consolidated\") {\r\n const orders = this.state.orders.filter(\r\n ({ ordStatusId }) => ordStatusId === 4\r\n );\r\n\r\n // const date = moment.min(orders.map((o) => moment(o.shipDate)));\r\n\r\n orders.forEach((order) => {\r\n const shipment = shipments.find(\r\n (s) => s.shipDate_display === order.shipDate_display\r\n );\r\n\r\n if (shipment) {\r\n shipment.orders.push(order);\r\n } else {\r\n shipments.push({\r\n title: `Shipment scheduled ${order.shipDate_display}`,\r\n shipDate_display: order.shipDate_display,\r\n orders: [order],\r\n });\r\n }\r\n });\r\n\r\n // shipments.push({\r\n // title: `Consolidated shipment ${\r\n // date.isValid() ? date.format(\"DD/MM/YYYY\") : \"\"\r\n // }`,\r\n // orders,\r\n // });\r\n }\r\n\r\n /*\r\n * Filter out \"Future\" orders\r\n */\r\n if (shipment_status === \"future\") {\r\n const orders = this.state.orders.filter(\r\n ({ ordStatusId }) => ![3, 4].some((i) => i === ordStatusId)\r\n );\r\n\r\n orders.forEach((order) => {\r\n const shipment = shipments.find(\r\n (s) => s.shipDate_display === order.shipDate_display\r\n );\r\n\r\n if (shipment) {\r\n shipment.orders.push(order);\r\n } else {\r\n shipments.push({\r\n title: `Shipment scheduled ${order.shipDate_display}`,\r\n shipDate_display: order.shipDate_display,\r\n orders: [order],\r\n });\r\n }\r\n });\r\n }\r\n\r\n return (\r\n
\r\n {shipments.map(this.renderShipment)}\r\n
\r\n );\r\n };\r\n\r\n renderShipment = (shipment, index) => {\r\n const { orders, title } = shipment;\r\n\r\n if (orders.length > 0) {\r\n return (\r\n \r\n {this.renderOrders(orders, shipment)}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n renderOrders = (orders) => {\r\n const { selectedOrder } = this.state;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Quantity\r\n \r\n Order of\r\n For serial number\r\n Select\r\n \r\n \r\n \r\n {orders.map((order, idx) => {\r\n const { orderId } = order;\r\n const isSelected = selectedOrder\r\n ? selectedOrder.orderId === orderId\r\n : false;\r\n if (order.ordStatusId === 3) {\r\n return (\r\n \r\n {order.qty}\r\n {order.itemDesc}\r\n {order.serialNo}\r\n \r\n \r\n );\r\n }\r\n else {\r\n return (\r\n \r\n {order.qty}\r\n {order.itemDesc}\r\n {order.serialNo}\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 render() {\r\n const { orders, selectedOrder } = this.state;\r\n if (!orders) return null;\r\n const title = \"Pending order management\";\r\n const noActions = orders.length === 0;\r\n\r\n const tooltip = (\r\n \r\n

\r\n Any consumables can be consolidated into one order, which will be\r\n shipped together to you within the next 4 days\r\n

\r\n
\r\n );\r\n\r\n let disableToday = true;\r\n let disableConsolidate = true;\r\n let disableCancel = true;\r\n\r\n if (selectedOrder) {\r\n disableToday = selectedOrder.ordStatusId === 3;\r\n disableConsolidate = disableToday; //|| selectedOrder.ordStatusId === 4;\r\n disableCancel = disableToday;\r\n }\r\n\r\n const action = (\r\n
\r\n \r\n Ship Today\r\n \r\n \r\n Consolidate\r\n \r\n \r\n Cancel\r\n \r\n
\r\n );\r\n\r\n return (\r\n \r\n \r\n Pending order management\r\n \r\n\r\n {noActions ? (\r\n
\r\n
\r\n

\r\n You have no automatic consumable orders pending shipment\r\n from EPBB machines.\r\n

\r\n

\r\n If this is an error please call 0800 493 769 or{\" \"}\r\n \r\n Email us\r\n \r\n

\r\n
\r\n
\r\n ) : (\r\n \r\n {this.renderTabs(\"today\")}\r\n {this.renderTabs(\"consolidated\")}\r\n {this.renderTabs(\"future\")}\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PendingOrder;\r\n","import React, { Component, Fragment } from \"react\";\nimport { Panel } from \"scripts/components/parts\";\nimport { Link } from \"react-router-dom\";\nimport { LayoutPanel } from \"scripts/components/layouts\";\nimport { authenticationService } from \"scripts/_services\";\n\nclass LogOut extends Component {\n state = {\n firstName: \"\",\n };\n\n componentDidMount() {\n const { history } = this.props;\n const currentUser = authenticationService.currentUserValue;\n\n if (currentUser) {\n this.setState({\n firstName: authenticationService.currentUserValue.firstName,\n });\n authenticationService.logout();\n } else {\n // If successful, redirect to login, show succes message\n history.push(\"/login\");\n }\n }\n\n render() {\n const { firstName } = this.state;\n const title = \"Haere rā!\";\n const text = (\n \n

Thanks for working with us {firstName}.

\n

We hope to see you again soon.

\n
\n );\n\n const veryBottom = (\n

\n Back to log in\n

\n );\n\n return (\n \n \n \n );\n }\n}\n\nexport default LogOut;\n","import React, { Component } from \"react\";\nimport { Panel} from \"scripts/components/parts\";\nimport { LayoutPanel } from \"scripts/components/layouts\";\n\nclass LogOut extends Component {\n\n\n render() {\n const title = 'Account disabled';\n const text = (\n

\n Your MyAccount log in has been disabled
\n If this is an error
\n Please call 0800 493 769 or
\n email shm-fbnz-contact.centre@fujifilm.com\n

\n );\n\n return (\n \n \n \n );\n }\n}\n\nexport default LogOut;\n","import React, { Component } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\nimport { Button, Search } from \"scripts/components/parts\";\n\nimport { adminService, authenticationService } from \"scripts/_services\";\nimport { AppContext } from \"scripts/context/app-context\";\n\nclass SwitchAccounts extends Component {\n static contextType = AppContext;\n\n state = {\n client: null,\n error: null,\n };\n\n search = async (value) => {\n const { showLoading, hideLoading } = this.context.loading;\n showLoading();\n\n try {\n const client = await adminService.searchAccountById(value);\n console.log(client);\n hideLoading();\n this.setState({ client, error: null });\n } catch (error) {\n hideLoading();\n this.setState({ client: null, error });\n }\n };\n\n switch = async () => {\n const { history } = this.props;\n const { client } = this.state;\n const { showLoading, hideLoading } = this.context.loading;\n showLoading();\n\n try {\n await authenticationService.switchTo({\n AccountNum: client.accountNum,\n ClientNo: client.clientNo,\n client,\n });\n hideLoading();\n history.push(\"/\");\n } catch (err) {\n hideLoading();\n console.log(err);\n }\n };\n\n render() {\n const { client } = this.state;\n const title = \"Switch accounts\";\n\n return (\n \n Switch accounts\n\n
\n
\n As an FX Super Admin, you can perform actions inside other accounts.\n
\n
\n \n
\n\n {client ? (\n
\n Selected: {client.name}\n
\n ) : null}\n\n
\n \n Switch To Account\n \n
\n\n {/* {error ?
{error}
: null} */}\n
\n
\n );\n }\n}\n\nexport default SwitchAccounts;\n","import React, { Component } from \"react\";\nimport { LayoutPanel } from \"scripts/components/layouts\";\nimport queryString from \"query-string\";\nimport { AppContext } from \"scripts/context/app-context\";\nimport { registrationService } from \"scripts/_services\";\nimport { getParam } from \"scripts/_helpers\";\n\nclass ValidateUser extends Component {\n static contextType = AppContext;\n\n async componentDidMount() {\n const { location, history } = this.props;\n const { bar } = this.context;\n const { showLoading, hideLoading } = this.context.loading;\n showLoading();\n\n try {\n const params = queryString.parse(location.search);\n\n const VKey = getParam(params, \"VKey\") || getParam(params, \"a\");\n const UserID = getParam(params, \"UserID\") || getParam(params, \"b\");\n\n const { message } = await registrationService.validateUser({\n VKey,\n UserID: parseInt(UserID),\n });\n\n // console.log(response);\n bar.showBar({ content: message }, 4000);\n\n // If successful, redirect to login\n history.push(\"/login\");\n hideLoading();\n } catch (err) {\n bar.showBar(\n {\n content: \"Couldn't validate.\",\n modifier: \"red\",\n },\n 8000\n );\n console.log(err);\n hideLoading();\n }\n }\n\n render() {\n return ;\n }\n}\n\nexport default ValidateUser;\n","import React, { Component } from \"react\";\nimport { LayoutPage } from \"scripts/components/layouts\";\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\n\nclass ConsumableReturnsPolicy extends Component {\n \n render() {\n const title = \"Consumable Returns Policy\";\n return (\n \n \n Consumable Returns Policy\n \n\n
\n
\n
\n {/*

Welcome to MyAccount

*/}\n

\n If it is necessary to return products to FUJIFILM the following procedures must be adhered to:\n

\n
\n

\n In all cases before returning products, please call our contact centre on 0800 493 769 to obtain a Return Authority Number. This number must be quoted on all documentation that accompanies returned goods. Credit returns cannot be accepted without a Return Authority Number.\n

\n

\n Please enclose a copy of the original dispatch docket with the returned goods. The contact centre must be notified of the intent to return goods within 7 working days of receipt (for faulty goods 30 working days). If the return is because the wrong product was ordered, the freight cost of the return is payable by the purchaser.\n

\n
\n
\n

If returning goods, please send to:

\n
\n
\n
Auckland Returns
\n
\n

Mainfreight Auckland
\n 38 Business Parade North
\n High Brook
\n Auckland

\n
\n
\n
\n
Wellington Returns
\n
\n

Mainfreight Wellington
\n 5-7 Toop Street
\n Seaview
\n Wellington

\n
\n
\n
\n
Christchurch Returns
\n
\n

Mainfreight Christchurch
\n 8 Islington Avenue
\n Islington
\n Christchurch\n

\n
\n
\n
\n
\n\n \n );\n }\n}\n\nexport default ConsumableReturnsPolicy;","import React, { Component } from \"react\";\n\n/* Routing\n------------------------------------------------- */\nimport { BrowserRouter, Route } from \"react-router-dom\";\nimport { history } from \"scripts/_helpers\";\nimport { authenticationService, refreshService } from \"scripts/_services\";\nimport { PrivateRoute } from \"scripts/components/routing/PrivateRoute\";\n\n/* Pages\n------------------------------------------------- */\nimport Home from \"scripts/components/pages/Home\";\nimport Login from \"scripts/components/pages/Login\";\nimport Register from \"scripts/components/pages/Register/index.js\";\nimport ForgottenDetails from \"scripts/components/pages/ForgottenDetails\";\nimport ContactUs from \"scripts/components/pages/ContactUs\";\nimport MeterReadings from \"scripts/components/pages/MeterReadings/index.js\";\nimport ServiceCall from \"scripts/components/pages/ServiceCall/index.js\";\nimport ServiceHistory from \"scripts/components/pages/ServiceHistory\";\nimport MyDetails from \"scripts/components/pages/MyDetails\";\n\nimport OurContacts from \"scripts/components/pages/OurContacts/index.js\";\n\nimport UnpaidInvoices from \"scripts/components/pages/UnpaidInvoices\";\nimport BilledUsage from \"scripts/components/pages/BilledUsage\";\nimport PendingOrder from \"scripts/components/pages/PendingOrder\";\nimport LogOut from \"scripts/components/pages/LogOut\";\nimport AccountDisabled from \"scripts/components/pages/AccountDisabled\";\nimport SwitchAccounts from \"scripts/components/pages/SwitchAccounts\";\nimport ValidateUser from \"scripts/components/pages/ValidateUser\";\nimport ConsumableReturnsPolicy from \"scripts/components/pages/ConsumableReturnsPolicy\";\n\n/* Other\n------------------------------------------------- */\nimport { BreadcrumbsItem } from \"react-breadcrumbs-dynamic\";\nimport IdleTimer from \"react-idle-timer\";\n\nimport {\n Header,\n ScrollToTop,\n NotificationBar,\n Loading,\n} from \"scripts/components/parts\";\nimport Modal from \"react-modal\";\nimport { AppContext } from \"scripts/context/app-context\";\n\nModal.setAppElement(\"#root\");\n\n/*\n * Amount of minutes before triggers idle function\n * Will log user out if was idle for (~10min)\n * If user stayed active, will refersh the token\n */\nconst idleMinTimeout = 30;\n\nexport default class App extends Component {\n themeSections = [];\n\n barTimeoutId = null;\n\n constructor(props) {\n super(props);\n\n this.idleTimer = null;\n\n this.state = {\n appContext: {\n currentUser: null,\n modal: {\n isOpen: false,\n children: null,\n openModal: this.openModal,\n closeModal: this.closeModal,\n },\n bar: {\n isOpen: false,\n props: {},\n showBar: this.showBar,\n },\n loading: {\n isOpen: false,\n showLoading: this.showLoading,\n hideLoading: this.hideLoading,\n },\n },\n };\n }\n\n componentDidMount() {\n const newUser = (x) => {\n console.log(\"App mount. User:\", x);\n if (x) {\n /*\n * When successfully logged in\n * Start a token refresh cycle, so that user can keep using API\n * As long as they are not idle\n */\n refreshService.startRefreshCycle();\n\n document.body.classList.add(\"is-logged-in\");\n } else {\n document.body.classList.remove(\"is-logged-in\");\n }\n\n this.setState(({ appContext }) => {\n appContext.currentUser = x;\n return { appContext };\n });\n };\n\n authenticationService.currentUser.subscribe(newUser);\n }\n\n openModal = (children) => {\n this.setState(({ appContext }) => {\n appContext.modal.isOpen = true;\n appContext.modal.children = children;\n return { appContext };\n });\n };\n\n closeModal = () => {\n this.setState(({ appContext }) => {\n appContext.modal.isOpen = false;\n appContext.modal.children = null;\n return { appContext };\n });\n };\n\n showBar = (props, timeout = 4000) => {\n const { isOpen } = this.state.appContext.bar;\n\n if (isOpen) {\n return;\n }\n\n this.setState(({ appContext }) => {\n appContext.bar.isOpen = true;\n appContext.bar.props = props;\n return { appContext };\n });\n\n this.barTimeoutId = setTimeout(() => {\n this.hideBar();\n }, timeout);\n };\n\n hideBar = () => {\n this.setState(({ appContext }) => {\n appContext.bar.isOpen = false;\n // appContext.bar.props = null;\n return { appContext };\n });\n };\n\n showLoading = (props) => {\n const { isOpen } = this.state.appContext.loading;\n if (isOpen) {\n return;\n }\n\n this.setState(({ appContext }) => {\n appContext.loading.isOpen = true;\n return { appContext };\n });\n };\n\n hideLoading = () => {\n this.setState(({ appContext }) => {\n appContext.loading.isOpen = false;\n return { appContext };\n });\n };\n\n // Idle timer functions\n\n handleOnAction = (event) => {\n // console.log(\"user did something\", event);\n };\n\n handleOnActive = (event) => {\n // console.log(\"user is active\", event);\n // console.log(\"time remaining\", this.idleTimer.getRemainingTime());\n };\n\n handleOnIdle = (event) => {\n // console.log(\"user is idle, logging out\", event);\n // console.log(\"last active\", this.idleTimer.getLastActiveTime());\n authenticationService.logout();\n };\n\n render() {\n const { appContext } = this.state;\n const { modal, bar, loading, currentUser } = appContext;\n\n return (\n
\n {\n this.idleTimer = ref;\n }}\n timeout={1000 * 60 * idleMinTimeout}\n onActive={this.handleOnActive}\n onIdle={this.handleOnIdle}\n onAction={this.handleOnAction}\n debounce={250}\n />\n\n \n \n \n {currentUser ? (\n Home\n ) : null}\n\n
\n\n \n\n \n\n \n {modal.children}\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 \n \n \n\n \n \n \n
\n );\n }\n}\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import \"react-app-polyfill/ie11\";\nimport \"react-app-polyfill/stable\";\nimport \"./assets.js\";\nimport \"./polyfills.js\";\n\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\n// import {ThroughProvider} from 'react-through'\nimport App from \"./scripts/App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nimport { BreadcrumbsProvider } from \"react-breadcrumbs-dynamic\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}