{"version":3,"sources":["Components/ExportPdf/MeridianLogo.js","global.js","Components/Utilities/Common.js","config.js","context/auth.js","reducers/profile.js","reducers/index.js","PermissionRules.js","Permission.js","Components/Utilities/DateFormat.js","Components/Header.js","Components/NavigationAdmin.js","Components/NavigationClient.js","Components/Navigation.js","Components/Utilities/Alert.js","Components/Base/MultiSelectComponent.js","Utilities/Http.js","Components/Base/ListComponent.js","Components/Clients/index.js","Components/Clients/route.js","Components/Base/AddComponent.js","Components/Base/FixRequiredSelect.js","Components/Base/MultiSelectRequiredComponent.js","Components/Clients/add.js","Components/Clients/routeadd.js","Containers/Profiles/Header.js","Components/Base/EditComponent.js","Components/Clients/edit.js","Components/Clients/routeedit.js","Components/Administrator/index.js","Components/Administrator/route.js","Components/Administrator/add.js","Components/Administrator/routeadd.js","Components/Administrator/edit.js","Components/Administrator/routeedit.js","Components/Config/index.js","Components/Config/add.js","Components/Config/edit.js","Components/Config/setting.js","Components/Config/route.js","Components/MailTemplate/index.js","Components/MailTemplate/route.js","Components/MailTemplate/add.js","Components/MailTemplate/routeadd.js","Components/MailTemplate/edit.js","Components/MailTemplate/routeedit.js","Components/Pages/PageNotFound.js","Components/FormControl/FilterSelectControl.js","Components/Report/SummaryAccess.js","Components/Report/SummaryAdmin.js","Components/Dashboard.js","Components/Base/ListComponentCustomState.js","Components/Utilities/ExportExcel.js","Components/Base/ImageGalleryComponent.js","Components/Report/CurrentInventoryBalance.js","Components/Base/DatePickerComponent.js","Components/Report/InventoryRolloverByMonth.js","Components/Home.js","PrivateRoute.js","Components/AuthForms.js","Components/Pages/Login.js","Components/Pages/TermsOfUse.js","Components/Pages/RecoverPassword.js","Components/Administrator/profile.js","Containers/Profiles/AdminProfile.js","Components/Clients/profile.js","Containers/Profiles/ClientProfile.js","Components/User/Profile.js","Components/Report/InventoryRolloverByDate.js","Components/ExportPdf/MeridianGrowersRtt.js","Components/Report/MeridianGrowersRtt.js","Components/ExportPdf/MeridianGrowerSummary.js","Components/Report/MeridianGroweSummary.js","Components/CronJob/index.js","Components/CronJob/route.js","Components/CronJob/add.js","Components/CronJob/routeadd.js","Components/CronJob/edit.js","Components/CronJob/routeedit.js","Components/CronJob/CronJobHistory/index.js","Components/CronJob/CronJobHistory/route.js","Components/Pages/Maintenance.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","CronJobSettingStatus","Scheduled","Running","Stopped","DateTimeFormat","format1","format2","format3","format4","format5","format6","firstDateOfMonth1","NumberFormat","NcNNNdNN","AccessReportOptions","label","value","numberWithCommas","n","parts","toString","split","replace","numberWithCommasExt","undefined","isNaN","parseFloat","toFixed","replaceAll","str","match","replacement","RegExp","window","environmentConfig","REACT_APP_BASE_URL","REACT_APP_API_URL","AuthContext","createContext","useAuth","useContext","getLoggedUser","processorId","processorCertificateNo","processorName","processorAddress","labUserAddress","isInvalidProcessor","referenceUserId","currentUserId","currentUserName","currentUserRole","currentUserAvatar","isDisabled","companyName","companyId","accessReport","tokens","localStorage","getItem","existingTokens","jwt_decode","_id","name","role","avatar","clientName","profile","state","action","combineReducers","verifyPermission","compareValue","some","item","rules","dynamic","static","Can","props","data","permissions","staticPermissions","includes","dynamicPermissions","permissionCondition","check","perform","yes","no","defaultProps","DateFormat","this","format","date","React","Component","App","setAuthTokens","loggedUser","className","href","src","height","alt","data-toggle-class","data-target","data-fire-event","aria-label","id","data-toggle","data-lock-picture","data-lock-name","tabIndex","onClick","ClassName","myRef","createRef","activeRoute","navRoute","children","current","arrChildren","Array","from","length","map","route","i","getAttribute","classList","toggle","e","currentTarget","ref","title","aria-hidden","process","navExpandHandler","report","NavigationAdmin","NavigationClient","renderSwitch","findClassName","type","css","message","show","setState","data-dismiss","ReactHtmlParser","SelectExtend","styled","ReactSelect","attrs","theme","scrollHeight","customStyles","menu","base","borderRadius","marginTop","menuList","padding","control","borderColor","isFocused","boxShadow","Option","class","checked","isSelected","onChange","allOption","renderValueContainer","values","hasSelectAll","valContain","slice","join","key","Date","style","width","display","WebkitLineClamp","WebkitBoxOrient","overflow","color","ValueContainer","currentValues","getValue","toBeRendered","animatedComponents","makeAnimated","MultiSelectComponent","allowSelectAll","options","styles","isMulti","closeMenuOnSelect","hideSelectedOptions","components","selected","event","option","result","filter","ConvertToOptions","selector","isArray","raw","jwt","require","globalConfig","urlRefreshToken","REACT_APP_API_AUTH_URL","urlUpdateToken","buildConfig","config","header","headers","authToken","Authorization","buildHeader","configuration","post","url","Promise","resolve","reject","axios","then","a","response","statusCode","refreshToken","newConfig","newResource","catch","newErr","updateToken","clear","location","err","get","patch","token","params","HttpAxios","newToken","sign","setItem","delete","del","getItems","stateTimeout","setTimeout","loading","urlapi","filterParams","items","originalItems","doSomthingAfterGetItems","clearTimeout","handleDelete","removedId","dataset","confirmAlert","buttons","showAlert","urlapiDelete","urlapidelete","resultObject","getCronJobSetting","callback","urlApiCronJobSetting","setColumns","extendRender","extendBreadcrumb","extendButtons","handleSearch","console","log","target","val","renderSearch","RenderExpandableRowsComponent","doSomthingBeforeGetItems","doSomthingAfterSelectChange","noDataComponent","defaultTable","columns","rederTableStyle","noHeader","pagination","paginationDisabled","paginationPerPage","expandableRows","tableExpandableRows","expandableRowsComponent","highlightOnHover","tableHighlightOnHover","progressPending","defaultItemsLength","labeladd","searchFormBasic","urllist","urladd","pluraltitle","alertshow","alerttype","alertmsg","panelAction","hidePanelAction","hidePanelClose","bind","element","keyValue","valueOptions","shift","itemsLength","pageTitle","lastUpdateLabel","Helmet","Header","Navigation","data-open","renderSearchArea","paddingBottom","paddingLeft","Alert","GlobalConfig","sortable","cell","row","Common","left","center","status","Moment","createdDate","data-id","REACT_APP_API_CLIENT_URL","ListComponent","Page","Permission","to","getTitle","handResetForm","handleSubmit","preventDefault","checkSomethingBeforeSave","doSomethingAfterSaved","getPrefixTitle","prefixTitle","renderForm","setTitle","sectionTitle","labelButtonSave","listtitle","imageFieldName","imageFieldExtension","imageMaxSize","handleChange","handleImageChange","inititalComponent","files","parseInt","size","arrTemp","fileExtension","Object","assign","base64","onSubmit","marginLeft","disabled","submitDisabled","noop","FixRequiredSelect","selectRef","setSelectRef","actionMeta","SelectComponent","required","enableRequired","isLoading","autoComplete","opacity","position","protoTypes","selectComponent","PropTypes","func","isRequired","bool","Select","accessReportOptions","email","createdUserId","modifiedUserId","modifiedDate","baseUrl","fromDisplayName","accessReportValue","companyIdValue","htmlFor","MultiSelectRequiredComponent","companies","multiSelectCompanyHandleChange","isSearchable","maxLength","placeholder","multiSelectHandleChange","getCompanyItems","urlApi","REACT_APP_API_CONFIG_URL","parsedItems","push","selectedText","AddComponent","connect","getItemById","fetchItem","doSomethingAfterGetItemById","getSummaryItems","page","perPage","urlSummaryApi","summaryFilterParams","summaryData","handlePerRowsChange","newPerPage","handlePageChange","totalRows","currentPage","total","api","urlsubmitapi","renderFormSummary","getSummaryColumns","persistTableHead","paginationServer","paginationTotalRows","paginationDefaultPage","onChangeRowsPerPage","onChangePage","doSomethingBeforeGetItemById","formSummaryTitle","mappingAccessReportOptions","mappingCompanyOptions","address","EditComponent","REACT_APP_URL_MY_PROFILE","REACT_APP_API_ADMINISTRATOR_URL","password","avatarExtension","REACT_APP_API_SYSTEMCONFIG_URL","autoFocus","rows","data-plugin-markdown-editor","queryICProductAttributes","handleChangeSwitchIsUseStoreProcedure","isUseStoreProcedure","handleChangeSelect","hidden","data-extravalue","extraValue","selectedIndex","isAllowCustom","REACT_APP_API_MAIL_TEMPLATE_URL","validator","subject","cc","bcc","handleShow","trim","erroMessage","handleClose","handleSendMail","testEmail","validate","bodyEmailTemplate","dataBody","body","REACT_APP_API_MAIL_URL","responseMail","handleChangeMessage","Modal","onHide","animation","backdropClassName","centered","Form","closeButton","Title","Body","Group","as","Row","Label","column","sm","Col","Control","handleChangeTestEmail","Footer","Button","variant","clonedId","isProcessor","readOnly","backgroundImage","backgroundSize","backgroundRepeat","backgroundColor","REACT_APP_URL_WALNUT_TEST_LIST","urlapilist","defaultItem","indexOf","concat","onMenuOpen","selectedEl","document","getElementsByClassName","scrollIntoView","block","controlId","onRef","valueItem","handleChangeSelectControl","classNamePrefix","getData","parameters","filterStartDate","filterEndDate","filterClient","REACT_APP_API_DASHBOARD_URL","filterItems","now","start","moment","setDate","getDate","end","clientId","urlApiClientFilter","startDate","endDate","lastLoginDate","getColumns","FilterSelectControl","clientControl","data-plugin-datepicker","defaultValue","onFocus","currentYear","getFullYear","currentDate","totalClient","totalLabUser","labels","datasets","isActive","view","SummaryAdmin","SummaryAccess","localState","getItemsWithFilter","setLocalState","render","requestOptions","method","getLocalState","lastCompleted","renderRowStyles","countRecords","optimisticDataTable","memo","conditionalRowStyles","pre","next","JSON","stringify","param","data-placement","ExportExcel","csvData","fileName","buttonLabel","buttonClassName","fitToColumn","widths","keys","String","initialWidthColumns","obj","len","wch","ws","XLSX","json_to_sheet","wb","Sheets","SheetNames","excelBuffer","bookType","Blob","FileSaver","exportToCSV","getGallery","gallery","original","thumbnail","showFullscreenButton","showPlayButton","showNav","showNavigation","PureComponent","ListTag","getFacilityItems","getProductAttributeItems","getFileDataInfo","productID","ProductID","lotID","LotID","urlapiFileData","contentBase64","Tag","getTotalLabel","ProductAttribute","productAttribute1Value","productAttribute2Value","when","zIndex","filterInputHandler","minWidth","filterHandler","grow","productName","showLots","ProductName01","omit","renderCustomHeader","wordWrap","Units","UnitsUoM","Fill","FillUoM","UnitsAvailable","UnitsUoMAvailable","FillAvailable","FillUoMAvailable","fileDataInfo","getItemsForExport","typeCronJob","toLowerCase","ImageGalleryComponent","REACT_APP_API_REPORT_INVENTORY_BALANCE_URL","urlapiFacility","REACT_APP_API_COMMON_FILE_DATA","urlapiAtributeProduct","REACT_APP_API_CRON_JOB_SETTING","optionFacilities","facilitiesValue","facilities","getOptions","productAttr1Options","productAttr1","productAttr2Options","productAttr2","filter1","productAttribute1","filter2","productAttribute2","optionAttributeProducts1","optionAttributeProducts2","colSpan","DateRangePicker","selectsStart","selectedStart","onChangeStart","selectsEnd","selectedEnd","minDate","minStartDate","onChangeEnd","DatePickerIcon","handleDatePickerChange","selectedDate","setMonth","getMonth","isRerender","getDefaultDateRange","getProductAttributeValueItems","fillValue","BeginningFill","unitsValue","BeginningUnits","renderBasicHeader","bindValueInGrid","EndingFill","EndingUnits","valueFormat","unitsOrFill","ReceiptUnits","ReceiptFill","IssueUnits","IssueFill","ProductionUnits","ProductionFill","ShipmentUnits","ShipmentFill","OtherUnits","OtherFill","transactionDateFrom","REACT_APP_API_REPORT_INVENTORY_ROLLOVER_URL","REACT_APP_API_COMMON_FACILITY","REACT_APP_API_COMMON_PRODUCT_ATTRIBUTE","urlapiAtributeProductValue","productAttr1ValueOptions","filterProductAttributeValues","proAttributeValueOriginal","filter3","productAttribute1V","productAttribute1VValue","optionAttributeProduct1","clue","AttributeID","dateFormat","showMonthYearPicker","attributeFilterChange","CurrentInventoryBalance","Dashboard","PrivateRoute","component","roles","rest","authTokens","pathname","referer","div","input","button","img","Error","Login","useState","isLoggedIn","setLoggedIn","isError","setIsError","userName","setUserName","setPassword","errorMessage","setErrorMessage","postLogin","paddingTop","setAlertShow","setAlertMsg","isChangedPassword","newPassword","currentPassword","updateProfile","newPasswordRepeat","dispatch","Profile","isClientActive","x","onInvalid","handleInvalid","onInput","handleInput","companyNameId","setCustomValidity","AdminProfile","ClientProfile","handleExportPdf","composePdfFile","isPrint","isPreview","doc","jsPDF","ReceiptID","startY","startYLeft","setFontSize","setTextColor","text","startX","gap","addTextAndLine","ReferenceID","AreaOfOriginID","CarrierID","Userfield03","TrailerLicenseNumberOne","TrailerLicenseNumberTwo","addLine","ScheduledStartDateTime","UserField01","ScheduledEndDateTime","UserField02","addImage","logo64","AccountName","AddressLine1","Addressline2","Addressline3","composeHeader","pageWidth","internal","pageSize","pageHeight","setDrawColor","setLineWidth","line","startYRight","composeLoadAnalysis","pageWidthOriginal","rightX","ScaleGross","leftX2","ScaleTare","NetWeight2","NetGreenWeight","WeightAfterHull","WeightAfterDry","WeightAfterAdjTo","NetDryWeight","gapLine","composeGrossWeight","gapElement","printGroupLabel","printFieldsWithLine","printGroupLabelLevel2","printGroupLabelLevel3","composeSplitInShell","composeShellingStock","composeClosedShell","composeTotal","print5FieldsWithLine","printDecimalField","composeSizeTest","arrayFieldName1","arrayFieldName2","printFieldsOnRight","composeSplitInShellRight","composeShellingStockRight","composeClosedShellRight","composeTotalRight","pages","getNumberOfPages","elementFontSize","verticalPos","setPage","align","composeFooter","navigator","msSaveOrOpenBlob","output","autoPrint","open","URL","createObjectURL","innerHeight","innerWidth","revokeObjectURL","save","fieldName1","fieldName2","fieldName3","unit","y","value3","fieldName4","fieldName5","fieldName","CommonUtilities","isValidSearch","selectedAccountId","selectedAccountName","REACT_APP_API_REPORT_MERIDIAN_GROWERS_RTT","filterAccountId","filterAccountName","data-receiptid","data-action","_","cropYear","arrGrowers","arrPageInfo","arrAddedHeader","firsStartY","stainedTotal","inshTotal","edibleKernels","acpTotals","pageNumber","getCurrentPageInfo","growerInfo","addPage","dataByGrower","AccountID","composeGrowerInfo","itemsByGrower","groupBy","addText","rowTotalByField","addRowTotal","rowLastByField","addRowLast","composeTable","lastAutoTable","finalY","sumBy","k","rowsTotalByGrower","rowTotalByGrower","rowLastByGrower","grower","addRowFinal","j","rowTotal","greenGross","inboundGradePrecleanerTrash","netGreenWeight","netDryWeight","edibleUnstainedTotal","edibleLightstainedTotal","inshellShellStk","subEdiClosedInshelTotal","sizeKernels","totalEdiWeightTotal","sizeAssessedWtTotal","LMPQ","startXLeft","Addressline1","tableFontSize","top","isTotalGrower","autoTable","margin","right","dataKey","headStyles","halign","fontSize","lineColor","lineWidth","showHead","willDrawCell","LotCode","setFillColor","columnStyles","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","x1","y1","x2","y2","filterStartDateDisplay","filterEndDateDisplay","queryDataExport","REACT_APP_API_REPORT_MERIDIAN_GROWER_SUMMARY","accounts","accountName","addressline1","addressline2","addressline3","RenderButton","border","icon","updateWindowDimensions","addEventListener","columnsFull","taskName","linkToReport","wrap","nextTime","getNextTimeRun","startDateTime","actionColumnSm","allowOverflow","blockHandler","runHandler","actionColumnMd","removeEventListener","updateScheduleHandler","setting","time","setTime","getTime","stepSize","timeRun","typeCronJobOptions","taskNameOptions","taskNameValue","typeCronJobChangeHandler","min","max","startTime","startTimeChangeHandler","startInfo","transactionDateFromDisplay","transDateChangeHandler","urlapiTaskNames","cronStyle","blocked","description","transactionDateTo","typeCronJobValue","getTaskNameItems","fetchData","dataOptions","setStartInfo","keyDisplay","startAt","datetime","parse","historyDetail","titleModal","startedDate","columnTableDetail","completedDate","utc","year","month","REACT_APP_API_CRON_JOB_HISTORY","statusOptions","statusValue","urlParentDetail","taskId","runTimeLog","buildLog","currentOptions","task","find","content","store","createStore","rootReducer","__REDUX_DEVTOOLS_EXTENSION__","Provider","REACT_APP_IN_MAINTENANCE","path","MaintenancePage","exact","TermOfUse","RecoverPassword","Home","AdministratorList","AdministratorAdd","AdministratorEdit","ClientList","ClientAdd","ClientEdit","ConfigList","ConfigAdd","ConfigEdit","MailTemplateEdit","MailTemplateList","MailTemplateAdd","ReportCurrentInventoryBalance","ReportInventoryRolloverByDate","ReportInventoryRolloverByMonth","MeridianGrowersRtt","MeridianGroweSummary","CronJobList","CronJobAdd","CronJobEdit","CronJobHistory","CustomerSetting","Page404","Boolean","hostname","ReactDOM","StrictMode","getElementById","serviceWorker","ready","registration","unregister","error"],"mappings":"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","file":"static/js/main.ebb0ed42.chunk.js","sourcesContent":["const base64Image = \"data:image/png;base64,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\";\r\nmodule.exports = base64Image;","const DateTimeFormat = {\r\n format1: \"MM/DD/YYYY hh:mm:ss A\",\r\n format2: \"MM/DD/YYYY hh:mm:ss A\",\r\n format3: \"MMDDYYYY-HHmmss\",\r\n format4: \"MM/DD/YYYY hh:mm A\",\r\n format5: \"YYYY-MM-DD\",\r\n format6: \"MM/DD/YYYY\",\r\n firstDateOfMonth1: \"MM/01/YYYY\",\r\n}\r\n\r\nconst CronJobSettingStatus = {\r\n Scheduled: \"Scheduled\",\r\n Running: \"Running\",\r\n Stopped: \"Stopped\",\r\n}\r\n\r\nconst NumberFormat = {\r\n NcNNNdNN: /\\d(?=(\\d{3})+\\.)/g\r\n}\r\n\r\nconst accessReportOptions = [\r\n { label: \"Current Inventory Balance\", value: \"CURRENT_INVENTORY_BALANCE\" },\r\n { label: \"Inventory Rollover by Month\", value: \"INVENTORY_ROLLOVER_BY_MONTH\" },\r\n { label: \"Inventory Rollover by Date\", value: \"INVENTORY_ROLLOVER_BY_DATE\" },\r\n // { label: \"Meridian Growers RTT\", value: \"MERIDIAN_GROWERS_RTT\" },\r\n // { label: \"Meridian Grower Summary\", value: \"MERIDIAN_GROWER_SUMMARY\" }\r\n]\r\n\r\nexports.CronJobSettingStatus = CronJobSettingStatus;\r\nexports.DateTimeFormat = DateTimeFormat;\r\nexports.NumberFormat = NumberFormat;\r\nexports.AccessReportOptions = accessReportOptions;","function numberWithCommas(n) {\r\n var parts = n.toString().split(\".\");\r\n const result =\r\n parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") +\r\n (parts[1] ? \".\" + parts[1] : \"\");\r\n return result;\r\n}\r\n\r\nfunction numberWithCommasExt(n) {\r\n const value =\r\n n == null || n == undefined || n == isNaN(n) ? 0 : parseFloat(n).toFixed(1);\r\n var parts = value.toString().split(\".\");\r\n const result =\r\n parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") +\r\n (parts[1] ? \".\" + parts[1] : \"\");\r\n return result;\r\n}\r\n\r\nfunction escapeRegExp(string) {\r\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\r\n}\r\nfunction replaceAll(str, match, replacement) {\r\n return str.replace(new RegExp(escapeRegExp(match), \"g\"), () => replacement);\r\n}\r\n\r\nexports.numberWithCommas = numberWithCommas;\r\nexports.numberWithCommasExt = numberWithCommasExt;\r\nexports.replaceAll = replaceAll;\r\n","window.environmentConfig = {\r\n REACT_APP_BASE_URL: \"https://coldlocker.parityfactory.com\",\r\n REACT_APP_API_URL: \"https://coldlocker.parityfactory.com:8090\",\r\n}\r\n\r\nexports.environmentConfig = window.environmentConfig;","import { createContext, useContext } from \"react\";\r\nimport jwt_decode from \"jwt-decode\";\r\nimport { components } from \"react-select\";\r\n\r\nexport const AuthContext = createContext();\r\n\r\nexport function useAuth() {\r\n return useContext(AuthContext);\r\n}\r\n\r\n//Query user info from token\r\nexport const getLoggedUser = () => {\r\n //This field only has value if role in (processor, lab user)\r\n let processorId = \"\";\r\n let processorCertificateNo = \"\";\r\n let processorName = \"\";\r\n let processorAddress = \"\";\r\n let labUserAddress = \"\";\r\n let isInvalidProcessor = false;\r\n let referenceUserId = \"\";\r\n let currentUserId = \"\";\r\n let currentUserName = \"\";\r\n let currentUserRole = \"\";\r\n let currentUserAvatar = \"\";\r\n let isDisabled = false;\r\n let companyName = \"\";\r\n let companyId = \"\";\r\n let accessReport = \"\";\r\n const tokens = localStorage.getItem(\"tokens\");\r\n if (\r\n tokens != undefined &&\r\n tokens.toString() != \"undefined\" &&\r\n tokens.toString() != \"\"\r\n ) {\r\n const token = jwt_decode(tokens);\r\n const existingTokens = token;\r\n if (existingTokens) {\r\n processorId = existingTokens.processorId;\r\n\r\n processorAddress = existingTokens.processorAddress;\r\n processorName = existingTokens.processorName;\r\n labUserAddress = existingTokens.labUserAddress;\r\n isInvalidProcessor = existingTokens.isInvalidProcessor;\r\n processorCertificateNo = existingTokens.processorCertificateNo;\r\n\r\n referenceUserId = existingTokens.referenceUserId;\r\n currentUserId = existingTokens._id;\r\n currentUserName = existingTokens.name;\r\n currentUserRole = existingTokens.role;\r\n currentUserAvatar = existingTokens.avatar;\r\n isDisabled = existingTokens.isDisabled;\r\n companyName = existingTokens.clientName;\r\n companyId = existingTokens.companyId;\r\n accessReport = existingTokens.accessReport;\r\n }\r\n }\r\n const a = {\r\n processorId: processorId,\r\n processorAddress: processorAddress,\r\n processorName: processorName,\r\n processorCertificateNo: processorCertificateNo,\r\n labUserAddress: labUserAddress,\r\n isInvalidProcessor: isInvalidProcessor,\r\n referenceUserId: referenceUserId,\r\n _id: currentUserId,\r\n name: currentUserName,\r\n role: currentUserRole,\r\n avatar: currentUserAvatar,\r\n isDisabled: isDisabled,\r\n companyName: companyName,\r\n companyId: companyId,\r\n accessReport: accessReport,\r\n };\r\n return a;\r\n};\r\n\r\nexport const isActive = () => {\r\n const x = localStorage.getItem(\"isActive\");\r\n if (x) {\r\n return x === true || x === \"true\";\r\n }\r\n return false;\r\n};\r\n","import { useAuth, getLoggedUser } from \"../context/auth\";\r\nconst profile = (state, action) => {\r\n state = getLoggedUser();\r\n return {\r\n ...state,\r\n ...action\r\n }\r\n}\r\n\r\nexport default profile\r\n","import { combineReducers } from 'redux';\r\nimport profile from './profile';\r\n\r\nexport default combineReducers({\r\n profile,\r\n})\r\n","const verifyPermission = (compareValue) => {\r\n return (accessReport) => {\r\n if (!accessReport) return false;\r\n const reports = accessReport.split(\",\");\r\n return reports.some(item => item === compareValue);\r\n }\r\n}\r\n\r\nconst rules = {\r\n \"Clients\": {\r\n dynamic: {\r\n \"current-inventory-balance\": verifyPermission(\"CURRENT_INVENTORY_BALANCE\"),\r\n \"inventory-rollover\": verifyPermission(\"INVENTORY_ROLLOVER\"),\r\n \"meridian-growers-rtt\": verifyPermission(\"MERIDIAN_GROWERS_RTT\"),\r\n \"meridian-grower-summary\": verifyPermission(\"MERIDIAN_GROWER_SUMMARY\"),\r\n }\r\n },\r\n \"Administrators\": {\r\n static: [\r\n \"clients\",\r\n \"current-inventory-balance\",\r\n \"inventory-rollover\",\r\n \"meridian-growers-rtt\",\r\n \"scheduled-tasks\",\r\n \"scheduled-task-history\",\r\n \"settings\",\r\n \"mail-templates\",\r\n \"administrators\",\r\n ]\r\n }\r\n};\r\n\r\nexport default rules;","import rules from \"./PermissionRules\";\r\nconst check = (rules, role, action, data) => {\r\n const permissions = rules[role];\r\n if (!permissions) {\r\n // role is not present in the rules\r\n return false;\r\n }\r\n\r\n const staticPermissions = permissions.static;\r\n\r\n if (staticPermissions && staticPermissions.includes(action)) {\r\n // static rule not provided for action\r\n return true;\r\n }\r\n\r\n const dynamicPermissions = permissions.dynamic;\r\n\r\n if (dynamicPermissions) {\r\n const permissionCondition = dynamicPermissions[action];\r\n if (!permissionCondition) {\r\n // dynamic rule not provided for action\r\n return false;\r\n }\r\n\r\n return permissionCondition(data);\r\n }\r\n return false;\r\n};\r\n\r\nconst Can = (props) =>\r\n check(rules, props.role, props.perform, props.data)\r\n ? props.yes()\r\n : props.no();\r\n\r\nCan.defaultProps = {\r\n yes: () => null,\r\n no: () => null,\r\n};\r\n\r\nexport default Can;\r\n","// https://www.npmjs.com/package/react-moment\r\n// npm install --save moment react-moment\r\nimport React from \"react\";\r\nimport Moment from \"react-moment\";\r\n\r\nexport default class DateFormat extends React.Component {\r\n render() {\r\n //12h format\r\n if(this.props.format === \"24\"){\r\n return {this.props.date};\r\n }else{\r\n return {this.props.date};\r\n }\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { useAuth, getLoggedUser } from \"../context/auth\";\r\n\r\nfunction App(props) {\r\n //This is function\r\n const { setAuthTokens } = useAuth();\r\n\r\n //This is variable\r\n const loggedUser = props.profile && props.profile.name && props.profile._id ? props.profile : getLoggedUser();\r\n\r\n function logOut() {\r\n setAuthTokens();\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n \"PF\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {/*
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n */}\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\n\r\nconst ClassName = {\r\n \"1\": [\"nav-active\"],\r\n \"2\": [\"nav-expanded\", \"nav-active\"],\r\n}\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.myRef = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n const activeRoute = this.props.navRoute;\r\n if (!activeRoute) return;\r\n let children = this.myRef.current.children;\r\n let arrChildren = Array.from(children)\r\n const className = ClassName[activeRoute.length];\r\n arrChildren.map(item => {\r\n activeRoute.map((route, i) => {\r\n if (item.getAttribute(\"name\") === route) {\r\n item.classList.toggle(className[i]);\r\n }\r\n })\r\n });\r\n }\r\n\r\n navExpandHandler(e) {\r\n const element = e.currentTarget;\r\n element.classList.toggle(\"nav-expanded\");\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n // render() {\r\n // return ();\r\n // }\r\n}\r\nexport default App;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { getLoggedUser } from \"../context/auth\";\r\nconst ClassName = {\r\n \"1\": [\"nav-active\"],\r\n \"2\": [\"nav-expanded\", \"nav-active\"],\r\n}\r\nlet loggedUser = null;\r\nlet accessReport = null;\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n this.myRef = React.createRef();\r\n loggedUser = getLoggedUser();\r\n accessReport = loggedUser.accessReport ? loggedUser.accessReport.split(\",\") : null;\r\n }\r\n\r\n navExpandHandler(e) {\r\n const element = e.currentTarget;\r\n element.classList.toggle(\"nav-expanded\");\r\n }\r\n\r\n componentDidMount() {\r\n const activeRoute = this.props.navRoute;\r\n if (!activeRoute) return;\r\n let children = this.myRef.current.children;\r\n let arrChildren = Array.from(children)\r\n const className = ClassName[activeRoute.length];\r\n arrChildren.map(item => {\r\n activeRoute.map((route, i) => {\r\n if (item.getAttribute(\"name\") === route) {\r\n item.classList.toggle(className[i]);\r\n }\r\n })\r\n });\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport { getLoggedUser } from \"../context/auth\";\r\nimport NavigationAdmin from \"./NavigationAdmin\";\r\nimport NavigationClient from \"./NavigationClient\";\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n renderSwitch() {\r\n const loggedUser = getLoggedUser();\r\n switch (loggedUser.role) {\r\n case \"Administrators\":\r\n return ;\r\n case \"Clients\":\r\n return ;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport ReactHtmlParser from \"react-html-parser\";\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n // console.log(props);\r\n this.state = {\r\n type: props.type,\r\n css: \"alert alert-default\",\r\n message: props.message,\r\n show: props.show,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n this.setState({ css: this.findClassName() });\r\n }\r\n\r\n findClassName = () => {\r\n switch (this.state.type) {\r\n case \"info\": {\r\n return \"alert alert-info\";\r\n }\r\n case \"error\":\r\n case \"delete\": {\r\n return \"alert alert-danger\";\r\n }\r\n case \"success\": {\r\n return \"alert alert-success\";\r\n }\r\n default: {\r\n return \"alert alert-default\";\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n return this.state.show === true ? (\r\n
\r\n \r\n ×{\" \"}\r\n \r\n {ReactHtmlParser(this.state.message)}\r\n
\r\n ) : (\r\n \"\"\r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import React, { useEffect } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport StateManager, { default as ReactSelect, components } from \"react-select\";\r\nimport makeAnimated from \"react-select/animated\";\r\nimport styled from 'styled-components';\r\n\r\nconst SelectExtend = styled(ReactSelect).attrs((props) => ({}))`\r\n && {\r\n [class*=\"MenuList\"] {\r\n ::-webkit-scrollbar {\r\n width: 0em;\r\n height: ${props => props?.theme?.scrollHeight ?? 'initial'};\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst customStyles = {\r\n menu: base => ({\r\n ...base,\r\n borderRadius: 0,\r\n marginTop: \"1px\"\r\n }),\r\n menuList: base => ({\r\n ...base,\r\n padding: 0,\r\n }),\r\n control: (base, state) => ({\r\n ...base,\r\n borderColor: state.isFocused ? \"#33bbff\" : base.borderColor,\r\n boxShadow: state.isFocused ? \"0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px rgba(0, 136, 204, 0.3)\" : base.boxShadow,\r\n \"&:hover\": {\r\n borderColor: state.isFocused ? \"#33bbff\" : base.boxShadow,\r\n boxShadow: state.isFocused ? \"0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px rgba(0, 136, 204, 0.3)\" : base.boxShadow,\r\n },\r\n })\r\n};\r\n\r\n\r\nconst Option = props => {\r\n return (\r\n
\r\n \r\n
\r\n null} />\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst allOption = {\r\n label: \"Select all\",\r\n value: \"*\"\r\n};\r\n\r\nconst renderValueContainer = (values) => {\r\n\r\n let hasSelectAll = values.some(item => item.value === allOption.value);\r\n\r\n let valContain = values.map(item => {\r\n if (item.value !== allOption.value)\r\n return item.label;\r\n });\r\n if (hasSelectAll) {\r\n valContain = valContain.slice(1).join(\", \");\r\n } else {\r\n valContain = valContain.join(\", \");\r\n }\r\n\r\n return (\r\n
\r\n {valContain}\r\n
);\r\n}\r\n\r\nconst ValueContainer = ({ children, ...props }) => {\r\n const currentValues = props.getValue();\r\n const length = currentValues.length;\r\n let toBeRendered = children;\r\n\r\n if (currentValues && length > 0) {\r\n toBeRendered = null;\r\n toBeRendered = [renderValueContainer(currentValues), children[1]];\r\n }\r\n\r\n return (\r\n \r\n {toBeRendered}\r\n \r\n );\r\n};\r\n\r\nconst animatedComponents = makeAnimated();\r\n\r\nconst MultiSelectComponent = props => {\r\n if (props.allowSelectAll) {\r\n const options = props.options ? [props.allOption, ...props.options] : [];\r\n return (\r\n {\r\n if (selected !== null && selected.length > 0) {\r\n if (selected[selected.length - 1].value === props.allOption.value && event.option.value === props.allOption.value) {\r\n return props.onChange(options, event);\r\n }\r\n let result = [];\r\n if (selected.length === props.options.length) {\r\n if (selected.includes(props.allOption)) {\r\n result = selected.filter(\r\n option => option.value !== props.allOption.value\r\n );\r\n } else if (event.action === \"select-option\") {\r\n result = options;\r\n }\r\n return props.onChange(result, event);\r\n }\r\n }\r\n\r\n return props.onChange(selected, event);\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return ;\r\n};\r\n\r\nMultiSelectComponent.propTypes = {\r\n options: PropTypes.array,\r\n value: PropTypes.any,\r\n onChange: PropTypes.func,\r\n allowSelectAll: PropTypes.bool,\r\n allOption: PropTypes.shape({\r\n label: PropTypes.string,\r\n value: PropTypes.string\r\n })\r\n};\r\n\r\nMultiSelectComponent.defaultProps = {\r\n allOption: {\r\n label: \"Select all\",\r\n value: \"*\"\r\n }\r\n};\r\n\r\nMultiSelectComponent.ConvertToOptions = (options, selector) => {\r\n if (options && Array.isArray(options) && options.length > 0) {\r\n if (selector) {\r\n return options?.map(item => {\r\n return { value: item[selector.value], label: item[selector.label], raw: item };\r\n });\r\n } else {\r\n return options?.map(item => {\r\n return { value: item, label: item, raw: item };\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default MultiSelectComponent;\r\n","import axios from \"axios\";\r\nimport jwt_decode from \"jwt-decode\";\r\n\r\nconst jwt = require(\"jsonwebtoken\");\r\nconst globalConfig = new window.globalConfig();\r\nconst urlRefreshToken = globalConfig.REACT_APP_API_AUTH_URL + \"/refreshToken\";\r\nconst urlUpdateToken = globalConfig.REACT_APP_API_AUTH_URL + \"/updateToken\";\r\n\r\nconst buildHeader = () => {\r\n let headers = {};\r\n const tokens = localStorage.getItem(\"tokens\");\r\n if (tokens) {\r\n const token = jwt_decode(tokens);\r\n const authToken = token.authToken;\r\n headers = {\r\n Authorization: `Bearer ${authToken}`\r\n }\r\n }\r\n return { headers };\r\n}\r\n\r\nconst buildConfig = (config) => {\r\n let header = buildHeader();\r\n let configuration = config ? config : {};\r\n configuration = { ...configuration, ...header };\r\n return configuration;\r\n}\r\n\r\nconst post = (url, data, configuration) => {\r\n return new Promise((resolve, reject) => {\r\n axios.post(url, data, configuration)\r\n .then(async response => {\r\n if (response.data && response.data.statusCode === 400 && response.data.message === \"TokenExpiredError\") {\r\n await refreshToken();\r\n let newConfig = buildConfig(configuration);\r\n await post(url, data, newConfig).then(newResource => resolve(newResource)).catch(newErr => reject(newErr));\r\n }\r\n else if (response.data && response.data.statusCode === 400 && response.data.message === \"TokenOutUpdateError\") {\r\n await updateToken();\r\n let newConfig = buildConfig(configuration);\r\n await post(url, data, newConfig).then(newResource => resolve(newResource)).catch(newErr => reject(newErr));\r\n }\r\n else if (response.data && response.data.statusCode === 400 && response.data.message === \"JsonWebTokenError\") {\r\n localStorage.clear();\r\n window.location.replace(\"/login\");\r\n }\r\n else{\r\n resolve(response);\r\n }\r\n })\r\n .catch(err => {\r\n reject(err);\r\n });\r\n });\r\n}\r\n\r\nconst get = (url, configuration) => {\r\n return new Promise((resolve, reject) => {\r\n axios.get(url, configuration)\r\n .then(async response => {\r\n if (response.data && response.data.statusCode === 400 && response.data.message === \"TokenExpiredError\") {\r\n await refreshToken();\r\n let newConfig = buildConfig(configuration);\r\n await get(url, newConfig).then(newResource => resolve(newResource)).catch(newErr => reject(newErr));\r\n }\r\n else if (response.data && response.data.statusCode === 400 && response.data.message === \"TokenOutUpdateError\") {\r\n await updateToken();\r\n let newConfig = buildConfig(configuration);\r\n await get(url, newConfig).then(newResource => resolve(newResource)).catch(newErr => reject(newErr));\r\n }\r\n else if (response.data && response.data.statusCode === 400 && response.data.message === \"JsonWebTokenError\") {\r\n localStorage.clear();\r\n window.location.replace(\"/login\");\r\n }\r\n else{\r\n resolve(response);\r\n }\r\n })\r\n .catch(err => {\r\n reject(err);\r\n });\r\n });\r\n}\r\n\r\nconst patch = (url, data, configuration) => {\r\n return new Promise((resolve, reject) => {\r\n axios.patch(url, data, configuration)\r\n .then(async response => {\r\n if (response.data && response.data.statusCode === 400 && response.data.message === \"TokenExpiredError\") {\r\n await refreshToken();\r\n let newConfig = buildConfig(configuration);\r\n await patch(url, data, newConfig).then(newResource => resolve(newResource)).catch(newErr => reject(newErr));\r\n }\r\n else if (response.data && response.data.statusCode === 400 && response.data.message === \"TokenOutUpdateError\") {\r\n await updateToken();\r\n let newConfig = buildConfig(configuration);\r\n await patch(url, data, newConfig).then(newResource => resolve(newResource)).catch(newErr => reject(newErr));\r\n }\r\n else if (response.data && response.data.statusCode === 400 && response.data.message === \"JsonWebTokenError\") {\r\n localStorage.clear();\r\n window.location.replace(\"/login\");\r\n }\r\n else{\r\n resolve(response);\r\n }\r\n })\r\n .catch(err => {\r\n reject(err);\r\n });\r\n });\r\n};\r\n\r\nconst del = (url, configuration) => {\r\n return new Promise((resolve, reject) => {\r\n axios.delete(url, configuration)\r\n .then(async response => {\r\n if (response.data && response.data.statusCode === 400 && response.data.message === \"TokenExpiredError\") {\r\n await refreshToken();\r\n let newConfig = buildConfig(configuration);\r\n await del(url, newConfig).then(newResource => resolve(newResource)).catch(newErr => reject(newErr));\r\n }\r\n else if (response.data && response.data.statusCode === 400 && response.data.message === \"TokenOutUpdateError\") {\r\n await updateToken();\r\n let newConfig = buildConfig(configuration);\r\n await del(url, newConfig).then(newResource => resolve(newResource)).catch(newErr => reject(newErr));\r\n }\r\n else if (response.data && response.data.statusCode === 400 && response.data.message === \"JsonWebTokenError\") {\r\n localStorage.clear();\r\n window.location.replace(\"/login\");\r\n }\r\n else{\r\n resolve(response);\r\n }\r\n })\r\n .catch(err => {\r\n reject(err);\r\n });\r\n });\r\n}\r\n\r\nconst refreshToken = () => {\r\n return new Promise(async (resolve, reject) => {\r\n const tokens = localStorage.getItem(\"tokens\");\r\n const token = jwt_decode(tokens);\r\n const refreshToken = token.refreshToken;\r\n let configuration = buildConfig({\r\n params: { refreshToken: refreshToken }\r\n });\r\n const { data } = await HttpAxios.get(urlRefreshToken, configuration);\r\n const newToken = jwt.sign(data.data, process.env.REACT_APP_TOKEN_SECRET);\r\n localStorage.clear();\r\n localStorage.setItem(\"tokens\", newToken);\r\n localStorage.setItem(\"isActive\", true);\r\n resolve();\r\n })\r\n}\r\n\r\nconst updateToken = () => {\r\n return new Promise(async (resolve, reject) => {\r\n const tokens = localStorage.getItem(\"tokens\");\r\n const token = jwt_decode(tokens);\r\n const refreshToken = token.refreshToken;\r\n let configuration = buildConfig({\r\n params: { refreshToken: refreshToken }\r\n });\r\n debugger\r\n const { data } = await HttpAxios.get(urlUpdateToken, configuration);\r\n const newToken = jwt.sign(data.data, process.env.REACT_APP_TOKEN_SECRET);\r\n localStorage.clear();\r\n localStorage.setItem(\"tokens\", newToken);\r\n localStorage.setItem(\"isActive\", true);\r\n resolve();\r\n })\r\n}\r\n\r\nconst HttpAxios = {\r\n post: (url, data, config) => {\r\n let configuration = buildConfig(config);\r\n return post(url, data, configuration);\r\n },\r\n get: (url, config) => {\r\n let configuration = buildConfig(config);\r\n return get(url, configuration);\r\n },\r\n patch: (url, data, config) => {\r\n let configuration = buildConfig(config);\r\n return patch(url, data, configuration);\r\n },\r\n delete: (url, config) => {\r\n let configuration = buildConfig(config);\r\n return del(url, configuration);\r\n }\r\n};\r\n\r\nexport { HttpAxios };","import React from \"react\";\r\nimport { confirmAlert } from \"react-confirm-alert\";\r\nimport DataTable from \"react-data-table-component\";\r\nimport Header from \"../Header\";\r\nimport Navigation from \"../Navigation\";\r\nimport Alert from \"../Utilities/Alert\";\r\nimport MultiSelectComponent from \"./MultiSelectComponent\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\n\r\nconst queryString = require(\"query-string\");\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n labeladd: \"Add\",\r\n searchFormBasic: false,\r\n urlapi: \"\",\r\n urlapidelete: \"\",\r\n urllist: \"\",\r\n urladd: \"\",\r\n urlApiCronJobSetting: \"\",\r\n title: \"\",\r\n pluraltitle: \"\",\r\n alertshow: false,\r\n alerttype: \"\",\r\n alertmsg: \"\",\r\n items: [],\r\n originalItems: [],\r\n filterParams: {},\r\n panelAction: true,\r\n loading: true,\r\n hidePanelAction: false,\r\n hidePanelClose: false,\r\n paginationDisabled: false,\r\n };\r\n this.handleSearch = this.handleSearch.bind(this);\r\n this.doSomthingAfterGetItems = this.doSomthingAfterGetItems.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n await this.doSomthingBeforeGetItems();\r\n this.getItems();\r\n }\r\n\r\n getItems = async () => {\r\n const stateTimeout = setTimeout(() => {\r\n this.setState({ loading: true });\r\n }, 200);\r\n await HttpAxios.get(this.state.urlapi, {\r\n params: this.state.filterParams ?? {},\r\n }).then(({ data }) => {\r\n this.setState(\r\n {\r\n items: data.data,\r\n originalItems: data.data,\r\n },\r\n () => {\r\n this.doSomthingAfterGetItems(data);\r\n }\r\n );\r\n if (this.state.loading) {\r\n this.setState({ loading: false });\r\n clearTimeout(stateTimeout);\r\n } else {\r\n clearTimeout(stateTimeout);\r\n }\r\n });\r\n };\r\n\r\n multiSelectHandleChange(selected, element) {\r\n const key = element.name;\r\n const keyValue = `${element.name}Value`;\r\n let valueOptions = selected.value;\r\n\r\n if (selected && Array.isArray(selected)) {\r\n console.log(selected);\r\n const options = [...selected];\r\n const hasSelectAll = options.some((item) => {\r\n return (\r\n item.value === MultiSelectComponent.defaultProps.allOption.value &&\r\n item.label === MultiSelectComponent.defaultProps.allOption.label\r\n );\r\n });\r\n if (hasSelectAll) {\r\n options.shift();\r\n }\r\n valueOptions = options.map((item) => item.value).join();\r\n }\r\n\r\n this.setState((state) => {\r\n const data = { ...state.filterParams, [key]: valueOptions };\r\n return { filterParams: data, [keyValue]: selected };\r\n }, this.doSomthingAfterSelectChange);\r\n }\r\n\r\n handleDelete = (e) => {\r\n const removedId = e.currentTarget.dataset.id;\r\n confirmAlert({\r\n title: \"Confirm to delete\",\r\n message: \"Are you sure to delete selected \" + this.state.title + \"?\",\r\n buttons: [\r\n {\r\n className: \"btn btn-warning\",\r\n label: \"Yes\",\r\n onClick: async () => {\r\n window.showAlert(\"Info\", \"Processing...\", \"info\");\r\n try {\r\n const urlapiDelete = this.state.urlapidelete\r\n ? this.state.urlapidelete\r\n : this.state.urlapi;\r\n const response = await HttpAxios.delete(\r\n urlapiDelete + \"/\" + removedId\r\n );\r\n const resultObject = response.data;\r\n if (resultObject && resultObject.result === \"OK\") {\r\n //If updated successful\r\n this.setState({\r\n items: this.state.items.filter(function (item) {\r\n return item._id !== removedId;\r\n }),\r\n });\r\n this.setState({\r\n originalItems: this.state.originalItems.filter(function (\r\n item\r\n ) {\r\n return item._id !== removedId;\r\n }),\r\n });\r\n window.showAlert(\"Success\", \"Removed successful!\", \"\");\r\n } else {\r\n //If failed, show error\r\n window.showAlert(\"Error\", resultObject.message, \"error\");\r\n }\r\n } catch (err) {\r\n window.showAlert(\"Error\", err.message, \"error\");\r\n }\r\n },\r\n },\r\n {\r\n label: \"No\",\r\n className: \"btn btn-default\",\r\n // onClick: () => alert(\"Click No\"),\r\n },\r\n ],\r\n });\r\n };\r\n\r\n getCronJobSetting = async (name, callback) => {\r\n await HttpAxios.get(\r\n `${this.state.urlApiCronJobSetting}tasknames/${name}`\r\n ).then(({ data }) => {\r\n callback(data.data);\r\n });\r\n };\r\n\r\n setColumns = () => {\r\n return [];\r\n };\r\n\r\n extendRender = () => {\r\n return \"\";\r\n };\r\n\r\n extendBreadcrumb = () => {\r\n return \"\";\r\n };\r\n\r\n extendButtons = () => {\r\n return \"\";\r\n };\r\n\r\n handleSearch = (event) => {\r\n console.log(\"Search value is \" + event.target.value);\r\n const key = event.target.name;\r\n const val = event.target.value;\r\n this.setState(\r\n (state) => {\r\n const filter = { ...state.filterParams, [key]: val };\r\n return { filterParams: filter };\r\n },\r\n () => {\r\n this.getItems();\r\n }\r\n );\r\n };\r\n\r\n renderSearch = () => {\r\n return \"\";\r\n //
\r\n // \r\n //
\r\n };\r\n\r\n renderSearchArea() { }\r\n\r\n RenderExpandableRowsComponent = (props) => { };\r\n\r\n rederTableStyle() { }\r\n\r\n doSomthingBeforeGetItems = async () => { };\r\n\r\n doSomthingAfterGetItems = (data) => { };\r\n\r\n doSomthingAfterSelectChange = () => { };\r\n\r\n noDataComponent = () => {\r\n //default text is \"There are no records to display\"\r\n };\r\n\r\n defaultTable = () => {\r\n const columns = this.setColumns();\r\n const customStyles = this.rederTableStyle();\r\n return (\r\n }\r\n highlightOnHover={this.state.tableHighlightOnHover}\r\n customStyles={customStyles}\r\n progressPending={this.state.loading}\r\n noDataComponent={this.noDataComponent()}\r\n />\r\n );\r\n };\r\n\r\n defaultItemsLength = () => {\r\n if (this.state === undefined || this.state.items === undefined) {\r\n return 0;\r\n }\r\n return this.state.items.length;\r\n };\r\n\r\n render() {\r\n const itemsLength = this.defaultItemsLength();\r\n const title = this.state.pageTitle\r\n ? this.state.pageTitle\r\n : this.state.pluraltitle !== \"\"\r\n ? this.state.pluraltitle\r\n : this.state.title + \"s\";\r\n const lastUpdateLabel = this.state.lastUpdateLabel;\r\n return (\r\n <>\r\n \r\n {title + \" | \" + process.env.REACT_APP_SITE_TITLE}\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n

{title}

\r\n
\r\n
    \r\n
  1. \r\n \r\n \r\n \r\n
  2. \r\n {this.extendBreadcrumb()}\r\n
  3. \r\n {title}\r\n
  4. \r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {this.state.hidePanelAction ? (\r\n \"\"\r\n ) : (\r\n
\r\n \r\n {this.state.hidePanelClose ? (\r\n \"\"\r\n ) : (\r\n \r\n )}\r\n
\r\n )}\r\n {lastUpdateLabel ? (\r\n
\r\n {lastUpdateLabel}\r\n {this.state.hidePanelAction ? (\r\n \"\"\r\n ) : (\r\n <>\r\n \r\n {this.state.hidePanelClose ? (\r\n \"\"\r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n
\r\n ) : (\r\n \"\"\r\n )}\r\n {this.state.urlapi !== undefined && this.state.urlapi !== `` ?\r\n

\r\n {this.state === undefined ||\r\n this.state.items === undefined ||\r\n itemsLength <= 0\r\n ? \"Not found!\"\r\n : itemsLength === 1\r\n ? itemsLength + \" \" + this.state.title + \" found\"\r\n : itemsLength +\r\n \" \" +\r\n (this.state.pluraltitle === \"\"\r\n ? this.state.title + \"s\"\r\n : this.state.pluraltitle) +\r\n \" found\"}\r\n

:

 

}\r\n
\r\n
\r\n {this.state.searchFormBasic ? (\r\n
\r\n {this.renderSearchArea()}\r\n
\r\n ) : (\r\n \r\n
\r\n
\r\n
\r\n {this.state.urladd === null ||\r\n this.state.urladd === undefined ||\r\n this.state.urladd === \"\" ? (\r\n \"\"\r\n ) : (\r\n \r\n {\" \"}\r\n {this.state.labeladd\r\n ? this.state.labeladd\r\n : \"Add\"}\r\n \r\n )}\r\n {this.extendButtons()}\r\n
\r\n {this.renderSearch()}\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n {this.defaultTable()}\r\n {this.state.alertshow === true ? (\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n {this.extendRender()}\r\n \r\n );\r\n }\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport DateFormat from \"../Utilities/DateFormat\";\r\nimport Common from \"../Utilities/Common\";\r\nimport ListComponent from \"../Base/ListComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Moment from \"moment\";\r\nimport { DateTimeFormat } from \"../../global\";\r\n//This is variable\r\nconst loggedUser = getLoggedUser();\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nclass App extends ListComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n labeladd: \"Invite\",\r\n title: \"Client\",\r\n pluraltitle: \"Clients\",\r\n urlapi: GlobalConfig.REACT_APP_API_CLIENT_URL,\r\n urllist: process.env.REACT_APP_URL_CLIENT_LIST,\r\n urladd: process.env.REACT_APP_URL_CLIENT_ADD,\r\n hidePanelAction: true,\r\n };\r\n }\r\n\r\n setColumns = () => {\r\n return [\r\n {\r\n name: \"Company Name\",\r\n selector: \"companyName\",\r\n sortable: true,\r\n cell: (row) => {\r\n return loggedUser.referenceUserId === row._id ? (\r\n \r\n {row.companyName\r\n ? Common.replaceAll(row.companyName, `##`, `, `)\r\n : ``}\r\n \r\n ) : (\r\n \r\n {row.companyName\r\n ? Common.replaceAll(row.companyName, `##`, `, `)\r\n : ``}\r\n \r\n );\r\n },\r\n },\r\n {\r\n name: \"Contact Name\",\r\n selector: \"name\",\r\n sortable: true,\r\n },\r\n {\r\n name: \"Email\",\r\n selector: \"email\",\r\n sortable: true,\r\n left: true,\r\n },\r\n {\r\n name: \"Status\",\r\n selector: \"status\",\r\n sortable: true,\r\n center: true,\r\n cell: (row) => {\r\n return row.status === \"Active\" ? (\r\n {row.status}\r\n ) : (\r\n {row.status}\r\n );\r\n },\r\n },\r\n {\r\n name: \"Invited Date\",\r\n selector: \"createdDate\",\r\n sortable: false,\r\n center: true,\r\n cell: (row) => {\r\n return Moment(new Date(row.createdDate)).format(\r\n DateTimeFormat.format2\r\n );\r\n },\r\n },\r\n {\r\n name: \"\",\r\n center: true,\r\n cell: (row) => (\r\n
\r\n {loggedUser.referenceUserId === row._id ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n   \r\n {loggedUser.referenceUserId === row._id ? (\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 noDataComponent = () => {\r\n return \"Not found! To Invite your Clients to view their Inventory\";\r\n };\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./index\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React, { useEffect, useState } from \"react\";\r\nimport Header from \"../Header\";\r\nimport Navigation from \"../Navigation\";\r\nimport Alert from \"../Utilities/Alert\";\r\nimport MultiSelectComponent from \"../Base/MultiSelectComponent\";\r\n\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\n\r\nconst loggedUser = getLoggedUser();\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n prefixTitle: \"\",\r\n sectionTitle: null,\r\n labelButtonSave: \"Save\",\r\n title: \"\",\r\n listtitle: \"\",\r\n urllist: \"\",\r\n urlapi: \"\",\r\n alertshow: false,\r\n alerttype: \"\",\r\n alertmsg: \"\",\r\n imageFieldName: \"\",\r\n imageFieldExtension: \"\",\r\n imageMaxSize: 0,\r\n data: {},\r\n };\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleImageChange = this.handleImageChange.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n this.inititalComponent();\r\n }\r\n\r\n getTitle = () => {\r\n return \"\";\r\n };\r\n\r\n handleChange(event) {\r\n var id = event.target.name;\r\n const value = event.target.type === \"checkbox\" ? event.target.checked : event.target.value;\r\n this.setState(state => {\r\n return { data: { ...state.data, [id]: value } }\r\n });\r\n }\r\n\r\n handleImageChange(files) {\r\n //files\r\n // {\r\n // \"name\": \"logo_react.jpg\",\r\n // \"type\": \"image/jpeg\",\r\n // \"size\": \"57 kB\",\r\n // \"base64\": \"data:image/jpeg;base64,/9j/4AAQSkZJRg...\",\r\n // \"file\": {}\r\n // }\r\n // ]\r\n if (files) {\r\n if (files.type == \"image/jpeg\" || files.type == \"image/png\") {\r\n if (parseInt(files.size.split(\" \")[0]) > this.state.imageMaxSize) {\r\n window.showAlert(\r\n \"Error\",\r\n \"Does not allow image over \" + this.state.imageMaxSize + \" KB. Please upload another.\",\r\n \"error\"\r\n );\r\n return;\r\n }\r\n const arrTemp = files.name.split(\".\");\r\n const fileExtension = arrTemp[arrTemp.length - 1];\r\n this.setState({\r\n data: Object.assign({}, this.state.data, {\r\n [this.state.imageFieldName]: files.base64,\r\n [this.state.imageFieldExtension]: fileExtension,\r\n }),\r\n });\r\n } else {\r\n window.showAlert(\"Error\", \"Please choose PNG or JPG\", \"error\");\r\n }\r\n } else {\r\n this.setState({\r\n data: Object.assign({}, this.state.data, {\r\n [this.state.imageFieldName]: \"\",\r\n }),\r\n });\r\n }\r\n }\r\n\r\n handResetForm = () => { };\r\n\r\n handleSubmit = async (e) => {\r\n e.preventDefault();\r\n if (this.checkSomethingBeforeSave() == false) {\r\n return;\r\n }\r\n window.showAlert(\"Info\", \"Processing...\", \"Info\");\r\n try {\r\n const response = await HttpAxios.post(this.state.urlapi, this.state.data);\r\n const resultObject = response.data;\r\n\r\n //If created successful\r\n if (resultObject && resultObject.result === \"OK\") {\r\n //reset form\r\n this.handResetForm();\r\n this.doSomethingAfterSaved(resultObject.data);\r\n window.showAlert(\"\", \"Save successful!\", \"\");\r\n }\r\n //If failed, show error\r\n else {\r\n window.showAlert(\"Error\", resultObject.message, \"Error\");\r\n }\r\n } catch (err) {\r\n window.showAlert(\"Error\", err.message, \"Error\");\r\n }\r\n };\r\n\r\n checkSomethingBeforeSave = () => {\r\n return true;\r\n }\r\n\r\n multiSelectHandleChange(selected, element) {\r\n const key = element.name;\r\n const keyValue = `${element.name}Value`;\r\n let valueOptions = selected.value;\r\n\r\n if (selected && Array.isArray(selected)) {\r\n const options = [...selected];\r\n const hasSelectAll = options.some((item) => {\r\n return (\r\n item.value === MultiSelectComponent.defaultProps.allOption.value &&\r\n item.label === MultiSelectComponent.defaultProps.allOption.label\r\n );\r\n });\r\n if (hasSelectAll) {\r\n options.shift();\r\n }\r\n valueOptions = options.map((item) => item.value).join();\r\n valueOptions = valueOptions ? valueOptions : [];\r\n }\r\n this.setState(state => {\r\n const data = { ...state.data, [key]: valueOptions };\r\n return {\r\n data: data,\r\n [keyValue]: selected,\r\n };\r\n })\r\n }\r\n\r\n getPrefixTitle = () => {\r\n return this.state.prefixTitle == null || this.state.prefixTitle == undefined ? \"Create new \" : this.state.prefixTitle;\r\n };\r\n\r\n render() {\r\n const title = this.getPrefixTitle() + this.state.title;\r\n return (\r\n <>\r\n \r\n {title + \" | \" + process.env.REACT_APP_SITE_TITLE}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

{this.getPrefixTitle() + this.state.title}

\r\n
\r\n
    \r\n
  1. \r\n \r\n \r\n \r\n
  2. \r\n
  3. \r\n {this.state.listtitle}\r\n
  4. \r\n {this.extendBreadcrumb()}\r\n
  5. \r\n {title}\r\n
  6. \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 {this.state.sectionTitle == undefined || this.state.sectionTitle == null\r\n ? \"Basic Information\"\r\n : this.state.sectionTitle}

\r\n
\r\n {this.renderForm()}\r\n
\r\n
\r\n
\r\n \r\n \r\n Back\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {this.state.alertshow === true ? (\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 renderForm = () => {\r\n return \"\";\r\n };\r\n\r\n extendBreadcrumb = () => {\r\n return \"\";\r\n };\r\n\r\n extendButtons = () => {\r\n return \"\";\r\n };\r\n\r\n setTitle = () => {\r\n return this.state.data.name;\r\n };\r\n\r\n doSomethingAfterSaved = (data) => { };\r\n\r\n inititalComponent() { };\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst noop = () => {\r\n // no operation (do nothing real quick)\r\n};\r\n\r\nclass FixRequiredSelect extends React.Component {\r\n state = {\r\n value: this.props.value || \"\"\r\n };\r\n\r\n selectRef = null;\r\n setSelectRef = ref => {\r\n this.selectRef = ref;\r\n };\r\n\r\n onChange = (value, actionMeta) => {\r\n this.props.onChange(value, actionMeta);\r\n this.setState({ value });\r\n };\r\n\r\n getValue = () => {\r\n if (this.props.value != undefined) return this.props.value;\r\n return this.state.value || \"\";\r\n };\r\n\r\n render() {\r\n const { SelectComponent, required, ...props } = this.props;\r\n const { isLoading, isDisabled } = this.props;\r\n const enableRequired = !isDisabled;\r\n\r\n return (\r\n
\r\n \r\n {enableRequired && (\r\n this.selectRef.focus()}\r\n required={required}\r\n />\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nFixRequiredSelect.defaultProps = {\r\n onChange: noop\r\n};\r\n\r\nFixRequiredSelect.protoTypes = {\r\n // react-select component class (e.g. Select, Creatable, Async)\r\n selectComponent: PropTypes.func.isRequired,\r\n onChange: PropTypes.func,\r\n required: PropTypes.bool\r\n};\r\n\r\nexport default FixRequiredSelect;\r\n","import React, { useEffect } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport StateManager, { default as ReactSelect, components } from \"react-select\";\r\nimport makeAnimated from \"react-select/animated\";\r\nimport styled from \"styled-components\";\r\nimport FixRequiredSelect from \"./FixRequiredSelect\";\r\n\r\nconst SelectExtend = styled(ReactSelect).attrs((props) => ({}))`\r\n && {\r\n [class*=\"MenuList\"] {\r\n ::-webkit-scrollbar {\r\n width: 0em;\r\n height: ${(props) => props?.theme?.scrollHeight ?? \"initial\"};\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst customStyles = {\r\n menu: (base) => ({\r\n ...base,\r\n borderRadius: 0,\r\n marginTop: \"1px\",\r\n }),\r\n menuList: (base) => ({\r\n ...base,\r\n padding: 0,\r\n }),\r\n control: (base, state) => ({\r\n ...base,\r\n borderColor: state.isFocused ? \"#33bbff\" : base.borderColor,\r\n boxShadow: state.isFocused\r\n ? \"0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px rgba(0, 136, 204, 0.3)\"\r\n : base.boxShadow,\r\n \"&:hover\": {\r\n borderColor: state.isFocused ? \"#33bbff\" : base.boxShadow,\r\n boxShadow: state.isFocused\r\n ? \"0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px rgba(0, 136, 204, 0.3)\"\r\n : base.boxShadow,\r\n },\r\n }),\r\n};\r\n\r\nconst Option = (props) => {\r\n return (\r\n
\r\n \r\n
\r\n null}\r\n />\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst allOption = {\r\n label: \"Select all\",\r\n value: \"*\",\r\n};\r\n\r\nconst renderValueContainer = (values) => {\r\n let hasSelectAll = values.some((item) => item.value === allOption.value);\r\n\r\n let valContain = values.map((item) => {\r\n if (item.value !== allOption.value) return item.label;\r\n });\r\n if (hasSelectAll) {\r\n valContain = valContain.slice(1).join(\", \");\r\n } else {\r\n valContain = valContain.join(\", \");\r\n }\r\n\r\n return (\r\n \r\n {valContain}\r\n \r\n );\r\n};\r\n\r\nconst ValueContainer = ({ children, ...props }) => {\r\n const currentValues = props.getValue();\r\n const length = currentValues.length;\r\n let toBeRendered = children;\r\n\r\n if (currentValues && length > 0) {\r\n toBeRendered = null;\r\n toBeRendered = [renderValueContainer(currentValues), children[1]];\r\n }\r\n\r\n return (\r\n \r\n {toBeRendered}\r\n \r\n );\r\n};\r\n\r\nconst Select = ({ options, ...props }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst animatedComponents = makeAnimated();\r\n\r\nconst MultiSelectComponent = (props) => {\r\n // if (props.allowSelectAll) {\r\n const options = props.options ? [props.allOption, ...props.options] : [];\r\n return (\r\n <>\r\n {\r\n if (\r\n selected !== undefined &&\r\n selected !== null &&\r\n selected.length > 0\r\n ) {\r\n if (\r\n selected[selected.length - 1].value === props.allOption.value &&\r\n event.option.value === props.allOption.value\r\n ) {\r\n return props.onChange(options, event);\r\n }\r\n let result = [];\r\n if (selected.length === props.options.length) {\r\n if (selected.includes(props.allOption)) {\r\n result = selected.filter(\r\n (option) => option.value !== props.allOption.value\r\n );\r\n } else if (event.action === \"select-option\") {\r\n result = options;\r\n }\r\n return props.onChange(result, event);\r\n }\r\n }\r\n\r\n return props.onChange(selected, event);\r\n }}\r\n >\r\n \r\n );\r\n // }\r\n\r\n // return ;\r\n};\r\n\r\nMultiSelectComponent.propTypes = {\r\n options: PropTypes.array,\r\n value: PropTypes.any,\r\n onChange: PropTypes.func,\r\n allowSelectAll: PropTypes.bool,\r\n allOption: PropTypes.shape({\r\n label: PropTypes.string,\r\n value: PropTypes.string,\r\n }),\r\n};\r\n\r\nMultiSelectComponent.defaultProps = {\r\n allOption: {\r\n label: \"Select all\",\r\n value: \"*\",\r\n },\r\n};\r\n\r\nMultiSelectComponent.ConvertToOptions = (options, selector) => {\r\n if (options && Array.isArray(options) && options.length > 0) {\r\n if (selector) {\r\n return options?.map((item) => {\r\n return {\r\n value: item[selector.value],\r\n label: item[selector.label],\r\n raw: item,\r\n };\r\n });\r\n } else {\r\n return options?.map((item) => {\r\n return { value: item, label: item, raw: item };\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport default MultiSelectComponent;\r\n","import React from \"react\";\r\nimport AddComponent from \"../Base/AddComponent\";\r\nimport MultiSelectComponent from \"../Base/MultiSelectComponent\";\r\nimport MultiSelectRequiredComponent from \"../Base/MultiSelectRequiredComponent\";\r\n\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\nimport { AccessReportOptions } from \"../../global\";\r\n\r\nconst loggedUser = getLoggedUser();\r\nconst GlobalConfig = new window.globalConfig();\r\nconst accessReportOptions = AccessReportOptions;\r\n\r\nclass App extends AddComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n prefixTitle: \"Invite \",\r\n labelButtonSave: \"Invite\",\r\n sectionTitle: \"\",\r\n title: \"Client\",\r\n listtitle: \"Clients\",\r\n urllist: process.env.REACT_APP_URL_CLIENT_LIST,\r\n urlapi: GlobalConfig.REACT_APP_API_CLIENT_URL,\r\n alertshow: false,\r\n alerttype: \"\",\r\n alertmsg: \"\",\r\n data: {\r\n _id: \"\",\r\n name: \"\",\r\n email: \"\",\r\n companyName: \"\",\r\n companyId: \"\",\r\n status: \"Active\",\r\n createdUserId: loggedUser._id,\r\n createdDate: new Date(),\r\n modifiedUserId: \"\",\r\n modifiedDate: null,\r\n baseUrl: GlobalConfig.REACT_APP_BASE_URL,\r\n fromDisplayName: process.env.REACT_APP_DISPLAYNAMESENDEREMAIL,\r\n accessReport: null,\r\n },\r\n accessReportOptions: null,\r\n };\r\n }\r\n\r\n inititalComponent() {\r\n this.getCompanyItems();\r\n }\r\n\r\n async getCompanyItems() {\r\n try {\r\n let urlApi =\r\n GlobalConfig.REACT_APP_API_CONFIG_URL +\r\n \"queryclients/\" +\r\n process.env.REACT_APP_ATTRIBUTE_REFLECT_CUSTOMER;\r\n if (loggedUser && loggedUser.role === \"Clients\") {\r\n urlApi += `/${loggedUser.companyId}`;\r\n }\r\n const response = await HttpAxios.get(urlApi);\r\n const resultObject = response.data;\r\n if (resultObject && resultObject.result === \"OK\" && resultObject.data) {\r\n const parsedItems = [];\r\n resultObject.data.map((item) => {\r\n parsedItems.push({\r\n value: item._id,\r\n label: item.name,\r\n _id: item._id,\r\n name: item.name,\r\n });\r\n });\r\n this.setState({\r\n companies: parsedItems,\r\n });\r\n }\r\n } catch (err) {\r\n console.log(err.message);\r\n }\r\n }\r\n\r\n multiSelectCompanyHandleChange(selected, element) {\r\n const key = element.name;\r\n const keyValue = `${element.name}Value`;\r\n let valueOptions = selected ? selected.value : ``;\r\n let selectedText = ``;\r\n\r\n if (selected && Array.isArray(selected)) {\r\n const options = [...selected];\r\n const hasSelectAll = options.some((item) => {\r\n return (\r\n item.value === MultiSelectComponent.defaultProps.allOption.value &&\r\n item.label === MultiSelectComponent.defaultProps.allOption.label\r\n );\r\n });\r\n if (hasSelectAll) {\r\n options.shift();\r\n }\r\n valueOptions = options.map((item) => item.value).join();\r\n valueOptions = valueOptions ? valueOptions : \"\";\r\n selectedText = options.map((item) => item.label).join(`##`);\r\n }\r\n this.setState((state) => {\r\n const data = {\r\n ...state.data,\r\n [key]: valueOptions,\r\n companyName: selectedText,\r\n };\r\n return {\r\n data: data,\r\n [keyValue]: selected,\r\n companyName: selectedText,\r\n };\r\n });\r\n }\r\n\r\n getTitle = () => {\r\n return this.state.title;\r\n };\r\n\r\n handResetForm = () => {\r\n this.setState({\r\n data: {\r\n _id: \"\",\r\n name: \"\",\r\n email: \"\",\r\n companyName: \"\",\r\n companyId: \"\",\r\n status: \"Active\",\r\n createdUserId: loggedUser._id,\r\n createdDate: new Date(),\r\n modifiedUserId: \"\",\r\n modifiedDate: null,\r\n baseUrl: GlobalConfig.REACT_APP_BASE_URL,\r\n fromDisplayName: process.env.REACT_APP_DISPLAYNAMESENDEREMAIL,\r\n accessReport: null,\r\n },\r\n accessReportValue: null,\r\n companyIdValue: null,\r\n });\r\n };\r\n\r\n renderForm = () => {\r\n return (\r\n
\r\n

Client Information

\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

Access to Report Portal

\r\n
\r\n
\r\n \r\n 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 };\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./add\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import { connect } from 'react-redux'\r\nimport Header from '../../Components/Header'\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n profile: state.profile\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Header)\r\n","import React from \"react\";\r\nimport Header from \"../../Containers/Profiles/Header\";\r\nimport Navigation from \"../Navigation\";\r\nimport Alert from \"../Utilities/Alert\";\r\nimport DataTable from \"react-data-table-component\";\r\nimport MultiSelectComponent from \"../Base/MultiSelectComponent\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n prefixTitle: \"\",\r\n sectionTitle: null,\r\n title: \"\",\r\n listtitle: \"\",\r\n urllist: \"\",\r\n urlapi: \"\",\r\n urlsubmitapi: \"\",\r\n alertshow: false,\r\n alerttype: \"\",\r\n alertmsg: \"\",\r\n imageFieldName: \"\",\r\n imageFieldExtension: \"\",\r\n imageMaxSize: 0,\r\n data: {},\r\n formSummaryTitle: \"\",\r\n summaryData: [],\r\n\r\n //paging\r\n loading: false,\r\n totalRows: 0,\r\n currentPage: 1,\r\n perPage: 20,\r\n };\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleImageChange = this.handleImageChange.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n await this.doSomethingBeforeGetItemById();\r\n this.getItemById(this.state.data._id);\r\n if (this.state.urlSummaryApi) {\r\n this.getSummaryItems(this.state.currentPage);\r\n }\r\n }\r\n\r\n getItemById = async (id) => {\r\n this.setState({\r\n alertmsg: \"Query data...\",\r\n alerttype: \"info\",\r\n alertshow: true,\r\n });\r\n try {\r\n const fetchItem = await HttpAxios.get(this.state.urlapi + id);\r\n const item = fetchItem.data;\r\n if (item && item.result === \"OK\" && item.data) {\r\n this.setState(\r\n {\r\n data: item.data,\r\n alertshow: false,\r\n },\r\n () => {\r\n this.doSomethingAfterGetItemById();\r\n }\r\n );\r\n } else {\r\n this.setState({\r\n alertshow: false,\r\n });\r\n this.setState({\r\n alertmsg: item.message,\r\n alerttype: \"error\",\r\n alertshow: true,\r\n });\r\n }\r\n } catch (err) {\r\n this.setState({\r\n alertshow: false,\r\n });\r\n this.setState({\r\n alertmsg: err.message,\r\n alerttype: \"error\",\r\n alertshow: true,\r\n });\r\n }\r\n };\r\n\r\n getSummaryItems = async (page, size = this.state.perPage) => {\r\n const stateTimeout = setTimeout(() => {\r\n this.setState({ loading: true });\r\n }, 200);\r\n await HttpAxios.get(this.state.urlSummaryApi + `${page}/${size}`, {\r\n params: this.state.summaryFilterParams ?? {},\r\n }).then(({ data }) => {\r\n this.setState(\r\n {\r\n summaryData: data.data,\r\n },\r\n () => {\r\n this.doSomthingAfterGetItems(data);\r\n }\r\n );\r\n if (this.state.loading) {\r\n this.setState({ loading: false });\r\n } else {\r\n clearTimeout(stateTimeout);\r\n }\r\n });\r\n };\r\n\r\n handlePerRowsChange = async (newPerPage, page) => {\r\n this.getSummaryItems(page, newPerPage);\r\n this.setState({ perPage: newPerPage });\r\n };\r\n\r\n handlePageChange = (page) => {\r\n //This help resolve issue click on last page.\r\n if (page * this.state.perPage > this.state.totalRows) {\r\n page = page - 1;\r\n }\r\n this.getSummaryItems(page);\r\n this.setState({ currentPage: page });\r\n };\r\n\r\n doSomthingAfterGetItems = (data) => {\r\n this.setState({ totalRows: data.total, loading: false });\r\n };\r\n\r\n handleChange(event) {\r\n var id = event.target.name;\r\n const value =\r\n event.target.type === \"checkbox\"\r\n ? event.target.checked\r\n : event.target.value;\r\n this.setState((state) => {\r\n return { data: { ...state.data, [id]: value } };\r\n });\r\n }\r\n\r\n handleImageChange(files) {\r\n //files\r\n // {\r\n // \"name\": \"logo_react.jpg\",\r\n // \"type\": \"image/jpeg\",\r\n // \"size\": \"57 kB\",\r\n // \"base64\": \"data:image/jpeg;base64,/9j/4AAQSkZJRg...\",\r\n // \"file\": {}\r\n // }\r\n // ]\r\n if (files) {\r\n if (files.type === \"image/jpeg\" || files.type === \"image/png\") {\r\n if (parseInt(files.size.split(\" \")[0]) > this.state.imageMaxSize) {\r\n window.showAlert(\r\n \"Error\",\r\n \"Does not allow image over 1MB. Please upload another.\",\r\n \"error\"\r\n );\r\n return;\r\n }\r\n const arrTemp = files.name.split(\".\");\r\n const fileExtension = arrTemp[arrTemp.length - 1];\r\n this.setState({\r\n data: Object.assign({}, this.state.data, {\r\n [this.state.imageFieldName]: files.base64,\r\n [this.state.imageFieldExtension]: fileExtension,\r\n }),\r\n });\r\n } else {\r\n window.showAlert(\"Error\", \"Please choose PNG or JPG\", \"error\");\r\n }\r\n } else {\r\n this.setState({\r\n data: Object.assign({}, this.state.data, {\r\n [this.state.imageFieldName]: \"\",\r\n }),\r\n });\r\n }\r\n }\r\n\r\n handleSubmit = async (e) => {\r\n e.preventDefault();\r\n if (this.checkSomethingBeforeSave() == false) {\r\n return;\r\n }\r\n this.setState({\r\n alertmsg: \"Processing...\",\r\n alerttype: \"info\",\r\n alertshow: true,\r\n });\r\n\r\n try {\r\n const api =\r\n this.state.urlsubmitapi === null ||\r\n this.state.urlsubmitapi === undefined ||\r\n this.state.urlsubmitapi === \"\"\r\n ? this.state.urlapi\r\n : this.state.urlsubmitapi;\r\n console.log(\"api===\" + api);\r\n const response = await HttpAxios.patch(\r\n api + this.state.data._id,\r\n this.state.data\r\n );\r\n\r\n const resultObject = response.data;\r\n\r\n //If updated successful\r\n if (resultObject && resultObject.result === \"OK\") {\r\n this.setState({\r\n alertshow: false,\r\n });\r\n window.showAlert(\"\", \"Save successful!\", \"\");\r\n\r\n this.doSomethingAfterSaved(resultObject);\r\n }\r\n //If failed, show error\r\n else {\r\n this.setState({\r\n alertshow: false,\r\n });\r\n this.setState({\r\n alertmsg: resultObject.message,\r\n alerttype: \"error\",\r\n alertshow: true,\r\n });\r\n }\r\n } catch (err) {\r\n this.setState({\r\n alertshow: false,\r\n });\r\n this.setState({\r\n alertmsg: err.message,\r\n alerttype: \"error\",\r\n alertshow: true,\r\n });\r\n }\r\n };\r\n\r\n multiSelectHandleChange(selected, element) {\r\n const key = element.name;\r\n const keyValue = `${element.name}Value`;\r\n let valueOptions = selected ? selected.value : ``;\r\n\r\n if (selected && Array.isArray(selected)) {\r\n const options = [...selected];\r\n const hasSelectAll = options.some((item) => {\r\n return (\r\n item.value === MultiSelectComponent.defaultProps.allOption.value &&\r\n item.label === MultiSelectComponent.defaultProps.allOption.label\r\n );\r\n });\r\n if (hasSelectAll) {\r\n options.shift();\r\n }\r\n valueOptions = options.map((item) => item.value).join();\r\n valueOptions = valueOptions ? valueOptions : \"\";\r\n }\r\n this.setState((state) => {\r\n const data = { ...state.data, [key]: valueOptions };\r\n return {\r\n data: data,\r\n [keyValue]: selected,\r\n };\r\n });\r\n }\r\n\r\n checkSomethingBeforeSave = () => {\r\n return true;\r\n };\r\n\r\n getPrefixTitle = () => {\r\n return this.state.prefixTitle == null || this.state.prefixTitle == undefined\r\n ? \"Edit - \"\r\n : this.state.prefixTitle;\r\n };\r\n\r\n render() {\r\n const title = this.getPrefixTitle() + this.getTitle();\r\n return (\r\n <>\r\n \r\n {title + \" | \" + process.env.REACT_APP_SITE_TITLE}\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n

{title}

\r\n
\r\n
    \r\n
  1. \r\n \r\n \r\n \r\n
  2. \r\n {this.state.urllist == \"\" || this.state.listtitle == \"\" ? (\r\n \"\"\r\n ) : (\r\n
  3. \r\n {this.state.listtitle}\r\n
  4. \r\n )}\r\n {this.extendBreadcrumb()}\r\n
  5. \r\n {this.getTitle()}\r\n
  6. \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {this.state.sectionTitle === `` ? (\r\n ``\r\n ) : (\r\n
\r\n

\r\n {this.state.sectionTitle === undefined ||\r\n this.state.sectionTitle == null\r\n ? \"Basic Information\"\r\n : this.state.sectionTitle}\r\n

\r\n
\r\n )}\r\n {this.renderForm()}\r\n
\r\n
\r\n
\r\n \r\n Save\r\n \r\n {this.state.urllist === null ||\r\n this.state.urllist === undefined ||\r\n this.state.urllist === \"\" ? (\r\n \"\"\r\n ) : (\r\n \r\n Back\r\n \r\n )}\r\n {this.extendButtons()}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {this.state.alertshow === true ? (\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n\r\n {this.state.formSummaryTitle ? (\r\n
\r\n
\r\n

\r\n {this.state.formSummaryTitle}\r\n

\r\n
\r\n\r\n {this.renderFormSummary()}\r\n
\r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.extendRender()}\r\n \r\n );\r\n }\r\n renderFormSummary = () => {\r\n const columns = this.getSummaryColumns();\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n getSummaryColumns = () => {};\r\n\r\n renderForm = () => {\r\n return \"\";\r\n };\r\n\r\n extendBreadcrumb = () => {\r\n return \"\";\r\n };\r\n\r\n extendButtons = () => {\r\n return \"\";\r\n };\r\n\r\n getTitle = () => {\r\n return \"\";\r\n };\r\n\r\n doSomethingBeforeGetItemById = async () => {};\r\n\r\n doSomethingAfterGetItemById = () => {};\r\n\r\n doSomethingAfterSaved = () => {};\r\n\r\n extendRender = () => {};\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport EditComponent from \"../Base/EditComponent\";\r\nimport MultiSelectComponent from \"../Base/MultiSelectComponent\";\r\nimport MultiSelectRequiredComponent from \"../Base/MultiSelectRequiredComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport { AccessReportOptions } from \"../../global\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\n\r\nconst loggedUser = getLoggedUser();\r\nconst GlobalConfig = new window.globalConfig();\r\nconst accessReportOptions = AccessReportOptions;\r\n\r\nclass App extends EditComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n sectionTitle: \"\",\r\n listtitle: \"Clients\",\r\n urllist: process.env.REACT_APP_URL_CLIENT_LIST,\r\n urlapi: GlobalConfig.REACT_APP_API_CLIENT_URL,\r\n imageMaxSize: parseInt(process.env.REACT_APP_MAX_SIZE_PROFILE_IMAGE),\r\n data: {\r\n _id: props.match.params.id,\r\n role: \"\",\r\n name: \"\",\r\n address: \"\",\r\n companyName: \"\",\r\n companyId: \"\",\r\n email: \"\",\r\n status: \"\",\r\n createdUserId: \"\",\r\n createdDate: null,\r\n modifiedUserId: loggedUser._id,\r\n modifiedDate: new Date(),\r\n },\r\n items: [],\r\n companies: [],\r\n };\r\n }\r\n\r\n async getCompanyItems() {\r\n try {\r\n let urlApi =\r\n GlobalConfig.REACT_APP_API_CONFIG_URL +\r\n \"queryclients/\" +\r\n process.env.REACT_APP_ATTRIBUTE_REFLECT_CUSTOMER;\r\n if (loggedUser && loggedUser.role === \"Clients\") {\r\n urlApi += `/${loggedUser.companyId}`;\r\n }\r\n const response = await HttpAxios.get(urlApi);\r\n const resultObject = response.data;\r\n if (resultObject && resultObject.result === \"OK\" && resultObject.data) {\r\n const parsedItems = [];\r\n resultObject.data.map((item) => {\r\n parsedItems.push({\r\n value: item._id,\r\n label: item.name,\r\n _id: item._id,\r\n name: item.name,\r\n // isSelected:\r\n // this.state.value == null ||\r\n // this.state.value === undefined ||\r\n // this.state.value.indexOf(item._id) === -1\r\n // ? false\r\n // : true,\r\n // checked:\r\n // this.state.value == null ||\r\n // this.state.value === undefined ||\r\n // this.state.value.indexOf(item._id) === -1\r\n // ? false\r\n // : true,\r\n });\r\n });\r\n this.setState({\r\n companies: parsedItems,\r\n });\r\n }\r\n } catch (err) {\r\n console.log(err.message);\r\n }\r\n }\r\n\r\n doSomethingBeforeGetItemById = async () => {\r\n await this.getCompanyItems();\r\n };\r\n\r\n doSomethingAfterGetItemById = () => {\r\n this.mappingAccessReportOptions();\r\n this.mappingCompanyOptions();\r\n };\r\n\r\n mappingAccessReportOptions = () => {\r\n if (!accessReportOptions) return;\r\n const options = [...accessReportOptions];\r\n this.setState((state) => {\r\n const accessReport = state.data.accessReport\r\n ? state.data.accessReport.split(\",\")\r\n : [];\r\n let selected = options.filter((option) => {\r\n return accessReport.some((item) => item === option.value);\r\n });\r\n if (selected.length === accessReportOptions.length) {\r\n selected = [MultiSelectComponent.defaultProps.allOption, ...selected];\r\n }\r\n return { accessReportValue: selected };\r\n });\r\n };\r\n\r\n mappingCompanyOptions = () => {\r\n if (!this.state.companies) return;\r\n const options = [...this.state.companies];\r\n this.setState((state) => {\r\n const companyId = state.data.companyId\r\n ? state.data.companyId.split(\",\")\r\n : [];\r\n let selected = options.filter((option) => {\r\n return companyId.some((item) => item === option.value);\r\n });\r\n if (selected.length === this.state.companies.length) {\r\n selected = [MultiSelectComponent.defaultProps.allOption, ...selected];\r\n }\r\n return { companyIdValue: selected };\r\n });\r\n };\r\n\r\n getTitle = () => {\r\n return this.state.data.name;\r\n };\r\n\r\n multiSelectCompanyHandleChange(selected, element) {\r\n const key = element.name;\r\n const keyValue = `${element.name}Value`;\r\n let valueOptions = selected ? selected.value : ``;\r\n let selectedText = ``;\r\n\r\n if (selected && Array.isArray(selected)) {\r\n const options = [...selected];\r\n const hasSelectAll = options.some((item) => {\r\n return (\r\n item.value === MultiSelectComponent.defaultProps.allOption.value &&\r\n item.label === MultiSelectComponent.defaultProps.allOption.label\r\n );\r\n });\r\n if (hasSelectAll) {\r\n options.shift();\r\n }\r\n valueOptions = options.map((item) => item.value).join();\r\n valueOptions = valueOptions ? valueOptions : \"\";\r\n selectedText = options.map((item) => item.label).join(`##`);\r\n }\r\n this.setState((state) => {\r\n const data = {\r\n ...state.data,\r\n [key]: valueOptions,\r\n companyName: selectedText,\r\n };\r\n return {\r\n data: data,\r\n [keyValue]: selected,\r\n companyName: selectedText,\r\n };\r\n });\r\n }\r\n\r\n renderForm = () => {\r\n return (\r\n
\r\n

Client Information

\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

Access to Report Portal

\r\n
\r\n
\r\n \r\n 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 };\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./edit\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React from \"react\";\r\nimport DateFormat from \"../Utilities/DateFormat\";\r\nimport ListComponent from \"../Base/ListComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\n//This is variable\r\nconst loggedUser = getLoggedUser();\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nclass App extends ListComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n urlapi: GlobalConfig.REACT_APP_API_ADMINISTRATOR_URL,\r\n urllist: process.env.REACT_APP_URL_ADMINISTRATOR_LIST,\r\n urladd: process.env.REACT_APP_URL_ADMINISTRATOR_ADD,\r\n title: \"Administrator\",\r\n pluraltitle: \"Administrators\",\r\n hidePanelAction: true,\r\n }\r\n }\r\n\r\n setColumns = () => {\r\n return [\r\n {\r\n name: \"Name\",\r\n selector: \"name\",\r\n sortable: true,\r\n cell: (row) => {\r\n return loggedUser.referenceUserId === row._id ? (\r\n \r\n {row.name}\r\n \r\n ) : (\r\n \r\n {row.name}\r\n \r\n );\r\n },\r\n },\r\n {\r\n name: \"Email\",\r\n selector: \"email\",\r\n sortable: true,\r\n left: true,\r\n },\r\n {\r\n name: \"Status\",\r\n selector: \"status\",\r\n sortable: true,\r\n center: true,\r\n cell: (row) => {\r\n return row.status === \"Active\" ? (\r\n {row.status}\r\n ) : (\r\n {row.status}\r\n );\r\n },\r\n },\r\n {\r\n name: \"Created Date\",\r\n selector: \"createdDate\",\r\n sortable: false,\r\n center: true,\r\n cell: (row) => {\r\n return ;\r\n },\r\n },\r\n {\r\n name: \"\",\r\n center: true,\r\n cell: (row) => (\r\n
\r\n {loggedUser.referenceUserId === row._id ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n   \r\n {loggedUser.referenceUserId === row._id ? (\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 App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./index\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React from \"react\";\r\nimport AddComponent from \"../Base/AddComponent\";\r\nimport Header from \"../Header\";\r\nimport Navigation from \"../Navigation\";\r\nimport Alert from \"../Utilities/Alert\";\r\n\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\n\r\nconst loggedUser = getLoggedUser();\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nclass App extends AddComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n title: \"Administrator\",\r\n listtitle: \"Administrators\",\r\n urllist: process.env.REACT_APP_URL_ADMINISTRATOR_LIST,\r\n urlapi: GlobalConfig.REACT_APP_API_ADMINISTRATOR_URL,\r\n alertshow: false,\r\n alerttype: \"\",\r\n alertmsg: \"\",\r\n // imageFieldName: \"avatar\",\r\n // imageFieldExtension: \"avatarExtension\",\r\n // imageMaxSize: parseInt(process.env.REACT_APP_MAX_SIZE_PROFILE_IMAGE),\r\n // defaultAvatar: process.env.REACT_APP_DEFAULT_AVATAR_PHOTO,\r\n data: {\r\n _id: \"\",\r\n name: \"\",\r\n email: \"\",\r\n status: \"Active\",\r\n password: \"\",\r\n avatar: \"\",\r\n avatarExtension: \"\",\r\n createdUserId: loggedUser._id,\r\n createdDate: new Date(),\r\n modifiedUserId: \"\",\r\n modifiedDate: null,\r\n baseUrl: GlobalConfig.REACT_APP_BASE_URL,\r\n fromDisplayName: process.env.REACT_APP_DISPLAYNAMESENDEREMAIL,\r\n },\r\n };\r\n }\r\n\r\n // handleRemoveAvatar = () => {\r\n // this.setState({\r\n // data: Object.assign({}, this.state.data, {\r\n // [\"avatar\"]: this.state.defaultAvatar,\r\n // }),\r\n // });\r\n // };\r\n\r\n getTitle = () => {\r\n return this.state.title;\r\n };\r\n\r\n handResetForm = () => {\r\n this.setState({\r\n data: {\r\n _id: \"\",\r\n name: \"\",\r\n email: \"\",\r\n status: \"Active\",\r\n password: \"\",\r\n avatar: \"\",\r\n avatarExtension: \"\",\r\n createdUserId: loggedUser._id,\r\n createdDate: new Date(),\r\n modifiedUserId: \"\",\r\n modifiedDate: null,\r\n },\r\n });\r\n };\r\n \r\n render() {\r\n const title = \"Create new \" + this.getTitle();\r\n return (\r\n <>\r\n \r\n {title + \" | \" + process.env.REACT_APP_SITE_TITLE}\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n

{title}

\r\n\r\n
\r\n
    \r\n
  1. \r\n \r\n \r\n \r\n
  2. \r\n
  3. \r\n {this.state.listtitle}\r\n
  4. \r\n
  5. \r\n {this.getTitle()}\r\n
  6. \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 {this.state.data.avatar === null ||\r\n this.state.data.avatar === \"\" ||\r\n this.state.data.avatar === undefined ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
*/}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n

Personal Information

\r\n
\r\n
\r\n \r\n Full Name\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n Email\r\n \r\n
\r\n \r\n
\r\n
\r\n {/*
\r\n \r\n Upload Profile Image\r\n \r\n
\r\n \r\n
\r\n
*/}\r\n
\r\n
\r\n

Account

\r\n
\r\n
\r\n \r\n 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
\r\n \r\n \r\n Back\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.state.alertshow === true ? (\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 App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./add\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React from \"react\";\r\nimport EditComponent from \"../Base/EditComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\n// import FileBase64 from \"react-file-base64\";\r\nimport Header from \"../Header\";\r\nimport Navigation from \"../Navigation\";\r\nimport Alert from \"../Utilities/Alert\";\r\nimport { Helmet } from \"react-helmet\";\r\n\r\nconst loggedUser = getLoggedUser();\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nclass App extends EditComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n listtitle: \"Administrators\",\r\n urllist: process.env.REACT_APP_URL_ADMINISTRATOR_LIST,\r\n urlapi: GlobalConfig.REACT_APP_API_ADMINISTRATOR_URL,\r\n // imageFieldName: \"avatar\",\r\n // imageFieldExtension: \"avatarExtension\",\r\n // imageMaxSize: parseInt(process.env.REACT_APP_MAX_SIZE_PROFILE_IMAGE),\r\n // defaultAvatar: process.env.REACT_APP_DEFAULT_AVATAR_PHOTO,\r\n data: {\r\n _id: props.match.params.id,\r\n role: \"\",\r\n name: \"\",\r\n email: \"\",\r\n status: \"\",\r\n password: \"\",\r\n avatar: \"\",\r\n avatarExtension: \"\",\r\n createdUserId: \"\",\r\n createdDate: null,\r\n modifiedUserId: loggedUser._id,\r\n modifiedDate: new Date(),\r\n },\r\n };\r\n }\r\n\r\n // handleRemoveAvatar = () => {\r\n // this.setState({\r\n // data: Object.assign({}, this.state.data, {\r\n // [\"avatar\"]: this.state.defaultAvatar,\r\n // }),\r\n // });\r\n // };\r\n\r\n // doSomethingAfterGetItemById = () => {\r\n // if (\r\n // this.state.data.avatar != null &&\r\n // this.state.data.avatar != undefined &&\r\n // this.state.data.avatar != \"\" &&\r\n // this.state.data.avatar != this.state.defaultAvatar\r\n // ) {\r\n // const arrTemp = this.state.data.avatar.split(\".\");\r\n // const fileExtension = arrTemp[arrTemp.length - 1];\r\n // this.setState({\r\n // data: Object.assign({}, this.state.data, {\r\n // [\"avatar\"]: GlobalConfig.REACT_APP_API_URL + this.state.data.avatar,\r\n // [\"avatarExtension\"]: fileExtension,\r\n // }),\r\n // });\r\n // }\r\n // };\r\n\r\n getTitle = () => {\r\n return this.state.data.name;\r\n };\r\n\r\n render() {\r\n const title = \"Edit - \" + this.getTitle();\r\n return (\r\n <>\r\n \r\n {title + \" | \" + process.env.REACT_APP_SITE_TITLE}\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n

{title}

\r\n\r\n
\r\n
    \r\n
  1. \r\n \r\n \r\n \r\n
  2. \r\n
  3. \r\n {this.state.listtitle}\r\n
  4. \r\n
  5. \r\n {this.getTitle()}\r\n
  6. \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 {this.state.data.avatar === null ||\r\n this.state.data.avatar === \"\" ||\r\n this.state.data.avatar === undefined ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
*/}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n

Personal Information

\r\n
\r\n
\r\n \r\n Full Name\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n Email\r\n \r\n
\r\n \r\n
\r\n
\r\n {/*
\r\n \r\n Upload Profile Image\r\n \r\n
\r\n \r\n
\r\n
*/}\r\n
\r\n
\r\n

Account

\r\n
\r\n
\r\n \r\n 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
\r\n \r\n \r\n Back\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.state.alertshow === true ? (\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 App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./edit\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React from \"react\";\r\nimport DateFormat from \"../Utilities/DateFormat\";\r\nimport ListComponent from \"../Base/ListComponent\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nclass App extends ListComponent {\r\n constructor(props) {\r\n super();\r\n this.state.urlapi = GlobalConfig.REACT_APP_API_SYSTEMCONFIG_URL;\r\n this.state.urllist = process.env.REACT_APP_URL_SYSTEMCONFIG_LIST;\r\n this.state.urladd = process.env.REACT_APP_URL_SYSTEMCONFIG_LIST + \"-add\";\r\n this.state.title = \"System Setting\";\r\n }\r\n\r\n setColumns = () => {\r\n return [\r\n {\r\n name: \"Name\",\r\n selector: \"name\",\r\n sortable: true,\r\n cell: (row) => (\r\n \r\n {row.name}\r\n \r\n ),\r\n },\r\n {\r\n name: \"Modified Date\",\r\n selector: \"modifiedDate\",\r\n sortable: false,\r\n center: true,\r\n cell: (row) => {\r\n return row.modifiedDate ? (\r\n \r\n ) : (\r\n \"\"\r\n );\r\n },\r\n },\r\n {\r\n name: \"Created Date\",\r\n selector: \"createdDate\",\r\n sortable: false,\r\n center: true,\r\n cell: (row) => {\r\n return ;\r\n },\r\n },\r\n {\r\n name: \"Actions\",\r\n cell: (row) => (\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 App;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport AddComponent from \"../Base/AddComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\nconst loggedUser = getLoggedUser();\r\n\r\nclass App extends AddComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n title: \"System Setting\",\r\n listtitle: \"System Settings\",\r\n urllist: process.env.REACT_APP_URL_SYSTEMCONFIG_LIST,\r\n urlapi: GlobalConfig.REACT_APP_API_SYSTEMCONFIG_URL,\r\n alertshow: false,\r\n alerttype: \"\",\r\n alertmsg: \"\",\r\n data: {\r\n _id: \"\",\r\n name: \"\",\r\n value: \"\",\r\n createdUserId: loggedUser._id,\r\n createdDate: new Date(),\r\n modifiedUserId: \"\",\r\n modifiedDate: null,\r\n },\r\n };\r\n }\r\n\r\n handResetForm = () => {\r\n this.setState({\r\n data: {\r\n _id: \"\",\r\n name: \"\",\r\n value: \"\",\r\n createdUserId: loggedUser._id,\r\n createdDate: new Date(),\r\n modifiedUserId: \"\",\r\n modifiedDate: null,\r\n },\r\n });\r\n };\r\n\r\n renderForm = () => {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n}\r\nexport default App;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport EditComponent from \"../Base/EditComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\nconst loggedUser = getLoggedUser();\r\n\r\nclass App extends EditComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n listtitle: \"System Settings\",\r\n urllist: process.env.REACT_APP_URL_SYSTEMCONFIG_LIST,\r\n urlapi: GlobalConfig.REACT_APP_API_SYSTEMCONFIG_URL,\r\n data: {\r\n _id: props.match.params.id,\r\n name: \"\",\r\n value: \"\",\r\n createdUserId: \"\",\r\n createdDate: null,\r\n modifiedUserId: loggedUser._id,\r\n modifiedDate: new Date(),\r\n },\r\n };\r\n }\r\n\r\n getTitle = () => {\r\n return this.state.data.name;\r\n };\r\n\r\n renderForm = () => {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport EditComponent from \"../Base/EditComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Header from \"../Header\";\r\nimport Navigation from \"../Navigation\";\r\nimport Alert from \"../Utilities/Alert\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\nimport Switch from \"react-switch\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\nconst loggedUser = getLoggedUser();\r\n\r\nclass App extends EditComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n sectionTitle: \"Client Settings\",\r\n listtitle: \"\",\r\n urllist: \"\",\r\n urlapi: GlobalConfig.REACT_APP_API_CONFIG_URL + \"setting/\",\r\n urlsubmitapi:\r\n GlobalConfig.REACT_APP_API_CONFIG_URL +\r\n \"savesetting/\" +\r\n process.env.REACT_APP_ATTRIBUTE_REFLECT_CUSTOMER,\r\n data: {\r\n _id: \"\",\r\n name: process.env.REACT_APP_ATTRIBUTE_REFLECT_CUSTOMER,\r\n value: \"\",\r\n extraValue: \"\",\r\n isUseStoreProcedure: false,\r\n createdUserId: \"\",\r\n createdDate: null,\r\n modifiedUserId: loggedUser._id,\r\n modifiedDate: new Date(),\r\n },\r\n name: process.env.REACT_APP_ATTRIBUTE_REFLECT_CUSTOMER,\r\n items: [],\r\n };\r\n this.queryICProductAttributes = this.queryICProductAttributes.bind(this);\r\n this.handleChangeSelect = this.handleChangeSelect.bind(this);\r\n this.handleChangeSwitchIsUseStoreProcedure =\r\n this.handleChangeSwitchIsUseStoreProcedure.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n this.getItemById();\r\n }\r\n\r\n getItemById = async () => {\r\n this.setState({\r\n alertmsg: \"Query data...\",\r\n alerttype: \"info\",\r\n alertshow: true,\r\n });\r\n try {\r\n const fetchItem = await HttpAxios.get(\r\n this.state.urlapi + this.state.name\r\n );\r\n const item = fetchItem.data;\r\n if (item && item.result === \"OK\" && item.data) {\r\n this.setState(\r\n {\r\n data: item.data,\r\n },\r\n function () {\r\n this.doSomethingAfterGetItemById();\r\n }\r\n );\r\n //Turn-off message\r\n this.setState({\r\n alertshow: false,\r\n });\r\n } else {\r\n this.setState({\r\n alertshow: false,\r\n });\r\n if (item.result !== \"OK\") {\r\n this.setState({\r\n alertmsg: item.message,\r\n alerttype: \"error\",\r\n alertshow: true,\r\n });\r\n }\r\n this.doSomethingAfterGetItemById();\r\n }\r\n } catch (err) {\r\n this.setState({\r\n alertshow: false,\r\n });\r\n this.setState({\r\n alertmsg: err.message,\r\n alerttype: \"error\",\r\n alertshow: true,\r\n });\r\n }\r\n };\r\n\r\n handleChangeSelect(event) {\r\n var id = event.target.name;\r\n const value = event.target.value;\r\n const extraValue =\r\n event.target[event.target.selectedIndex].getAttribute(\"data-extravalue\");\r\n this.setState({\r\n data: Object.assign({}, this.state.data, {\r\n [id]: value,\r\n extraValue: extraValue,\r\n }),\r\n });\r\n }\r\n\r\n handleChangeSwitchIsUseStoreProcedure(checked) {\r\n this.setState({\r\n data: Object.assign({}, this.state.data, {\r\n isUseStoreProcedure: checked,\r\n }),\r\n });\r\n }\r\n\r\n queryICProductAttributes = async () => {\r\n try {\r\n const response = await HttpAxios.get(\r\n GlobalConfig.REACT_APP_API_CONFIG_URL + \"queryicproductattributes/all\"\r\n );\r\n const resultObject = response.data;\r\n if (resultObject && resultObject.result === \"OK\" && resultObject.data) {\r\n this.setState({\r\n items: resultObject.data,\r\n });\r\n }\r\n } catch (err) {\r\n console.log(err.message);\r\n }\r\n };\r\n\r\n doSomethingAfterGetItemById = () => {\r\n this.queryICProductAttributes();\r\n };\r\n\r\n getTitle = () => {\r\n return \"Settings\";\r\n };\r\n\r\n render() {\r\n const title = this.getTitle();\r\n return (\r\n <>\r\n \r\n {title + \" | \" + process.env.REACT_APP_SITE_TITLE}\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n

{title}

\r\n
\r\n
    \r\n
  1. \r\n \r\n \r\n \r\n
  2. \r\n {this.state.urllist == \"\" || this.state.listtitle == \"\" ? (\r\n \"\"\r\n ) : (\r\n
  3. \r\n {this.state.listtitle}\r\n
  4. \r\n )}\r\n {this.extendBreadcrumb()}\r\n
  5. \r\n {this.getTitle()}\r\n
  6. \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 {this.state.sectionTitle == undefined\r\n ? \"Basic Information\"\r\n : this.state.sectionTitle}\r\n

\r\n
\r\n {this.renderForm()}\r\n
\r\n
\r\n
\r\n \r\n Save\r\n \r\n {this.state.urllist === null ||\r\n this.state.urllist === undefined ||\r\n this.state.urllist === \"\" ? (\r\n \"\"\r\n ) : (\r\n \r\n Back\r\n \r\n )}\r\n {this.extendButtons()}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {this.state.alertshow === true ? (\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n\r\n {this.state.formSummaryTitle ? (\r\n
\r\n
\r\n

\r\n {this.state.formSummaryTitle}\r\n

\r\n
\r\n\r\n {this.renderFormSummary()}\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 renderForm = () => {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {this.state.data.isUseStoreProcedure === true ? (\r\n \"\"\r\n ) : (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n {this.state.data\r\n ? this.state.items.map((item, key) => {\r\n return (\r\n \r\n {item.name}\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 App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./setting\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React from \"react\";\r\nimport DateFormat from \"../Utilities/DateFormat\";\r\nimport ListComponent from \"../Base/ListComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\nconst loggedUser = getLoggedUser();\r\n\r\nclass App extends ListComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n urlapi: loggedUser.role == \"Administrators\" ? GlobalConfig.REACT_APP_API_MAIL_TEMPLATE_URL : GlobalConfig.REACT_APP_API_MAIL_TEMPLATE_URL + \"processor/\" + loggedUser.referenceUserId,\r\n urllist: process.env.REACT_APP_URL_MAIL_TEMPLATE_LIST,\r\n urladd: loggedUser.role == \"Administrators\" ? process.env.REACT_APP_URL_MAIL_TEMPLATE_LIST + \"-add\": \"\",\r\n title: \"Mail Template\",\r\n pluraltitle: \"Mail Templates\",\r\n hidePanelAction: true,\r\n }\r\n }\r\n\r\n setColumns = () => {\r\n return [\r\n {\r\n name: \"Name\",\r\n selector: \"name\",\r\n sortable: true,\r\n cell: (row) => (\r\n \r\n {row.name}\r\n \r\n ),\r\n },\r\n {\r\n name: \"Subject\",\r\n selector: \"subject\",\r\n sortable: true,\r\n },\r\n {\r\n name: \"Allow Custom?\",\r\n selector: \"isAllowCustom\",\r\n center: true,\r\n cell: (row) => (row.isAllowCustom === true ? \"Yes\" : \"No\"),\r\n },\r\n {\r\n name: \"Modified Date\",\r\n selector: \"modifiedDate\",\r\n sortable: false,\r\n center: true,\r\n cell: (row) => {\r\n return row.modifiedDate ? (\r\n \r\n ) : (\r\n \"\"\r\n );\r\n },\r\n },\r\n // {\r\n // name: \"Created Date\",\r\n // selector: \"createdDate\",\r\n // sortable: false,\r\n // center: true,\r\n // cell: (row) => {\r\n // return ;\r\n // },\r\n // },\r\n {\r\n name: \"\",\r\n center:true,\r\n cell: (row) => (\r\n
\r\n \r\n \r\n \r\n   \r\n {loggedUser.role === \"Administrators\" ? (\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 App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./index\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React, { useEffect, useState } from \"react\";\r\nimport AddComponent from \"../Base/AddComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport JoditEditor from \"jodit-react\";\r\nimport { Button, Form, Row, Col, Modal } from \"react-bootstrap\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\nconst loggedUser = getLoggedUser();\r\nvar validator = require(\"email-validator\");\r\n\r\nclass App extends AddComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n title: \"Mail Template\",\r\n listtitle: \"Mail Templates\",\r\n urllist: process.env.REACT_APP_URL_MAIL_TEMPLATE_LIST,\r\n urlapi: GlobalConfig.REACT_APP_API_MAIL_TEMPLATE_URL,\r\n alertshow: false,\r\n alerttype: \"\",\r\n alertmsg: \"\",\r\n data: {\r\n _id: \"\",\r\n name: \"\",\r\n token: \"\",\r\n subject: \"\",\r\n message: \"\",\r\n cc: \"\",\r\n bcc: \"\",\r\n processorId: \"\",\r\n clonedId: \"\",\r\n role: loggedUser.role,\r\n createdUserId: loggedUser._id,\r\n createdDate: new Date(),\r\n modifiedUserId: \"\",\r\n modifiedDate: null,\r\n },\r\n testEmail: \"\",\r\n show: false,\r\n erroMessage: \"\",\r\n };\r\n this.handleChangeMessage = this.handleChangeMessage.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleSendMail = this.handleSendMail.bind(this);\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleChangeTestEmail = this.handleChangeTestEmail.bind(this);\r\n }\r\n\r\n handResetForm = () => {\r\n this.setState({\r\n data: {\r\n _id: \"\",\r\n name: \"\",\r\n token: \"\",\r\n subject: \"\",\r\n message: \"\",\r\n cc: \"\",\r\n bcc: \"\",\r\n role: loggedUser.role,\r\n createdUserId: loggedUser._id,\r\n createdDate: new Date(),\r\n modifiedUserId: \"\",\r\n modifiedDate: null,\r\n },\r\n });\r\n };\r\n\r\n handleChangeMessage(value) {\r\n this.setState({\r\n data: Object.assign({}, this.state.data, {\r\n message: value,\r\n }),\r\n });\r\n }\r\n\r\n handleChangeTestEmail(event) {\r\n this.setState({ testEmail: event.target.value });\r\n }\r\n\r\n handleShow = () => {\r\n if (this.state.data.message == undefined || this.state.data.message == null || this.state.data.message.trim() == '' || this.state.data.message.trim() == ' ') {\r\n window.showAlert(\"Error\", \"Please enter Message then try again.\", \"error\");\r\n }\r\n else {\r\n this.setState({ show: true, erroMessage: \"\" });\r\n }\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ show: false });\r\n };\r\n\r\n handleSendMail = async (event) => {\r\n event.preventDefault();\r\n this.setState({\r\n erroMessage: \"\",\r\n });\r\n\r\n const testEmail = this.state.testEmail;\r\n if (testEmail == null || testEmail == undefined || testEmail == \"\") {\r\n // this.refs.name.focus();\r\n this.setState({ erroMessage: \"Please enter email then try again.\" });\r\n } else {\r\n if (validator.validate(testEmail) == false) {\r\n this.setState({ erroMessage: \"Please enter correct email. Example: john@paritycorp.com\" });\r\n return;\r\n }\r\n var bodyEmailTemplate = this.state.data.message;\r\n //send test mail\r\n const dataBody = {\r\n fromDisplayName: process.env.REACT_APP_DISPLAYNAMESENDEREMAIL,\r\n to: this.state.testEmail,\r\n cc: \"\",\r\n bcc: \"\",\r\n subject: this.state.data.subject,\r\n body: bodyEmailTemplate,\r\n };\r\n\r\n const responseMail = await HttpAxios.post(GlobalConfig.REACT_APP_API_MAIL_URL, dataBody);\r\n const resultObject = responseMail.data;\r\n if (resultObject && resultObject.result === \"OK\") {\r\n window.showAlert(\"\", \"A test mail sent to \" + this.state.testEmail + \".\", \"\");\r\n } else {\r\n window.showAlert(\"Error\", resultObject.message, \"error\");\r\n }\r\n }\r\n };\r\n\r\n extendButtons = () => {\r\n return ()\r\n };\r\n\r\n renderForm = () => {\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Test Mail\r\n \r\n \r\n \r\n \r\n Send Email\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.erroMessage == null ||\r\n this.state.erroMessage == \"\" ||\r\n this.state.erroMessage == undefined ? (\r\n \"\"\r\n ) : (\r\n \r\n {this.state.erroMessage}\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 App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./add\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React, { useEffect, useState } from \"react\";\r\nimport EditComponent from \"../Base/EditComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport JoditEditor from \"jodit-react\";\r\nimport { Button, Form, Row, Col, Modal } from \"react-bootstrap\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\nconst loggedUser = getLoggedUser();\r\nvar validator = require(\"email-validator\");\r\n\r\nclass App extends EditComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n listtitle: \"Mail Templates\",\r\n urllist: process.env.REACT_APP_URL_MAIL_TEMPLATE_LIST,\r\n urlapi: GlobalConfig.REACT_APP_API_MAIL_TEMPLATE_URL,\r\n urlsubmitapi:\r\n loggedUser.role === \"Administrators\"\r\n ? GlobalConfig.REACT_APP_API_MAIL_TEMPLATE_URL\r\n : GlobalConfig.REACT_APP_API_MAIL_TEMPLATE_URL + \"processor/\",\r\n isProcessor: loggedUser.role === \"Processors\",\r\n data: {\r\n _id: props.match.params.id,\r\n name: \"\",\r\n token: \"\",\r\n subject: \"\",\r\n message: \"\",\r\n cc: \"\",\r\n bcc: \"\",\r\n isAllowCustom: false,\r\n role: loggedUser.role,\r\n createdUserId: \"\",\r\n createdDate: null,\r\n modifiedUserId: loggedUser._id,\r\n modifiedDate: new Date(),\r\n },\r\n testEmail: \"\",\r\n show: false,\r\n erroMessage: \"\",\r\n };\r\n this.handleChangeMessage = this.handleChangeMessage.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleSendMail = this.handleSendMail.bind(this);\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleChangeTestEmail = this.handleChangeTestEmail.bind(this);\r\n }\r\n\r\n getTitle = () => {\r\n return this.state.data.name;\r\n };\r\n\r\n doSomethingAfterGetItemById = () => {\r\n this.state.data.role = loggedUser.role;\r\n this.state.data.processorId =\r\n loggedUser.role === \"Administrators\" ? \"\" : loggedUser.referenceUserId;\r\n };\r\n\r\n handleChangeMessage(value) {\r\n this.setState({\r\n data: Object.assign({}, this.state.data, {\r\n message: value,\r\n }),\r\n });\r\n }\r\n\r\n handleChangeTestEmail(event) {\r\n this.setState({ testEmail: event.target.value });\r\n }\r\n\r\n handleShow = () => {\r\n this.setState({ show: true, erroMessage: \"\", value: \"\" });\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ show: false });\r\n };\r\n\r\n handleSendMail = async (event) => {\r\n event.preventDefault();\r\n this.setState({\r\n erroMessage: \"\",\r\n });\r\n\r\n const testEmail = this.state.testEmail;\r\n if (testEmail == null || testEmail == undefined || testEmail == \"\") {\r\n // this.refs.name.focus();\r\n this.setState({ erroMessage: \"Please enter email then try again.\" });\r\n } else {\r\n if (validator.validate(testEmail) == false) {\r\n this.setState({ erroMessage: \"Please enter correct email. Example: john@paritycorp.com\" });\r\n return;\r\n }\r\n var bodyEmailTemplate = this.state.data.message;\r\n //send test mail\r\n const dataBody = {\r\n fromDisplayName: process.env.REACT_APP_DISPLAYNAMESENDEREMAIL,\r\n to: this.state.testEmail,\r\n cc: \"\",\r\n bcc: \"\",\r\n subject: this.state.data.subject,\r\n body: bodyEmailTemplate,\r\n };\r\n \r\n const responseMail = await HttpAxios.post(GlobalConfig.REACT_APP_API_MAIL_URL, dataBody);\r\n const resultObject = responseMail.data;\r\n if (resultObject && resultObject.result === \"OK\") {\r\n window.showAlert(\"\", \"A test mail sent to \" + this.state.testEmail + \".\", \"\");\r\n } else {\r\n window.showAlert(\"Error\", resultObject.message, \"error\");\r\n }\r\n }\r\n };\r\n\r\n extendButtons = () => {\r\n return ()\r\n };\r\n\r\n renderForm = () => {\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n {this.state.isProcessor ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n {this.state.isProcessor ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n {this.state.isProcessor ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {this.state.isProcessor ? (\r\n \"\"\r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n
\r\n \r\n Test Mail\r\n \r\n \r\n \r\n \r\n Send Email\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.erroMessage == null ||\r\n this.state.erroMessage == \"\" ||\r\n this.state.erroMessage == undefined ? (\r\n \"\"\r\n ) : (\r\n \r\n {this.state.erroMessage}\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 App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./edit\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React from \"react\";\r\nimport Header from \"../Header\";\r\nimport Navigation from \"../Navigation\";\r\nimport \"react-confirm-alert/src/react-confirm-alert.css\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\n\r\nconst loggedUser = getLoggedUser();\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {\"Page Not Found | \" + process.env.REACT_APP_SITE_TITLE}\r\n \r\n
\r\n
\r\n
\r\n {loggedUser == undefined || loggedUser == null || loggedUser.role == undefined || loggedUser.role == null || loggedUser.role == \"\" ? \"\" : }\r\n\r\n
\r\n
\r\n

Page Not Found

\r\n
\r\n
    \r\n
  1. \r\n \r\n \r\n \r\n
  2. \r\n
  3. \r\n Page Not Found\r\n
  4. \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 404 \r\n

\r\n

\r\n We're sorry, but the page you were looking for doesn't\r\n exist\r\n

\r\n
\r\n
\r\n
\r\n

Here are some useful links

\r\n
    \r\n
  • \r\n Dashboard\r\n
  • \r\n
  • \r\n Walnut Tests\r\n
  • \r\n {loggedUser == undefined || loggedUser == null || loggedUser.role == undefined || loggedUser.role == null || loggedUser.role == \"\" ?\r\n
  • \r\n Login\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 App;\r\n","import React from \"react\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\nimport Select from \"react-select\";\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n controlId: props.controlId,\r\n urlapilist: props.urlapilist,\r\n value: props.value,\r\n label: props.label,\r\n name: \"\",\r\n data: [],\r\n erroMessage: \"\",\r\n };\r\n this.handleChangeSelect = this.handleChangeSelect.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n //using for parent call method setSelected outside\r\n this.props.onRef(this);\r\n\r\n //query all nut types in module and render as checkbox list\r\n this.getItems();\r\n }\r\n\r\n componentWillUnmount() {\r\n //using for parent call method setSelected outside\r\n this.props.onRef(undefined);\r\n }\r\n\r\n getItems = async () => {\r\n try {\r\n if (\r\n this.state.urlapilist == undefined ||\r\n this.state.urlapilist == null ||\r\n this.state.urlapilist == \"\"\r\n ) {\r\n return;\r\n }\r\n const fetchItem = await HttpAxios.get(this.state.urlapilist);\r\n const response = fetchItem.data;\r\n const defaultItem = { _id: \"\", name: this.state.label };\r\n\r\n if (response && response.result === \"OK\" && response.data) {\r\n const parsedItems = [];\r\n if (response.data) {\r\n response.data.map((item) => {\r\n parsedItems.push({\r\n _id: item._id,\r\n name: item.name,\r\n checked:\r\n this.state.value == null ||\r\n this.state.value == undefined ||\r\n this.state.value.indexOf(item._id) == -1\r\n ? false\r\n : true,\r\n });\r\n });\r\n }\r\n this.setState({\r\n data: [defaultItem].concat(parsedItems),\r\n });\r\n }\r\n } catch (err) {\r\n console.log(err.message);\r\n }\r\n };\r\n\r\n handleChangeSelect(event) {\r\n const valueItem = event;\r\n this.setState({ value: valueItem.value, label: valueItem.label });\r\n this.props.handleChangeSelectControl(this.state.controlId, valueItem.value);\r\n }\r\n\r\n onMenuOpen = () => {\r\n setTimeout(() => {\r\n const selectedEl = document.getElementsByClassName(\r\n \"MyDropdown__option--is-selected\"\r\n )[0];\r\n if (selectedEl) {\r\n selectedEl.scrollIntoView({\r\n block: \"nearest\",\r\n });\r\n }\r\n }, 15);\r\n };\r\n\r\n render() {\r\n return (\r\n {\r\n return {\r\n value: item._id,\r\n label: item.name,\r\n };\r\n })\r\n : \"\"\r\n }\r\n >\r\n );\r\n }\r\n}\r\nexport default App;","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport DataTable from \"react-data-table-component\";\r\nimport FilterSelectControl from \"../FormControl/FilterSelectControl\";\r\n\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport { DateTimeFormat } from \"../../global\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\nlet loggedUser = null;\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n\r\n loggedUser = getLoggedUser();\r\n const now = new Date();\r\n const start = moment(new Date().setDate(now.getDate() - 30)).format(\r\n DateTimeFormat.format6\r\n );\r\n const end = moment(now).format(DateTimeFormat.format6);\r\n\r\n let clientId = \"\";\r\n if (loggedUser.role === \"Lab Users\" || loggedUser.role === \"Clients\") {\r\n clientId = loggedUser.clientId;\r\n }\r\n this.state = {\r\n urlApiClientFilter: GlobalConfig.REACT_APP_API_CLIENT_URL + \"getall\",\r\n startDate: start,\r\n endDate: end,\r\n filterClient: clientId,\r\n filterStartDate: start,\r\n filterEndDate: end,\r\n data: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n this.getData();\r\n }\r\n\r\n getData = async () => {\r\n let parameters = \"start=\" + this.state.filterStartDate;\r\n parameters += \"&end=\" + this.state.filterEndDate;\r\n parameters += \"&clientId=\" + this.state.filterClient;\r\n const url =\r\n GlobalConfig.REACT_APP_API_DASHBOARD_URL + \"summaryaccess?\" + parameters;\r\n const response = await HttpAxios.get(url);\r\n const result = response.data;\r\n this.setState({ data: result.data });\r\n };\r\n\r\n handleChangeSelectControl = (controlId, value) => {\r\n this.setState(\r\n {\r\n [controlId]: value,\r\n },\r\n function callBack() {\r\n this.filterItems();\r\n }\r\n );\r\n };\r\n\r\n handleSearch = (event) => {\r\n if (event.target) {\r\n const id = event.target.name;\r\n console.log(\"id=\" + id);\r\n console.log(\"value=\" + event.target.value);\r\n this.setState(\r\n {\r\n [id]: event.target.value,\r\n },\r\n function callBack() {\r\n this.filterItems();\r\n }\r\n );\r\n }\r\n };\r\n\r\n filterItems = () => {\r\n this.getData();\r\n };\r\n\r\n getColumns() {\r\n return [\r\n {\r\n name: \"Company Name\",\r\n selector: \"companyName\",\r\n left: true,\r\n },\r\n {\r\n name: \"Last Login\",\r\n selector: \"\",\r\n center: true,\r\n cell: (row) => {\r\n return moment(row.lastLoginDate).format(DateTimeFormat.format4);\r\n },\r\n },\r\n ];\r\n }\r\n\r\n render() {\r\n const columns = this.getColumns();\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Clients Access Summary

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {loggedUser.role == \"Administrators\" ? (\r\n (this.clientControl = ref)}\r\n placeholder=\"Client\"\r\n label=\"All Clients\"\r\n controlId=\"filterClient\"\r\n urlapilist={this.state.urlApiClientFilter}\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 to\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 App;","import React from \"react\";\r\nimport { HttpAxios } from \"../../Utilities/Http\"\r\n\r\nvar DateFormat = require(\"dateformat\");\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n const currentYear = new Date().getFullYear();\r\n this.state = {\r\n currentDate: DateFormat(new Date(), \"mm/dd/yyyy\"),\r\n startDate: \"08/01/\" + currentYear,\r\n endDate: \"07/31/\" + (currentYear + 1),\r\n data: {\r\n totalClient: 0,\r\n totalLabUser: 0,\r\n },\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n this.getData();\r\n }\r\n\r\n getData = async () => {\r\n const response = await HttpAxios.get(GlobalConfig.REACT_APP_API_DASHBOARD_URL + \"summaryadmin\");\r\n const result = response.data;\r\n this.setState({ data: result.data });\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {/* */}\r\n
\r\n

Summary

\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

Clients

\r\n
\r\n \r\n {this.state.data.totalClient}\r\n \r\n
\r\n
\r\n {this.state.data.totalClient <= 0 ? (\r\n \"\"\r\n ) : (\r\n
\r\n \r\n View All\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 getInitialState() {\r\n return {\r\n labels: [\r\n \"Aug 2020\",\r\n \"Sep 2020\",\r\n \"Oct 2020\",\r\n \"Nov 2020\",\r\n \"Dec 2020\",\r\n \"Jan 2021\",\r\n \"Fev 2021\",\r\n \"Mar 2021\",\r\n \"Apr 2021\",\r\n \"May 2021\",\r\n \"Jun 2021\",\r\n \"Jul 2021\",\r\n ],\r\n datasets: [\r\n {\r\n label: \"\",\r\n backgroundColor: \"rgb(0, 153, 198)\",\r\n data: [\r\n 500,\r\n 200,\r\n 300,\r\n 400,\r\n 500,\r\n 600,\r\n 700,\r\n 800,\r\n 900,\r\n 1000,\r\n 1100,\r\n 125.55,\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n}\r\nexport default App;","import React from \"react\";\r\nimport SummaryAccess from \"./Report/SummaryAccess\";\r\nimport SummaryAdmin from \"./Report/SummaryAdmin\";\r\nimport { getLoggedUser } from \"../context/auth\";\r\n\r\nlet loggedUser = null;\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n loggedUser = getLoggedUser();\r\n const isActive = localStorage.getItem(\"isActive\");\r\n this.state = {\r\n isActive: isActive,\r\n view: \"\",\r\n };\r\n this.renderSwitch = this.renderSwitch.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n this.setState({ view: this.renderSwitch() });\r\n }\r\n\r\n renderSwitch() {\r\n switch (loggedUser.role) {\r\n case \"Administrators\":\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n case \"Clients\":\r\n return \"\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n

Dashboard

\r\n
\r\n
    \r\n
  1. \r\n \r\n \r\n \r\n
  2. \r\n
  3. \r\n Dashboard\r\n
  4. \r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n {this.state.view == undefined ||\r\n this.state.view == null ||\r\n this.state.view == \"\"\r\n ? \"\"\r\n : this.state.view}\r\n
\r\n );\r\n }\r\n}\r\nexport default App;\r\n","import React from \"react\";\nimport { confirmAlert } from \"react-confirm-alert\";\nimport DataTable from \"react-data-table-component\";\nimport Header from \"../Header\";\nimport Navigation from \"../Navigation\";\nimport Alert from \"../Utilities/Alert\";\nimport MultiSelectComponent from \"./MultiSelectComponent\";\n\nimport { HttpAxios } from \"../../Utilities/Http\";\nimport { Helmet } from \"react-helmet\";\n\nlet localState = {\n filterParams: {}\n};\nclass App extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n labeladd: \"Add\",\n searchFormBasic: false,\n urlapi: \"\",\n urlapidelete: \"\",\n urllist: \"\",\n urladd: \"\",\n urlApiCronJobSetting: \"\",\n title: \"\",\n pluraltitle: \"\",\n alertshow: false,\n alerttype: \"\",\n alertmsg: \"\",\n items: [],\n originalItems: [],\n filterParams: {},\n panelAction: true,\n loading: true,\n hidePanelAction: false,\n hidePanelClose: false,\n paginationDisabled: false,\n render: false,\n };\n this.handleSearch = this.handleSearch.bind(this);\n this.doSomthingAfterGetItems = this.doSomthingAfterGetItems.bind(this);\n }\n\n async componentDidMount() {\n await this.doSomthingBeforeGetItems();\n this.getItems();\n }\n\n getLocalState() {\n return localState;\n }\n\n setLocalState(param) {\n if (typeof param === \"function\") {\n const val = param(localState);\n localState = { ...localState, ...val };\n } else if (typeof param === \"object\") {\n localState = { ...localState, ...param };\n }\n }\n getItems = async () => {\n await this.getItemsWithFilter(localState.filterParams);\n };\n\n getItemsWithFilter = async (filterParams) => {\n const stateTimeout = setTimeout(() => {\n this.setState({ loading: true });\n }, 10);\n await HttpAxios\n .get(this.state.urlapi, { params: filterParams })\n .then(async ({ data }) => {\n if (data.data) {\n this.setLocalState((state) => {\n return { items: data.data, originalItems: data.data }\n });\n }\n\n await this.doSomthingAfterGetItems();\n\n if (this.state.loading) {\n this.setState((state) => {\n return {\n loading: false,\n render: !state.render\n }\n })\n clearTimeout(stateTimeout);\n } else {\n clearTimeout(stateTimeout);\n this.setState((state) => {\n return { render: !state.render }\n })\n }\n });\n }\n\n multiSelectHandleChange(selected, element) {\n const key = element.name;\n const keyValue = `${element.name}Value`;\n let valueOptions = selected.value;\n\n if (selected && Array.isArray(selected)) {\n const options = [...selected];\n const hasSelectAll = options.some((item) => {\n return (\n item.value === MultiSelectComponent.defaultProps.allOption.value &&\n item.label === MultiSelectComponent.defaultProps.allOption.label\n );\n });\n if (hasSelectAll) {\n options.shift();\n }\n valueOptions = options.map((item) => item.value).join();\n valueOptions = valueOptions ? valueOptions : [];\n }\n this.setLocalState(state => {\n const data = { ...state.filterParams, [key]: valueOptions };\n return {\n filterParams: data,\n [keyValue]: selected,\n };\n })\n this.doSomthingAfterSelectChange();\n }\n\n handleDelete = (e) => {\n const removedId = e.currentTarget.dataset.id;\n confirmAlert({\n title: \"Confirm to delete\",\n message: \"Are you sure to delete selected \" + this.state.title + \"?\",\n buttons: [\n {\n className: \"btn btn-warning\",\n label: \"Yes\",\n onClick: async () => {\n window.showAlert(\"Info\", \"Processing...\", \"info\");\n try {\n const requestOptions = {\n method: \"DELETE\",\n headers: { \"Content-Type\": \"application/json\" },\n };\n const urlapiDelete = this.state.urlapidelete ? this.state.urlapidelete : this.state.urlapi;\n const response = await HttpAxios.delete(urlapiDelete + \"/\" + removedId,requestOptions);\n const resultObject = response.data;\n if (resultObject && resultObject.result === \"OK\") {\n //If updated successful\n this.setState({\n items: this.getLocalState().items.filter(function (item) {\n return item._id !== removedId;\n }),\n });\n this.setState({\n originalItems: this.state.originalItems.filter(function (\n item\n ) {\n return item._id !== removedId;\n }),\n });\n window.showAlert(\"Success\", \"Removed successful!\", \"\");\n } else {\n //If failed, show error\n window.showAlert(\"Error\", resultObject.message, \"error\");\n }\n } catch (err) {\n window.showAlert(\"Error\", err.message, \"error\");\n }\n },\n },\n {\n label: \"No\",\n className: \"btn btn-default\",\n // onClick: () => alert(\"Click No\"),\n },\n ],\n });\n };\n\n getCronJobSetting = async (name, callback, lastCompleted = false) => {\n let urlapi =\n `${this.state.urlApiCronJobSetting}tasknames/${name}${lastCompleted ? \"?lastCompleted=true\" : \"\"}`\n await HttpAxios.get(urlapi).then(({ data }) => {\n callback(data.data);\n });\n };\n\n setColumns = () => {\n return [];\n };\n\n extendRender = () => {\n return \"\";\n };\n\n extendBreadcrumb = () => {\n return \"\";\n };\n\n extendButtons = () => {\n return \"\";\n };\n\n handleSearch = (event) => {\n console.log(\"Search value is \" + event.target.value);\n const key = event.target.name;\n const val = event.target.value;\n this.setLocalState(\n (state) => {\n const filter = { ...state.filterParams, [key]: val };\n return { filterParams: filter };\n }\n );\n this.getItems();\n };\n\n renderSearch = () => {\n return \"\";\n //
\n // \n //
\n };\n\n renderSearchArea() { }\n\n RenderExpandableRowsComponent = (props) => { };\n\n rederTableStyle() { }\n\n doSomthingBeforeGetItems = async () => { };\n\n doSomthingAfterGetItems = async () => { };\n\n doSomthingAfterSelectChange = () => { };\n\n renderRowStyles = () => { };\n\n noDataComponent = () => {\n //default text is \"There are no records to display\"\n };\n\n countRecords = () => {\n const items = this.getLocalState().items;\n return items && Array.isArray(items) ? items.length : 0;\n }\n\n optimisticDataTable = React.memo((props) => {\n return (\n \n }\n highlightOnHover={this.state.tableHighlightOnHover}\n customStyles={props.customStyles}\n progressPending={props.loading}\n noDataComponent={this.noDataComponent()}\n persistTableHead={true}\n conditionalRowStyles={props.conditionalRowStyles}\n />\n );\n },(pre, next)=>{\n const preData = JSON.stringify(pre.data);\n const nextData = JSON.stringify(next.data);\n return preData === nextData && pre.loading === next.loading;\n });\n\n render() {\n const columns = this.setColumns();\n const title = this.state.pageTitle\n ? this.state.pageTitle\n : this.state.pluraltitle != \"\"\n ? this.state.pluraltitle\n : this.state.title + \"s\";\n const items = this.getLocalState().items;\n const lastUpdateLabel = this.getLocalState().lastUpdateLabel;\n const customStyles = this.rederTableStyle();\n const conditionalRowStyles = this.renderRowStyles();\n const countRecords = this.countRecords();\n return (\n <>\n \n {title + \" | \" + process.env.REACT_APP_SITE_TITLE}\n \n
\n
\n
\n \n\n
\n
\n

{title}

\n
\n
    \n
  1. \n \n \n \n
  2. \n {this.extendBreadcrumb()}\n
  3. \n {title}\n
  4. \n
\n\n \n \n \n
\n
\n
\n
\n {this.state.hidePanelAction ? (\n \"\"\n ) : (\n
\n \n {this.state.hidePanelClose ? (\n \"\"\n ) : (\n \n )}\n
\n )}\n {lastUpdateLabel ? (\n
\n {lastUpdateLabel + \" \"} \n \n \n {this.state.hidePanelAction ? (\n \"\"\n ) : (\n <>\n \n {this.state.hidePanelClose ? (\n \"\"\n ) : (\n \n )}\n \n )}\n
\n ) : (\n \"\"\n )}\n\n

\n {this.state === undefined || items === undefined || countRecords <= 0 ?\n \"Not found!\" : countRecords == 1 ? countRecords + \" \" + this.state.title + \" found\" : countRecords + \" \" +\n (this.state.pluraltitle === \"\"\n ? this.state.title + \"s\"\n : this.state.pluraltitle) +\n \" found\"}\n

\n
\n
\n {this.state.searchFormBasic ? (\n
\n {this.renderSearchArea()}\n
\n ) : (\n \n
\n
\n
\n {this.state.urladd === null ||\n this.state.urladd === undefined ||\n this.state.urladd === \"\" ? (\n \"\"\n ) : (\n \n {\" \"}\n {this.state.labeladd\n ? this.state.labeladd\n : \"Add\"}\n \n )}\n {this.extendButtons()}\n
\n {this.renderSearch()}\n
\n
\n
\n )}\n
\n \n {this.state.alertshow === true ? (\n \n ) : (\n \"\"\n )}\n
\n
\n \n \n \n {this.extendRender()}\n \n );\n }\n}\nexport default App;\n","import React from \"react\";\r\nimport Button from \"react-bootstrap/Button\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport * as XLSX from \"xlsx\";\r\n\r\nexport const ExportExcel = ({\r\n csvData,\r\n fileName,\r\n buttonLabel,\r\n buttonClassName, \r\n}) => {\r\n const fileType =\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\n const fileExtension = \".xlsx\";\r\n\r\n function fitToColumn(data) {\r\n let widths = initialWidthColumns(data[0]);\r\n data.map(\r\n item => {\r\n const arrObject = Object.values(item);\r\n arrObject.map((obj, i) => {\r\n const len = String(obj).length;\r\n widths[i] = len > widths[i] ? len : widths[i];\r\n })\r\n }\r\n );\r\n \r\n return widths.map(width => {\r\n return {\r\n wch: width\r\n }\r\n });\r\n }\r\n\r\n function initialWidthColumns(data) {\r\n const arrObject = Object.keys(data);\r\n return arrObject.map((item) => {\r\n return String(item).length;\r\n })\r\n }\r\n\r\n const exportToCSV = (csvData, fileName) => {\r\n // if (csvData && csvData.length > 0) {\r\n const ws = XLSX.utils.json_to_sheet(csvData);\r\n ws['!cols'] = fitToColumn(csvData);\r\n const wb = { Sheets: { data: ws }, SheetNames: [\"data\"] };\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const data = new Blob([excelBuffer], { type: fileType });\r\n FileSaver.saveAs(data, fileName + fileExtension);\r\n // }\r\n // else {\r\n // console.log(\"a\");\r\n // return ;\r\n // }\r\n };\r\n if (buttonLabel === \"\") {\r\n buttonLabel = \"Export excel\";\r\n }\r\n return csvData && csvData.length > 0 ? (\r\n exportToCSV(csvData, fileName)}\r\n className={buttonClassName}\r\n >\r\n {buttonLabel}\r\n \r\n ) : (\r\n \"\"\r\n );\r\n};\r\n\r\nexport default ExportExcel;\r\n","import React from \"react\";\r\nimport ImageGallery from 'react-image-gallery';\r\nimport \"react-image-gallery/styles/css/image-gallery.css\";\r\n\r\nclass App extends React.PureComponent{\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n showNavigation: true,\r\n }\r\n }\r\n\r\n getGallery = () => {\r\n const gallery = this.props.gallery ? this.props.gallery : [];\r\n let result = gallery.map(item => {\r\n return {\r\n original: item,\r\n thumbnail: item,\r\n size:{\r\n height: \"calc(70vh - 80px)\"\r\n }\r\n }\r\n })\r\n \r\n return result;\r\n }\r\n\r\n\r\n render = () => {\r\n const gallery = this.getGallery();\r\n return (<>\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default App;","import React from \"react\";\nimport ListComponent from \"../Base/ListComponentCustomState\";\nimport ExportExcel from \"../Utilities/ExportExcel\";\nimport Moment from \"moment\";\nimport MultiSelectComponent from \"../Base/MultiSelectComponent\";\nimport ImageGalleryComponent from \"../Base/ImageGalleryComponent\";\n\nimport { HttpAxios } from \"../../Utilities/Http\"\nimport { Button, Modal } from \"react-bootstrap\";\nimport { DateTimeFormat, NumberFormat } from \"../../global\";\nimport { getLoggedUser } from \"../../context/auth\";\nconst GlobalConfig = new window.globalConfig();\n\n//Region: Handle select filter change\nconst ReportName = \"PSP_SEL_IC4020S_ICCurrentInventoryBalance\";\nconst ListTag = [\"Attr1\", \"Attr2\", \"Grand\"];\nconst ProductTotalTag = \"Product Total\";\nlet loggedUser = null;\n\nclass App extends ListComponent {\n constructor(props) {\n super(props);\n loggedUser = getLoggedUser();\n this.state = {\n urlapi: GlobalConfig.REACT_APP_API_REPORT_INVENTORY_BALANCE_URL,\n urlapiFacility: GlobalConfig.REACT_APP_API_REPORT_INVENTORY_BALANCE_URL + \"facilities\",\n urlapiFileData: GlobalConfig.REACT_APP_API_COMMON_FILE_DATA,\n urlapiAtributeProduct: GlobalConfig.REACT_APP_API_REPORT_INVENTORY_BALANCE_URL + `productattributes/${loggedUser._id}`,\n urlApiCronJobSetting: GlobalConfig.REACT_APP_API_CRON_JOB_SETTING,\n title: \"Product\",\n pageTitle: \"Current Inventory Balance\",\n pluraltitle: \"Products\",\n searchFormBasic: true,\n hidePanelAction: true,\n paginationDisabled: true,\n }\n }\n\n //Region: Handle select filter change\n //Region: Get data filter\n //Region: Export handler\n //Region: Business\n\n getOptions(selected) {\n let options = selected?.map(item => {\n if (item.value !== \"*\")\n return item.value;\n })\n return options?.join();\n }\n\n doSomthingAfterSelectChange = () => {\n this.getItems();\n };\n //End region: Handle select filter change\n\n //Region: Get data filter\n doSomthingBeforeGetItems = async () => {\n await this.getFacilityItems();\n await this.getProductAttributeItems();\n await this.getFileDataInfo();\n };\n\n async getFacilityItems() {\n await HttpAxios.get(this.state.urlapiFacility).then(async ({ data }) => {\n const options = MultiSelectComponent.ConvertToOptions(data.data, { value: \"FacilityID\", label: \"FacilityID\" });\n this.setLocalState(state => {\n return {\n optionFacilities: options,\n facilitiesValue: options ? [MultiSelectComponent.defaultProps.allOption, ...options] : null,\n filterParams: options ? { ...state.filterParams, ...{ facilities: this.getOptions(options) } } : null,\n };\n });\n });\n }\n\n async getProductAttributeItems() {\n await HttpAxios.get(this.state.urlapiAtributeProduct).then(async ({ data }) => {\n if (!data.data) {\n return;\n }\n const productAttr1Options = MultiSelectComponent.ConvertToOptions(data.data.productAttr1, { value: \"AttributeID\", label: \"AttributeDisplayID\" });\n const productAttr2Options = MultiSelectComponent.ConvertToOptions(data.data.productAttr2, { value: \"AttributeID\", label: \"AttributeDisplayID\" });\n this.setLocalState(state => {\n const filter1 = productAttr1Options ? { productAttribute1: this.getOptions([productAttr1Options[0]]) } : null;\n const filter2 = productAttr2Options ? { productAttribute2: this.getOptions([productAttr2Options[0]]) } : null;\n return {\n filterParams: { ...state.filterParams, ...filter1, ...filter2, companyName: loggedUser.companyName },\n optionAttributeProducts1: productAttr1Options,\n productAttribute1Value: productAttr1Options ? productAttr1Options[0] : null,\n optionAttributeProducts2: productAttr2Options,\n productAttribute2Value: productAttr2Options ? productAttr2Options[0] : null,\n };\n });\n });\n }\n\n async getFileDataInfo(){\n await HttpAxios.get(this.state.urlapiFileData + \"info\").then(async ({ data }) => {\n this.setLocalState(state => {\n return {\n fileDataInfo: data.data\n };\n });\n });\n }\n\n filterInputHandler(e) {\n e.preventDefault();\n const key = e.target.name;\n const value = e.target.value;\n this.setLocalState(state => {\n return {\n filterParams: { ...state.filterParams, [key]: value }\n }\n });\n }\n\n filterHandler() {\n this.getItems();\n }\n\n handleShow = (row) => {\n let productID = row.ProductID;\n let lotID = row.LotID;\n\n HttpAxios.get(this.state.urlapiFileData + `?productID=${productID}&lotID=${lotID}`).then(async ({ data }) => {\n const gallery = data.data.map(item => item.contentBase64);\n this.setLocalState({ gallery: gallery });\n this.setState({show: true})\n });\n\n };\n\n handleClose = (e) => {\n this.setState({show: false})\n };\n\n //End region: Get data filter\n countRecords = () => {\n const items = this.getLocalState().items;\n if(!(items && Array.isArray(items))) return 0;\n const result = items.filter(item => item.Tag === ProductTotalTag);\n return result.length;\n }\n\n getTotalLabel = (row) => {\n const localState = this.getLocalState();\n let label = `${row.ProductAttribute} Total:`;\n switch (row.Tag) {\n case \"Attr1\":\n label = `${localState.productAttribute1Value.label} ${label}`\n break;\n case \"Attr2\":\n label = `${localState.productAttribute2Value.label} ${label}`\n break;\n default:\n break;\n };\n return label;\n }\n renderRowStyles = () => {\n return [\n {\n when: row => row.Tag === \"Attr1\",\n style: {\n backgroundColor: 'rgba(0,111,171)',\n color: 'white',\n }\n },\n {\n when: row => row.Tag === \"Attr2\",\n style: {\n backgroundColor: 'rgba(186,199,225)',\n // color: 'white',\n }\n }\n ,\n {\n when: row => row.Tag === \"Grand\",\n style: {\n backgroundColor: 'rgba(254,219,174)',\n // color: 'white',\n }\n }\n ];\n }\n\n setColumns = () => {\n return [\n {\n name: (\n \n \n \n \n \n \n \n \n \n \n
 
Product ID
\n \n \n \n \n
\n ),\n selector: \"ProductID\",\n sortable: false,\n left: true,\n grow: 1,\n },\n {\n name: (\n \n \n \n \n \n \n \n \n \n \n
 
Product Name
\n \n \n \n \n
\n ),\n selector: \"ProductName01\",\n sortable: false,\n left: true,\n grow: 1,\n cell: row => {\n if (!this.getLocalState().filterParams.showLots && (ListTag.includes(row.Tag))) {\n return (\n
\n {row.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(row)}\n
\n )\n }\n return row.ProductName01;\n }\n },\n {\n name: (\n \n \n \n \n \n \n \n \n \n \n
 
Lot ID
\n \n \n \n \n
\n ),\n selector: \"LotID\",\n sortable: false,\n left: true,\n grow: 1,\n omit: !(this.getLocalState().filterParams ? this.getLocalState().filterParams.showLots : false),\n cell: row => {\n if (ListTag.includes(row.Tag)) {\n return (\n
\n {row.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(row)}\n
\n )\n }\n return row.LotID;\n }\n },\n {\n name: this.renderCustomHeader(\"On Hand\", \"OnHand\"),\n center: true,\n grow: 2,\n cell: row => {\n const style = { width: \"25%\", wordWrap: \"normal\" };\n return (\n \n \n {row.Units ? row.Units.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0} \n \n {row.UnitsUoM || row.UnitsUoM}\n \n \n {row.Fill ? row.Fill.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0} \n \n {row.FillUoM || row.FillUoM}\n \n );\n }\n },\n {\n name: this.renderCustomHeader(\"Available\", \"Available\"),\n center: true,\n grow: 2,\n cell: row => {\n const style = { width: \"25%\", wordWrap: \"normal\" };\n return (\n \n \n {row.UnitsAvailable ? row.UnitsAvailable.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0} \n \n {row.UnitsUoMAvailable || row.UnitsUoM}\n \n \n {row.FillAvailable ? row.FillAvailable.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0} \n \n {row.FillUoMAvailable || row.FillUoM}\n \n );\n }\n },\n {\n name: \"Attachments\",\n center: true,\n grow: 0,\n cell: row => {\n const fileDataInfo = this.getLocalState().fileDataInfo;\n const isValid = fileDataInfo && fileDataInfo.some(item => {\n if(row.Tag === \"Product Total\" && row.ProductID === item.ProductID){\n return true;\n }else if(this.state.showLots && row.LotID === item.LotID){\n return true\n }\n return false;\n });\n if(isValid){\n return ( this.handleShow(row)} className=\"btn btn-sm btn-default btn-icon text-primary mr-none ml-none\">)\n }\n return \"\";\n }\n },\n ];\n };\n\n renderCustomHeader(label, type) {\n const style = { width: \"25%\", wordWrap: \"normal\" };\n return (\n \n \n \n \n \n \n \n \n \n \n \n
{label}
Units UoMFill UoM
\n );\n }\n\n //Region: Export handler\n getItemsForExport = () => {\n const parsedItems = [];\n if (this.getLocalState().items) {\n if (this.getLocalState().filterParams.showLots) {\n this.getLocalState().items.map((item) => {\n parsedItems.push({\n \"Product ID\": item.ProductID,\n \"Product Name\": item.ProductName01,\n \"Lot ID\": ListTag.includes(item.Tag) ? (item.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(item)): item.LotID,\n \"On Hands/Units\": item.Units,\n \"UoM\": item.UnitsUoM,\n \"On Hands/Fill\": item.Fill,\n \"UoM \": item.FillUoM,\n \"Available/Units\": item.UnitsAvailable,\n \"UoM \": item.UnitsUoMAvailable,\n \"Available/Fill\": item.FillAvailable,\n \"UoM \": item.FillUoMAvailable\n });\n });\n } else {\n this.getLocalState().items.map((item) => {\n parsedItems.push({\n \"Product ID\": item.ProductID,\n \"Product Name\": ListTag.includes(item.Tag) ? (item.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(item)) : item.ProductName01,\n \"On Hands/Units\": item.Units,\n \"UoM\": item.UnitsUoM,\n \"On Hands/Fill\": item.Fill,\n \"UoM \": item.FillUoM,\n \"Available/Units\": item.UnitsAvailable,\n \"UoM \": item.UnitsUoMAvailable,\n \"Available/Fill\": item.FillAvailable,\n \"UoM \": item.FillUoMAvailable\n });\n });\n }\n\n }\n return parsedItems;\n };\n\n extendButtons = () => {\n return (\n \n );\n };\n\n //End Region: Export handler\n\n //Region: Business\n\n doSomthingAfterGetItems = async () => {\n await this.getCronJobSetting(ReportName, (data) => {\n this.setLocalState((state) => {\n return { lastUpdateLabel: `Last updated: ${Moment(data.lastCompleted).format(DateTimeFormat.format4)} (updated ${(data && data.typeCronJob) ? ` ${data.typeCronJob.toLowerCase()}` : \"\"})` }\n });\n }, true)\n }\n\n //End region: Business\n\n extendRender = () => {\n const localState = this.getLocalState();\n //const gallery = [url2, url, url, url, url, url, url, url, url, url, url, url, url, url ];\n return (\n \n \n Attachments\n \n \n
\n
\n \n
\n
\n
\n \n \n \n \n );\n };\n\n renderSearchArea() {\n const localState = this.getLocalState();\n return (\n <>\n
\n
\n \n
\n \n
\n
\n\n
\n \n
\n \n
\n
\n {\n loggedUser.role === \"Clients\" ?\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.extendButtons()}\n
\n
\n {this.renderSearch()}\n
\n
\n
\n \n );\n }\n}\nexport default App;\n","import React from \"react\";\r\nimport DatePicker from \"react-datepicker\";\r\n\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\n\r\nclass DateRangePicker extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onChangeStart = props.onChangeStart.bind(this);\r\n this.onChangeEnd = props.onChangeEnd.bind(this);\r\n }\r\n\r\n render = () => {\r\n return (\r\n <>\r\n
\r\n \r\n \r\n to\r\n \r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nclass DatePickerIcon extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render = () => {\r\n return (\r\n <>\r\n
\r\n \r\n \r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\n\r\nclass DatePickerIconBack extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render = () => {\r\n return (\r\n <>\r\n
\r\n \r\n \r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nexport { DateRangePicker, DatePickerIconBack, DatePickerIcon };","import React from \"react\";\r\nimport ListComponent from \"../Base/ListComponentCustomState\";\r\nimport ExportExcel from \"../Utilities/ExportExcel\";\r\nimport moment from \"moment\";\r\nimport MultiSelectComponent from \"../Base/MultiSelectComponent\";\r\nimport { HttpAxios } from \"../../Utilities/Http\"\r\n\r\nimport { DateRangePicker } from \"../Base/DatePickerComponent\";\r\nimport { DateTimeFormat, NumberFormat } from \"../../global\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\n//Region: Handle select filter change\r\nconst ReportName = \"PSP_SEL_IC4260S_ICInventoryRollover\";\r\nconst ListTag = [\"Attr1\", \"Attr2\", \"Grand\"];\r\nconst ProductTotalTag = \"Product Total\";\r\nlet loggedUser = null;\r\n\r\nclass App extends ListComponent {\r\n constructor(props) {\r\n super(props);\r\n loggedUser = getLoggedUser();\r\n console.log(loggedUser);\r\n\r\n this.state = {\r\n urlapi: GlobalConfig.REACT_APP_API_REPORT_INVENTORY_ROLLOVER_URL,\r\n urlapiFacility: GlobalConfig.REACT_APP_API_COMMON_FACILITY,\r\n urlapiAtributeProduct: GlobalConfig.REACT_APP_API_COMMON_PRODUCT_ATTRIBUTE + `${loggedUser._id}`,\r\n urlapiAtributeProductValue: GlobalConfig.REACT_APP_API_COMMON_PRODUCT_ATTRIBUTE + \"values/\" + `${loggedUser._id}`,\r\n urlApiCronJobSetting: GlobalConfig.REACT_APP_API_CRON_JOB_SETTING,\r\n title: \"Product\",\r\n pageTitle: \"Inventory Rollover by Month\",\r\n pluraltitle: \"Products\",\r\n searchFormBasic: true,\r\n hidePanelAction: true,\r\n paginationDisabled: true,\r\n filterParams: {},\r\n }\r\n }\r\n\r\n //Region: Handle select filter change\r\n //Region: Get data filter\r\n //Region: Export handler\r\n //Region: Business\r\n\r\n getOptions(selected) {\r\n let options = selected?.map(item => {\r\n if (item.value !== \"*\")\r\n return item.value;\r\n })\r\n return options?.join();\r\n }\r\n\r\n doSomthingAfterSelectChange = () => {\r\n this.getItems();\r\n };\r\n\r\n\r\n attributeFilterChange(selected, element) {\r\n const key = element.name;\r\n const keyValue = `${element.name}Value`;\r\n let valueOptions = selected.value;\r\n\r\n const productAttr1ValueOptions = this.filterProductAttributeValues(valueOptions);\r\n \r\n this.setLocalState(state => {\r\n const data = { ...state.filterParams, [key]: valueOptions, productAttribute1V: this.getOptions([productAttr1ValueOptions[0]]) };\r\n return {\r\n filterParams: data,\r\n [keyValue]: selected,\r\n productAttr1ValueOptions,\r\n productAttribute1VValue: productAttr1ValueOptions ? productAttr1ValueOptions[0] : null\r\n };\r\n })\r\n this.getItems();\r\n }\r\n\r\n handleDatePickerChange = (selectedDate, key) => {\r\n\r\n if(key === \"filterEndDate\"){\r\n const date = new Date(selectedDate.setMonth(selectedDate.getMonth() + 1));\r\n selectedDate = new Date(date.setDate(date.getDate() - 1));\r\n }\r\n\r\n this.setLocalState(state => {\r\n const filterParams = { ...state.filterParams, [key]: moment(selectedDate).format(\"YYYYMMDD\") };\r\n return { filterParams, [key]: selectedDate }\r\n });\r\n this.setState({ isRerender: true }, this.getItems);\r\n };\r\n\r\n //End region: Handle select filter change\r\n\r\n //Region: Get data filter\r\n doSomthingBeforeGetItems = async () => {\r\n await this.getDefaultDateRange();\r\n await this.getFacilityItems();\r\n await this.getProductAttributeValueItems();\r\n await this.getProductAttributeItems();\r\n };\r\n\r\n getDefaultDateRange = async () => {\r\n let now = new Date();\r\n let filterEndDate = new Date(now);\r\n let filterStartDate = new Date(moment(now).format(\"YYYY-MM-01\"));\r\n this.setLocalState(state => {\r\n const filterParams = { ...state.filterParams, filterStartDate: moment(filterStartDate).format(\"YYYYMMDD\"), filterEndDate: moment(filterEndDate).format(\"YYYYMMDD\") };\r\n return { filterParams, filterStartDate, filterEndDate }\r\n });\r\n }\r\n\r\n async getFacilityItems() {\r\n await HttpAxios.get(this.state.urlapiFacility).then(async ({ data }) => {\r\n const options = MultiSelectComponent.ConvertToOptions(data.data, { value: \"ICFacilitySK\", label: \"FacilityID\" });\r\n this.setLocalState(state => {\r\n return {\r\n optionFacilities: options,\r\n facilitiesValue: options ? [MultiSelectComponent.defaultProps.allOption, ...options] : null,\r\n filterParams: options ? { ...state.filterParams, ...{ facilities: this.getOptions(options) } } : null,\r\n };\r\n });\r\n });\r\n }\r\n\r\n async getProductAttributeValueItems() {\r\n await HttpAxios.get(this.state.urlapiAtributeProductValue).then(async ({ data }) => {\r\n if (!data.data) {\r\n return;\r\n }\r\n const proAttributeValueOriginal = data.data;\r\n this.setLocalState({ proAttributeValueOriginal });\r\n });\r\n }\r\n\r\n\r\n async getProductAttributeItems() {\r\n await HttpAxios.get(this.state.urlapiAtributeProduct).then(async ({ data }) => {\r\n if (!data.data) {\r\n return;\r\n }\r\n\r\n const productAttr1Options = MultiSelectComponent.ConvertToOptions(data.data.productAttr1, { value: \"AttributeID\", label: \"AttributeDisplayID\" });\r\n const productAttr2Options = MultiSelectComponent.ConvertToOptions(data.data.productAttr2, { value: \"AttributeID\", label: \"AttributeDisplayID\" });\r\n const productAttr1ValueOptions = this.filterProductAttributeValues(productAttr1Options[0].value);\r\n\r\n this.setLocalState(state => {\r\n const filter1 = productAttr1Options ? { productAttribute1: this.getOptions([productAttr1Options[0]]) } : null;\r\n const filter2 = productAttr2Options ? { productAttribute2: this.getOptions([productAttr2Options[0]]) } : null;\r\n const filter3 = productAttr1ValueOptions ? { productAttribute1V: this.getOptions([productAttr1ValueOptions[0]]) } : null;\r\n return {\r\n filterParams: { ...state.filterParams, ...filter1, ...filter2, ...filter3 },\r\n productAttr1ValueOptions: productAttr1ValueOptions,\r\n productAttribute1VValue: productAttr1ValueOptions ? productAttr1ValueOptions[0] : null,\r\n optionAttributeProduct1: productAttr1Options,\r\n productAttribute1Value: productAttr1Options ? productAttr1Options[0] : null,\r\n optionAttributeProducts2: productAttr2Options,\r\n productAttribute2Value: productAttr2Options ? productAttr2Options[0] : null,\r\n };\r\n });\r\n });\r\n }\r\n\r\n filterProductAttributeValues(clue) {\r\n const attributeValues = this.getLocalState().proAttributeValueOriginal;\r\n const options = attributeValues.filter(value => {\r\n return value.AttributeID === clue;\r\n });\r\n return MultiSelectComponent.ConvertToOptions(options, { value: \"AttributeValueDisplayID\", label: \"AttributeValueDisplayID\" });\r\n }\r\n\r\n filterInputHandler(e) {\r\n e.preventDefault();\r\n const key = e.target.name;\r\n const value = e.target.value;\r\n this.setLocalState(state => {\r\n return {\r\n filterParams: { ...state.filterParams, [key]: value }\r\n }\r\n });\r\n }\r\n\r\n filterHandler() {\r\n this.getItems();\r\n }\r\n\r\n //End region: Get data filter\r\n countRecords = () => {\r\n const items = this.getLocalState().items;\r\n if(!(items && Array.isArray(items))) return 0;\r\n const result = items.filter(item => item.Tag === ProductTotalTag);\r\n return result.length;\r\n }\r\n getTotalLabel = (row) => {\r\n const localState = this.getLocalState();\r\n let label = `${row.ProductAttribute} Total:`;\r\n switch (row.Tag) {\r\n case \"Attr1\":\r\n label = `${localState.productAttribute1Value.label} ${label}`\r\n break;\r\n case \"Attr2\":\r\n label = `${localState.productAttribute2Value.label} ${label}`\r\n break;\r\n default:\r\n break;\r\n };\r\n return label;\r\n }\r\n renderRowStyles = () => {\r\n return [\r\n {\r\n when: row => row.Tag === \"Attr1\",\r\n style: {\r\n backgroundColor: 'rgba(0,111,171)',\r\n color: 'white',\r\n }\r\n },\r\n {\r\n when: row => row.Tag === \"Attr2\",\r\n style: {\r\n backgroundColor: 'rgba(186,199,225)',\r\n // color: 'white',\r\n }\r\n }\r\n ,\r\n {\r\n when: row => row.Tag === \"Grand\",\r\n style: {\r\n backgroundColor: 'rgba(254,219,174)',\r\n // color: 'white',\r\n }\r\n }\r\n ];\r\n }\r\n\r\n setColumns = () => {\r\n return [\r\n {\r\n name: (\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
 
Product ID
\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n grow: 1,\r\n selector: \"ProductID\",\r\n sortable: false,\r\n left: true,\r\n },\r\n {\r\n name: (\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
 
Product Name
\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n selector: \"ProductName01\",\r\n sortable: false,\r\n left: true,\r\n grow: 1,\r\n cell: row => {\r\n debugger\r\n if (this.getLocalState().filterParams && !this.getLocalState().filterParams.showLots && (ListTag.includes(row.Tag))) {\r\n return (\r\n
\r\n {row.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(row)}\r\n
\r\n )\r\n }\r\n return row.ProductName01;\r\n }\r\n },\r\n {\r\n name: (\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
 
Lot ID
\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n selector: \"LotID\",\r\n sortable: false,\r\n left: true,\r\n omit: !(this.getLocalState().filterParams && this.getLocalState().filterParams.showLots),\r\n grow: 1,\r\n cell: row => {\r\n if (ListTag.includes(row.Tag)) {\r\n return (\r\n
\r\n {row.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(row)}\r\n
\r\n )\r\n }\r\n return row.LotID;\r\n }\r\n },\r\n\r\n {\r\n name: this.renderCustomHeader(\"Beginning\", \"begin\"),\r\n center: true,\r\n grow: 1,\r\n cell: row => {\r\n const style = { width: \"50%\", wordWrap: \"normal\" };\r\n \r\n const fillValue = row.BeginningFill ? row.BeginningFill.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0;\r\n const unitsValue = row.BeginningUnits ? row.BeginningUnits.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {row.BeginningUnits < 0 ? ({unitsValue}) : unitsValue} \r\n \r\n {row.BeginningFill < 0 ? ({fillValue}) : fillValue} \r\n
\r\n\r\n );\r\n }\r\n },\r\n {\r\n name: this.renderBasicHeader(\"Receipt\"),\r\n center: true,\r\n grow: 0,\r\n cell: row => {\r\n return this.bindValueInGrid(row, \"Receipt\")\r\n }\r\n },\r\n {\r\n name: this.renderBasicHeader(\"Issue\"),\r\n center: true,\r\n grow: 0,\r\n cell: row => {\r\n return this.bindValueInGrid(row, \"Issue\")\r\n }\r\n },\r\n {\r\n name: this.renderBasicHeader(\"Production\"),\r\n center: true,\r\n grow: 0,\r\n cell: row => {\r\n return this.bindValueInGrid(row, \"Production\")\r\n }\r\n },\r\n {\r\n name: this.renderBasicHeader(\"Shipment\"),\r\n center: true,\r\n grow: 0,\r\n cell: row => {\r\n return this.bindValueInGrid(row, \"Shipment\")\r\n }\r\n },\r\n {\r\n name: this.renderBasicHeader(\"Other\"),\r\n center: true,\r\n grow: 0,\r\n cell: row => {\r\n return this.bindValueInGrid(row, \"Other\")\r\n }\r\n },\r\n {\r\n name: this.renderCustomHeader(\"Ending\"),\r\n center: true,\r\n grow: 1,\r\n cell: row => {\r\n const style = { width: \"50%\", wordWrap: \"normal\" };\r\n const fillValue = row.EndingFill ? row.EndingFill.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0;\r\n const unitsValue = row.EndingUnits ? row.EndingUnits.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {row.EndingUnits < 0 ? ({unitsValue}) : unitsValue} \r\n \r\n {row.EndingFill < 0 ? ({fillValue}) : fillValue} \r\n
\r\n );\r\n }\r\n },\r\n ];\r\n };\r\n\r\n bindValueInGrid = (row, key) => {\r\n let value = null;\r\n if (this.getLocalState().filterParams.unitsOrFill) {\r\n value = row[`${key}Units`];\r\n } else {\r\n value = row[`${key}Fill`];\r\n }\r\n const valueFormat = value ? value.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0;\r\n return value < 0 ? ({valueFormat}) : valueFormat;\r\n }\r\n\r\n renderBasicHeader(label) {\r\n const localState = this.getLocalState();\r\n const style = { width: \"100%\", wordWrap: \"normal\" }; \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{label}
{(this.getLocalState().filterParams && localState.filterParams.unitsOrFill) ? \"Units\" : \"Fill\"}
\r\n );\r\n }\r\n\r\n\r\n\r\n renderCustomHeader(label, type) {\r\n const localState = this.getLocalState();\r\n let date = null;\r\n if(type === \"begin\"){\r\n date = moment(localState.filterStartDate).format(\"MM/DD/YYYY\");\r\n }else{\r\n date = moment(localState.filterEndDate).format(\"MM/DD/YYYY\");\r\n }\r\n\r\n const style = { width: \"50%\", wordWrap: \"normal\" };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{`${label} (${date})`}
UnitsFill
\r\n );\r\n }\r\n\r\n //Region: Export handler\r\n getItemsForExport = () => {\r\n const parsedItems = [];\r\n const localState = this.getLocalState();\r\n if (localState.items) {\r\n if (localState.filterParams.showLots) {\r\n localState.items.map((item) => {\r\n parsedItems.push({\r\n \"Product ID\": item.ProductID,\r\n \"Product Name\": item.ProductName01,\r\n \"Lot ID\": ListTag.includes(item.Tag) ? (item.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(item)) : item.LotID,\r\n \"Beginning/Units\": item.BeginningUnits,\r\n \"Beginning/Fill\": item.BeginningFill,\r\n [`Receipt ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ReceiptUnits : item.ReceiptFill,\r\n [`Issue ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.IssueUnits : item.IssueFill,\r\n [`Production ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ProductionUnits : item.ProductionFill,\r\n [`Shipment ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ShipmentUnits : item.ShipmentFill,\r\n [`Other ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.OtherUnits : item.OtherFill,\r\n \"Ending/Units\": item.EndingUnits,\r\n \"Ending/Fill\": item.EndingFill,\r\n });\r\n });\r\n } else {\r\n localState.items.map((item) => {\r\n parsedItems.push({\r\n \"Product ID\": item.ProductID,\r\n \"Product Name\": ListTag.includes(item.Tag) ? (item.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(item)) : item.ProductName01,\r\n \"Beginning/Units\": item.BeginningUnits,\r\n \"Beginning/Fill\": item.BeginningFill,\r\n [`Receipt ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ReceiptUnits : item.ReceiptFill,\r\n [`Issue ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.IssueUnits : item.IssueFill,\r\n [`Production ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ProductionUnits : item.ProductionFill,\r\n [`Shipment ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ShipmentUnits : item.ShipmentFill,\r\n [`Other ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.OtherUnits : item.OtherFill,\r\n \"Ending/Units\": item.EndingUnits,\r\n \"Ending/Fill\": item.EndingFill,\r\n });\r\n });\r\n }\r\n\r\n }\r\n return parsedItems;\r\n };\r\n\r\n extendButtons = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n //End Region: Export handler\r\n\r\n //Region: Business\r\n\r\n doSomthingAfterGetItems = async () => {\r\n const items = this.getLocalState().items;\r\n if (items && items.length > 0) {\r\n const createdDate = items[0].createdDate;\r\n await this.getCronJobSetting(ReportName, (data) => {\r\n this.setLocalState((state) => {\r\n return { lastUpdateLabel: `Stored From: ${moment(data.transactionDateFrom).format(\"MM/YYYY\")} - Last updated: ${moment(createdDate).format(DateTimeFormat.format4)} (updated ${(data && data.typeCronJob) ? ` ${data.typeCronJob.toLowerCase()}` : \"\"})` }\r\n });\r\n })\r\n }\r\n }\r\n\r\n //End region: Business\r\n\r\n renderSearchArea() {\r\n const localState = this.getLocalState();\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n { this.handleDatePickerChange(selectedDate, \"filterStartDate\") }}\r\n onChangeEnd={(selectedDate) => { this.handleDatePickerChange(selectedDate, \"filterEndDate\") }}\r\n minStartDate={this.getLocalState().filterStartDate}\r\n />\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {\r\n loggedUser.role === \"Clients\" ? \"\":\r\n (\r\n <>\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n )\r\n }\r\n \r\n\r\n
\r\n \r\n
\r\n \r\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 {this.extendButtons()}\r\n
\r\n
\r\n {this.renderSearch()}\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport Dashboard from \"./Dashboard\";\r\nimport Header from \"../Containers/Profiles/Header\";\r\nimport Navigation from \"./Navigation\";\r\nimport CurrentInventoryBalance from \"./Report/CurrentInventoryBalance\";\r\nimport InventoryRollover from \"./Report/InventoryRolloverByMonth\";\r\nimport { getLoggedUser } from \"../context/auth\";\r\n\r\nfunction App(props) {\r\n const loggedUser = getLoggedUser();\r\n\r\n if(loggedUser.role == \"Clients\"){\r\n if(loggedUser.accessReport)\r\n {\r\n const accessReport = loggedUser.accessReport.split(\",\")[0];\r\n if(accessReport){\r\n switch(accessReport){\r\n case \"CURRENT_INVENTORY_BALANCE\":\r\n return ()\r\n case \"INVENTORY_ROLLOVER\":\r\n return ()\r\n }\r\n }\r\n }else{\r\n return (\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
\r\n \r\n \r\n
\r\n
\r\n);\r\n \r\n}\r\n\r\nexport default App;\r\n","import React from \"react\";\r\nimport { Route, Redirect } from \"react-router-dom\";\r\nimport { useAuth } from \"./context/auth\";\r\n\r\nfunction PrivateRoute({ component: Component, roles, navRoute, ...rest }) {\r\n const { authTokens } = useAuth();\r\n return (\r\n \r\n authTokens ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n );\r\n}\r\n\r\nexport default PrivateRoute;\r\n","import styled from \"styled-components\";\r\n\r\nconst Card = styled.div`\r\n box-sizing: border-box;\r\n max-width: 410px;\r\n margin: 0 auto;\r\n padding: 0 2rem;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n background: #ecedf0;\r\n font-size: 1.2rem !important;\r\n position: absolute;\r\n top: 30%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n`;\r\n\r\nconst Form = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n`;\r\n\r\nconst Input = styled.input`\r\n padding: 1rem;\r\n border: 1px solid #999;\r\n margin-bottom: 1rem;\r\n font-size: 1.2rem !important;\r\n`;\r\n\r\nconst Button = styled.button`\r\n background: linear-gradient(to bottom, #6371c7, #5563c1);\r\n border-color: #3f4eae;\r\n border-radius: 3px;\r\n padding: 1rem;\r\n color: white;\r\n font-weight: 700;\r\n width: 100%;\r\n margin-bottom: 1rem;\r\n font-size: 1.2rem !important;\r\n`;\r\n\r\nconst Logo = styled.img`\r\n width: 50%;\r\n margin-bottom: 1rem;\r\n`;\r\n\r\nconst Error = styled.div`\r\n color: red;\r\n`;\r\n\r\nexport { Form, Input, Button, Logo, Card, Error };\r\n","import React, { useState } from \"react\";\r\nimport { useAuth } from \"../../context/auth\";\r\nimport { Error } from \"../../Components/AuthForms\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { HttpAxios } from \"../../Utilities/Http\"\r\n\r\nvar jwt = require(\"jsonwebtoken\");\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nfunction Login(props) {\r\n const [isLoggedIn, setLoggedIn] = useState(false);\r\n const [isError, setIsError] = useState(false);\r\n const [userName, setUserName] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [errorMessage, setErrorMessage] = useState(\r\n \"Username and password is required!\"\r\n );\r\n const { setAuthTokens } = useAuth();\r\n\r\n function postLogin(props) {\r\n if (!userName || !password)\r\n {\r\n setErrorMessage(\"Username and password is required!\");\r\n setIsError(true);\r\n } else {\r\n HttpAxios\r\n .post(GlobalConfig.REACT_APP_API_AUTH_URL + \"/login\", {\r\n userName,\r\n password,\r\n })\r\n .then((result) => {\r\n if (result.status === 200) {\r\n let avatar = result.data.data.avatar;\r\n if ( avatar && avatar != process.env.REACT_APP_DEFAULT_COMPANY_PHOTO && avatar != process.env.REACT_APP_DEFAULT_AVATAR_PHOTO)\r\n {\r\n avatar = GlobalConfig.REACT_APP_API_URL + avatar;\r\n result.data.data.avatar = avatar;\r\n }\r\n const token = jwt.sign(\r\n result.data.data,\r\n process.env.REACT_APP_TOKEN_SECRET\r\n );\r\n localStorage.clear();\r\n console.log(\"Cleared cache already.\");\r\n localStorage.setItem(\"isActive\", result.data.data.isActive);\r\n setAuthTokens(token);\r\n setLoggedIn(true);\r\n } else {\r\n setErrorMessage(\r\n \"The username or password provided were incorrect!\"\r\n );\r\n setIsError(true);\r\n }\r\n })\r\n .catch((e) => {\r\n setErrorMessage(\"The username or password provided were incorrect!\");\r\n setIsError(true);\r\n });\r\n }\r\n }\r\n\r\n try {\r\n const referer = props.location.state.referer || \"/\";\r\n if (isLoggedIn) {\r\n return ;\r\n }\r\n } catch {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n {\"Home | \" + process.env.REACT_APP_SITE_TITLE}\r\n \r\n
\r\n
\r\n \r\n \"Porto\r\n \r\n\r\n
\r\n
\r\n

\r\n Sign In\r\n

\r\n
\r\n
\r\n {isError && (\r\n {errorMessage}\r\n )}\r\n
\r\n \r\n
\r\n {\r\n setUserName(e.target.value);\r\n }}\r\n autoFocus\r\n placeholder=\"E-mail\"\r\n type=\"text\"\r\n maxLength={100}\r\n className=\"form-control input-lg\"\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 Lost Password?\r\n \r\n
\r\n
\r\n {\r\n setPassword(e.target.value);\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 Sign In\r\n \r\n \r\n Sign In\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n © ParityFactory All rights reserved |{\" \"}\r\n \r\n Privacy Policy\r\n \r\n \r\n

\r\n
\r\n
\r\n \r\n );\r\n}\r\nexport default Login;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport AddComponent from \"../Base/AddComponent\";\r\nimport { Helmet } from \"react-helmet\";\r\n\r\nclass App extends AddComponent {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {\"Terms of Use | \" + process.env.REACT_APP_SITE_TITLE}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n

TERMS OF USE

\r\n

\r\n

Last updated July 20, 2020\r\n

\r\n
\r\n
\r\n

AGREEMENT TO TERMS

\r\n

\r\n These Terms of Use constitute a legally binding agreement made\r\n between you, whether personally or on behalf of an entity\r\n (“you”) and ParityFactory LLC (\"Company\", “we”, “us”, or “our”),\r\n concerning your access to and use of the parityfactory.com\r\n website as well as any other media form, media channel, mobile\r\n website or mobile application related, linked, or otherwise\r\n connected thereto (collectively, the “Site”). You agree that by\r\n accessing the Site, you have read, understood, and agree to be\r\n bound by all of these Terms of Use. IF YOU DO NOT AGREE WITH ALL\r\n OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM\r\n USING THE SITE AND YOU MUST DISCONTINUE USE IMMEDIATELY.\r\n

{\" \"}\r\n

\r\n Supplemental terms and conditions or documents that may be\r\n posted on the Site from time to time are hereby expressly\r\n incorporated herein by reference. We reserve the right, in our\r\n sole discretion, to make changes or modifications to these Terms\r\n of Use at any time and for any reason. We will alert you about\r\n any changes by updating the “Last updated” date of these Terms\r\n of Use, and you waive any right to receive specific notice of\r\n each such change. It is your responsibility to periodically\r\n review these Terms of Use to stay informed of updates. You will\r\n be subject to, and will be deemed to have been made aware of and\r\n to have accepted, the changes in any revised Terms of Use by\r\n your continued use of the Site after the date such revised Terms\r\n of Use are posted.\r\n

\r\n

\r\n The information provided on the Site is not intended for\r\n distribution to or use by any person or entity in any\r\n jurisdiction or country where such distribution or use would be\r\n contrary to law or regulation or which would subject us to any\r\n registration requirement within such jurisdiction or country.\r\n Accordingly, those persons who choose to access the Site from\r\n other locations do so on their own initiative and are solely\r\n responsible for compliance with local laws, if and to the extent\r\n local laws are applicable.\r\n

\r\n

\r\n The Site is not tailored to comply with industry-specific\r\n regulations (Health Insurance Portability and Accountability Act\r\n (HIPAA), Federal Information Security Management Act (FISMA),\r\n etc.), so if your interactions would be subjected to such laws,\r\n you may not use this Site. You may not use the Site in a way\r\n that would violate the Gramm-Leach-Bliley Act (GLBA).\r\n

\r\n

\r\n The Site is intended for users who are at least 13 years of age.\r\n All users who are minors in the jurisdiction in which they\r\n reside (generally under the age of 18) must have the permission\r\n of, and be directly supervised by, their parent or guardian to\r\n use the Site. If you are a minor, you must have your parent or\r\n guardian read and agree to these Terms of Use prior to you using\r\n the Site.\r\n

\r\n
\r\n\r\n
\r\n

INTELLECTUAL PROPERTY RIGHTS

\r\n

\r\n Unless otherwise indicated, the Site is our proprietary property\r\n and all source code, databases, functionality, software, website\r\n designs, audio, video, text, photographs, and graphics on the\r\n Site (collectively, the “Content”) and the trademarks, service\r\n marks, and logos contained therein (the “Marks”) are owned or\r\n controlled by us or licensed to us, and are protected by\r\n copyright and trademark laws and various other intellectual\r\n property rights and unfair competition laws of the United\r\n States, international copyright laws, and international\r\n conventions. The Content and the Marks are provided on the Site\r\n “AS IS” for your information and personal use only. Except as\r\n expressly provided in these Terms of Use, no part of the Site\r\n and no Content or Marks may be copied, reproduced, aggregated,\r\n republished, uploaded, posted, publicly displayed, encoded,\r\n translated, transmitted, distributed, sold, licensed, or\r\n otherwise exploited for any commercial purpose whatsoever,\r\n without our express prior written permission.\r\n

\r\n

\r\n Provided that you are eligible to use the Site, you are granted\r\n a limited license to access and use the Site and to download or\r\n print a copy of any portion of the Content to which you have\r\n properly gained access solely for your personal, non-commercial\r\n use. We reserve all rights not expressly granted to you in and\r\n to the Site, the Content and the Marks.\r\n

\r\n
\r\n\r\n
\r\n

USER REPRESENTATIONS

\r\n

\r\n By using the Site, you represent and warrant that: (1) all\r\n registration information you submit will be true, accurate,\r\n current, and complete; (2) you will maintain the accuracy of\r\n such information and promptly update such registration\r\n information as necessary; (3) you have the legal capacity and\r\n you agree to comply with these Terms of Use; (4) you are not\r\n under the age of 13; (5) you are not a minor in the jurisdiction\r\n in which you reside, or if a minor, you have received parental\r\n permission to use the Site; (6) you will not access the Site\r\n through automated or non-human means, whether through a bot,\r\n script or otherwise; (7) you will not use the Site for any\r\n illegal or unauthorized purpose; and (8) your use of the Site\r\n will not violate any applicable law or regulation.\r\n

\r\n

\r\n If you provide any information that is untrue, inaccurate, not\r\n current, or incomplete, we have the right to suspend or\r\n terminate your account and refuse any and all current or future\r\n use of the Site (or any portion thereof).{\" \"}\r\n

\r\n
\r\n\r\n
\r\n

USER REGISTRATION

\r\n

\r\n You may be required to register with the Site. You agree to keep\r\n your password confidential and will be responsible for all use\r\n of your account and password. We reserve the right to remove,\r\n reclaim, or change a username you select if we determine, in our\r\n sole discretion, that such username is inappropriate, obscene,\r\n or otherwise objectionable.\r\n

\r\n
\r\n\r\n
\r\n

FEES AND PAYMENT

\r\n

We accept the following forms of payment:

\r\n

\r\n

    \r\n
  • Visa
  • \r\n
  • Mastercard
  • \r\n
\r\n

\r\n

\r\n You may be required to purchase or pay a fee to access some of\r\n our services. You agree to provide current, complete, and\r\n accurate purchase and account information for all purchases made\r\n via the Site. You further agree to promptly update account and\r\n payment information, including email address, payment method,\r\n and payment card expiration date, so that we can complete your\r\n transactions and contact you as needed. We bill you through an\r\n online billing account for purchases made via the Site. Sales\r\n tax will be added to the price of purchases as deemed required\r\n by us. We may change prices at any time. All payments shall be\r\n in U.S. dollars.\r\n

\r\n

\r\n You agree to pay all charges or fees at the prices then in\r\n effect for your purchases, and you authorize us to charge your\r\n chosen payment provider for any such amounts upon making your\r\n purchase. If your purchase is subject to recurring charges, then\r\n you consent to our charging your payment method on a recurring\r\n basis without requiring your prior approval for each recurring\r\n charge, until you notify us of your cancellation.\r\n

\r\n

\r\n We reserve the right to correct any errors or mistakes in\r\n pricing, even if we have already requested or received payment.\r\n We also reserve the right to refuse any order placed through the\r\n Site.\r\n

\r\n
\r\n\r\n
\r\n

CANCELLATION

\r\n

\r\n All purchases are non-refundable. You can cancel your\r\n subscription at any time by contacting us using the contact\r\n information provided below. Your cancellation will take effect\r\n at the end of the current paid term.\r\n

\r\n

\r\n If you are unsatisfied with our services, please email us at{\" \"}\r\n \r\n pfgrading@paritycorp.com\r\n \r\n .\r\n

\r\n
\r\n\r\n
\r\n

PROHIBITED ACTIVITIES

\r\n

\r\n You may not access or use the Site for any purpose other than\r\n that for which we make the Site available. The Site may not be\r\n used in connection with any commercial endeavors except those\r\n that are specifically endorsed or approved by us.\r\n

\r\n

As a user of the Site, you agree not to:

\r\n

\r\n

    \r\n
  1. \r\n Circumvent, disable, or otherwise interfere with\r\n security-related features of the Site, including features\r\n that prevent or restrict the use or copying of any Content\r\n or enforce limitations on the use of the Site and/or the\r\n Content contained therein.\r\n
  2. \r\n
  3. \r\n Engage in any automated use of the system, such as using\r\n scripts to send comments or messages, or using any data\r\n mining, robots, or similar data gathering and extraction\r\n tools.\r\n
  4. \r\n
  5. \r\n Interfere with, disrupt, or create an undue burden on the\r\n Site or the networks or services connected to the Site.\r\n
  6. \r\n
  7. \r\n Use the Site as part of any effort to compete with us or\r\n otherwise use the Site and/or the Content for any\r\n revenue-generating endeavor or commercial enterprise.\r\n
  8. \r\n
  9. \r\n Decipher, decompile, disassemble, or reverse engineer any of\r\n the software comprising or in any way making up a part of\r\n the Site.\r\n
  10. \r\n
  11. \r\n Attempt to bypass any measures of the Site designed to\r\n prevent or restrict access to the Site, or any portion of\r\n the Site.\r\n
  12. \r\n
  13. \r\n Delete the copyright or other proprietary rights notice from\r\n any Content.\r\n
  14. \r\n
  15. \r\n Copy or adapt the Site’s software, including but not limited\r\n to Flash, PHP, HTML, JavaScript, or other code.\r\n
  16. \r\n
  17. \r\n Upload or transmit (or attempt to upload or to transmit) any\r\n material that acts as a passive or active information\r\n collection or transmission mechanism, including without\r\n limitation, clear graphics interchange formats (“gifs”), 1×1\r\n pixels, web bugs, cookies, or other similar devices\r\n (sometimes referred to as “spyware” or “passive collection\r\n mechanisms” or “pcms”).\r\n
  18. \r\n
  19. \r\n Except as may be the result of standard search engine or\r\n Internet browser usage, use, launch, develop, or distribute\r\n any automated system, including without limitation, any\r\n spider, robot, cheat utility, scraper, or offline reader\r\n that accesses the Site, or using or launching any\r\n unauthorized script or other software.\r\n
  20. \r\n
  21. \r\n Disparage, tarnish, or otherwise harm, in our opinion, us\r\n and/or the Site.\r\n
  22. \r\n
  23. \r\n Use the Site in a manner inconsistent with any applicable\r\n laws or regulations.\r\n
  24. \r\n
\r\n

\r\n
\r\n\r\n
\r\n

USER GENERATED CONTRIBUTIONS

\r\n

\r\n The Site may invite you to chat, contribute to, or participate\r\n in blogs, message boards, online forums, and other\r\n functionality, and may provide you with the opportunity to\r\n create, submit, post, display, transmit, perform, publish,\r\n distribute, or broadcast content and materials to us or on the\r\n Site, including but not limited to text, writings, video, audio,\r\n photographs, graphics, comments, suggestions, or personal\r\n information or other material (collectively, \"Contributions\").\r\n Contributions may be viewable by other users of the Site and\r\n through third-party websites. As such, any Contributions you\r\n transmit may be treated as non-confidential and non-proprietary.\r\n When you create or make available any Contributions, you thereby\r\n represent and warrant that:\r\n

\r\n

\r\n

    \r\n
  1. \r\n The creation, distribution, transmission, public display, or\r\n performance, and the accessing, downloading, or copying of\r\n your Contributions do not and will not infringe the\r\n proprietary rights, including but not limited to the\r\n copyright, patent, trademark, trade secret, or moral rights\r\n of any third party.\r\n
  2. \r\n
  3. \r\n You are the creator and owner of or have the necessary\r\n licenses, rights, consents, releases, and permissions to use\r\n and to authorize us, the Site, and other users of the Site\r\n to use your Contributions in any manner contemplated by the\r\n Site and these Terms of Use.\r\n
  4. \r\n
  5. \r\n You have the written consent, release, and/or permission of\r\n each and every identifiable individual person in your\r\n Contributions to use the name or likeness of each and every\r\n such identifiable individual person to enable inclusion and\r\n use of your Contributions in any manner contemplated by the\r\n Site and these Terms of Use.\r\n
  6. \r\n
  7. \r\n Your Contributions are not false, inaccurate, or misleading.\r\n
  8. \r\n
  9. \r\n Your Contributions are not unsolicited or unauthorized\r\n advertising, promotional materials, pyramid schemes, chain\r\n letters, spam, mass mailings, or other forms of\r\n solicitation.\r\n
  10. \r\n
  11. \r\n Your Contributions are not obscene, lewd, lascivious,\r\n filthy, violent, harassing, libelous, slanderous, or\r\n otherwise objectionable (as determined by us).\r\n
  12. \r\n
  13. \r\n Your Contributions do not ridicule, mock, disparage,\r\n intimidate, or abuse anyone.\r\n
  14. \r\n
  15. \r\n Your Contributions do not advocate the violent overthrow of\r\n any government or incite, encourage, or threaten physical\r\n harm against another.\r\n
  16. \r\n
  17. \r\n Your Contributions do not violate any applicable law,\r\n regulation, or rule.\r\n
  18. \r\n
  19. \r\n Your Contributions do not violate the privacy or publicity\r\n rights of any third party.\r\n
  20. \r\n
  21. \r\n Your Contributions do not contain any material that solicits\r\n personal information from anyone under the age of 18 or\r\n exploits people under the age of 18 in a sexual or violent\r\n manner.\r\n
  22. \r\n
  23. \r\n Your Contributions do not violate any applicable law\r\n concerning child pornography, or otherwise intended to\r\n protect the health or well-being of minors.\r\n
  24. \r\n
  25. \r\n Your Contributions do not include any offensive comments\r\n that are connected to race, national origin, gender, sexual\r\n preference, or physical handicap.\r\n
  26. \r\n
  27. \r\n Your Contributions do not otherwise violate, or link to\r\n material that violates, any provision of these Terms of Use,\r\n or any applicable law or regulation.\r\n
  28. \r\n
\r\n

\r\n

\r\n Any use of the Site in violation of the foregoing violates these\r\n Terms of Use and may result in, among other things, termination\r\n or suspension of your rights to use the Site.\r\n

\r\n
\r\n\r\n
\r\n

CONTRIBUTION LICENSE

\r\n

\r\n By posting your Contributions to any part of the Site, you\r\n automatically grant, and you represent and warrant that you have\r\n the right to grant, to us an unrestricted, unlimited,\r\n irrevocable, perpetual, non-exclusive, transferable,\r\n royalty-free, fully-paid, worldwide right, and license to host,\r\n use, copy, reproduce, disclose, sell, resell, publish,\r\n broadcast, retitle, archive, store, cache, publicly perform,\r\n publicly display, reformat, translate, transmit, excerpt (in\r\n whole or in part), and distribute such Contributions (including,\r\n without limitation, your image and voice) for any purpose,\r\n commercial, advertising, or otherwise, and to prepare derivative\r\n works of, or incorporate into other works, such Contributions,\r\n and grant and authorize sublicenses of the foregoing. The use\r\n and distribution may occur in any media formats and through any\r\n media channels.{\" \"}\r\n

\r\n

\r\n This license will apply to any form, media, or technology now\r\n known or hereafter developed, and includes our use of your name,\r\n company name, and franchise name, as applicable, and any of the\r\n trademarks, service marks, trade names, logos, and personal and\r\n commercial images you provide. You waive all moral rights in\r\n your Contributions, and you warrant that moral rights have not\r\n otherwise been asserted in your Contributions.{\" \"}\r\n

\r\n

\r\n We do not assert any ownership over your Contributions. You\r\n retain full ownership of all of your Contributions and any\r\n intellectual property rights or other proprietary rights\r\n associated with your Contributions. We are not liable for any\r\n statements or representations in your Contributions provided by\r\n you in any area on the Site. You are solely responsible for your\r\n Contributions to the Site and you expressly agree to exonerate\r\n us from any and all responsibility and to refrain from any legal\r\n action against us regarding your Contributions.{\" \"}\r\n

\r\n

\r\n We have the right, in our sole and absolute discretion, (1) to\r\n edit, redact, or otherwise change any Contributions; (2) to\r\n re-categorize any Contributions to place them in more\r\n appropriate locations on the Site; and (3) to pre-screen or\r\n delete any Contributions at any time and for any reason, without\r\n notice. We have no obligation to monitor your Contributions.{\" \"}\r\n

\r\n
\r\n\r\n
\r\n

SUBMISSIONS

\r\n

\r\n You acknowledge and agree that any questions, comments,\r\n suggestions, ideas, feedback, or other information regarding the\r\n Site (\"Submissions\") provided by you to us are non-confidential\r\n and shall become our sole property. We shall own exclusive\r\n rights, including all intellectual property rights, and shall be\r\n entitled to the unrestricted use and dissemination of these\r\n Submissions for any lawful purpose, commercial or otherwise,\r\n without acknowledgment or compensation to you. You hereby waive\r\n all moral rights to any such Submissions, and you hereby warrant\r\n that any such Submissions are original with you or that you have\r\n the right to submit such Submissions. You agree there shall be\r\n no recourse against us for any alleged or actual infringement or\r\n misappropriation of any proprietary right in your Submissions.\r\n

\r\n
\r\n\r\n
\r\n

U.S. GOVERNMENT RIGHTS

\r\n

\r\n Our services are “commercial items” as defined in Federal\r\n Acquisition Regulation (“FAR”) 2.101. If our services are\r\n acquired by or on behalf of any agency not within the Department\r\n of Defense (“DOD”), our services are subject to the terms of\r\n these Terms of Use in accordance with FAR 12.212 (for computer\r\n software) and FAR 12.211 (for technical data). If our services\r\n are acquired by or on behalf of any agency within the Department\r\n of Defense, our services are subject to the terms of these Terms\r\n of Use in accordance with Defense Federal Acquisition Regulation\r\n (“DFARS”) 227.7202 3. In addition, DFARS 252.227 7015 applies to\r\n technical data acquired by the DOD. This U.S. Government Rights\r\n clause is in lieu of, and supersedes, any other FAR, DFARS, or\r\n other clause or provision that addresses government rights in\r\n computer software or technical data under these Terms of Use.\r\n

\r\n
\r\n\r\n
\r\n

SITE MANAGEMENT

\r\n

\r\n We reserve the right, but not the obligation, to: (1) monitor\r\n the Site for violations of these Terms of Use; (2) take\r\n appropriate legal action against anyone who, in our sole\r\n discretion, violates the law or these Terms of Use, including\r\n without limitation, reporting such user to law enforcement\r\n authorities; (3) in our sole discretion and without limitation,\r\n refuse, restrict access to, limit the availability of, or\r\n disable (to the extent technologically feasible) any of your\r\n Contributions or any portion thereof; (4) in our sole discretion\r\n and without limitation, notice, or liability, to remove from the\r\n Site or otherwise disable all files and content that are\r\n excessive in size or are in any way burdensome to our systems;\r\n and (5) otherwise manage the Site in a manner designed to\r\n protect our rights and property and to facilitate the proper\r\n functioning of the Site.\r\n

\r\n
\r\n\r\n
\r\n

PRIVACY POLICY

\r\n

\r\n We care about data privacy and security. Please review our\r\n Privacy Policy:{\" \"}\r\n \r\n https://parityfactory.com/privacy-policy/\r\n \r\n . By using the Site, you agree to be bound by our Privacy\r\n Policy, which is incorporated into these Terms of Use. Please be\r\n advised the Site is hosted in the United States. If you access\r\n the Site from any other region of the world with laws or other\r\n requirements governing personal data collection, use, or\r\n disclosure that differ from applicable laws in the United\r\n States, then through your continued use of the Site, you are\r\n transferring your data to the United States, and you agree to\r\n have your data transferred to and processed in the United\r\n States. Further, we do not knowingly accept, request, or solicit\r\n information from children or knowingly market to children.\r\n Therefore, in accordance with the U.S. Children’s Online Privacy\r\n Protection Act, if we receive actual knowledge that anyone under\r\n the age of 13 has provided personal information to us without\r\n the requisite and verifiable parental consent, we will delete\r\n that information from the Site as quickly as is reasonably\r\n practical.\r\n

\r\n
\r\n\r\n
\r\n

COPYRIGHT INFRINGEMENTS

\r\n

\r\n We respect the intellectual property rights of others. If you\r\n believe that any material available on or through the Site\r\n infringes upon any copyright you own or control, please\r\n immediately notify us using the contact information provided\r\n below (a “Notification”). A copy of your Notification will be\r\n sent to the person who posted or stored the material addressed\r\n in the Notification. Please be advised that pursuant to\r\n applicable law you may be held liable for damages if you make\r\n material misrepresentations in a Notification. Thus, if you are\r\n not sure that material located on or linked to by the Site\r\n infringes your copyright, you should consider first contacting\r\n an attorney.\r\n

\r\n
\r\n\r\n
\r\n

TERM AND TERMINATION

\r\n

\r\n These Terms of Use shall remain in full force and effect while\r\n you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE\r\n TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION\r\n AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE\r\n SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON\r\n FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION\r\n FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT\r\n CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR\r\n REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE\r\n SITE OR DELETE YOUR ACCOUNT AND ANY CONTENT OR INFORMATION THAT\r\n YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.{\" \"}\r\n

\r\n

\r\n If we terminate or suspend your account for any reason, you are\r\n prohibited from registering and creating a new account under\r\n your name, a fake or borrowed name, or the name of any third\r\n party, even if you may be acting on behalf of the third party.\r\n In addition to terminating or suspending your account, we\r\n reserve the right to take appropriate legal action, including\r\n without limitation pursuing civil, criminal, and injunctive\r\n redress.\r\n

\r\n

\r\n
\r\n\r\n
\r\n

MODIFICATIONS AND INTERRUPTIONS

\r\n

\r\n We reserve the right to change, modify, or remove the contents\r\n of the Site at any time or for any reason at our sole discretion\r\n without notice. However, we have no obligation to update any\r\n information on our Site. We also reserve the right to modify or\r\n discontinue all or part of the Site without notice at any time.\r\n We will not be liable to you or any third party for any\r\n modification, price change, suspension, or discontinuance of the\r\n Site.{\" \"}\r\n

\r\n

\r\n We cannot guarantee the Site will be available at all times. We\r\n may experience hardware, software, or other problems or need to\r\n perform maintenance related to the Site, resulting in\r\n interruptions, delays, or errors. We reserve the right to\r\n change, revise, update, suspend, discontinue, or otherwise\r\n modify the Site at any time or for any reason without notice to\r\n you. You agree that we have no liability whatsoever for any\r\n loss, damage, or inconvenience caused by your inability to\r\n access or use the Site during any downtime or discontinuance of\r\n the Site. Nothing in these Terms of Use will be construed to\r\n obligate us to maintain and support the Site or to supply any\r\n corrections, updates, or releases in connection therewith.\r\n

\r\n

\r\n
\r\n\r\n
\r\n

GOVERNING LAW

\r\n

\r\n These Terms of Use and your use of the Site are governed by and\r\n construed in accordance with the laws of the State of Washington\r\n applicable to agreements made and to be entirely performed\r\n within the State of Washington, without regard to its conflict\r\n of law principles.\r\n

\r\n

\r\n

\r\n
\r\n\r\n
\r\n

DISPUTE RESOLUTION

\r\n

\r\n

Informal Negotiations

\r\n

\r\n

\r\n To expedite resolution and control the cost of any dispute,\r\n controversy, or claim related to these Terms of Use (each a\r\n \"Dispute\" and collectively, the “Disputes”) brought by either\r\n you or us (individually, a “Party” and collectively, the\r\n “Parties”), the Parties agree to first attempt to negotiate any\r\n Dispute (except those Disputes expressly provided below)\r\n informally for at least thirty (30) days before initiating\r\n arbitration. Such informal negotiations commence upon written\r\n notice from one Party to the other Party.\r\n

\r\n

\r\n

Binding Arbitration

\r\n

\r\n

\r\n If the Parties are unable to resolve a Dispute through informal\r\n negotiations, the Dispute (except those Disputes expressly\r\n excluded below) will be finally and exclusively resolved by\r\n binding arbitration. YOU UNDERSTAND THAT WITHOUT THIS PROVISION,\r\n YOU WOULD HAVE THE RIGHT TO SUE IN COURT AND HAVE A JURY TRIAL.\r\n The arbitration shall be commenced and conducted under the\r\n Commercial Arbitration Rules of the American Arbitration\r\n Association (\"AAA\") and, where appropriate, the AAA’s\r\n Supplementary Procedures for Consumer Related Disputes (\"AAA\r\n Consumer Rules\"), both of which are available at the AAA website\r\n www.adr.org. Your arbitration fees\r\n and your share of arbitrator compensation shall be governed by\r\n the AAA Consumer Rules and, where appropriate, limited by the\r\n AAA Consumer Rules. If such costs are determined to by the\r\n arbitrator to be excessive, we will pay all arbitration fees and\r\n expenses. The arbitration may be conducted in person, through\r\n the submission of documents, by phone, or online. The arbitrator\r\n will make a decision in writing, but need not provide a\r\n statement of reasons unless requested by either Party. The\r\n arbitrator must follow applicable law, and any award may be\r\n challenged if the arbitrator fails to do so. Except where\r\n otherwise required by the applicable AAA rules or applicable\r\n law, the arbitration will take place in King, Washington. Except\r\n as otherwise provided herein, the Parties may litigate in court\r\n to compel arbitration, stay proceedings pending arbitration, or\r\n to confirm, modify, vacate, or enter judgment on the award\r\n entered by the arbitrator. If for any reason, a Dispute proceeds\r\n in court rather than arbitration, the Dispute shall be commenced\r\n or prosecuted in the state and federal courts located in King,\r\n Washington, and the Parties hereby consent to, and waive all\r\n defenses of lack of personal jurisdiction, and forum non\r\n conveniens with respect to venue and jurisdiction in such state\r\n and federal courts. Application of the United Nations Convention\r\n on Contracts for the International Sale of Goods and the the\r\n Uniform Computer Information Transaction Act (UCITA) are\r\n excluded from these Terms of Use. In no event shall any Dispute\r\n brought by either Party related in any way to the Site be\r\n commenced more than one (1) years after the cause of action\r\n arose. If this provision is found to be illegal or\r\n unenforceable, then neither Party will elect to arbitrate any\r\n Dispute falling within that portion of this provision found to\r\n be illegal or unenforceable and such Dispute shall be decided by\r\n a court of competent jurisdiction within the courts listed for\r\n jurisdiction above, and the Parties agree to submit to the\r\n personal jurisdiction of that court.\r\n

\r\n

\r\n

Restrictions

\r\n

\r\n

\r\n The Parties agree that any arbitration shall be limited to the\r\n Dispute between the Parties individually. To the full extent\r\n permitted by law, (a) no arbitration shall be joined with any\r\n other proceeding; (b) there is no right or authority for any\r\n Dispute to be arbitrated on a class-action basis or to utilize\r\n class action procedures; and (c) there is no right or authority\r\n for any Dispute to be brought in a purported representative\r\n capacity on behalf of the general public or any other persons.\r\n

\r\n

\r\n

Exceptions to Informal Negotiations and Arbitration

\r\n

\r\n

\r\n The Parties agree that the following Disputes are not subject to\r\n the above provisions concerning informal negotiations and\r\n binding arbitration: (a) any Disputes seeking to enforce or\r\n protect, or concerning the validity of, any of the intellectual\r\n property rights of a Party; (b) any Dispute related to, or\r\n arising from, allegations of theft, piracy, invasion of privacy,\r\n or unauthorized use; and (c) any claim for injunctive relief. If\r\n this provision is found to be illegal or unenforceable, then\r\n neither Party will elect to arbitrate any Dispute falling within\r\n that portion of this provision found to be illegal or\r\n unenforceable and such Dispute shall be decided by a court of\r\n competent jurisdiction within the courts listed for jurisdiction\r\n above, and the Parties agree to submit to the personal\r\n jurisdiction of that court.\r\n

\r\n
\r\n\r\n
\r\n

CORRECTIONS

\r\n

\r\n There may be information on the Site that contains typographical\r\n errors, inaccuracies, or omissions, including descriptions,\r\n pricing, availability, and various other information. We reserve\r\n the right to correct any errors, inaccuracies, or omissions and\r\n to change or update the information on the Site at any time,\r\n without prior notice.\r\n

\r\n

\r\n

\r\n
\r\n\r\n
\r\n

DISCLAIMER

\r\n

\r\n THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU\r\n AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR\r\n SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM\r\n ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE\r\n AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED\r\n WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,\r\n AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS\r\n ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE\r\n CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO\r\n LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR\r\n INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR\r\n PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR\r\n ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR\r\n USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL\r\n INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY\r\n INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE,\r\n (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE\r\n TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR\r\n (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR\r\n ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE\r\n OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE\r\n VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME\r\n RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED\r\n BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR\r\n ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR\r\n OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY\r\n BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND\r\n ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE\r\n PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY\r\n ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE\r\n CAUTION WHERE APPROPRIATE.\r\n

\r\n

\r\n

\r\n
\r\n\r\n
\r\n

LIMITATIONS OF LIABILITY

\r\n

\r\n IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE\r\n LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT,\r\n CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE\r\n DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR\r\n OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE\r\n BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING\r\n ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU\r\n FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE\r\n ACTION, WILL AT ALL TIMES BE LIMITED TO THE AMOUNT PAID, IF ANY,\r\n BY YOU TO US DURING THE SIX (6) MONTH PERIOD PRIOR TO ANY CAUSE\r\n OF ACTION ARISING. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS\r\n DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION\r\n OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU,\r\n SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT\r\n APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.\r\n

\r\n

\r\n

\r\n
\r\n\r\n
\r\n

INDEMNIFICATION

\r\n

\r\n You agree to defend, indemnify, and hold us harmless, including\r\n our subsidiaries, affiliates, and all of our respective\r\n officers, agents, partners, and employees, from and against any\r\n loss, damage, liability, claim, or demand, including reasonable\r\n attorneys’ fees and expenses, made by any third party due to or\r\n arising out of: (1) your Contributions; (2) use of the Site; (3)\r\n breach of these Terms of Use; (4) any breach of your\r\n representations and warranties set forth in these Terms of Use;\r\n (5) your violation of the rights of a third party, including but\r\n not limited to intellectual property rights; or (6) any overt\r\n harmful act toward any other user of the Site with whom you\r\n connected via the Site. Notwithstanding the foregoing, we\r\n reserve the right, at your expense, to assume the exclusive\r\n defense and control of any matter for which you are required to\r\n indemnify us, and you agree to cooperate, at your expense, with\r\n our defense of such claims. We will use reasonable efforts to\r\n notify you of any such claim, action, or proceeding which is\r\n subject to this indemnification upon becoming aware of it.\r\n

\r\n

\r\n

\r\n
\r\n\r\n
\r\n

USER DATA

\r\n

\r\n We will maintain certain data that you transmit to the Site for\r\n the purpose of managing the performance of the Site, as well as\r\n data relating to your use of the Site. Although we perform\r\n regular routine backups of data, you are solely responsible for\r\n all data that you transmit or that relates to any activity you\r\n have undertaken using the Site. You agree that we shall have no\r\n liability to you for any loss or corruption of any such data,\r\n and you hereby waive any right of action against us arising from\r\n any such loss or corruption of such data.\r\n

\r\n

\r\n

\r\n
\r\n\r\n
\r\n

ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES

\r\n

\r\n Visiting the Site, sending us emails, and completing online\r\n forms constitute electronic communications. You consent to\r\n receive electronic communications, and you agree that all\r\n agreements, notices, disclosures, and other communications we\r\n provide to you electronically, via email and on the Site,\r\n satisfy any legal requirement that such communication be in\r\n writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES,\r\n CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY\r\n OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR\r\n COMPLETED BY US OR VIA THE SITE. You hereby waive any rights or\r\n requirements under any statutes, regulations, rules, ordinances,\r\n or other laws in any jurisdiction which require an original\r\n signature or delivery or retention of non-electronic records, or\r\n to payments or the granting of credits by any means other than\r\n electronic means.\r\n

\r\n

\r\n

\r\n
\r\n\r\n
\r\n

CALIFORNIA USERS AND RESIDENTS

\r\n

\r\n If any complaint with us is not satisfactorily resolved, you can\r\n contact the Complaint Assistance Unit of the Division of\r\n Consumer Services of the California Department of Consumer\r\n Affairs in writing at 1625 North Market Blvd., Suite N 112,\r\n Sacramento, California 95834 or by telephone at (800) 952-5210\r\n or (916) 445-1254.\r\n

\r\n

\r\n

\r\n
\r\n\r\n
\r\n

MISCELLANEOUS

\r\n

\r\n These Terms of Use and any policies or operating rules posted by\r\n us on the Site or in respect to the Site constitute the entire\r\n agreement and understanding between you and us. Our failure to\r\n exercise or enforce any right or provision of these Terms of Use\r\n shall not operate as a waiver of such right or provision. These\r\n Terms of Use operate to the fullest extent permissible by law.\r\n We may assign any or all of our rights and obligations to others\r\n at any time. We shall not be responsible or liable for any loss,\r\n damage, delay, or failure to act caused by any cause beyond our\r\n reasonable control. If any provision or part of a provision of\r\n these Terms of Use is determined to be unlawful, void, or\r\n unenforceable, that provision or part of the provision is deemed\r\n severable from these Terms of Use and does not affect the\r\n validity and enforceability of any remaining provisions. There\r\n is no joint venture, partnership, employment or agency\r\n relationship created between you and us as a result of these\r\n Terms of Use or use of the Site. You agree that these Terms of\r\n Use will not be construed against us by virtue of having drafted\r\n them. You hereby waive any and all defenses you may have based\r\n on the electronic form of these Terms of Use and the lack of\r\n signing by the parties hereto to execute these Terms of Use.\r\n

\r\n

\r\n Any user or customer of this software recognizes that any test\r\n performed on or stored in this software is done so purely for\r\n convenience and does not replace the paper document, which\r\n remains the official record of any test unless deemed otherwise\r\n by the appropriate testing authority. It is the user or\r\n customer's sole responsibility to maintain the paper record as\r\n the legal record of any given test.\r\n

\r\n

\r\n
\r\n\r\n
\r\n

CONTACT US

\r\n

\r\n In order to resolve a complaint regarding the Site or to receive\r\n further information regarding use of the Site, please contact us\r\n at:\r\n

\r\n

ParityFactory LLC

\r\n

11812 North Creek Pkwy N 204

\r\n

Bothell, WA 98011

\r\n

United States

\r\n

Phone: __________

\r\n

\r\n \r\n pfgrading@paritycorp.com\r\n \r\n

\r\n
\r\n \r\n

\r\n \r\n © ParityFactory All rights reserved |{\" \"}\r\n \r\n Privacy Policy\r\n \r\n \r\n

\r\n \r\n \r\n );\r\n }\r\n}\r\nexport default App;\r\n","import React, { useState } from \"react\";\r\nimport Alert from \"../Utilities/Alert\";\r\nimport ReactHtmlParser from \"react-html-parser\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { HttpAxios } from \"../../Utilities/Http\"\r\nimport { Error } from \"../../Components/AuthForms\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nfunction App(props) {\r\n const [isError, setIsError] = useState(false);\r\n const [userName, setUserName] = useState(\"\");\r\n const [errorMessage, setErrorMessage] = useState(\"Email is required!\");\r\n\r\n //USING FOR ALERT\r\n const [alertshow, setAlertShow] = useState(false);\r\n const [alerttype, setAlertType] = useState(\"success\");\r\n const [alertmsg, setAlertMsg] = useState(\"\");\r\n\r\n function handleServer(props) {\r\n if (userName === undefined || userName === \"\" || userName === \"undefined\") {\r\n setErrorMessage(\"Email is required!\");\r\n setIsError(true);\r\n } else {\r\n HttpAxios\r\n .post(GlobalConfig.REACT_APP_API_AUTH_URL + \"/recovery\", {\r\n userName,\r\n baseUrl: GlobalConfig.REACT_APP_BASE_URL,\r\n fromDisplayName: process.env.REACT_APP_DISPLAYNAMESENDEREMAIL,\r\n })\r\n .then((result) => {\r\n if (result.status === 200) {\r\n if (result.data.result === \"OK\") {\r\n setAlertMsg(\r\n \"Recovery password is sent your e-mail. Please check inbox.\"\r\n );\r\n setAlertShow(true);\r\n //reset form\r\n setUserName(\"\");\r\n\r\n setTimeout(() => {\r\n setAlertShow(false);\r\n }, 2000);\r\n\r\n setIsError(false);\r\n } else {\r\n setErrorMessage(result.data.message);\r\n setIsError(true);\r\n }\r\n } else {\r\n setErrorMessage(\"The email provided was incorrect!\");\r\n setIsError(true);\r\n }\r\n })\r\n .catch((e) => {\r\n setErrorMessage(\"The email provided was incorrect!\");\r\n setIsError(true);\r\n });\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {\"Recover Password | \" + process.env.REACT_APP_SITE_TITLE}\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 Recover Password\r\n

\r\n
\r\n
\r\n {alertshow === true ? (\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n {isError && (\r\n \r\n {ReactHtmlParser(errorMessage)}\r\n \r\n )}\r\n
\r\n

\r\n Enter your e-mail below and we will send you reset\r\n instructions!\r\n

\r\n
\r\n
\r\n
\r\n {\r\n setUserName(e.target.value);\r\n }}\r\n autoFocus\r\n type=\"email\"\r\n placeholder=\"E-mail\"\r\n className=\"form-control input-lg\"\r\n maxLength={100}\r\n />\r\n \r\n \r\n Reset!\r\n \r\n \r\n
\r\n
\r\n

\r\n Remembered? Sign In!\r\n

\r\n
\r\n
\r\n\r\n

\r\n \r\n © Copyright {new Date().getFullYear()}. All rights\r\n reserved. Developed by{\" \"}\r\n \r\n Parity Factory\r\n \r\n .\r\n \r\n

\r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport EditComponent from \"../Base/EditComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport FileBase64 from \"react-file-base64\";\r\nimport Header from \"../../Containers/Profiles/Header\";\r\nimport Navigation from \"../Navigation\";\r\nimport Alert from \"../Utilities/Alert\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport jwt_decode from \"jwt-decode\";\r\n\r\nvar jwt = require(\"jsonwebtoken\");\r\n\r\nconst loggedUser = getLoggedUser();\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nclass App extends EditComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n listtitle: \"\",\r\n urllist: \"\",\r\n urlapi: GlobalConfig.REACT_APP_API_ADMINISTRATOR_URL,\r\n urlsubmitapi: GlobalConfig.REACT_APP_API_ADMINISTRATOR_URL + \"profile/\",\r\n // imageFieldName: \"avatar\",\r\n // imageFieldExtension: \"avatarExtension\",\r\n // imageMaxSize: parseInt(process.env.REACT_APP_MAX_SIZE_PROFILE_IMAGE),\r\n // defaultAvatar: process.env.REACT_APP_DEFAULT_AVATAR_PHOTO,\r\n data: {\r\n _id: loggedUser.referenceUserId,\r\n role: \"\",\r\n name: \"\",\r\n email: \"\",\r\n status: \"\",\r\n newPassword: \"\",\r\n currentPassword: \"\",\r\n avatar: \"\",\r\n avatarExtension: \"\",\r\n createdUserId: \"\",\r\n createdDate: null,\r\n modifiedUserId: loggedUser._id,\r\n modifiedDate: new Date(),\r\n },\r\n };\r\n }\r\n\r\n // handleRemoveAvatar = () => {\r\n // this.setState({\r\n // data: Object.assign({}, this.state.data, {\r\n // [\"avatar\"]: this.state.defaultAvatar,\r\n // }),\r\n // });\r\n // };\r\n\r\n // doSomethingAfterGetItemById = () => {\r\n // if (\r\n // this.state.data.avatar != null &&\r\n // this.state.data.avatar != undefined &&\r\n // this.state.data.avatar != \"\" &&\r\n // this.state.data.avatar != this.state.defaultAvatar\r\n // ) {\r\n // const arrTemp = this.state.data.avatar.split(\".\");\r\n // const fileExtension = arrTemp[arrTemp.length - 1];\r\n // this.setState({\r\n // data: Object.assign({}, this.state.data, {\r\n // [\"avatar\"]: GlobalConfig.REACT_APP_API_URL + this.state.data.avatar,\r\n // [\"avatarExtension\"]: fileExtension,\r\n // }),\r\n // });\r\n // }\r\n // };\r\n\r\n getTitle = () => {\r\n return this.state.data.name;\r\n };\r\n\r\n doSomethingAfterSaved = (resultObject) => {\r\n //logout\r\n if (resultObject.isChangedPassword === true) {\r\n localStorage.clear();\r\n window.location.href = process.env.REACT_APP_URL_LOGIN;\r\n } else {\r\n const tokens = localStorage.getItem(\"tokens\");\r\n if (tokens) {\r\n let existingTokens = jwt_decode(tokens);\r\n existingTokens.name = this.state.data.name;\r\n const token = jwt.sign(\r\n existingTokens,\r\n process.env.REACT_APP_TOKEN_SECRET\r\n );\r\n localStorage.setItem(\"tokens\", JSON.stringify(token));\r\n }\r\n }\r\n };\r\n\r\n handleChange(event) {\r\n var id = event.target.name;\r\n const value =\r\n event.target.type === \"checkbox\"\r\n ? event.target.checked\r\n : event.target.value;\r\n this.setState(state => { return { data: { ...state.data, [id]: value } } }, () => {\r\n const profile = { ...this.props.profile, [id]: value }\r\n this.props.updateProfile(profile);\r\n });\r\n }\r\n\r\n render() {\r\n const title = \"Profile - \" + this.getTitle()\r\n return (\r\n <>\r\n \r\n {title + \" | \" + process.env.REACT_APP_SITE_TITLE}\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n

{title}

\r\n\r\n
\r\n
    \r\n
  1. \r\n \r\n \r\n \r\n
  2. \r\n
  3. \r\n {this.getTitle()}\r\n
  4. \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 {this.state.data.avatar === null ||\r\n this.state.data.avatar === \"\" ||\r\n this.state.data.avatar === undefined ? (\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

Personal Information

\r\n
\r\n
\r\n \r\n Full Name\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n Email\r\n \r\n
\r\n \r\n
\r\n
\r\n {/*
\r\n \r\n Upload Profile Image\r\n \r\n
\r\n \r\n
\r\n
*/}\r\n
\r\n
\r\n

Change Password

\r\n
\r\n
\r\n \r\n Current Password\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n New Password\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n Repeat New Password\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 {this.state.alertshow === true ? (\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 App;\r\n","import { connect } from 'react-redux';\r\nimport Profile from '../../Components/Administrator/profile';\r\n\r\nconst mapStateToProps = state => ({\r\n profile: state.profile\r\n})\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n updateProfile: profile => dispatch(profile)\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Profile)","import React from \"react\";\r\nimport EditComponent from \"../Base/EditComponent\";\r\nimport { getLoggedUser, isActive } from \"../../context/auth\";\r\nimport jwt_decode from \"jwt-decode\";\r\nimport Common from \"../Utilities/Common\";\r\n\r\nvar jwt = require(\"jsonwebtoken\");\r\nconst GlobalConfig = new window.globalConfig();\r\nconst loggedUser = getLoggedUser();\r\n\r\nclass App extends EditComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n sectionTitle: \"\",\r\n prefixTitle: \"My Profile\",\r\n listtitle: \"\",\r\n urllist: \"\",\r\n urlapi: GlobalConfig.REACT_APP_API_CLIENT_URL,\r\n urlsubmitapi: GlobalConfig.REACT_APP_API_CLIENT_URL + \"profile/\",\r\n isClientActive: false,\r\n data: {\r\n _id: loggedUser.referenceUserId,\r\n name: \"\",\r\n companyName: \"\",\r\n companyNameId: \"\",\r\n email: \"\",\r\n status: \"\",\r\n newPassword: \"\",\r\n currentPassword: \"\",\r\n createdUserId: \"\",\r\n createdDate: null,\r\n modifiedUserId: loggedUser._id,\r\n modifiedDate: new Date(),\r\n },\r\n };\r\n }\r\n\r\n handleInvalid(event) {\r\n // const value =\r\n // event.target.type === \"checkbox\"\r\n // ? event.target.checked\r\n // : event.target.value;\r\n // if (value == null || value == undefined || value.trim() == \"\") {\r\n // event.target.setCustomValidity(\r\n // \"Please fill out this field. It is required data for creating tree nut tests.\"\r\n // );\r\n // } else {\r\n // event.target.setCustomValidity(\"\");\r\n // }\r\n }\r\n\r\n handleInput(event) {\r\n event.target.setCustomValidity(\"\");\r\n }\r\n\r\n doSomethingAfterGetItemById = () => {\r\n const isClientActive = isActive();\r\n this.setState({ isClientActive: isClientActive }, function callBack() {\r\n if (\r\n loggedUser &&\r\n loggedUser.role == \"Clients\" &&\r\n this.state.isClientActive == false\r\n ) {\r\n localStorage.setItem(\"isActive\", true);\r\n }\r\n });\r\n if (this.state.data) {\r\n this.setState((state) => {\r\n return {\r\n sectionTitle: ``,\r\n };\r\n });\r\n }\r\n };\r\n\r\n doSomethingAfterSaved = (resultObject) => {\r\n //logout\r\n if (resultObject.isChangedPassword === true) {\r\n localStorage.clear();\r\n window.location.href = process.env.REACT_APP_URL_LOGIN;\r\n } else {\r\n const tokens = localStorage.getItem(\"tokens\");\r\n if (tokens) {\r\n let existingTokens = jwt_decode(tokens);\r\n existingTokens.name = this.state.data.name;\r\n const token = jwt.sign(\r\n existingTokens,\r\n process.env.REACT_APP_TOKEN_SECRET\r\n );\r\n localStorage.setItem(\"tokens\", JSON.stringify(token));\r\n }\r\n }\r\n };\r\n\r\n handleChange(event) {\r\n var id = event.target.name;\r\n const value =\r\n event.target.type === \"checkbox\"\r\n ? event.target.checked\r\n : event.target.value;\r\n this.setState(\r\n (state) => {\r\n return { data: { ...state.data, [id]: value } };\r\n },\r\n () => {\r\n const profile = { ...this.props.profile, [id]: value };\r\n this.props.updateProfile(profile);\r\n }\r\n );\r\n }\r\n\r\n getTitle = () => {\r\n return \"\";\r\n };\r\n\r\n renderForm = () => {\r\n return (\r\n
\r\n

Contact Information

\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

Change Password

\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 Repeat New Password\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n}\r\nexport default App;\r\n","import { connect } from 'react-redux';\r\nimport Profile from '../../Components/Clients/profile';\r\n\r\nconst mapStateToProps = state => ({\r\n profile: state.profile\r\n})\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n updateProfile: profile => dispatch(profile)\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Profile)","import React from \"react\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport AdminProfile from \"../../Containers/Profiles/AdminProfile\";\r\nimport ClientProfile from \"../../Containers/Profiles/ClientProfile\";\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n renderSwitch() {\r\n const loggedUser = getLoggedUser();\r\n switch (loggedUser.role) {\r\n case \"Administrators\":\r\n return ;\r\n case \"Clients\":\r\n return ;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n render() {\r\n return this.renderSwitch();\r\n }\r\n}\r\n\r\nexport default App;\r\n","import React from \"react\";\r\nimport ListComponent from \"../Base/ListComponentCustomState\";\r\nimport ExportExcel from \"../Utilities/ExportExcel\";\r\nimport moment from \"moment\";\r\nimport MultiSelectComponent from \"../Base/MultiSelectComponent\";\r\n\r\nimport { DateRangePicker } from \"../Base/DatePickerComponent\";\r\nimport { DateTimeFormat, NumberFormat } from \"../../global\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport { HttpAxios } from \"../../Utilities/Http\"\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\n//Region: Handle select filter change\r\nconst ReportName = \"PSP_SEL_IC4260S_ICInventoryRollover\";\r\nconst ListTag = [\"Attr1\", \"Attr2\", \"Grand\"];\r\nconst ProductTotalTag = \"Product Total\";\r\nlet loggedUser = null;\r\n\r\nclass App extends ListComponent {\r\n constructor(props) {\r\n super(props);\r\n loggedUser = getLoggedUser();\r\n console.log(loggedUser);\r\n\r\n this.state = {\r\n urlapi: GlobalConfig.REACT_APP_API_REPORT_INVENTORY_ROLLOVER_URL,\r\n urlapiFacility: GlobalConfig.REACT_APP_API_COMMON_FACILITY,\r\n urlapiAtributeProduct: GlobalConfig.REACT_APP_API_COMMON_PRODUCT_ATTRIBUTE + `${loggedUser._id}`,\r\n urlapiAtributeProductValue: GlobalConfig.REACT_APP_API_COMMON_PRODUCT_ATTRIBUTE + \"values/\" + `${loggedUser._id}`,\r\n urlApiCronJobSetting: GlobalConfig.REACT_APP_API_CRON_JOB_SETTING,\r\n title: \"Product\",\r\n pageTitle: \"Inventory Rollover by Date\",\r\n pluraltitle: \"Products\",\r\n searchFormBasic: true,\r\n hidePanelAction: true,\r\n paginationDisabled: true,\r\n filterParams: {},\r\n }\r\n }\r\n\r\n //Region: Handle select filter change\r\n //Region: Get data filter\r\n //Region: Export handler\r\n //Region: Business\r\n\r\n getOptions(selected) {\r\n let options = selected?.map(item => {\r\n if (item.value !== \"*\")\r\n return item.value;\r\n })\r\n return options?.join();\r\n }\r\n\r\n doSomthingAfterSelectChange = () => {\r\n this.getItems();\r\n };\r\n\r\n\r\n attributeFilterChange(selected, element) {\r\n const key = element.name;\r\n const keyValue = `${element.name}Value`;\r\n let valueOptions = selected.value;\r\n\r\n const productAttr1ValueOptions = this.filterProductAttributeValues(valueOptions);\r\n \r\n this.setLocalState(state => {\r\n const data = { ...state.filterParams, [key]: valueOptions, productAttribute1V: this.getOptions([productAttr1ValueOptions[0]]) };\r\n return {\r\n filterParams: data,\r\n [keyValue]: selected,\r\n productAttr1ValueOptions,\r\n productAttribute1VValue: productAttr1ValueOptions ? productAttr1ValueOptions[0] : null\r\n };\r\n })\r\n this.getItems();\r\n }\r\n\r\n handleDatePickerChange = (selectedDate, key) => {\r\n this.setLocalState(state => {\r\n const filterParams = { ...state.filterParams, [key]: moment(selectedDate).format(\"YYYYMMDD\") };\r\n return { filterParams, [key]: selectedDate }\r\n });\r\n this.setState({ isRerender: true }, this.getItems);\r\n };\r\n\r\n //End region: Handle select filter change\r\n\r\n //Region: Get data filter\r\n doSomthingBeforeGetItems = async () => {\r\n await this.getDefaultDateRange();\r\n await this.getFacilityItems();\r\n await this.getProductAttributeValueItems();\r\n await this.getProductAttributeItems();\r\n };\r\n\r\n getDefaultDateRange = async () => {\r\n let now = new Date();\r\n let filterEndDate = new Date(now);\r\n let filterStartDate = new Date(now).setDate(now.getDate() - 30);\r\n this.setLocalState(state => {\r\n const filterParams = { ...state.filterParams, filterStartDate: moment(filterStartDate).format(\"YYYYMMDD\"), filterEndDate: moment(filterEndDate).format(\"YYYYMMDD\") };\r\n return { filterParams, filterStartDate, filterEndDate }\r\n });\r\n }\r\n\r\n async getFacilityItems() {\r\n await HttpAxios.get(this.state.urlapiFacility).then(async ({ data }) => {\r\n const options = MultiSelectComponent.ConvertToOptions(data.data, { value: \"ICFacilitySK\", label: \"FacilityID\" });\r\n this.setLocalState(state => {\r\n return {\r\n optionFacilities: options,\r\n facilitiesValue: options ? [MultiSelectComponent.defaultProps.allOption, ...options] : null,\r\n filterParams: options ? { ...state.filterParams, ...{ facilities: this.getOptions(options) } } : null,\r\n };\r\n });\r\n });\r\n }\r\n\r\n async getProductAttributeValueItems() {\r\n await HttpAxios.get(this.state.urlapiAtributeProductValue).then(async ({ data }) => {\r\n if (!data.data) {\r\n return;\r\n }\r\n const proAttributeValueOriginal = data.data;\r\n this.setLocalState({ proAttributeValueOriginal });\r\n });\r\n }\r\n\r\n\r\n async getProductAttributeItems() {\r\n await HttpAxios.get(this.state.urlapiAtributeProduct).then(async ({ data }) => {\r\n if (!data.data) {\r\n return;\r\n }\r\n\r\n const productAttr1Options = MultiSelectComponent.ConvertToOptions(data.data.productAttr1, { value: \"AttributeID\", label: \"AttributeDisplayID\" });\r\n const productAttr2Options = MultiSelectComponent.ConvertToOptions(data.data.productAttr2, { value: \"AttributeID\", label: \"AttributeDisplayID\" });\r\n const productAttr1ValueOptions = this.filterProductAttributeValues(productAttr1Options[0].value);\r\n\r\n this.setLocalState(state => {\r\n const filter1 = productAttr1Options ? { productAttribute1: this.getOptions([productAttr1Options[0]]) } : null;\r\n const filter2 = productAttr2Options ? { productAttribute2: this.getOptions([productAttr2Options[0]]) } : null;\r\n const filter3 = productAttr1ValueOptions ? { productAttribute1V: this.getOptions([productAttr1ValueOptions[0]]) } : null;\r\n return {\r\n filterParams: { ...state.filterParams, ...filter1, ...filter2, ...filter3 },\r\n productAttr1ValueOptions: productAttr1ValueOptions,\r\n productAttribute1VValue: productAttr1ValueOptions ? productAttr1ValueOptions[0] : null,\r\n optionAttributeProduct1: productAttr1Options,\r\n productAttribute1Value: productAttr1Options ? productAttr1Options[0] : null,\r\n optionAttributeProducts2: productAttr2Options,\r\n productAttribute2Value: productAttr2Options ? productAttr2Options[0] : null,\r\n };\r\n });\r\n });\r\n }\r\n\r\n filterProductAttributeValues(clue) {\r\n const attributeValues = this.getLocalState().proAttributeValueOriginal;\r\n const options = attributeValues.filter(value => {\r\n return value.AttributeID === clue;\r\n });\r\n return MultiSelectComponent.ConvertToOptions(options, { value: \"AttributeValueDisplayID\", label: \"AttributeValueDisplayID\" });\r\n }\r\n\r\n filterInputHandler(e) {\r\n e.preventDefault();\r\n const key = e.target.name;\r\n const value = e.target.value;\r\n this.setLocalState(state => {\r\n return {\r\n filterParams: { ...state.filterParams, [key]: value }\r\n }\r\n });\r\n }\r\n\r\n filterHandler() {\r\n this.getItems();\r\n }\r\n\r\n //End region: Get data filter\r\n countRecords = () => {\r\n const items = this.getLocalState().items;\r\n if(!(items && Array.isArray(items))) return 0;\r\n const result = items.filter(item => item.Tag === ProductTotalTag);\r\n return result.length;\r\n }\r\n getTotalLabel = (row) => {\r\n const localState = this.getLocalState();\r\n let label = `${row.ProductAttribute} Total:`;\r\n switch (row.Tag) {\r\n case \"Attr1\":\r\n label = `${localState.productAttribute1Value.label} ${label}`\r\n break;\r\n case \"Attr2\":\r\n label = `${localState.productAttribute2Value.label} ${label}`\r\n break;\r\n default:\r\n break;\r\n };\r\n return label;\r\n }\r\n renderRowStyles = () => {\r\n return [\r\n {\r\n when: row => row.Tag === \"Attr1\",\r\n style: {\r\n backgroundColor: 'rgba(0,111,171)',\r\n color: 'white',\r\n }\r\n },\r\n {\r\n when: row => row.Tag === \"Attr2\",\r\n style: {\r\n backgroundColor: 'rgba(186,199,225)',\r\n // color: 'white',\r\n }\r\n }\r\n ,\r\n {\r\n when: row => row.Tag === \"Grand\",\r\n style: {\r\n backgroundColor: 'rgba(254,219,174)',\r\n // color: 'white',\r\n }\r\n }\r\n ];\r\n }\r\n\r\n setColumns = () => {\r\n return [\r\n {\r\n name: (\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
 
Product ID
\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n grow: 1,\r\n selector: \"ProductID\",\r\n sortable: false,\r\n left: true,\r\n },\r\n {\r\n name: (\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
 
Product Name
\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n selector: \"ProductName01\",\r\n sortable: false,\r\n left: true,\r\n grow: 1,\r\n cell: row => {\r\n if (this.getLocalState().filterParams && !this.getLocalState().filterParams.showLots && (ListTag.includes(row.Tag))) {\r\n return (\r\n
\r\n {row.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(row)}\r\n
\r\n )\r\n }\r\n return row.ProductName01;\r\n }\r\n },\r\n {\r\n name: (\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
 
Lot ID
\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n selector: \"LotID\",\r\n sortable: false,\r\n left: true,\r\n omit: !(this.getLocalState().filterParams && this.getLocalState().filterParams.showLots),\r\n grow: 1,\r\n cell: row => {\r\n if (ListTag.includes(row.Tag)) {\r\n return (\r\n
\r\n {row.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(row)}\r\n
\r\n )\r\n }\r\n return row.LotID;\r\n }\r\n },\r\n\r\n {\r\n name: this.renderCustomHeader(\"Beginning\", \"begin\"),\r\n center: true,\r\n grow: 1,\r\n cell: row => {\r\n const style = { width: \"50%\", wordWrap: \"normal\" };\r\n \r\n const fillValue = row.BeginningFill ? row.BeginningFill.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0;\r\n const unitsValue = row.BeginningUnits ? row.BeginningUnits.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {row.BeginningUnits < 0 ? ({unitsValue}) : unitsValue} \r\n \r\n {row.BeginningFill < 0 ? ({fillValue}) : fillValue} \r\n
\r\n\r\n );\r\n }\r\n },\r\n {\r\n name: this.renderBasicHeader(\"Receipt\"),\r\n center: true,\r\n grow: 0,\r\n cell: row => {\r\n return this.bindValueInGrid(row, \"Receipt\")\r\n }\r\n },\r\n {\r\n name: this.renderBasicHeader(\"Issue\"),\r\n center: true,\r\n grow: 0,\r\n cell: row => {\r\n return this.bindValueInGrid(row, \"Issue\")\r\n }\r\n },\r\n {\r\n name: this.renderBasicHeader(\"Production\"),\r\n center: true,\r\n grow: 0,\r\n cell: row => {\r\n return this.bindValueInGrid(row, \"Production\")\r\n }\r\n },\r\n {\r\n name: this.renderBasicHeader(\"Shipment\"),\r\n center: true,\r\n grow: 0,\r\n cell: row => {\r\n return this.bindValueInGrid(row, \"Shipment\")\r\n }\r\n },\r\n {\r\n name: this.renderBasicHeader(\"Other\"),\r\n center: true,\r\n grow: 0,\r\n cell: row => {\r\n return this.bindValueInGrid(row, \"Other\")\r\n }\r\n },\r\n {\r\n name: this.renderCustomHeader(\"Ending\"),\r\n center: true,\r\n grow: 1,\r\n cell: row => {\r\n const style = { width: \"50%\", wordWrap: \"normal\" };\r\n const fillValue = row.EndingFill ? row.EndingFill.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0;\r\n const unitsValue = row.EndingUnits ? row.EndingUnits.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {row.EndingUnits < 0 ? ({unitsValue}) : unitsValue} \r\n \r\n {row.EndingFill < 0 ? ({fillValue}) : fillValue} \r\n
\r\n );\r\n }\r\n },\r\n ];\r\n };\r\n\r\n bindValueInGrid = (row, key) => {\r\n let value = null;\r\n if (this.getLocalState().filterParams.unitsOrFill) {\r\n value = row[`${key}Units`];\r\n } else {\r\n value = row[`${key}Fill`];\r\n }\r\n const valueFormat = value ? value.toFixed(2).replace(NumberFormat.NcNNNdNN, '$&,') : 0;\r\n return value < 0 ? ({valueFormat}) : valueFormat;\r\n }\r\n\r\n renderBasicHeader(label) {\r\n const localState = this.getLocalState();\r\n const style = { width: \"100%\", wordWrap: \"normal\" }; \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{label}
{(this.getLocalState().filterParams && localState.filterParams.unitsOrFill) ? \"Units\" : \"Fill\"}
\r\n );\r\n }\r\n\r\n\r\n\r\n renderCustomHeader(label, type) {\r\n const localState = this.getLocalState();\r\n let date = null;\r\n if(type === \"begin\"){\r\n date = moment(localState.filterStartDate).format(\"MM/DD/YYYY\");\r\n }else{\r\n date = moment(localState.filterEndDate).format(\"MM/DD/YYYY\");\r\n }\r\n\r\n const style = { width: \"50%\", wordWrap: \"normal\" };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{`${label} (${date})`}
UnitsFill
\r\n );\r\n }\r\n\r\n //Region: Export handler\r\n getItemsForExport = () => {\r\n const parsedItems = [];\r\n const localState = this.getLocalState();\r\n if (localState.items) {\r\n if (localState.filterParams.showLots) {\r\n localState.items.map((item) => {\r\n parsedItems.push({\r\n \"Product ID\": item.ProductID,\r\n \"Product Name\": item.ProductName01,\r\n \"Lot ID\": ListTag.includes(item.Tag) ? (item.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(item)) : item.LotID,\r\n \"Beginning/Units\": item.BeginningUnits,\r\n \"Beginning/Fill\": item.BeginningFill,\r\n [`Receipt ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ReceiptUnits : item.ReceiptFill,\r\n [`Issue ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.IssueUnits : item.IssueFill,\r\n [`Production ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ProductionUnits : item.ProductionFill,\r\n [`Shipment ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ShipmentUnits : item.ShipmentFill,\r\n [`Other ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.OtherUnits : item.OtherFill,\r\n \"Ending/Units\": item.EndingUnits,\r\n \"Ending/Fill\": item.EndingFill,\r\n });\r\n });\r\n } else {\r\n localState.items.map((item) => {\r\n parsedItems.push({\r\n \"Product ID\": item.ProductID,\r\n \"Product Name\": ListTag.includes(item.Tag) ? (item.Tag === \"Grand\" ? `Grand Total:` : this.getTotalLabel(item)) : item.ProductName01,\r\n \"Beginning/Units\": item.BeginningUnits,\r\n \"Beginning/Fill\": item.BeginningFill,\r\n [`Receipt ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ReceiptUnits : item.ReceiptFill,\r\n [`Issue ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.IssueUnits : item.IssueFill,\r\n [`Production ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ProductionUnits : item.ProductionFill,\r\n [`Shipment ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.ShipmentUnits : item.ShipmentFill,\r\n [`Other ${localState.filterParams.unitsOrFill ? \"Units\" : \"Fill\"}`]: localState.filterParams.unitsOrFill ? item.OtherUnits : item.OtherFill,\r\n \"Ending/Units\": item.EndingUnits,\r\n \"Ending/Fill\": item.EndingFill,\r\n });\r\n });\r\n }\r\n\r\n }\r\n return parsedItems;\r\n };\r\n\r\n extendButtons = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n //End Region: Export handler\r\n\r\n //Region: Business\r\n\r\n doSomthingAfterGetItems = async () => {\r\n const items = this.getLocalState().items;\r\n if (items && items.length > 0) {\r\n const createdDate = items[0].createdDate;\r\n await this.getCronJobSetting(ReportName, (data) => {\r\n this.setLocalState((state) => {\r\n return { lastUpdateLabel: `Stored From: ${moment(data.transactionDateFrom).format(\"MM/YYYY\")} - Last updated: ${moment(createdDate).format(DateTimeFormat.format4)} (updated ${(data && data.typeCronJob) ? ` ${data.typeCronJob.toLowerCase()}` : \"\"})` }\r\n });\r\n })\r\n }\r\n }\r\n\r\n //End region: Business\r\n\r\n renderSearchArea() {\r\n const localState = this.getLocalState();\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n { this.handleDatePickerChange(selectedDate, \"filterStartDate\") }}\r\n onChangeEnd={(selectedDate) => { this.handleDatePickerChange(selectedDate, \"filterEndDate\") }}\r\n minStartDate={this.getLocalState().filterStartDate}\r\n />\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {\r\n loggedUser.role === \"Clients\" ? \"\":\r\n (\r\n <>\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n )\r\n }\r\n \r\n\r\n
\r\n \r\n
\r\n \r\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 {this.extendButtons()}\r\n
\r\n
\r\n {this.renderSearch()}\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\nexport default App;\r\n","import jsPDF from \"jspdf\";\r\nimport logo64 from \"./MeridianLogo\";\r\nimport CommonUtilities from \"../Utilities/Common\";\r\n\r\nvar DateFormat = require(\"dateformat\");\r\nconst headerFontSize = 7;\r\nconst elementFontSize = 5;\r\nconst gapElement = 10;\r\nconst gapLine = 2;\r\n\r\nexport const handleExportPdf = async (data, action) => {\r\n window.showAlert(\"Info\", \"Exporting...\", \"info\");\r\n try {\r\n composePdfFile(data, action === \"print\", action === \"preview\");\r\n } catch (err) {\r\n window.showAlert(\"Error\", err.message, \"error\");\r\n }\r\n};\r\n\r\nexport const composePdfFile = (data, isPrint, isPreview) => {\r\n if (data) {\r\n const unit = \"pt\";\r\n const size = \"A4\"; // Use A1, A2, A3 or A4\r\n const orientation = \"portrait\"; // portrait or landscape\r\n const doc = new jsPDF(orientation, unit, size);\r\n\r\n const fileName = `meridian-growers-rtt-${data.ReceiptID}.pdf`;\r\n\r\n let startY = composeHeader(data, doc);\r\n const pageWidth = doc.internal.pageSize.width;\r\n const pageHeight = doc.internal.pageSize.height;\r\n\r\n doc.setDrawColor(50, 24, 168);\r\n doc.setLineWidth(0.5);\r\n doc.line(\r\n pageWidth / 2 + 30,\r\n startY + 22,\r\n pageWidth / 2 + 30,\r\n pageHeight - 48\r\n );\r\n\r\n startY = composeLoadAnalysis(doc, startY, pageWidth);\r\n let startYRight = startY;\r\n startY += gapElement * 2;\r\n\r\n //Print elements on left side\r\n startY = composeGrossWeight(data, doc, startY, pageWidth);\r\n startY = composeSplitInShell(data, doc, startY, pageWidth);\r\n startY = composeShellingStock(data, doc, startY, pageWidth);\r\n startY = composeClosedShell(data, doc, startY, pageWidth);\r\n startY = composeTotal(data, doc, startY, pageWidth);\r\n\r\n //Print elements on right side\r\n startYRight = composeSizeTest(data, doc, startYRight, pageWidth);\r\n startYRight = composeSplitInShellRight(data, doc, startYRight, pageWidth);\r\n startYRight = composeShellingStockRight(data, doc, startYRight, pageWidth);\r\n startYRight = composeClosedShellRight(data, doc, startYRight, pageWidth);\r\n startYRight = composeTotalRight(data, doc, startYRight, pageWidth);\r\n\r\n composeFooter(doc, pageWidth, pageHeight);\r\n\r\n //open popup print\r\n if (isPrint || isPreview) {\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n // IE doesn't allow using a blob object directly as link href\r\n // instead it is necessary to use msSaveOrOpenBlob\r\n window.navigator.msSaveOrOpenBlob(doc.output(\"blob\"), fileName);\r\n } else {\r\n // For other browsers:\r\n // Create a link pointing to the ObjectURL containing the blob.\r\n if (isPrint) {\r\n doc.autoPrint();\r\n }\r\n window.open(\r\n URL.createObjectURL(doc.output(\"blob\")),\r\n \"_blank\",\r\n \"height=\" +\r\n window.innerHeight +\r\n \",width=\" +\r\n window.innerWidth +\r\n \",scrollbars=yes,location=yes\"\r\n );\r\n\r\n // For Firefox it is necessary to delay revoking the ObjectURL\r\n setTimeout(() => {\r\n window.URL.revokeObjectURL(doc.output(\"bloburl\"));\r\n }, 100);\r\n }\r\n } else {\r\n //export file\r\n doc.save(fileName);\r\n }\r\n }\r\n};\r\n\r\nfunction printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n fieldName1,\r\n fieldName2,\r\n fieldName3,\r\n unit\r\n) {\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n if (unit) {\r\n doc.text(`${unit}`, pageWidth - 200, startY, \"right\");\r\n }\r\n if (fieldName3) {\r\n doc.text(`${data[fieldName3] ?? \"\"}`, pageWidth - 140, startY, \"right\");\r\n }\r\n doc.text(`${data[fieldName1] ?? \"\"}`, pageWidth - 70, startY, \"right\");\r\n doc.text(`${data[fieldName2] ?? \"\"}`, pageWidth, startY, \"right\");\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n if (fieldName3 || fieldName3 === \"\") {\r\n doc.line(pageWidth, startY, pageWidth - 190, startY);\r\n } else {\r\n doc.line(pageWidth, startY, pageWidth - 140, startY);\r\n }\r\n\r\n return startY;\r\n}\r\n\r\nfunction printGroupLabel(doc, label, x, startY) {\r\n startY += gapElement;\r\n // doc.setFontType(\"bold\");\r\n doc.setTextColor(0, 24, 168);\r\n doc.setFontSize(elementFontSize);\r\n doc.text(label, x, startY);\r\n\r\n return startY;\r\n}\r\n\r\nfunction printGroupLabelLevel2(doc, label, x, startY) {\r\n startY += gapElement;\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n doc.setFontSize(elementFontSize);\r\n doc.text(label, x, startY);\r\n\r\n return startY;\r\n}\r\n\r\nfunction printGroupLabelLevel3(doc, label, x, startY) {\r\n startY += gapElement;\r\n // doc.setFontType(\"bold\");\r\n doc.setTextColor(0, 0, 0);\r\n doc.setFontSize(elementFontSize);\r\n doc.text(label, x, startY);\r\n\r\n return startY;\r\n}\r\n\r\nfunction composeHeader(data, doc) {\r\n const gap = 10;\r\n const gapX = 2;\r\n let startX = 420;\r\n let startY = 20;\r\n let startYLeft = 0;\r\n doc.setFontSize(10);\r\n doc.setTextColor(50, 24, 168);\r\n doc.text(`Processor RTT: ${data.ReceiptID}`, startX - 100, startY);\r\n\r\n doc.setTextColor(0, 0, 0);\r\n doc.setFontSize(headerFontSize);\r\n startY += gap * 2;\r\n // doc.setFontType(\"bold\");\r\n doc.text(\"Grower Manifest: \", startX, startY, \"right\");\r\n // doc.setFontType(\"normal\");\r\n addTextAndLine(doc, startX + gapX, startY, data.ReferenceID, 0);\r\n\r\n startY += gap;\r\n startYLeft = startY;\r\n // doc.setFontType(\"bold\");\r\n doc.text(\"Grower Field: \", startX, startY, \"right\");\r\n addTextAndLine(doc, startX + gapX, startY, data.AreaOfOriginID, 0);\r\n doc.text(\"Variety: \", startX + 100, startY, \"left\");\r\n\r\n startY += gap;\r\n // doc.setFontType(\"bold\");\r\n doc.text(\"Trucker/Carrier: \", startX, startY, \"right\");\r\n addTextAndLine(doc, startX + gapX, startY, data.CarrierID, 0);\r\n doc.text(`${data.Userfield03 ?? \"\"}`, startX + 100, startY, \"left\");\r\n\r\n startY += gap;\r\n // doc.setFontType(\"bold\");\r\n doc.text(\"Trailer Plate: \", startX, startY, \"right\");\r\n // doc.setFontType(\"normal\");\r\n if (\r\n (data.TrailerLicenseNumberOne && data.TrailerLicenseNumberOne !== \"\") ||\r\n (data.TrailerLicenseNumberTwo && data.TrailerLicenseNumberTwo !== \"\")\r\n ) {\r\n doc.text(\r\n `${data.TrailerLicenseNumberOne ?? \"\"} , ${data.TrailerLicenseNumberTwo ?? \"\"\r\n }`,\r\n startX + gapX,\r\n startY\r\n );\r\n }\r\n //doc.setFontType(\"bold\");\r\n doc.text(`Temp:`, startX + 100, startY);\r\n addLine(doc, startX + gapX, startY, 0);\r\n\r\n startY += gap;\r\n // doc.setFontType(\"bold\");\r\n doc.text(\"Date Recv.: \", startX, startY, \"right\");\r\n // doc.setFontType(\"normal\");\r\n doc.text(`${data.ScheduledStartDateTime ?? \"\"}`, startX + gapX, startY);\r\n // doc.setFontType(\"bold\");\r\n doc.text(`${data.UserField01 ?? \"\"}`, startX + 100, startY);\r\n\r\n addLine(doc, startX + gapX, startY, 0);\r\n\r\n startY += gap;\r\n // doc.setFontType(\"bold\");\r\n doc.text(\"Date Processed: \", startX, startY, \"right\");\r\n // doc.setFontType(\"normal\");\r\n doc.text(`${data.ScheduledEndDateTime ?? \"\"}`, startX + gapX, startY);\r\n // doc.setFontType(\"bold\");\r\n doc.text(`${data.UserField02 ?? \"\"}`, startX + 100, startY);\r\n\r\n addLine(doc, startX + gapX, startY, 0);\r\n\r\n doc.addImage(logo64, \"png\", 30, 20, 140, 60);\r\n\r\n let startXLeft = 175;\r\n // doc.setFontType(\"bold\");\r\n // doc.setFontType(\"normal\");\r\n startYLeft = addTextAndLine(\r\n doc,\r\n startXLeft,\r\n startYLeft,\r\n data.AccountName,\r\n gap\r\n );\r\n startYLeft = addTextAndLine(\r\n doc,\r\n startXLeft,\r\n startYLeft,\r\n data.AddressLine1,\r\n gap\r\n );\r\n startYLeft = addTextAndLine(\r\n doc,\r\n startXLeft,\r\n startYLeft,\r\n data.Addressline2,\r\n gap\r\n );\r\n startYLeft = addTextAndLine(\r\n doc,\r\n startXLeft,\r\n startYLeft,\r\n data.Addressline3,\r\n gap\r\n );\r\n\r\n return startY;\r\n}\r\n\r\nfunction addTextAndLine(doc, x, y, text, gap) {\r\n doc.text(`${text ?? \"\"}`, x, y, \"left\");\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.1);\r\n doc.line(x, y + 2, x + 165, y + 2);\r\n return y + gap;\r\n}\r\n\r\nfunction addLine(doc, x, y, gap) {\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.1);\r\n doc.line(x, y + 2, x + 165, y + 2);\r\n return y + gap;\r\n}\r\n\r\nfunction composeFooter(doc, pageWidth, pageHeight) {\r\n const pages = doc.internal.getNumberOfPages();\r\n\r\n doc.setFontSize(elementFontSize + 2);\r\n\r\n // let horizontalPos = pageWidth / 2; //Can be fixed number\r\n let verticalPos = pageHeight - 25; //Can be fixed number\r\n doc.setPage(1);\r\n doc.text(\r\n `Page 1 of ${pages} Print Date ${DateFormat(\r\n new Date(),\r\n \"mm/dd/yyyy hh:MM:ss TT\"\r\n )}`,\r\n pageWidth - 15,\r\n verticalPos,\r\n {\r\n align: \"right\",\r\n }\r\n );\r\n\r\n //-------------------------------------------------------\r\n verticalPos += gapLine * 2;\r\n doc.setDrawColor(50, 24, 168);\r\n doc.setLineWidth(1.0);\r\n doc.line(10, verticalPos, pageWidth - 10, verticalPos);\r\n}\r\n\r\nfunction composeLoadAnalysis(doc, startY, pageWidth) {\r\n const leftX0 = 10;\r\n startY += 7;\r\n doc.setTextColor(50, 24, 168);\r\n doc.setDrawColor(50, 24, 168);\r\n doc.setLineWidth(0.5);\r\n doc.line(leftX0, startY, pageWidth - 10, startY);\r\n doc.setFontSize(10);\r\n doc.text(`LOAD ANALYSIS`, 20, startY + 10);\r\n startY += 14;\r\n doc.line(leftX0, startY, pageWidth - 10, startY);\r\n return startY;\r\n}\r\n\r\nfunction composeGrossWeight(data, doc, startY, pageWidth) {\r\n const pageWidthOriginal = pageWidth;\r\n pageWidth = pageWidth / 2 + 20;\r\n const rightX = pageWidth;\r\n const leftX0 = 20;\r\n const leftX1 = 25;\r\n const leftX2 = 175;\r\n startY += gapElement;\r\n\r\n //-------------------------------------------------------\r\n // doc.setFontType(\"bold\");\r\n doc.setTextColor(leftX0, 24, 168);\r\n doc.setFontSize(elementFontSize);\r\n doc.text(`GROSS WEIGHT`, leftX0, startY);\r\n\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n doc.text(`${data.ScaleGross}`, pageWidth - 70, startY, \"right\");\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth - 70, startY, pageWidth - 140, startY);\r\n\r\n startY += gapElement;\r\n doc.text(`Less Tare Wght From Truck`, leftX1, startY);\r\n doc.text(`# of Bins:`, leftX2 - 70, startY);\r\n doc.text(`${0}`, leftX2 + 50 - 70, startY);\r\n doc.text(`${data.ScaleTare}`, rightX - 70, startY, \"right\");\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth - 70, startY, pageWidth - 165, startY);\r\n //-------------------------------------------------------\r\n startY += gapElement;\r\n // doc.setFontType(\"bold\");\r\n doc.setTextColor(leftX0, 24, 168);\r\n doc.setFontSize(elementFontSize);\r\n doc.text(`NET WEIGHT`, leftX0, startY);\r\n\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n doc.text(`${data.NetWeight2}`, pageWidth - 70, startY, \"right\");\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth - 70, startY, pageWidth - 140, startY);\r\n\r\n startY += gapElement;\r\n doc.text(`Less Precleaner Trash`, leftX1, startY);\r\n doc.text(\r\n `${data[\"Inbound Grade-Precleaner Trash\"] ?? \"\"}`,\r\n pageWidth - 70,\r\n startY,\r\n \"right\"\r\n );\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth - 70, startY, pageWidth - 140, startY);\r\n //-------------------------------------------------------\r\n startY += gapElement;\r\n // doc.setFontType(\"bold\");\r\n doc.setTextColor(leftX0, 24, 168);\r\n doc.setFontSize(elementFontSize);\r\n doc.text(`NET GREEN WEIGHT`, leftX0, startY);\r\n\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n doc.text(`${data.NetGreenWeight ?? \"\"}`, pageWidth - 70, startY, \"right\");\r\n doc.text(`${data[\"NetGreenWeight%\"] ?? \"\"}`, pageWidth, startY, \"right\");\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth, startY, pageWidth - 140, startY);\r\n\r\n startY += gapElement;\r\n doc.text(`Weight after Hulling`, leftX1, startY);\r\n doc.text(`${data.WeightAfterHull ?? \"\"}`, pageWidth - 70, startY, \"right\");\r\n doc.text(`${data[\"WeightAfterHull%\"] ?? \"\"}`, pageWidth, startY, \"right\");\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth, startY, pageWidth - 140, startY);\r\n //-------------------------------------------------------\r\n startY += gapElement;\r\n doc.text(`Weight after Drying to`, leftX1, startY);\r\n doc.text(\r\n `${data[\"Inbound Grade-Moisture Percent\"] ?? \"\"}`,\r\n leftX2 - 25,\r\n startY,\r\n \"right\"\r\n );\r\n doc.text(`Moisture`, leftX2 - 20, startY);\r\n doc.text(`${data.WeightAfterDry ?? \"\"}`, pageWidth - 70, startY, \"right\");\r\n doc.text(`${data[\"WeightAfterDry%\"] ?? \"\"}`, pageWidth, startY, \"right\");\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth, startY, pageWidth - 140, startY);\r\n doc.line(leftX2 - 55, startY, leftX2 - 25, startY);\r\n //-------------------------------------------------------\r\n\r\n startY += gapElement;\r\n doc.text(`Weight after Adjusting to`, leftX1, startY);\r\n doc.text(`${\"5.00%\"}`, leftX2 - 25, startY, \"right\");\r\n doc.text(`Moisture`, leftX2 - 20, startY);\r\n doc.text(`${data.WeightAfterAdjTo ?? \"\"}`, pageWidth - 70, startY, \"right\");\r\n doc.text(`${data[\"WeightAfterAdjTo%\"] ?? \"\"}`, pageWidth, startY, \"right\");\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth, startY, pageWidth - 140, startY);\r\n doc.line(leftX2 - 55, startY, leftX2 - 25, startY);\r\n //-------------------------------------------------------\r\n startY += gapElement;\r\n doc.text(`Less Undersized & F.M`, leftX1, startY);\r\n doc.text(\r\n `${data[\"UndersizedFMTotal\"] ?? \"\"}`,\r\n pageWidth - 70,\r\n startY,\r\n \"right\"\r\n );\r\n\r\n doc.text(\r\n `${data[\"Undersized and FM Percent\"] ?? \"\"}`,\r\n pageWidth,\r\n startY,\r\n \"right\"\r\n );\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth, startY, pageWidth - 140, startY);\r\n //-------------------------------------------------------\r\n startY += gapElement;\r\n // doc.setFontType(\"bold\");\r\n doc.setTextColor(leftX0, 24, 168);\r\n doc.setFontSize(elementFontSize);\r\n doc.text(`NET DRY WEIGHT`, leftX0, startY);\r\n\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n doc.text(`${data.NetDryWeight ?? \"\"}`, pageWidth - 70, startY, \"right\");\r\n doc.text(`${data[\"NetDryWeight%\"] ?? \"\"}`, pageWidth, startY, \"right\");\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth, startY, pageWidth - 140, startY);\r\n //-------------------------------------------------------\r\n startY += gapLine * 2;\r\n doc.setDrawColor(50, 24, 168);\r\n doc.setLineWidth(1.0);\r\n doc.line(10, startY, pageWidthOriginal - 10, startY);\r\n\r\n return startY;\r\n}\r\n\r\nfunction composeSplitInShell(data, doc, startY, pageWidth) {\r\n const pageWidthOriginal = pageWidth;\r\n pageWidth = pageWidth / 2 + 20;\r\n const leftX0 = 20;\r\n const leftX1 = 25;\r\n const leftX3 = 50;\r\n\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `SPLIT IN SHELL`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"SplitInshellTotal\",\r\n \"SplitInshellTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `UNSTAINED`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"UnstainedTotal\",\r\n \"UnstainedTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Insect Damage`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"UnstainedInsectTotal\",\r\n \"UnstainedInsectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Defects`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"UnstainedDefectTotal\",\r\n \"UnstainedDefectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel3(doc, `Edible Unstained`, leftX3, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"EdibleUnstainedTotal\",\r\n \"EdibleUnstainedTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `LIGHT STAINED`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"LightStainedTotal\",\r\n \"LightStainedTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Insect Damage`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"LightStainedInsectTotal\",\r\n \"LightStainedInsectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Defects`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"LightStainedDefectTotal\",\r\n \"LightStainedDefectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel3(doc, `Edible Light Stained`, leftX3, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"EdibleLightstainedTotal\",\r\n \"EdibleLightstainedTotal%\",\r\n \"\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `TOTAL EDIBLE SPLIT INSHELL`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"TotalEdiSplitTotal\",\r\n \"TotalEdiSplitTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n\r\n startY += gapElement;\r\n // doc.setFontType(\"bold\");\r\n doc.setTextColor(255, 0, 0);\r\n doc.setFontSize(elementFontSize);\r\n doc.text(`Reject lbs`, pageWidth - 190, startY, \"right\");\r\n doc.text(`Reject %`, pageWidth - 140, startY, \"right\");\r\n\r\n startY += gapElement;\r\n // doc.setFontType(\"bold\");\r\n doc.setFontSize(elementFontSize);\r\n doc.text(`Rejects From Split Inshel`, leftX0, startY);\r\n\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n doc.text(\r\n `${data[\"RejectFromSplitLB\"] ?? \"\"}`,\r\n pageWidth - 190,\r\n startY,\r\n \"right\"\r\n );\r\n doc.text(\r\n `${data[\"RejectFromSplit%\"] ?? \"\"}`,\r\n pageWidth - 140,\r\n startY,\r\n \"right\"\r\n );\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth - 220, startY, pageWidth - 140, startY);\r\n //-------------------------------------------------------\r\n\r\n startY += gapLine * 2;\r\n doc.setDrawColor(50, 24, 168);\r\n doc.setLineWidth(1.0);\r\n doc.line(10, startY, pageWidthOriginal - 10, startY);\r\n\r\n return startY;\r\n}\r\n\r\nfunction composeShellingStock(data, doc, startY, pageWidth) {\r\n const pageWidthOriginal = pageWidth;\r\n pageWidth = pageWidth / 2 + 20;\r\n const leftX0 = 20;\r\n const leftX1 = 25;\r\n const leftX3 = 50;\r\n\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `SHELLING STOCK (SPLIT)`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"ShellingStockTotal\",\r\n \"ShellingStockTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `ADHERING HULL`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"AdHullTotal\",\r\n \"AdHullTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Insect Damage`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"AdHullInsectTotal\",\r\n \"AdHullInsectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Defects`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"AdHullDefectTotal\",\r\n \"AdHullDefectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel3(doc, `Edible Kernels`, leftX3, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"AdHullEdibleKernTotal\",\r\n \"AdHullEdibleKernTotal%\",\r\n \"AdHullEdibleKernTotal\",\r\n `Shell`\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `DARK STAINED`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"DarkStainTotal\",\r\n \"DarkStainTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Insect Damage`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"DarkStainInsectTotal\",\r\n \"DarkStainInsectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Defects`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"DarkStainDefectTotal\",\r\n \"DarkStainDefectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel3(doc, `Edible Kernels`, leftX3, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"DarkStainEdibleKernTotal\",\r\n \"DarkStainEdibleKernTotal%\",\r\n \"DarkStainEdibleKernTotal\",\r\n `Shell`\r\n );\r\n\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `SHELL DAMAGE & OTHER`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"ShellDmgTotal\",\r\n \"ShellDmgTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Insect Damage`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"ShellDmgInsectTotal\",\r\n \"ShellDmgInsectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Defects`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"ShellDmgDefectTotal\",\r\n \"ShellDmgDefectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel3(doc, `Edible Kernels`, leftX3, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"ShellDmgEdibleKernTotal\",\r\n \"ShellDmgEdibleKernTotal%\",\r\n \"ShellDmgEdibleKernTotal\",\r\n `Shell`\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `UNDER 30/64`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"UnderTotal\",\r\n \"UnderTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Insect Damage`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"UnderInsectTotal\",\r\n \"UnderInsectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Defects`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"UnderDefectTotal\",\r\n \"UnderDefectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel3(doc, `Edible Kernels`, leftX3, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"UnderEdibleKernTotal\",\r\n \"UnderEdibleKernTotal%\",\r\n \"UnderEdibleKernTotal\",\r\n `Shell`\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `LOOSE SHELLS & KERNELS`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"LooseShellKernTotal\",\r\n \"LooseShellKernTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Shell`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"LooseShellTotal\",\r\n \"LooseShellTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Edible Loose Kernels`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"EdibleLooseKernTotal\",\r\n \"EdibleLooseKernTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(\r\n doc,\r\n `TOTAL EDIBLE KERNELS FROM SHELLING STOCK`,\r\n leftX0,\r\n startY\r\n );\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"TotalEdiKernTotal\",\r\n \"TotalEdiKernTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n\r\n startY += gapElement;\r\n // doc.setFontType(\"bold\");\r\n doc.setTextColor(255, 0, 0);\r\n doc.setFontSize(elementFontSize);\r\n doc.text(`Insect lbs`, pageWidth - 190, startY, \"right\");\r\n doc.text(`Insect %`, pageWidth - 140, startY, \"right\");\r\n\r\n startY += gapElement;\r\n // doc.setFontType(\"bold\");\r\n doc.setFontSize(elementFontSize);\r\n doc.text(`Insect from Open Shell`, leftX0, startY);\r\n\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n doc.text(\r\n `${data[\"InsectsFromOpenLB\"] ?? \"\"}`,\r\n pageWidth - 190,\r\n startY,\r\n \"right\"\r\n );\r\n doc.text(\r\n `${data[\"InsectsFromOpen%\"] ?? \"\"}`,\r\n pageWidth - 140,\r\n startY,\r\n \"right\"\r\n );\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth - 220, startY, pageWidth - 140, startY);\r\n //-------------------------------------------------------\r\n\r\n startY += gapLine * 2;\r\n doc.setDrawColor(50, 24, 168);\r\n doc.setLineWidth(1.0);\r\n doc.line(10, startY, pageWidthOriginal - 10, startY);\r\n\r\n return startY;\r\n}\r\n\r\nfunction composeClosedShell(data, doc, startY, pageWidth) {\r\n const pageWidthOriginal = pageWidth;\r\n pageWidth = pageWidth / 2 + 20;\r\n const leftX0 = 20;\r\n const leftX1 = 25;\r\n\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `CLOSED SHELL`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"ClosedShellTotal\",\r\n \"ClosedShellTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Insect Damage`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"ClosedInsectTotal\",\r\n \"ClosedInsectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Defects`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"ClosedDefectTotal\",\r\n \"ClosdDefectTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Blanks`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"ClosedBlankTotal\",\r\n \"ClosedBlankTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(\r\n doc,\r\n `Subtotal Edible Closed Inshel`,\r\n leftX1,\r\n startY\r\n );\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"SubEdiClosedInshelTotal\",\r\n \"SubEdiClosedInshelTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabelLevel2(doc, `Less Shell`, leftX1, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"ClosedLessShellTotal\",\r\n \"ClosedLessShellTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(\r\n doc,\r\n `NET DRY WEIGHT TOTAL EDIBLE KERNELS FROM CLOSE`,\r\n leftX0,\r\n startY\r\n );\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"NetDryEdiKernTotal\",\r\n \"NetDryEdiKernTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY += gapLine * 2;\r\n doc.setDrawColor(50, 24, 168);\r\n doc.setLineWidth(1.0);\r\n doc.line(10, startY, pageWidthOriginal - 10, startY);\r\n\r\n return startY;\r\n}\r\n\r\nfunction composeTotal(data, doc, startY, pageWidth) {\r\n pageWidth = pageWidth / 2 + 20;\r\n const leftX0 = 20;\r\n\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `TOTAL EDIBLE WEIGHT`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"TotalEdiWeightTotal\",\r\n \"TotalEdiWeightTotal%\"\r\n );\r\n //-------------------------------------------------------\r\n startY = printGroupLabel(doc, `TOTAL ACP ASSESSED WEIGHT`, leftX0, startY);\r\n startY = printFieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n startY,\r\n \"SizeAssessedWtTotal\",\r\n \"SizeAssessedWtTotal%\"\r\n );\r\n\r\n return startY;\r\n}\r\n\r\n//////////////////////RIGTH\r\n\r\nfunction print5FieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n pageWidthOriginal,\r\n startY,\r\n label,\r\n fieldName1,\r\n fieldName2,\r\n value3,\r\n fieldName4,\r\n fieldName5\r\n) {\r\n startY += gapElement;\r\n doc.text(label, pageWidth + 15, startY);\r\n\r\n doc.text(`${data[fieldName1] ?? \"\"}`, pageWidth + 75, startY, \"right\");\r\n doc.text(`${data[fieldName2] ?? \"\"}`, pageWidth + 115, startY, \"right\");\r\n doc.text(`${value3}`, pageWidth + 155, startY, \"right\");\r\n doc.text(`${data[fieldName4] ?? \"\"}`, pageWidth + 195, startY, \"right\");\r\n doc.text(`${data[fieldName5] ?? \"\"}`, pageWidth + 235, startY, \"right\");\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth + 45, startY, pageWidthOriginal - 15, startY);\r\n\r\n return startY;\r\n}\r\n\r\nfunction composeSizeTest(data, doc, startY, pageWidth) {\r\n const pageWidthOriginal = pageWidth;\r\n pageWidth = pageWidth / 2 + 35;\r\n //-------------------------------------------------------\r\n startY += gapElement;\r\n // doc.setFontType(\"bold\");\r\n doc.setTextColor(0, 24, 168);\r\n doc.setFontSize(elementFontSize);\r\n doc.text(`SIZE TEST`, pageWidth, startY);\r\n\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n doc.text(`Pounds`, pageWidth + 50, startY);\r\n doc.text(`Percent`, pageWidth + 90, startY);\r\n doc.text(`Size`, pageWidth + 130, startY);\r\n doc.text(`Pound`, pageWidth + 170, startY);\r\n doc.text(`Percent`, pageWidth + 210, startY);\r\n //-------------------------------------------------------\r\n startY = print5FieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n pageWidthOriginal,\r\n startY,\r\n `Inshell`,\r\n \"TotalEdiSplitTotal\",\r\n \"TotalEdiSplitTotal%\",\r\n \"16/18\",\r\n \"Size16/18Pounds\",\r\n \"Inbound Grade-Inshell 16/18%\"\r\n );\r\n startY = print5FieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n pageWidthOriginal,\r\n startY,\r\n `Kernels`,\r\n \"SizeKernels\",\r\n \"SizeKernels%\",\r\n \"18/20\",\r\n \"Size18/20Pounds\",\r\n \"Inbound Grade-Inshell 18/20%\"\r\n );\r\n startY = print5FieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n pageWidthOriginal,\r\n startY,\r\n `Payable`,\r\n \"TotalEdiWeightTotal\",\r\n \"TotalEdiWeightTotal%\",\r\n \"21/25\",\r\n \"Size21/25Pounds\",\r\n \"Inbound Grade-Inshell 21/25%\"\r\n );\r\n startY = print5FieldsWithLine(\r\n data,\r\n doc,\r\n pageWidth,\r\n pageWidthOriginal,\r\n startY,\r\n `Assessed W`,\r\n \"SizeAssessedWtTotal\",\r\n \"SizeAssessedWtTotal%\",\r\n \"26/30\",\r\n \"Size26/30Pounds\",\r\n \"Inbound Grade-Inshell 26/30%\"\r\n );\r\n //-------------------------------------------------------\r\n startY += gapLine * 2;\r\n doc.setDrawColor(50, 24, 168);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth - 5, startY, pageWidthOriginal - 10, startY);\r\n //-------------------------------------------------------\r\n //Below size test\r\n startY += gapElement + gapLine * 3;\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n doc.text(`${\"20.00\"}`, pageWidth + 95, startY, \"right\");\r\n doc.text(`Lbs`, pageWidth + 105, startY, \"right\");\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth + 95, startY, pageWidth + 65, startY);\r\n //-------------------------------------------------------\r\n startY += gapElement;\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n printDecimalField(doc, data, \"WeightAfterHullSample\", pageWidth + 95, startY);\r\n doc.text(`Lbs`, pageWidth + 105, startY, \"right\");\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth + 95, startY, pageWidth + 65, startY);\r\n\r\n startY -= gapLine;\r\n doc.text(`Percent`, pageWidth + 125, startY, \"center\");\r\n doc.text(\r\n `${data[\"WeightAfterDrySample\"] ?? \"\"}`,\r\n pageWidthOriginal - 55,\r\n startY,\r\n \"right\"\r\n );\r\n doc.text(\r\n `${data[\"NegMoisture%\"] ?? \"\"}`,\r\n pageWidthOriginal - 10,\r\n startY,\r\n \"right\"\r\n );\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidthOriginal - 110, startY, pageWidthOriginal - 10, startY);\r\n //-------------------------------------------------------\r\n startY += gapElement;\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n\r\n doc.text(`(Grams)`, pageWidth + 30, startY, \"center\");\r\n printDecimalField(doc, data, \"WeightAfterDrySample\", pageWidth + 95, startY);\r\n doc.text(`Lbs`, pageWidth + 105, startY, \"right\");\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth + 95, startY, pageWidth + 65, startY);\r\n\r\n startY -= gapLine;\r\n doc.text(`Dry Weight`, pageWidth + 125, startY, \"center\");\r\n doc.text(\r\n `${data[\"MoistureDiffSample\"] ?? \"\"}`,\r\n pageWidthOriginal - 55,\r\n startY,\r\n \"right\"\r\n );\r\n doc.text(`5.00%`, pageWidthOriginal - 10, startY, \"right\");\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidthOriginal - 110, startY, pageWidthOriginal - 10, startY);\r\n\r\n //-------------------------------------------------------\r\n startY += gapElement;\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n printDecimalField(\r\n doc,\r\n data,\r\n \"Inbound Grade-Sample Size\",\r\n pageWidth + 45,\r\n startY\r\n );\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth, startY, pageWidth + 45, startY);\r\n\r\n startY -= gapLine;\r\n doc.text(`100%`, pageWidthOriginal - 110, startY, \"right\");\r\n\r\n doc.text(\r\n `${data[\"WeightAfterAdjSample\"] ?? \"\"}`,\r\n pageWidthOriginal - 55,\r\n startY,\r\n \"right\"\r\n );\r\n doc.text(\r\n `${data[\"WeightAfterAdjSample%\"] ?? \"\"}`,\r\n pageWidthOriginal - 10,\r\n startY,\r\n \"right\"\r\n );\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidthOriginal - 110, startY, pageWidthOriginal - 10, startY);\r\n //-------------------------------------------------------\r\n startY += gapElement;\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n printDecimalField(\r\n doc,\r\n data,\r\n \"Inbound Grade-Undersized and FM\",\r\n pageWidth + 45,\r\n startY\r\n );\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth, startY, pageWidth + 45, startY);\r\n\r\n startY -= gapLine;\r\n doc.text(\r\n `${data[\"UndersizedFM%\"] ?? \"\"}`,\r\n pageWidthOriginal - 110,\r\n startY,\r\n \"right\"\r\n );\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidthOriginal - 110, startY, pageWidthOriginal - 150, startY);\r\n //-------------------------------------------------------\r\n startY += gapElement;\r\n // doc.setFontType(\"normal\");\r\n doc.setTextColor(0, 0, 0);\r\n printDecimalField(doc, data, \"NetDryWeightSample\", pageWidth + 45, startY);\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidth, startY, pageWidth + 45, startY);\r\n\r\n startY -= gapLine;\r\n doc.text(\r\n `${data[\"NetDryWeightSample%\"] ?? \"\"}`,\r\n pageWidthOriginal - 110,\r\n startY,\r\n \"right\"\r\n );\r\n\r\n doc.text(\r\n `${data[\"WeightAfterAdjSample%\"] ?? \"\"}`,\r\n pageWidthOriginal - 15,\r\n startY,\r\n \"right\"\r\n );\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidthOriginal - 110, startY, pageWidthOriginal - 150, startY);\r\n doc.line(pageWidthOriginal - 50, startY, pageWidthOriginal - 10, startY);\r\n //-------------------------------------------------------\r\n return startY;\r\n}\r\n\r\nfunction composeSplitInShellRight(data, doc, startY, pageWidth) {\r\n const pageWidthOriginal = pageWidth;\r\n pageWidth = pageWidth / 2 + 35;\r\n //-------------------------------------------------------\r\n let arrayFieldName1 = [\r\n \"Inbound Grade-Split Inshell\",\r\n \"Inbound Grade-Unstained\",\r\n \"Inbound Grade-Unstained Insect Dam\",\r\n \"Inbound Grade-Unstained Defects\",\r\n \"EdibleUnstainedSample\",\r\n \"Inbound Grade-LightStained\",\r\n \"Inbound Grade-Light Stained Insect\",\r\n \"Inbound Grade-Light Stained Defect\",\r\n \"EdibleLightStainedSample\",\r\n \"TotalEdiSplitSample\",\r\n ];\r\n let arrayFieldName2 = [\r\n \"SplitInshellSample%\",\r\n \"UnstainedSample%\",\r\n \"UnstainedInsectSample%\",\r\n \"UnstainedDefectSample%\",\r\n \"EdibleUnstainedSample%\",\r\n \"LightStainedSample%\",\r\n \"LightStainedInsectSample%\",\r\n \"LightStainedDefectSample%\",\r\n \"EdibleLightStainedSample%\",\r\n \"TotalEdiSplitSample%\",\r\n ];\r\n\r\n startY += gapLine * 2;\r\n\r\n for (let i = 0; i < arrayFieldName1.length; i++) {\r\n startY = printFieldsOnRight(\r\n data,\r\n doc,\r\n pageWidth,\r\n pageWidthOriginal,\r\n startY,\r\n arrayFieldName1[i],\r\n arrayFieldName2[i],\r\n undefined,\r\n arrayFieldName1[i] === \"EdibleUnstainedSample\" ||\r\n arrayFieldName1[i] === \"EdibleLightStainedSample\" ||\r\n arrayFieldName1[i] === \"TotalEdiSplitSample\"\r\n );\r\n }\r\n //-------------------------------------------------------\r\n return startY;\r\n}\r\n\r\nfunction printFieldsOnRight(\r\n data,\r\n doc,\r\n pageWidth,\r\n pageWidthOriginal,\r\n startY,\r\n fieldName1,\r\n fieldName2,\r\n fieldName3,\r\n isBold = false\r\n) {\r\n startY += gapElement;\r\n if (isBold === true) {\r\n // doc.setFontType(\"bold\");\r\n } else {\r\n // doc.setFontType(\"normal\");\r\n }\r\n doc.setTextColor(0, 0, 0);\r\n\r\n printDecimalField(doc, data, fieldName1, pageWidth + 45, startY);\r\n\r\n if (fieldName3) {\r\n printDecimalField(doc, data, fieldName3, pageWidth + 95, startY);\r\n }\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n if (fieldName3) {\r\n doc.line(pageWidth, startY, pageWidth + 95, startY);\r\n } else {\r\n doc.line(pageWidth, startY, pageWidth + 45, startY);\r\n }\r\n\r\n startY -= gapLine;\r\n doc.text(\r\n `${data[fieldName2] ?? \"\"}`,\r\n pageWidthOriginal - 110,\r\n startY,\r\n \"right\"\r\n );\r\n\r\n startY += gapLine;\r\n doc.setDrawColor(0, 0, 0);\r\n doc.setLineWidth(0.5);\r\n doc.line(pageWidthOriginal - 110, startY, pageWidthOriginal - 150, startY);\r\n\r\n return startY;\r\n}\r\n\r\nfunction composeShellingStockRight(data, doc, startY, pageWidth) {\r\n const pageWidthOriginal = pageWidth;\r\n pageWidth = pageWidth / 2 + 35;\r\n //-------------------------------------------------------\r\n let arrayFieldName1 = [\r\n \"Inbound Grade-Shelling Stock Split\",\r\n \"Inbound Grade-AdheringHull\",\r\n \"Inbound Grade-Ad Hull Insect\",\r\n \"Inbound Grade-Ad Hull Defects\",\r\n \"AdHullEdibleKern\",\r\n \"Inbound Grade-DarkStained\",\r\n \"Inbound Grade-Dark Stain Insect\",\r\n \"Inbound Grade-Dark Stain Defects\",\r\n \"DarkStainEdibleKern\",\r\n \"Inbound Grade-ShellDamage\",\r\n \"Inbound Grade-Shell Damage Insect\",\r\n \"Inbound Grade-Shell Damage Defects\",\r\n \"ShellDmgEdibleKern\",\r\n \"Inbound Grade-Undersize 30/64\",\r\n \"Inbound Grade-Undersize Insect\",\r\n \"Inbound Grade-Undersize Defects\",\r\n \"UnderEdibleKern\",\r\n \"Inbound Grade-Loose Shells & Kern\",\r\n \"Inbound Grade-Loose Shells\",\r\n \"EdibleLooseKern\",\r\n \"TotalEdiKernSample\",\r\n ];\r\n let arrayFieldName2 = [\r\n \"ShellingStockSample%\",\r\n \"AdHullSample%\",\r\n \"AdHullInsectSample%\",\r\n \"AdHullDefectSample%\",\r\n \"AdHullEdibleKern%\",\r\n \"DarkStainSample%\",\r\n \"DarkStainInsectSample%\",\r\n \"DarkStainDefectSample%\",\r\n \"DarkStainEdibleKern%\",\r\n \"ShellDmgSample%\",\r\n \"ShellDmgInsectSample%\",\r\n \"ShellDmgDefectSample%\",\r\n \"ShellDmgEdibleKern%\",\r\n \"UnderSample%\",\r\n \"UnderInsectSample%\",\r\n \"UnderDefectSample%\",\r\n \"UnderEdibleKern%\",\r\n \"LooseShellKernSample%\",\r\n \"LooseShellSample%\",\r\n \"EdibleLooseKern%\",\r\n \"TotalEdiKernSample%\",\r\n ];\r\n\r\n startY += 26;\r\n\r\n for (let i = 0; i < arrayFieldName1.length; i++) {\r\n startY = printFieldsOnRight(\r\n data,\r\n doc,\r\n pageWidth,\r\n pageWidthOriginal,\r\n startY,\r\n arrayFieldName1[i],\r\n arrayFieldName2[i],\r\n arrayFieldName1[i] === \"AdHullEdibleKern\"\r\n ? \"AdHullEdibleKern\"\r\n : arrayFieldName1[i] === \"DarkStainEdibleKern\"\r\n ? \"DarkStainEdibleKern\"\r\n : arrayFieldName1[i] === \"ShellDmgEdibleKern\"\r\n ? \"ShellDmgEdibleKern\"\r\n : arrayFieldName1[i] === \"UnderEdibleKern\"\r\n ? \"UnderEdibleKern\"\r\n : arrayFieldName1[i] === \"EdibleLooseKern\"\r\n ? \"EdibleLooseKern\"\r\n : undefined\r\n );\r\n }\r\n //-------------------------------------------------------\r\n return startY;\r\n}\r\n\r\nfunction composeClosedShellRight(data, doc, startY, pageWidth) {\r\n const pageWidthOriginal = pageWidth;\r\n pageWidth = pageWidth / 2 + 35;\r\n //-------------------------------------------------------\r\n let arrayFieldName1 = [\r\n \"Inbound Grade-Closed Shell\",\r\n \"Inbound Grade-Closed Shell Insect\",\r\n \"Inbound Grade-Closed Shell Defects\",\r\n \"Inbound Grade-Closed Shell Blanks\",\r\n \"SubEdiInshelSample\",\r\n \"Inbound Grade-Closed Shell Shell\",\r\n \"NetDryEdiKernSample\",\r\n ];\r\n let arrayFieldName2 = [\r\n \"ClosedShellSample%\",\r\n \"ClosedInsectSample%\",\r\n \"ClosedDefectSample%\",\r\n \"ClosedBlankSample%\",\r\n \"SubEdiInshelSample%\",\r\n \"ClosedLessShellSample%\",\r\n \"NetDryEdiKernSample%\",\r\n ];\r\n\r\n startY += 26;\r\n\r\n for (let i = 0; i < arrayFieldName1.length; i++) {\r\n startY = printFieldsOnRight(\r\n data,\r\n doc,\r\n pageWidth,\r\n pageWidthOriginal,\r\n startY,\r\n arrayFieldName1[i],\r\n arrayFieldName2[i]\r\n );\r\n }\r\n //-------------------------------------------------------\r\n return startY;\r\n}\r\n\r\nfunction composeTotalRight(data, doc, startY, pageWidth) {\r\n const pageWidthOriginal = pageWidth;\r\n pageWidth = pageWidth / 2 + 35;\r\n //-------------------------------------------------------\r\n let arrayFieldName1 = [\"TotalEdiWeightSample\", \"TotalACPWgtSample\"];\r\n let arrayFieldName2 = [\"TotalEdiWeightSample%\", \"TotalACPWgtSample%\"];\r\n\r\n startY += gapLine * 2;\r\n\r\n for (let i = 0; i < arrayFieldName1.length; i++) {\r\n startY = printFieldsOnRight(\r\n data,\r\n doc,\r\n pageWidth,\r\n pageWidthOriginal,\r\n startY,\r\n arrayFieldName1[i],\r\n arrayFieldName2[i]\r\n );\r\n }\r\n //-------------------------------------------------------\r\n return startY;\r\n}\r\n\r\nfunction printDecimalField(doc, data, fieldName, x, y, align = \"right\") {\r\n const text = CommonUtilities.numberWithCommas(\r\n (data[fieldName] == null ||\r\n data[fieldName] === undefined ||\r\n data[fieldName] === \"\" ||\r\n isNaN(data[fieldName])\r\n ? 0\r\n : data[fieldName]\r\n ).toFixed(2)\r\n );\r\n doc.text(text, x, y, align);\r\n}\r\n","import React from \"react\";\r\nimport ListComponent from \"../Base/ListComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport { handleExportPdf } from \"../ExportPdf/MeridianGrowersRtt\";\r\nimport Moment from \"moment\";\r\nimport DataTable from \"react-data-table-component\";\r\nimport { DateTimeFormat } from \"../../global\";\r\nimport Button from \"react-bootstrap/Button\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport * as XLSX from \"xlsx\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\nimport MultiSelectComponent from \"../Base/MultiSelectComponent\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nlet loggedUser = null;\r\nconst fileType =\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\nconst fileExtension = \".xlsx\";\r\n\r\nclass App extends ListComponent {\r\n constructor(props) {\r\n super(props);\r\n loggedUser = getLoggedUser();\r\n this.state = {\r\n urlapi: ``,\r\n title: \"Meridian Growers RTT\",\r\n pageTitle: \"Meridian Growers RTT\",\r\n pluraltitle: \"Meridian Growers RTT\",\r\n searchFormBasic: true,\r\n // hidePanelAction: true,\r\n // paginationDisabled: true,\r\n companyId: ``,\r\n companyName: ``,\r\n\r\n //paging\r\n loading: false,\r\n totalRows: 0,\r\n currentPage: 1,\r\n perPage: 20,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n await this.doSomthingBeforeGetItems();\r\n this.getItems(this.state.currentPage, this.state.perPage);\r\n }\r\n\r\n //Region: Get data filter\r\n doSomthingBeforeGetItems = async () => {\r\n await this.getCompanyItems();\r\n };\r\n\r\n async getCompanyItems() {\r\n try {\r\n let urlApi =\r\n GlobalConfig.REACT_APP_API_CONFIG_URL +\r\n \"queryclients/\" +\r\n process.env.REACT_APP_ATTRIBUTE_REFLECT_CUSTOMER;\r\n if (loggedUser && loggedUser.role === \"Clients\") {\r\n urlApi += `/${loggedUser.companyId}`;\r\n }\r\n const response = await HttpAxios.get(urlApi);\r\n const resultObject = response.data;\r\n if (resultObject && resultObject.result === \"OK\" && resultObject.data) {\r\n const parsedItems = [];\r\n resultObject.data.map((item) => {\r\n parsedItems.push({\r\n value: item._id,\r\n label: item.name,\r\n _id: item._id,\r\n name: item.name,\r\n });\r\n });\r\n this.setState({\r\n companies: parsedItems,\r\n });\r\n }\r\n } catch (err) {\r\n console.log(err.message);\r\n }\r\n }\r\n\r\n multiSelectCompanyHandleChange(selected, element) {\r\n const key = element.name;\r\n const keyValue = `${element.name}Value`;\r\n let valueOptions = selected ? selected.value : ``;\r\n let selectedText = ``;\r\n\r\n if (selected && Array.isArray(selected)) {\r\n const options = [...selected];\r\n const hasSelectAll = options.some((item) => {\r\n return (\r\n item.value === MultiSelectComponent.defaultProps.allOption.value &&\r\n item.label === MultiSelectComponent.defaultProps.allOption.label\r\n );\r\n });\r\n if (hasSelectAll) {\r\n options.shift();\r\n }\r\n valueOptions = options.map((item) => item.value).join();\r\n valueOptions = valueOptions ? valueOptions : \"\";\r\n selectedText = options.map((item) => item.label).join(`##`);\r\n }\r\n this.setState((state) => {\r\n return {\r\n [keyValue]: selected,\r\n [key]: valueOptions,\r\n companyName: selectedText,\r\n };\r\n });\r\n }\r\n\r\n getItems = async (page, size = this.state.perPage) => {\r\n let isValidSearch = true;\r\n let selectedAccountId =\r\n this.state.companyId === undefined ||\r\n this.state.companyId === null ||\r\n this.state.companyId === ``\r\n ? `all`\r\n : this.state.companyId;\r\n let selectedAccountName =\r\n this.state.companyName === undefined ||\r\n this.state.companyName === null ||\r\n this.state.companyName === ``\r\n ? `all`\r\n : this.state.companyName;\r\n if (loggedUser && loggedUser.role === \"Clients\") {\r\n if (selectedAccountId === `all`) {\r\n selectedAccountId =\r\n this.state.companies && this.state.companies.length > 0\r\n ? this.state.companies\r\n .map((x) => {\r\n return x._id;\r\n })\r\n .join(`,`)\r\n : ``;\r\n }\r\n if (selectedAccountName === `all`) {\r\n selectedAccountName =\r\n this.state.companies && this.state.companies.length > 0\r\n ? this.state.companies\r\n .map((x) => {\r\n return x.name;\r\n })\r\n .join(`##`)\r\n : ``;\r\n }\r\n //Do not allow search all if login as client\r\n if (selectedAccountId === `` || selectedAccountName === ``) {\r\n isValidSearch = false;\r\n }\r\n }\r\n let items = [];\r\n let totalRows = 0;\r\n if (isValidSearch === true) {\r\n let urlApi = `${GlobalConfig.REACT_APP_API_REPORT_MERIDIAN_GROWERS_RTT}${page}/${size}`;\r\n const params = {\r\n filterAccountId: selectedAccountId,\r\n filterAccountName: selectedAccountName,\r\n };\r\n const response = await HttpAxios.post(urlApi, params);\r\n items = response.data.data;\r\n totalRows = response.data.total;\r\n }\r\n this.setState(\r\n {\r\n items: items,\r\n originalItems: items,\r\n },\r\n () => {\r\n this.doSomthingAfterGetItems(totalRows);\r\n }\r\n );\r\n };\r\n\r\n handlePerRowsChange = async (newPerPage, page) => {\r\n this.getItems(page, newPerPage);\r\n this.setState({ perPage: newPerPage });\r\n };\r\n\r\n handlePageChange = (page) => {\r\n this.getItems(page);\r\n this.setState({ currentPage: page });\r\n };\r\n\r\n doSomthingAfterGetItems = (totalRows) => {\r\n this.setState({ totalRows: totalRows, loading: false });\r\n };\r\n\r\n defaultTable = () => {\r\n const columns = this.setColumns();\r\n const customStyles = this.rederTableStyle();\r\n return (\r\n }\r\n highlightOnHover={this.state.tableHighlightOnHover}\r\n customStyles={customStyles}\r\n progressPending={this.state.loading}\r\n noDataComponent={this.noDataComponent()}\r\n />\r\n );\r\n };\r\n\r\n defaultItemsLength = () => {\r\n if (this.state === undefined || this.state.items === undefined) {\r\n return 0;\r\n }\r\n return this.state.totalRows;\r\n };\r\n\r\n fitToColumn(data) {\r\n let widths = this.initialWidthColumns(data[0]);\r\n data.map((item) => {\r\n const arrObject = Object.values(item);\r\n arrObject.map((obj, i) => {\r\n const len = String(obj).length;\r\n widths[i] = len > widths[i] ? len : widths[i];\r\n });\r\n });\r\n\r\n return widths.map((width) => {\r\n return {\r\n wch: width,\r\n };\r\n });\r\n }\r\n\r\n initialWidthColumns(data) {\r\n const arrObject = Object.keys(data);\r\n return arrObject.map((item) => {\r\n return String(item).length;\r\n });\r\n }\r\n\r\n renderSearchArea() {\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {this.extendButtons()}\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n exportToCSV = async () => {\r\n let isValidSearch = true;\r\n let selectedAccountId =\r\n this.state.companyId === undefined ||\r\n this.state.companyId === null ||\r\n this.state.companyId === ``\r\n ? `all`\r\n : this.state.companyId;\r\n let selectedAccountName =\r\n this.state.companyName === undefined ||\r\n this.state.companyName === null ||\r\n this.state.companyName === ``\r\n ? `all`\r\n : this.state.companyName;\r\n if (loggedUser && loggedUser.role === \"Clients\") {\r\n if (selectedAccountId === `all`) {\r\n selectedAccountId =\r\n this.state.companies && this.state.companies.length > 0\r\n ? this.state.companies\r\n .map((x) => {\r\n return x._id;\r\n })\r\n .join(`,`)\r\n : ``;\r\n }\r\n if (selectedAccountName === `all`) {\r\n selectedAccountName =\r\n this.state.companies && this.state.companies.length > 0\r\n ? this.state.companies\r\n .map((x) => {\r\n return x.name;\r\n })\r\n .join(`##`)\r\n : ``;\r\n }\r\n //Do not allow search all if login as client\r\n if (selectedAccountId === `` || selectedAccountName === ``) {\r\n isValidSearch = false;\r\n }\r\n }\r\n let items = [];\r\n if (isValidSearch === true) {\r\n let urlApi = `${GlobalConfig.REACT_APP_API_REPORT_MERIDIAN_GROWERS_RTT\r\n }${-1}/${0}`;\r\n const params = {\r\n filterAccountId: selectedAccountId,\r\n filterAccountName: selectedAccountName,\r\n };\r\n const response = await HttpAxios.post(urlApi, params);\r\n items = response.data.data;\r\n }\r\n if (items && items.length > 0) {\r\n const parsedItems = items;\r\n const fileName = `Meridian-Growers-${Moment(new Date()).format(\r\n DateTimeFormat.format3\r\n )}`;\r\n const ws = XLSX.utils.json_to_sheet(parsedItems);\r\n ws[\"!cols\"] = this.fitToColumn(parsedItems);\r\n const wb = { Sheets: { data: ws }, SheetNames: [\"data\"] };\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const data = new Blob([excelBuffer], { type: fileType });\r\n FileSaver.saveAs(data, fileName + fileExtension);\r\n } else {\r\n window.showAlert(\"Infor\", \"No data export!\");\r\n }\r\n };\r\n\r\n extendButtons = () => {\r\n return (\r\n <>\r\n this.getItems(1)}\r\n className=\"btn btn-primary\"\r\n >\r\n Search\r\n \r\n this.exportToCSV()}\r\n className=\"btn btn-warning\"\r\n >\r\n Export\r\n \r\n \r\n );\r\n };\r\n\r\n setColumns = () => {\r\n return [\r\n {\r\n name: \"Status\",\r\n selector: \"Status\",\r\n sortable: false,\r\n center: true,\r\n },\r\n {\r\n name: \"Reference ID\",\r\n selector: \"ReferenceID\",\r\n sortable: false,\r\n center: true,\r\n },\r\n {\r\n name: \"Account ID\",\r\n selector: \"AccountID\",\r\n sortable: false,\r\n center: true,\r\n },\r\n {\r\n name: \"Account Name\",\r\n selector: \"AccountName\",\r\n sortable: false,\r\n left: true,\r\n },\r\n {\r\n name: \"Scheduled Start\",\r\n selector: \"ScheduledStartDateTime\",\r\n sortable: false,\r\n center: true,\r\n },\r\n {\r\n name: \"Scheduled End\",\r\n selector: \"ScheduledEndDateTime\",\r\n sortable: false,\r\n center: true,\r\n },\r\n {\r\n name: \"Lot Code\",\r\n selector: \"LotCode\",\r\n sortable: false,\r\n center: true,\r\n },\r\n {\r\n name: \"Product ID\",\r\n selector: \"ProductID\",\r\n sortable: false,\r\n center: true,\r\n },\r\n {\r\n name: \"Product Name\",\r\n selector: \"ProductName01\",\r\n sortable: false,\r\n left: true,\r\n },\r\n {\r\n name: \"\",\r\n selector: \"\",\r\n sortable: false,\r\n center: true,\r\n cell: (row) => {\r\n return (\r\n handleExportPdf(row, \"export\")}\r\n title=\"Export PDF\"\r\n >\r\n Export\r\n \r\n );\r\n },\r\n },\r\n ];\r\n };\r\n}\r\nexport default App;\r\n","import jsPDF from \"jspdf\";\r\nimport \"jspdf-autotable\";\r\nimport logo64 from \"./MeridianLogo\";\r\nimport CommonUtilities from \"../Utilities/Common\";\r\nvar _ = require(\"lodash\");\r\nvar DateFormat = require(\"dateformat\");\r\n\r\nexport const handleExportPdf = async (\r\n cropYear,\r\n filterStartDate,\r\n filterEndDate,\r\n arrGrowers,\r\n data,\r\n action\r\n) => {\r\n window.showAlert(\"Info\", \"Exporting...\", \"info\");\r\n try {\r\n composePdfFile(\r\n cropYear,\r\n filterStartDate,\r\n filterEndDate,\r\n arrGrowers,\r\n data,\r\n action === \"print\",\r\n action === \"preview\"\r\n );\r\n } catch (err) {\r\n window.showAlert(\"Error\", err.message, \"error\");\r\n }\r\n};\r\n\r\nexport const composePdfFile = (\r\n cropYear,\r\n filterStartDate,\r\n filterEndDate,\r\n arrGrowers,\r\n data,\r\n isPrint,\r\n isPreview\r\n) => {\r\n if (data) {\r\n const unit = \"pt\";\r\n const size = \"A4\"; // Use A1, A2, A3 or A4\r\n const orientation = \"landscape\"; // portrait or landscape\r\n const doc = new jsPDF(orientation, unit, size);\r\n\r\n const fileName = `meridian-grower-summary.pdf`;\r\n const tableFontSize = 7;\r\n const pageWidth = doc.internal.pageSize.width;\r\n let arrPageInfo = [];\r\n let arrAddedHeader = [];\r\n\r\n let firsStartY = -1;\r\n let startY = 0;\r\n //Totals whole growers\r\n let stainedTotal = 0;\r\n let inshTotal = 0;\r\n let edibleKernels = 0;\r\n let acpTotals = 0;\r\n\r\n for (let i = 0; i < arrGrowers.length; i++) {\r\n let pageNumber = -1;\r\n if (i === 0) {\r\n pageNumber = doc.internal.getCurrentPageInfo().pageNumber;\r\n }\r\n const growerInfo = arrGrowers[i];\r\n if (i > 0) {\r\n doc.addPage();\r\n pageNumber = doc.internal.getCurrentPageInfo().pageNumber;\r\n }\r\n const dataByGrower = data.filter((x) => {\r\n return x.AccountID === growerInfo.AccountID;\r\n });\r\n\r\n arrAddedHeader.push(doc.internal.getCurrentPageInfo().pageNumber);\r\n startY = composeHeader(doc, filterStartDate, filterEndDate, cropYear);\r\n startY = composeGrowerInfo(doc, startY, growerInfo);\r\n startY = startY + 20;\r\n if (firsStartY === -1) {\r\n firsStartY = startY;\r\n }\r\n\r\n let itemsByGrower = [];\r\n const groups = _(dataByGrower)\r\n .groupBy(\"AreaOfOriginID\")\r\n .map((children, AreaOfOriginID) => {\r\n const items = children.map((x) => x);\r\n return {\r\n AreaOfOriginID,\r\n items,\r\n };\r\n })\r\n .value();\r\n\r\n //Loop each field (AreaOfOriginID)\r\n groups.map((x) => {\r\n addText(\r\n doc,\r\n 5,\r\n startY,\r\n `Field: ${x.AreaOfOriginID ? x.AreaOfOriginID : ``}`,\r\n 0\r\n );\r\n startY = startY + 10;\r\n itemsByGrower = itemsByGrower.concat(x.items);\r\n const items = [...x.items];\r\n const rowTotalByField = addRowTotal(items, x.AreaOfOriginID);\r\n const rowLastByField = addRowLast(items);\r\n items.push(rowTotalByField);\r\n items.push(rowLastByField);\r\n composeTable(items, doc, tableFontSize, startY, firsStartY, false);\r\n startY = doc.lastAutoTable.finalY + 20;\r\n\r\n stainedTotal +=\r\n _.sumBy(items, (k) => {\r\n return parseFloat(k[\"EdibleUnstainedTotal\"]);\r\n }) +\r\n _.sumBy(items, (k) => {\r\n return parseFloat(k[\"EdibleLightstainedTotal\"]);\r\n });\r\n inshTotal +=\r\n _.sumBy(items, (k) => {\r\n return parseFloat(k[\"InshellShellStk\"]);\r\n }) +\r\n _.sumBy(items, (k) => {\r\n return parseFloat(k[\"SubEdiClosedInshelTotal\"]);\r\n });\r\n edibleKernels += _.sumBy(items, (k) => {\r\n return parseFloat(k[\"SizeKernels\"]);\r\n });\r\n acpTotals += _.sumBy(items, (k) => {\r\n return parseFloat(k[\"SizeAssessedWtTotal\"]);\r\n });\r\n });\r\n\r\n console.log(JSON.stringify(itemsByGrower));\r\n const rowsTotalByGrower = [];\r\n const rowTotalByGrower = addRowTotal(\r\n itemsByGrower,\r\n growerInfo.AccountName ?? ``\r\n );\r\n const rowLastByGrower = addRowLast(itemsByGrower);\r\n rowsTotalByGrower.push(rowTotalByGrower);\r\n rowsTotalByGrower.push(rowLastByGrower);\r\n composeTable(\r\n rowsTotalByGrower,\r\n doc,\r\n tableFontSize,\r\n startY,\r\n firsStartY,\r\n true\r\n );\r\n\r\n if (pageNumber !== -1) {\r\n arrPageInfo.push({ pageNumber: pageNumber, grower: growerInfo });\r\n }\r\n }\r\n\r\n addRowFinal(\r\n doc,\r\n startY,\r\n pageWidth,\r\n stainedTotal.toFixed(0),\r\n inshTotal.toFixed(0),\r\n edibleKernels.toFixed(0),\r\n acpTotals.toFixed(0)\r\n );\r\n\r\n composeFooter(\r\n filterStartDate,\r\n filterEndDate,\r\n doc,\r\n cropYear,\r\n arrPageInfo,\r\n arrAddedHeader\r\n );\r\n\r\n //open popup print\r\n if (isPrint || isPreview) {\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n // IE doesn't allow using a blob object directly as link href\r\n // instead it is necessary to use msSaveOrOpenBlob\r\n window.navigator.msSaveOrOpenBlob(doc.output(\"blob\"), fileName);\r\n } else {\r\n // For other browsers:\r\n // Create a link pointing to the ObjectURL containing the blob.\r\n if (isPrint) {\r\n doc.autoPrint();\r\n }\r\n window.open(\r\n URL.createObjectURL(doc.output(\"blob\")),\r\n \"_blank\",\r\n \"height=\" +\r\n window.innerHeight +\r\n \",width=\" +\r\n window.innerWidth +\r\n \",scrollbars=yes,location=yes\"\r\n );\r\n\r\n // For Firefox it is necessary to delay revoking the ObjectURL\r\n setTimeout(() => {\r\n window.URL.revokeObjectURL(doc.output(\"bloburl\"));\r\n }, 100);\r\n }\r\n } else {\r\n //export file\r\n doc.save(fileName);\r\n }\r\n }\r\n};\r\n\r\nfunction addRowTotal(items, label) {\r\n let rowTotal = {};\r\n rowTotal[\"LotCode\"] = label && label !== `` ? `${label} Total:` : `Total:`;\r\n\r\n let greenGross = _.sumBy(items, (x) => {\r\n return x[\"GreenGross\"];\r\n });\r\n if (greenGross === undefined) {\r\n console.log(`items=${JSON.stringify(items)}`);\r\n }\r\n rowTotal[\"GreenGross\"] = CommonUtilities.numberWithCommas(\r\n greenGross.toFixed(0)\r\n );\r\n\r\n let inboundGradePrecleanerTrash = _.sumBy(items, (x) => {\r\n return x[\"Inbound Grade-Precleaner Trash\"];\r\n });\r\n rowTotal[\"Inbound Grade-Precleaner Trash\"] = CommonUtilities.numberWithCommas(\r\n inboundGradePrecleanerTrash.toFixed(0)\r\n );\r\n\r\n let netGreenWeight = _.sumBy(items, (x) => {\r\n return x[\"NetGreenWeight\"];\r\n });\r\n rowTotal[\"NetGreenWeight\"] = CommonUtilities.numberWithCommas(\r\n netGreenWeight.toFixed(0)\r\n );\r\n\r\n let netDryWeight = _.sumBy(items, (x) => {\r\n return x[\"NetDryWeight\"];\r\n });\r\n rowTotal[\"NetDryWeight\"] = CommonUtilities.numberWithCommas(\r\n netDryWeight.toFixed(0)\r\n );\r\n\r\n let edibleUnstainedTotal = _.sumBy(items, (x) => {\r\n return x[\"EdibleUnstainedTotal\"];\r\n });\r\n rowTotal[\"EdibleUnstainedTotal\"] = CommonUtilities.numberWithCommas(\r\n edibleUnstainedTotal.toFixed(0)\r\n );\r\n\r\n let edibleLightstainedTotal = _.sumBy(items, (x) => {\r\n return x[\"EdibleLightstainedTotal\"];\r\n });\r\n rowTotal[\"EdibleLightstainedTotal\"] = CommonUtilities.numberWithCommas(\r\n edibleLightstainedTotal.toFixed(0)\r\n );\r\n\r\n let inshellShellStk = _.sumBy(items, (x) => {\r\n return x[\"InshellShellStk\"];\r\n });\r\n rowTotal[\"InshellShellStk\"] = CommonUtilities.numberWithCommas(\r\n inshellShellStk.toFixed(0)\r\n );\r\n\r\n let subEdiClosedInshelTotal = _.sumBy(items, (x) => {\r\n return x[\"SubEdiClosedInshelTotal\"];\r\n });\r\n rowTotal[\"SubEdiClosedInshelTotal\"] = CommonUtilities.numberWithCommas(\r\n subEdiClosedInshelTotal.toFixed(0)\r\n );\r\n\r\n let sizeKernels = _.sumBy(items, (x) => {\r\n return x[\"SizeKernels\"];\r\n });\r\n rowTotal[\"SizeKernels\"] = CommonUtilities.numberWithCommas(\r\n sizeKernels.toFixed(0)\r\n );\r\n\r\n let totalEdiWeightTotal = _.sumBy(items, (x) => {\r\n return x[\"TotalEdiWeightTotal\"];\r\n });\r\n rowTotal[\"TotalEdiWeightTotal\"] = CommonUtilities.numberWithCommas(\r\n totalEdiWeightTotal.toFixed(0)\r\n );\r\n\r\n let sizeAssessedWtTotal = _.sumBy(items, (x) => {\r\n return x[\"SizeAssessedWtTotal\"];\r\n });\r\n rowTotal[\"SizeAssessedWtTotal\"] = CommonUtilities.numberWithCommas(\r\n sizeAssessedWtTotal.toFixed(0)\r\n );\r\n\r\n return rowTotal;\r\n}\r\n\r\nfunction addRowLast(items) {\r\n let rowTotal = {};\r\n\r\n let greenGross =\r\n _.sumBy(items, (x) => {\r\n return x[\"GreenGross\"];\r\n }) / 100.0;\r\n rowTotal[\"GreenGross\"] = `100.00%`;\r\n\r\n let inboundGradePrecleanerTrash = _.sumBy(items, (x) => {\r\n return x[\"Inbound Grade-Precleaner Trash\"];\r\n });\r\n rowTotal[\r\n \"Inbound Grade-Precleaner Trash\"\r\n ] = `${CommonUtilities.numberWithCommas(\r\n (greenGross === 0 ? 0 : inboundGradePrecleanerTrash / greenGross).toFixed(2)\r\n )}%`;\r\n\r\n let netGreenWeight = _.sumBy(items, (x) => {\r\n return x[\"NetGreenWeight\"];\r\n });\r\n rowTotal[\"NetGreenWeight\"] = `${CommonUtilities.numberWithCommas(\r\n (greenGross === 0 ? 0 : netGreenWeight / greenGross).toFixed(2)\r\n )}%`;\r\n\r\n let netDryWeight = _.sumBy(items, (x) => {\r\n return x[\"NetDryWeight\"];\r\n });\r\n rowTotal[\"NetDryWeight\"] = `${CommonUtilities.numberWithCommas(\r\n (greenGross === 0 ? 0 : netDryWeight / greenGross).toFixed(2)\r\n )}%`;\r\n\r\n //tuong\r\n let edibleUnstainedTotal = _.sumBy(items, (x) => {\r\n return x[\"EdibleUnstainedTotal\"];\r\n });\r\n let edibleLightstainedTotal = _.sumBy(items, (x) => {\r\n return x[\"EdibleLightstainedTotal\"];\r\n });\r\n let inshellShellStk = _.sumBy(items, (x) => {\r\n return x[\"InshellShellStk\"];\r\n });\r\n let subEdiClosedInshelTotal = _.sumBy(items, (x) => {\r\n return x[\"SubEdiClosedInshelTotal\"];\r\n });\r\n let sizeKernels = _.sumBy(items, (x) => {\r\n return x[\"SizeKernels\"];\r\n });\r\n\r\n let LMPQ =\r\n edibleUnstainedTotal +\r\n edibleLightstainedTotal +\r\n inshellShellStk +\r\n subEdiClosedInshelTotal;\r\n\r\n rowTotal[\"EdibleUnstainedTotal\"] = `${(\r\n (LMPQ === 0 ? 0 : edibleUnstainedTotal / LMPQ) * 100.0\r\n ).toFixed(2)}%`;\r\n\r\n rowTotal[\"EdibleLightstainedTotal\"] = `${(\r\n (LMPQ === 0 ? 0 : edibleLightstainedTotal / LMPQ) * 100.0\r\n ).toFixed(2)}%`;\r\n\r\n rowTotal[\"InshellShellStk\"] = `${(\r\n (LMPQ === 0 ? 0 : inshellShellStk / LMPQ) * 100.0\r\n ).toFixed(2)}%`;\r\n\r\n rowTotal[\"SubEdiClosedInshelTotal\"] = `${(\r\n (LMPQ === 0 ? 0 : subEdiClosedInshelTotal / LMPQ) * 100.0\r\n ).toFixed(2)}%`;\r\n\r\n rowTotal[\"SizeKernels\"] = `${(\r\n (LMPQ === 0 ? 0 : sizeKernels / LMPQ) * 100.0\r\n ).toFixed(2)}%`;\r\n\r\n let totalEdiWeightTotal = _.sumBy(items, (x) => {\r\n return x[\"TotalEdiWeightTotal\"];\r\n });\r\n rowTotal[\"TotalEdiWeightTotal\"] = `${CommonUtilities.numberWithCommas(\r\n (greenGross === 0 ? 0 : totalEdiWeightTotal / greenGross).toFixed(2)\r\n )}%`;\r\n\r\n let sizeAssessedWtTotal = _.sumBy(items, (x) => {\r\n return x[\"SizeAssessedWtTotal\"];\r\n });\r\n rowTotal[\"SizeAssessedWtTotal\"] = `${CommonUtilities.numberWithCommas(\r\n (greenGross === 0 ? 0 : sizeAssessedWtTotal / greenGross).toFixed(2)\r\n )}%`;\r\n\r\n const length = items.length;\r\n\r\n rowTotal[\"TotalEdiSplitSample%\"] = `${(\r\n _.sumBy(items, (x) => {\r\n return x[\"TotalEdiSplitSamplePercent\"];\r\n }) / length\r\n ).toFixed(2)}%`;\r\n\r\n rowTotal[\"RejectFromSplit%\"] = `${(\r\n _.sumBy(items, (x) => {\r\n return x[\"RejectFromSplitPercent\"];\r\n }) / length\r\n ).toFixed(2)}%`;\r\n\r\n rowTotal[\"SubEdiClosedInshelTotal%\"] = `${(\r\n _.sumBy(items, (x) => {\r\n return x[\"SubEdiClosedInshelTotalPercent\"];\r\n }) / length\r\n ).toFixed(2)}%`;\r\n\r\n rowTotal[\"InsectsFromOpen%\"] = `${(\r\n _.sumBy(items, (x) => {\r\n return x[\"InsectsFromOpenPercent\"];\r\n }) / length\r\n ).toFixed(2)}%`;\r\n\r\n rowTotal[\"TotalEdiWeightTotal%\"] = `${(\r\n _.sumBy(items, (x) => {\r\n return x[\"TotalEdiWeightTotalPercent\"];\r\n }) / length\r\n ).toFixed(2)}%`;\r\n\r\n return rowTotal;\r\n}\r\n\r\nfunction addRowFinal(\r\n doc,\r\n startY,\r\n pageWidth,\r\n stainedTotal,\r\n inshTotal,\r\n edibleKernels,\r\n acpTotals\r\n) {\r\n startY = doc.lastAutoTable.finalY + 10;\r\n addLine(doc, 5, startY, pageWidth - 5, startY);\r\n addLine(doc, 5, startY + 30, pageWidth - 5, startY + 30);\r\n\r\n startY += 15;\r\n addText(doc, 240, startY, `Unstained And`, 0, `right`);\r\n addText(doc, 400, startY, `Shell Stk And Closed`, 0, `right`);\r\n //Second line\r\n startY += 10;\r\n addText(doc, 240, startY, `Stained Total:`, 0, `right`);\r\n addText(\r\n doc,\r\n 245,\r\n startY,\r\n ` ${CommonUtilities.numberWithCommas(stainedTotal)}`,\r\n 0\r\n );\r\n addText(doc, 400, startY, `Insh Total:`, 0, `right`);\r\n addText(\r\n doc,\r\n 405,\r\n startY,\r\n ` ${CommonUtilities.numberWithCommas(inshTotal)}`,\r\n 0\r\n );\r\n addText(doc, 570, startY, `Edible Kernels:`, 0, `right`);\r\n addText(\r\n doc,\r\n 575,\r\n startY,\r\n ` ${CommonUtilities.numberWithCommas(edibleKernels)}`,\r\n 0\r\n );\r\n addText(doc, 720, startY, `ACP Totals:`, 0, `right`);\r\n addText(\r\n doc,\r\n 725,\r\n startY,\r\n ` ${CommonUtilities.numberWithCommas(acpTotals)}`,\r\n 0\r\n );\r\n\r\n return startY;\r\n}\r\n\r\nfunction composeHeader(doc, filterStartDate, filterEndDate, cropYear) {\r\n const gap = 15;\r\n let startX = 600;\r\n let startY = 40;\r\n doc.setFontSize(15);\r\n // doc.setFontType(\"bold\");\r\n doc.text(\"Grower Detail Statement\", startX, startY, \"left\");\r\n\r\n doc.setFontSize(9);\r\n startY += gap * 2;\r\n doc.text(`Crop Year: ${cropYear}`, startX, startY, \"left\");\r\n\r\n startY += gap;\r\n doc.text(\r\n `Received Date From: ${filterStartDate} and ${filterEndDate}`,\r\n startX,\r\n startY,\r\n \"left\"\r\n );\r\n\r\n doc.addImage(logo64, \"png\", 5, 20, 140, 60);\r\n\r\n startY = 50;\r\n let startXLeft = 175;\r\n // doc.setFontType(\"bold\");\r\n // doc.setFontType(\"normal\");\r\n startY = addText(\r\n doc,\r\n startXLeft,\r\n startY,\r\n `13559 Firebaugh Blvd Madera, CA 93637`, //data.AccountName,\r\n gap\r\n );\r\n\r\n return startY;\r\n}\r\n\r\nfunction composeGrowerInfo(doc, startY, data) {\r\n const gap = 15;\r\n let startXLeft = 5;\r\n startY = 90;\r\n startY = addText(doc, startXLeft, startY, `Grower `, 0);\r\n\r\n startXLeft = 38;\r\n startY = addText(doc, startXLeft, startY, `${data.AccountName ?? ``}`, gap);\r\n\r\n if (data.Addressline1 && data.Addressline1 !== ``) {\r\n startY = addText(\r\n doc,\r\n startXLeft,\r\n startY,\r\n `${data.Addressline1 ?? ``}`,\r\n gap\r\n );\r\n }\r\n if (data.Addressline2 && data.Addressline2 !== ``) {\r\n startY = addText(\r\n doc,\r\n startXLeft,\r\n startY,\r\n `${data.Addressline2 ?? ``}`,\r\n gap\r\n );\r\n }\r\n if (data.Addressline3 && data.Addressline3 !== ``) {\r\n startY = addText(\r\n doc,\r\n startXLeft,\r\n startY,\r\n `${data.Addressline3 ?? ``}`,\r\n gap\r\n );\r\n }\r\n\r\n return startY;\r\n}\r\n\r\nfunction addText(doc, x, y, text, gap, align = `left`) {\r\n doc.text(`${text ?? \"\"}`, x, y, align);\r\n // doc.setDrawColor(0, 0, 0);\r\n // doc.setLineWidth(0.1);\r\n return y + gap;\r\n}\r\n\r\nfunction composeTable(data, doc, tableFontSize, startY, top, isTotalGrower) {\r\n if (data === null || data === undefined || data.length <= 0) {\r\n return;\r\n }\r\n const columns = [\r\n { header: \"Recv Date\", dataKey: \"ScheduledStartDateTimeFormatted\" },\r\n { header: \"Lot #\", dataKey: \"LotCode\" },\r\n { header: \"Manifest #\", dataKey: \"ReferenceID\" },\r\n { header: \"Green Gross\", dataKey: \"GreenGross\" }, //NetGreenWeight + `Inbound Grade-Precleaner Trash`\r\n { header: \"Trash\", dataKey: \"Inbound Grade-Precleaner Trash\" },\r\n { header: \"Net Green\", dataKey: \"NetGreenWeight\" },\r\n { header: \"Net Dry\", dataKey: \"NetDryWeight\" },\r\n { header: \"Split Unstained\", dataKey: \"EdibleUnstainedTotal\" },\r\n { header: \"Split Light Stained\", dataKey: \"EdibleLightstainedTotal\" },\r\n { header: \"Total Edible Split % Dry\", dataKey: \"TotalEdiSplitSample%\" },\r\n { header: \"Inshell Reject%\", dataKey: \"RejectFromSplit%\" },\r\n { header: \"Inshell Shell Stk\", dataKey: \"InshellShellStk\" }, //TotalEdiKernTotal*2\r\n { header: \"Closed Inshell\", dataKey: \"SubEdiClosedInshelTotal\" },\r\n { header: \"Closed Inshell %\", dataKey: \"SubEdiClosedInshelTotal%\" },\r\n { header: \"Edible Kernels\", dataKey: \"SizeKernels\" },\r\n { header: \"Inshell Insect %\", dataKey: \"InsectsFromOpen%\" },\r\n { header: \"Total Edible % Gross\", dataKey: \"TotalEdiWeightTotal\" },\r\n { header: \"Edible % Net Green\", dataKey: \"TotalEdiWeightTotal%\" },\r\n { header: \"ACP Totals\", dataKey: \"SizeAssessedWtTotal\" },\r\n ];\r\n\r\n doc.autoTable({\r\n margin: { left: 5, right: 5, top: top },\r\n startY: startY, //doc.autoTableEndPosY() + 20,\r\n // tablelineWidth: 0.01,\r\n // tableLineColor: \"red\",\r\n // head: columns,\r\n columns: columns,\r\n body: data,\r\n headStyles: {\r\n // fillColor: [33, 150, 243],\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n },\r\n showHead: isTotalGrower ? `never` : \"firstPage\",\r\n willDrawCell: function (data) {\r\n if (\r\n data.row.raw.LotCode === undefined ||\r\n data.row.raw.LotCode.indexOf(\"Total:\") !== -1\r\n ) {\r\n // doc.setFontType(\"bold\");\r\n // doc.setDrawColor(\"black\");\r\n doc.setTextColor(\"black\");\r\n doc.setFillColor(isTotalGrower ? `#ffff00` : \"#AFEEEE\");\r\n }\r\n },\r\n columnStyles: {\r\n 0: {\r\n halign: \"left\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n },\r\n 1: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n // cellWidth: 60,\r\n },\r\n 2: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n },\r\n 3: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n // //cellWidth: 80,\r\n },\r\n 4: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 5: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 6: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 7: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 8: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 9: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 10: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 11: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 12: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 13: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 14: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 15: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 16: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 17: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 18: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n 19: {\r\n halign: \"center\",\r\n fontSize: tableFontSize,\r\n lineColor: \"gray\",\r\n lineWidth: 0.01,\r\n //cellWidth: 80,\r\n },\r\n },\r\n });\r\n}\r\n\r\nfunction composeFooter(\r\n filterStartDate,\r\n filterEndDate,\r\n doc,\r\n cropYear,\r\n arrPageInfo,\r\n arrAddedHeader\r\n) {\r\n const pages = doc.internal.getNumberOfPages();\r\n //Do not insert page number if there is only 1 page\r\n if (pages && pages > 1) {\r\n const pageWidth = doc.internal.pageSize.width; //Optional\r\n const pageHeight = doc.internal.pageSize.height; //Optional\r\n\r\n let grower;\r\n for (let j = 1; j < pages + 1; j++) {\r\n let verticalPos = pageHeight - 10; //Can be fixed number\r\n doc.setPage(j);\r\n const pageNumber = doc.internal.getCurrentPageInfo().pageNumber;\r\n const arrTemp = arrPageInfo.filter((x) => {\r\n return x.pageNumber === pageNumber;\r\n });\r\n if (arrTemp && arrTemp.length > 0) {\r\n grower = arrTemp[0].grower;\r\n }\r\n if (j > 1 && arrAddedHeader.indexOf(pageNumber) === -1) {\r\n let startY = composeHeader(\r\n doc,\r\n filterStartDate,\r\n filterEndDate,\r\n cropYear\r\n );\r\n composeGrowerInfo(doc, startY, grower);\r\n }\r\n doc.text(\r\n `Print Date ${DateFormat(new Date(), \"mm/dd/yyyy hh:MM:ss TT\")}`,\r\n 5,\r\n verticalPos,\r\n {\r\n align: \"left\",\r\n }\r\n );\r\n\r\n doc.text(`Page ${j} of ${pages}`, pageWidth - 5, verticalPos, {\r\n align: \"right\",\r\n });\r\n }\r\n }\r\n}\r\n\r\nfunction addLine(doc, x1, y1, x2, y2) {\r\n doc.setDrawColor(`gray`);\r\n doc.setLineWidth(0.1);\r\n doc.line(x1, y1, x2, y2);\r\n}\r\n","import React from \"react\";\r\nimport ListComponent from \"../Base/ListComponent\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport { handleExportPdf } from \"../ExportPdf/MeridianGrowerSummary\";\r\nimport moment from \"moment\";\r\nimport Button from \"react-bootstrap/Button\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\nimport { DateRangePicker } from \"../Base/DatePickerComponent\";\r\nimport MultiSelectComponent from \"../Base/MultiSelectComponent\";\r\nvar _ = require(\"lodash\");\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nlet loggedUser = null;\r\n\r\nclass App extends ListComponent {\r\n constructor(props) {\r\n super(props);\r\n loggedUser = getLoggedUser();\r\n this.state = {\r\n urlapi: ``,\r\n title: \"Meridian Grower Summary\",\r\n pageTitle: \"Meridian Grower Summary\",\r\n pluraltitle: \"Meridian Grower Summary\",\r\n searchFormBasic: true,\r\n // hidePanelAction: true,\r\n // paginationDisabled: true,\r\n filterStartDate: undefined,\r\n filterEndDate: undefined,\r\n filterStartDateDisplay: ``,\r\n filterEndDateDisplay: ``,\r\n companyId: ``,\r\n companyName: ``,\r\n\r\n //paging\r\n // loading: false,\r\n // totalRows: 0,\r\n // currentPage: 1,\r\n // perPage: 20,\r\n };\r\n this.handleDatePickerChange = this.handleDatePickerChange.bind(this);\r\n this.handleChangeSelectControl = this.handleChangeSelectControl.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n await this.doSomthingBeforeGetItems();\r\n // this.getItems(this.state.currentPage, this.state.perPage);\r\n }\r\n\r\n handleChangeSelectControl = (controlId, value, selectedText) => {\r\n this.setState({ [controlId]: value, clientName: selectedText });\r\n };\r\n\r\n defaultTable = () => {};\r\n\r\n defaultItemsLength = () => {\r\n if (this.state === undefined || this.state.items === undefined) {\r\n return 0;\r\n }\r\n return this.state.totalRows;\r\n };\r\n\r\n fitToColumn(data) {\r\n let widths = this.initialWidthColumns(data[0]);\r\n data.map((item) => {\r\n const arrObject = Object.values(item);\r\n arrObject.map((obj, i) => {\r\n const len = String(obj).length;\r\n widths[i] = len > widths[i] ? len : widths[i];\r\n });\r\n });\r\n\r\n return widths.map((width) => {\r\n return {\r\n wch: width,\r\n };\r\n });\r\n }\r\n\r\n initialWidthColumns(data) {\r\n const arrObject = Object.keys(data);\r\n return arrObject.map((item) => {\r\n return String(item).length;\r\n });\r\n }\r\n\r\n handleDatePickerChange = (selectedDate, key) => {\r\n this.setState({ [key]: selectedDate }, function callBack() {\r\n if (key === `filterStartDate`) {\r\n this.setState({\r\n filterStartDateDisplay: moment(selectedDate).format(\"YYYY-MM-DD\"),\r\n });\r\n } else if (key === `filterEndDate`) {\r\n this.setState({\r\n filterEndDateDisplay: moment(selectedDate).format(\"YYYY-MM-DD\"),\r\n });\r\n }\r\n this.setState({ currentPage: 1 }, () => {\r\n this.getItems(this.state.currentPage, this.state.perPage);\r\n });\r\n });\r\n };\r\n\r\n doSomthingBeforeGetItems = async () => {\r\n await this.getDefaultDateRange();\r\n await this.getCompanyItems();\r\n };\r\n\r\n getDefaultDateRange = async () => {\r\n let now = new Date();\r\n let filterEndDate = new Date(now);\r\n let filterStartDate = now;\r\n filterStartDate.setDate(1);\r\n filterStartDate.setMonth(0);\r\n\r\n this.setState({\r\n filterStartDate: filterStartDate,\r\n filterEndDate: filterEndDate,\r\n filterStartDateDisplay: moment(filterStartDate).format(\"YYYY-MM-DD\"),\r\n filterEndDateDisplay: moment(filterEndDate).format(\"YYYY-MM-DD\"),\r\n });\r\n };\r\n\r\n async getCompanyItems() {\r\n try {\r\n let urlApi =\r\n GlobalConfig.REACT_APP_API_CONFIG_URL +\r\n \"queryclients/\" +\r\n process.env.REACT_APP_ATTRIBUTE_REFLECT_CUSTOMER;\r\n if (loggedUser && loggedUser.role === \"Clients\") {\r\n urlApi += `/${loggedUser.companyId}`;\r\n }\r\n const response = await HttpAxios.get(urlApi);\r\n const resultObject = response.data;\r\n if (resultObject && resultObject.result === \"OK\" && resultObject.data) {\r\n const parsedItems = [];\r\n resultObject.data.map((item) => {\r\n parsedItems.push({\r\n value: item._id,\r\n label: item.name,\r\n _id: item._id,\r\n name: item.name,\r\n });\r\n });\r\n this.setState({\r\n companies: parsedItems,\r\n });\r\n }\r\n } catch (err) {\r\n console.log(err.message);\r\n }\r\n }\r\n\r\n multiSelectCompanyHandleChange(selected, element) {\r\n const key = element.name;\r\n const keyValue = `${element.name}Value`;\r\n let valueOptions = selected ? selected.value : ``;\r\n let selectedText = ``;\r\n\r\n if (selected && Array.isArray(selected)) {\r\n const options = [...selected];\r\n const hasSelectAll = options.some((item) => {\r\n return (\r\n item.value === MultiSelectComponent.defaultProps.allOption.value &&\r\n item.label === MultiSelectComponent.defaultProps.allOption.label\r\n );\r\n });\r\n if (hasSelectAll) {\r\n options.shift();\r\n }\r\n valueOptions = options.map((item) => item.value).join();\r\n valueOptions = valueOptions ? valueOptions : \"\";\r\n selectedText = options.map((item) => item.label).join(`##`);\r\n }\r\n this.setState((state) => {\r\n return {\r\n [keyValue]: selected,\r\n [key]: valueOptions,\r\n companyName: selectedText,\r\n };\r\n });\r\n }\r\n\r\n renderSearchArea() {\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n {\r\n this.handleDatePickerChange(selectedDate, \"filterStartDate\");\r\n }}\r\n onChangeEnd={(selectedDate) => {\r\n this.handleDatePickerChange(selectedDate, \"filterEndDate\");\r\n }}\r\n minStartDate={this.state.filterStartDate}\r\n />\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {this.extendButtons()}\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n queryDataExport = async () => {\r\n let isValidSearch = true;\r\n let selectedAccountId =\r\n this.state.companyId === undefined ||\r\n this.state.companyId === null ||\r\n this.state.companyId === ``\r\n ? `all`\r\n : this.state.companyId;\r\n let selectedAccountName =\r\n this.state.companyName === undefined ||\r\n this.state.companyName === null ||\r\n this.state.companyName === ``\r\n ? `all`\r\n : this.state.companyName;\r\n if (loggedUser && loggedUser.role === \"Clients\") {\r\n if (selectedAccountId === `all`) {\r\n selectedAccountId =\r\n this.state.companies && this.state.companies.length > 0\r\n ? this.state.companies\r\n .map((x) => {\r\n return x._id;\r\n })\r\n .join(`,`)\r\n : ``;\r\n }\r\n if (selectedAccountName === `all`) {\r\n selectedAccountName =\r\n this.state.companies && this.state.companies.length > 0\r\n ? this.state.companies\r\n .map((x) => {\r\n return x.name;\r\n })\r\n .join(`##`)\r\n : ``;\r\n }\r\n //Do not allow search all if login as client\r\n if (selectedAccountId === `` || selectedAccountName === ``) {\r\n isValidSearch = false;\r\n }\r\n }\r\n if (isValidSearch === false) {\r\n window.showAlert(\"Infor\", \"No data export!\");\r\n } else {\r\n let filterStartDate = \"all\";\r\n let filterStartDateDisplay = ``;\r\n if (this.state.filterStartDate && this.state.filterStartDate !== ``) {\r\n filterStartDate = moment(this.state.filterStartDate).format(\r\n \"YYYY-MM-DD\"\r\n );\r\n filterStartDateDisplay = moment(this.state.filterStartDate).format(\r\n \"MM/DD/YYYY\"\r\n );\r\n }\r\n let filterEndDate = `all`;\r\n let filterEndDateDisplay = ``;\r\n if (this.state.filterEndDate && this.state.filterEndDate !== ``) {\r\n filterEndDate = moment(this.state.filterEndDate).format(\"YYYY-MM-DD\");\r\n filterEndDateDisplay = moment(this.state.filterEndDate).format(\r\n \"MM/DD/YYYY\"\r\n );\r\n }\r\n let cropYear =\r\n this.state.filterEndDate && this.state.filterEndDate !== undefined\r\n ? moment(this.state.filterEndDate).format(\"YYYY\")\r\n : ``;\r\n let urlApi = `${GlobalConfig.REACT_APP_API_REPORT_MERIDIAN_GROWER_SUMMARY}exportpdf`;\r\n const params = {\r\n filterAccountId: selectedAccountId,\r\n filterAccountName: selectedAccountName,\r\n filterStartDate: filterStartDate,\r\n filterEndDate: filterEndDate,\r\n };\r\n const response = await HttpAxios.post(urlApi, params);\r\n const items = response.data.data;\r\n\r\n if (items && items.length > 0) {\r\n const accounts = _(items)\r\n .filter(\"AccountID\")\r\n .groupBy((x) => {\r\n return [x[\"AccountID\"]]; //return [x['AccountID'], x['AccountName']];\r\n })\r\n .map((children, AccountID) => {\r\n const items = children.map((x) => x);\r\n return {\r\n AccountID,\r\n items,\r\n };\r\n })\r\n .value();\r\n if (accounts && accounts.length > 0) {\r\n const arrGrowers = [];\r\n accounts.map((x) => {\r\n let accountName = ``;\r\n let addressline1 = ``;\r\n let addressline2 = ``;\r\n let addressline3 = ``;\r\n if (x.items && x.items.length > 0) {\r\n accountName = x.items[0].AccountName;\r\n addressline1 = x.items[0].Addressline1;\r\n addressline2 = x.items[0].Addressline2;\r\n addressline3 = x.items[0].Addressline3;\r\n }\r\n arrGrowers.push({\r\n AccountID: x.AccountID,\r\n AccountName: accountName,\r\n Addressline1: addressline1,\r\n Addressline2: addressline2,\r\n Addressline3: addressline3,\r\n });\r\n });\r\n\r\n handleExportPdf(\r\n cropYear,\r\n filterStartDateDisplay,\r\n filterEndDateDisplay,\r\n arrGrowers,\r\n items,\r\n `export`\r\n );\r\n } else {\r\n window.showAlert(\"Infor\", \"No data export!\");\r\n }\r\n } else {\r\n window.showAlert(\"Infor\", \"No data export!\");\r\n }\r\n }\r\n };\r\n\r\n extendButtons = () => {\r\n return (\r\n this.queryDataExport()}\r\n className=\"btn btn-warning\"\r\n >\r\n Export\r\n \r\n );\r\n };\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport ListComponent from \"../Base/ListComponent\";\r\nimport Moment from \"moment\";\r\nimport { DateTimeFormat, CronJobSettingStatus } from \"../../global\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nconst RenderButton = (props) => {\r\n if (props.href) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n}\r\n\r\nclass App extends ListComponent {\r\n constructor(props) {\r\n super();\r\n\r\n this.state = {\r\n urlapi: GlobalConfig.REACT_APP_API_CRON_JOB_SETTING,\r\n urllist: process.env.REACT_APP_URL_CRON_JOB_SETTING,\r\n urladd: process.env.REACT_APP_URL_CRON_JOB_SETTING + \"/add\",\r\n urlapidelete: GlobalConfig.REACT_APP_API_CRON_JOB_SETTING,\r\n title: \"Scheduled Task\",\r\n pageTitle: \"Scheduled Tasks\",\r\n pluraltitle: \"Scheduled Tasks\",\r\n labeladd: \"Add\",\r\n width: 0,\r\n height: 0,\r\n hidePanelAction: true,\r\n }\r\n }\r\n\r\n doSomthingBeforeGetItems = async () => {\r\n this.updateWindowDimensions();\r\n window.addEventListener('resize', this.updateWindowDimensions.bind(this));\r\n };\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateWindowDimensions.bind(this));\r\n }\r\n\r\n updateWindowDimensions() {\r\n this.setState({ width: window.innerWidth, height: window.innerHeight });\r\n }\r\n\r\n async blockHandler(id, status) {\r\n const urlapi = `${this.state.urlapi}block/${id}`;\r\n const data = { status: status };\r\n await this.updateScheduleHandler(urlapi, data);\r\n }\r\n\r\n async runHandler(id) {\r\n const urlapi = `${this.state.urlapi}run/${id}`;\r\n await this.updateScheduleHandler(urlapi);\r\n }\r\n\r\n async updateScheduleHandler(urlapi, data) {\r\n try {\r\n const response = await HttpAxios.patch(urlapi, data || {});\r\n const resultObject = response.data;\r\n\r\n if (resultObject && resultObject.result === \"OK\") {\r\n this.setState({\r\n alertshow: false,\r\n });\r\n window.showAlert(\"\", \"Save successful!\", \"\");\r\n this.getItems();\r\n }\r\n //If failed, show error\r\n else {\r\n this.setState({\r\n alertshow: false,\r\n });\r\n this.setState({\r\n alertmsg: resultObject.message,\r\n alerttype: \"error\",\r\n alertshow: true,\r\n });\r\n }\r\n } catch (err) {\r\n this.setState({\r\n alertshow: false,\r\n });\r\n this.setState({\r\n alertmsg: err.message,\r\n alerttype: \"error\",\r\n alertshow: true,\r\n });\r\n }\r\n }\r\n\r\n getNextTimeRun(setting) {\r\n let time = 60 * 60 * 1000;\r\n if (setting.typeCronJob === \"Daily\") {\r\n time = time * 24;\r\n }\r\n let from = new Date(setting.startDateTime);\r\n let to = new Date(from.setTime(from.getTime() + (time * setting.stepSize * setting.timeRun)));\r\n return to;\r\n }\r\n\r\n columnsFull = () => {\r\n return [\r\n {\r\n name: \"Task\",\r\n selector: \"taskName\",\r\n sortable: true,\r\n grow: 2,\r\n cell: (row) => (\r\n \r\n {row.taskName}\r\n \r\n ),\r\n },\r\n {\r\n name: \"Report\",\r\n selector: \"description\",\r\n grow: 1,\r\n cell: row => {\r\n return row.linkToReport ? ( Show Report) : \"\";\r\n },\r\n },\r\n {\r\n name: \"Step Size\",\r\n selector: \"stepSize\",\r\n sortable: false,\r\n right: true,\r\n grow: 0,\r\n },\r\n {\r\n name: \"Type\",\r\n selector: \"typeCronJob\",\r\n sortable: false,\r\n grow: 0,\r\n },\r\n {\r\n name: \"Start At\",\r\n selector: \"cronStyle\",\r\n sortable: false,\r\n center: true,\r\n wrap: true,\r\n cell: (row) => {\r\n const nextTime = this.getNextTimeRun(row);\r\n const next = new Date(nextTime);\r\n const startDateTime = new Date(row.startDateTime);\r\n let result = next;\r\n if (next < startDateTime)\r\n result = startDateTime\r\n\r\n return Moment(result).format(DateTimeFormat.format4);;\r\n },\r\n },\r\n {\r\n name: \"Status\",\r\n selector: \"status\",\r\n sortable: false,\r\n center: true,\r\n grow: 0,\r\n cell: (row) => {\r\n return (\r\n <>{row.status}\r\n )\r\n },\r\n }\r\n\r\n ];\r\n }\r\n\r\n actionColumnSm = {\r\n name: \"\",\r\n allowOverflow: true,\r\n center: true,\r\n grow: 0,\r\n cell: (row) => (\r\n
\r\n \r\n \r\n
\r\n ),\r\n }\r\n\r\n actionColumnMd = {\r\n name: \"\",\r\n center: true,\r\n wrap: true,\r\n show: false,\r\n grow: 1,\r\n cell: (row) => (\r\n
\r\n {\r\n row.status === CronJobSettingStatus.Stopped ? (\r\n { this.blockHandler(row._id, CronJobSettingStatus.Scheduled) }} icon=\"fa-play\" />\r\n ) : (\r\n { this.blockHandler(row._id, CronJobSettingStatus.Stopped) }} icon=\"fa-stop\" />\r\n )\r\n }\r\n {\r\n row.status !== CronJobSettingStatus.Stopped ?\r\n (\r\n { this.runHandler(row._id) }} icon=\"fa-refresh\" />\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 // rederTableStyle() {\r\n // return {\r\n // rows: {\r\n // style: {\r\n // paddingTop: \"0.4em\",\r\n // paddingBottom: \"0.4em\",\r\n // },\r\n // },\r\n // table: {\r\n // style: {\r\n // paddingBottom: \"3em\",\r\n // },\r\n // }\r\n // }\r\n // }\r\n\r\n setColumns = () => {\r\n let columns = this.columnsFull();\r\n if (this.state.width <= 0)\r\n columns.push(this.actionColumnSm);\r\n else\r\n columns.push(this.actionColumnMd);\r\n return columns;\r\n }\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./index\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React from \"react\";\r\nimport AddComponent from \"../Base/AddComponent\";\r\nimport MultiSelectComponent from \"../Base/MultiSelectComponent\";\r\nimport Moment from \"moment\";\r\n\r\nimport { DatePickerIcon } from \"../Base/DatePickerComponent\";\r\nimport { DateTimeFormat } from \"../../global\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nconst typeCronJob = {\r\n Hourly: \"Hourly\",\r\n Daily: \"Daily\"\r\n};\r\nconst typeCronJobOptions = [{\r\n value: typeCronJob.Hourly,\r\n label: typeCronJob.Hourly\r\n},\r\n{\r\n value: typeCronJob.Daily,\r\n label: typeCronJob.Daily\r\n}];\r\n\r\n\r\nclass App extends AddComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n title: \"Scheduled Task\",\r\n listtitle: \"Scheduled Task\",\r\n urllist: process.env.REACT_APP_URL_CRON_JOB_SETTING,\r\n urlapi: GlobalConfig.REACT_APP_API_CRON_JOB_SETTING,\r\n urlapiTaskNames: GlobalConfig.REACT_APP_API_CRON_JOB_SETTING + \"tasknames/unregistered\",\r\n alertshow: false,\r\n alerttype: \"\",\r\n alertmsg: \"\",\r\n data: {\r\n _id: \"\",\r\n taskName: \"\",\r\n cronStyle: \"\",\r\n typeCronJob: typeCronJob.Hourly,\r\n startTime: \"00:00\",\r\n blocked: false,\r\n description: null,\r\n startDateTime: null,\r\n transactionDateFrom: null,\r\n transactionDateFromDisplay: null,\r\n transactionDateTo: null,\r\n // currentTime: true,\r\n },\r\n taskNameOptions: null,\r\n taskNameValue: null,\r\n typeCronJobValue: null,\r\n startInfo: null,\r\n submitDisabled: false,\r\n };\r\n }\r\n\r\n inititalComponent() {\r\n this.getTaskNameItems();\r\n }\r\n\r\n async getTaskNameItems() {\r\n const fetchData = await HttpAxios.get(this.state.urlapiTaskNames);\r\n const dataOptions = fetchData.data;\r\n const options = MultiSelectComponent.ConvertToOptions(dataOptions.data);\r\n\r\n this.setStartInfo(typeCronJob.Hourly, this.state.data.startTime);\r\n this.setState(state => {\r\n const data = { ...state.data, taskName: options ? options[0].value : \"\" };\r\n return {\r\n data: data,\r\n taskNameOptions: options,\r\n taskNameValue: options ? options[0] : null,\r\n alertshow: !options,\r\n alertmsg: \"There are no unscheduled reports. Each report can only have one schedule.\",\r\n alerttype: \"error\",\r\n submitDisabled: !options,\r\n linkToReport: \"\",\r\n };\r\n });\r\n }\r\n\r\n startTimeChangeHandler(e) {\r\n if (!e.target.value) {\r\n e.target.value = \"00:00\";\r\n }\r\n this.setStartInfo(this.state.data.typeCronJob, e.target.value);\r\n this.handleChange(e);\r\n }\r\n\r\n typeCronJobChangeHandler(selected, e) {\r\n this.setStartInfo(selected.value, this.state.data.startTime);\r\n this.multiSelectHandleChange(selected, e);\r\n }\r\n\r\n transDateChangeHandler(selected, name) {\r\n this.setState(state => {\r\n const keyDisplay = `${name}Display`;\r\n const data = { ...state.data, [name]: Moment(selected).format(\"YYYY-MM-DD\"), [keyDisplay]: selected };\r\n return { data }\r\n });\r\n }\r\n\r\n setStartInfo(type, startAt) {\r\n let datetime = new Date(`${Moment(new Date()).format(DateTimeFormat.format5).toString()} ${startAt}:00`);\r\n const now = new Date();\r\n\r\n if (datetime < now && type === typeCronJob.Hourly) {\r\n datetime = new Date(datetime.getTime() + 86400000);\r\n } else if (type === typeCronJob.Daily) {\r\n datetime = new Date(datetime.getTime() + 86400000);\r\n }\r\n\r\n this.setState(state => {\r\n const data = { ...state.data, startDateTime: datetime.toString() };\r\n return {\r\n startInfo: Moment(datetime).format(DateTimeFormat.format4),\r\n data: data,\r\n }\r\n });\r\n }\r\n\r\n renderForm = () => {\r\n return (\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n { this.transDateChangeHandler(selectedDate, \"transactionDateFrom\") }}\r\n dateFormat=\"MM/yyyy\"\r\n showMonthYearPicker\r\n />\r\n
\r\n
\r\n
\r\n );\r\n };\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./add\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React from \"react\";\r\nimport EditComponent from \"../Base/EditComponent\";\r\nimport MultiSelectComponent from \"../Base/MultiSelectComponent\";\r\nimport Moment from \"moment\";\r\nimport DataTable from \"react-data-table-component\";\r\nimport { DatePickerIcon } from \"../Base/DatePickerComponent\";\r\nimport { Button, Modal } from \"react-bootstrap\";\r\nimport { DateTimeFormat } from \"../../global\";\r\nimport { HttpAxios } from \"../../Utilities/Http\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\nconst typeCronJob = {\r\n Hourly: \"Hourly\",\r\n Daily: \"Daily\"\r\n};\r\nconst typeCronJobOptions = [{\r\n value: typeCronJob.Hourly,\r\n label: typeCronJob.Hourly\r\n},\r\n{\r\n value: typeCronJob.Daily,\r\n label: typeCronJob.Daily\r\n}];\r\n\r\n\r\nclass App extends EditComponent {\r\n constructor(props) {\r\n super();\r\n this.state = {\r\n listtitle: \"Scheduled Task\",\r\n formSummaryTitle: \"Scheduled Task History\",\r\n urllist: process.env.REACT_APP_URL_CRON_JOB_SETTING,\r\n urlapi: GlobalConfig.REACT_APP_API_CRON_JOB_SETTING,\r\n urlapiTaskNames: GlobalConfig.REACT_APP_API_CRON_JOB_SETTING + \"tasknames/unregistered\",\r\n urlSummaryApi: GlobalConfig.REACT_APP_API_CRON_JOB_HISTORY,\r\n data: {\r\n _id: props.match.params.id,\r\n taskName: \"\",\r\n cronStyle: \"\",\r\n typeCronJob: \"\",\r\n startAt: \"\",\r\n blocked: false,\r\n description: null,\r\n startDateTime: null,\r\n transactionDateFrom: \"\",\r\n },\r\n summaryFilterParams: {\r\n taskName: props.match.params.id\r\n },\r\n taskNameOptions: null,\r\n taskNameValue: null,\r\n typeCronJobValue: null,\r\n startInfo: null,\r\n linkToReport: \"\",\r\n\r\n //paging\r\n loading: false,\r\n totalRows: 0,\r\n currentPage: 1,\r\n perPage: 20,\r\n };\r\n }\r\n\r\n getTitle = () => {\r\n return this.state.data.taskName;\r\n };\r\n\r\n async getTaskNameItems() {\r\n\r\n const fetchData = await HttpAxios.get(this.state.urlapiTaskNames);\r\n const data = fetchData.data;\r\n const options = MultiSelectComponent.ConvertToOptions(data.data);\r\n this.setStartInfo(typeCronJob.Hourly, this.state.data.startTime);\r\n this.setState(state => {\r\n return {\r\n taskNameOptions: options,\r\n taskNameValue: { value: this.state.data.taskName, label: this.state.data.taskName },\r\n };\r\n });\r\n }\r\n\r\n doSomethingAfterGetItemById = async () => {\r\n await this.getTaskNameItems();\r\n this.setState(state => {\r\n const data = { ...state.data, transactionDateFromDisplay: state.data.transactionDateFrom };\r\n return {\r\n data: data,\r\n typeCronJobValue: { value: state.data.typeCronJob, label: state.data.typeCronJob }\r\n }\r\n });\r\n };\r\n\r\n startTimeChangeHandler(e) {\r\n if (!e.target.value) {\r\n e.target.value = \"00:00\";\r\n }\r\n this.setStartInfo(this.state.data.typeCronJob, e.target.value);\r\n this.handleChange(e);\r\n }\r\n\r\n typeCronJobChangeHandler(selected, e) {\r\n this.setStartInfo(selected.value, this.state.data.startTime);\r\n this.multiSelectHandleChange(selected, e);\r\n }\r\n setStartInfo(type, startAt) {\r\n let datetime = new Date(`${Moment(new Date()).format(DateTimeFormat.format5).toString()} ${startAt}:00`);\r\n const now = new Date();\r\n\r\n if (datetime < now && type === typeCronJob.Hourly) {\r\n datetime = new Date(datetime.getTime() + 86400000);\r\n } else if (type === typeCronJob.Daily) {\r\n datetime = new Date(datetime.getTime() + 86400000);\r\n }\r\n\r\n this.setState(state => ({\r\n startInfo: Moment(datetime).format(DateTimeFormat.format4),\r\n data: { ...state.data, startDateTime: datetime }\r\n }))\r\n }\r\n\r\n handleShow = (row) => {\r\n const message = JSON.parse(row.message);\r\n this.setState({\r\n show: true,\r\n historyDetail: message,\r\n titleModal: `${row.taskName} [${Moment(row.startedDate).format(DateTimeFormat.format4)}]`\r\n });\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ show: false });\r\n };\r\n\r\n columnTableDetail = [\r\n {\r\n name: \"Store Procedure/Command\",\r\n selector: \"storeProcedure\",\r\n wrap: true,\r\n grow: 2,\r\n sortable: false,\r\n },\r\n {\r\n name: \"Status\",\r\n selector: \"status\",\r\n grow: 0,\r\n center: true,\r\n sortable: false,\r\n cell: row => {\r\n return <>{row.status};\r\n },\r\n },\r\n {\r\n name: \"Records\",\r\n grow: 0,\r\n selector: \"records\",\r\n center: true,\r\n sortable: false,\r\n },\r\n {\r\n name: \"Result\",\r\n sortable: false,\r\n grow: 2,\r\n cell: row => {\r\n return typeof row.result === 'object' ? \"\" : row.result\r\n }\r\n },\r\n ];\r\n\r\n transDateChangeHandler(selected, name) {\r\n this.setState(state => {\r\n const data = { ...state.data, [name]: Moment(selected).format(\"YYYY-MM-01\"), transactionDateFromDisplay: selected };\r\n return { data }\r\n });\r\n }\r\n\r\n extendRender = () => {\r\n return (\r\n \r\n \r\n {this.state.titleModal ? this.state.titleModal : \"Detail\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n getSummaryColumns = () => {\r\n return [\r\n {\r\n name: \"Started Date\",\r\n selector: \"startedDate\",\r\n sortable: true,\r\n center: true,\r\n cell: (row) => {\r\n return <>\r\n \r\n {Moment(row.startedDate).format(DateTimeFormat.format2)}\r\n \r\n \r\n }\r\n },\r\n {\r\n name: \"Completed Date\",\r\n selector: \"completedDate\",\r\n sortable: false,\r\n center: true,\r\n cell: (row) => {\r\n return <>\r\n {row.completedDate ? Moment(row.completedDate).format(DateTimeFormat.format2) : \"\"}\r\n \r\n },\r\n },\r\n {\r\n name: \"Result Status\",\r\n selector: \"status\",\r\n sortable: false,\r\n center: true,\r\n grow: 1,\r\n cell: (row) => {\r\n return <>{row.status};\r\n }\r\n },\r\n {\r\n name: \"\",\r\n center: true,\r\n grow: 0,\r\n cell: row => {\r\n return (\r\n { this.handleShow(row); }} className=\"btn btn-default\" style={{ minWidth: \"0\", border: 0 }}>\r\n );\r\n }\r\n },\r\n\r\n ];\r\n }\r\n\r\n renderForm = () => {\r\n const transactionDateFrom = this.state.data.transactionDateFromDisplay;\r\n return (\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n { this.transDateChangeHandler(selectedDate, \"transactionDateFrom\") }}\r\n dateFormat=\"MM/yyyy\"\r\n showMonthYearPicker\r\n />\r\n
\r\n
\r\n\r\n
\r\n );\r\n };\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../context/auth\";\r\nimport Permission from \"../../Permission\";\r\nimport Component from \"./edit\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React from \"react\";\r\nimport ListComponent from \"../../Base/ListComponent\";\r\nimport Moment from \"moment\";\r\nimport DataTable from \"react-data-table-component\";\r\nimport MultiSelectComponent from \"../../Base/MultiSelectComponent\";\r\n\r\nimport { HttpAxios } from \"../../../Utilities/Http\";\r\nimport { Button, Modal } from \"react-bootstrap\";\r\nimport { DateTimeFormat } from \"../../../global\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nclass App extends ListComponent {\r\n constructor(props) {\r\n super();\r\n const statusOptions = [\r\n { value: \"Successful\", label: \"Successful\" },\r\n { value: \"Failed\", label: \"Failed\" },\r\n ];\r\n this.state = {\r\n urlapi: GlobalConfig.REACT_APP_API_CRON_JOB_HISTORY,\r\n urllist: process.env.REACT_APP_URL_CRON_JOB_HISTORY,\r\n urlParentDetail: process.env.REACT_APP_URL_CRON_JOB_SETTING,\r\n urlapiTaskNames:\r\n GlobalConfig.REACT_APP_API_CRON_JOB_SETTING + \"tasknames\",\r\n title: \"Scheduled Task History\",\r\n titleModal: \"\",\r\n pluraltitle: \"Scheduled Task History\",\r\n tableExpandableRows: false,\r\n show: false,\r\n historyDetail: null,\r\n runTimeLog: \"\",\r\n tableHighlightOnHover: false,\r\n taskNameOptions: null,\r\n taskNameValue: null,\r\n hidePanelAction: true,\r\n filterParams: {\r\n taskName: null,\r\n status: null,\r\n },\r\n statusOptions: statusOptions,\r\n statusValue: null,\r\n\r\n //paging\r\n loading: false,\r\n totalRows: 0,\r\n currentPage: 1,\r\n perPage: 20,\r\n };\r\n }\r\n\r\n renderSearch = () => {\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n async getTaskNameItems() {\r\n const fetchData = await HttpAxios.get(this.state.urlapiTaskNames);\r\n const data = fetchData.data;\r\n const options = MultiSelectComponent.ConvertToOptions(data.data, {\r\n value: \"taskId\",\r\n label: \"taskName\",\r\n });\r\n let filterParams = null;\r\n if (options) {\r\n const params = this.props.match.params.id;\r\n let currentOptions = null;\r\n if (params) {\r\n const task = data.data.find((item) => params === item.taskId);\r\n if (task) {\r\n const option = { value: task.taskId, label: task.taskName };\r\n currentOptions =\r\n options.length === 1\r\n ? [MultiSelectComponent.defaultProps.allOption, option]\r\n : option;\r\n filterParams = { taskName: currentOptions.value };\r\n }\r\n }\r\n\r\n this.setState((state) => {\r\n const filter = { ...state.filterParams, ...filterParams };\r\n return {\r\n taskNameOptions: options,\r\n taskNameValue: currentOptions,\r\n filterParams: filter,\r\n };\r\n });\r\n }\r\n }\r\n\r\n doSomthingBeforeGetItems = async () => {\r\n await this.getTaskNameItems();\r\n };\r\n\r\n doSomthingAfterSelectChange = () => {\r\n this.getItems(this.state.currentPage, this.state.perPage);\r\n };\r\n\r\n columnsFull = () => {\r\n return [\r\n {\r\n name: \"Task\",\r\n selector: \"taskName\",\r\n sortable: true,\r\n grow: 2,\r\n cell: (row) => {\r\n return (\r\n <>\r\n \r\n \r\n {row.taskName}\r\n \r\n \r\n \r\n );\r\n },\r\n },\r\n {\r\n name: \"Started Date\",\r\n selector: \"startedDate\",\r\n sortable: true,\r\n center: true,\r\n cell: (row) => {\r\n return (\r\n <>\r\n \r\n {Moment(row.startedDate).format(DateTimeFormat.format2)}\r\n \r\n \r\n );\r\n },\r\n },\r\n {\r\n name: \"Completed Date\",\r\n selector: \"completedDate\",\r\n sortable: false,\r\n center: true,\r\n cell: (row) => {\r\n return (\r\n <>\r\n \r\n {row.completedDate\r\n ? Moment(row.completedDate).format(DateTimeFormat.format2)\r\n : \"\"}\r\n \r\n \r\n );\r\n },\r\n },\r\n {\r\n name: \"Result Status\",\r\n selector: \"status\",\r\n sortable: false,\r\n center: true,\r\n grow: 1,\r\n cell: (row) => {\r\n return (\r\n <>\r\n \r\n {row.status}\r\n \r\n \r\n );\r\n },\r\n },\r\n {\r\n name: \"\",\r\n center: true,\r\n grow: 0,\r\n cell: (row) => {\r\n return (\r\n {\r\n this.handleShow(row);\r\n }}\r\n className=\"btn btn-default\"\r\n style={{ minWidth: \"0\", border: 0 }}\r\n >\r\n \r\n \r\n );\r\n },\r\n },\r\n ];\r\n };\r\n\r\n setColumns = () => {\r\n return this.columnsFull();\r\n };\r\n\r\n handleShow = (row) => {\r\n const message = JSON.parse(row.message);\r\n this.setState({\r\n show: true,\r\n historyDetail: message,\r\n runTimeLog: this.buildLog(row.runTimeLog),\r\n titleModal: `${row.taskName} [${Moment(row.startedDate).format(\r\n DateTimeFormat.format4\r\n )}]`,\r\n });\r\n };\r\n\r\n buildLog(log) {\r\n let result = \"\";\r\n if (log) {\r\n const logJson = JSON.parse(log);\r\n logJson.map((log) => {\r\n result = `${result}\\n${log.content}`;\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ show: false });\r\n };\r\n\r\n columnTableDetail = [\r\n {\r\n name: \"Store Procedure/Command\",\r\n selector: \"storeProcedure\",\r\n wrap: true,\r\n grow: 2,\r\n sortable: false,\r\n },\r\n {\r\n name: \"Status\",\r\n selector: \"status\",\r\n grow: 0,\r\n center: true,\r\n sortable: false,\r\n cell: (row) => {\r\n return (\r\n <>\r\n \r\n {row.status}\r\n \r\n \r\n );\r\n },\r\n },\r\n {\r\n name: \"Records\",\r\n grow: 0,\r\n selector: \"records\",\r\n center: true,\r\n sortable: false,\r\n },\r\n {\r\n name: \"Result\",\r\n sortable: false,\r\n grow: 2,\r\n cell: (row) => {\r\n return typeof row.result === \"object\" ? \"\" : row.result;\r\n },\r\n },\r\n ];\r\n\r\n extendRender = () => {\r\n return (\r\n \r\n \r\n \r\n {this.state.titleModal ? this.state.titleModal : \"Detail\"}\r\n \r\n \r\n \r\n \r\n {this.state.runTimeLog ? (\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 async componentDidMount() {\r\n await this.doSomthingBeforeGetItems();\r\n this.getItems(this.state.currentPage, this.state.perPage);\r\n }\r\n\r\n getItems = async (page, size = this.state.perPage) => {\r\n const stateTimeout = setTimeout(() => {\r\n this.setState({ loading: true });\r\n }, 200);\r\n await HttpAxios.get(this.state.urlapi + `${page}/${size}`, {\r\n params: this.state.filterParams ?? {},\r\n }).then(({ data }) => {\r\n this.setState(\r\n {\r\n items: data.data,\r\n originalItems: data.data,\r\n },\r\n () => {\r\n this.doSomthingAfterGetItems(data);\r\n }\r\n );\r\n if (this.state.loading) {\r\n this.setState({ loading: false });\r\n clearTimeout(stateTimeout);\r\n } else {\r\n clearTimeout(stateTimeout);\r\n }\r\n });\r\n };\r\n\r\n handlePerRowsChange = async (newPerPage, page) => {\r\n this.getItems(page, newPerPage);\r\n this.setState({ perPage: newPerPage });\r\n };\r\n\r\n handlePageChange = (page) => {\r\n //This help resolve issue click on last page.\r\n if (page * this.state.perPage > this.state.totalRows) {\r\n page = page - 1;\r\n }\r\n this.getItems(page);\r\n this.setState({ currentPage: page });\r\n };\r\n\r\n doSomthingAfterGetItems = (data) => {\r\n this.setState({ totalRows: data.total, loading: false });\r\n };\r\n\r\n defaultTable = () => {\r\n const columns = this.setColumns();\r\n const customStyles = this.rederTableStyle();\r\n return (\r\n }\r\n highlightOnHover={this.state.tableHighlightOnHover}\r\n customStyles={customStyles}\r\n progressPending={this.state.loading}\r\n noDataComponent={this.noDataComponent()}\r\n />\r\n );\r\n };\r\n}\r\nexport default App;\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { getLoggedUser } from \"../../../context/auth\";\r\nimport Permission from \"../../../Permission\";\r\nimport Component from \"./index\";\r\n\r\nlet loggedUser = getLoggedUser();\r\n\r\nclass Page extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n }\r\n no={() => }\r\n />\r\n );\r\n }\r\n}\r\nexport default Page;","import React from \"react\";\r\nimport \"react-confirm-alert/src/react-confirm-alert.css\";\r\nimport { Helmet } from \"react-helmet\";\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {\"Site is down for maintenance | \" + process.env.REACT_APP_SITE_TITLE}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Site is temporarily unavailable

\r\n

Scheduled maintenance is currently in progress. Please check back soon.

\r\n

We apologize for any inconvenience.

\r\n

dtuong@paritycorp.com

\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 App;\r\n","import React, { useState } from \"react\";\r\nimport { createStore } from \"redux\";\r\nimport { Provider } from \"react-redux\";\r\nimport rootReducer from \"./reducers\";\r\n\r\nimport config from \"./config\"; //do not remove\r\nimport ClientList from \"./Components/Clients/route\";\r\nimport ClientAdd from \"./Components/Clients/routeadd\";\r\nimport ClientEdit from \"./Components/Clients/routeedit\";\r\n\r\nimport AdministratorList from \"./Components/Administrator/route\";\r\nimport AdministratorAdd from \"./Components/Administrator/routeadd\";\r\nimport AdministratorEdit from \"./Components/Administrator/routeedit\";\r\n\r\nimport ConfigList from \"./Components/Config/index\";\r\nimport ConfigAdd from \"./Components/Config/add\";\r\nimport ConfigEdit from \"./Components/Config/edit\";\r\nimport CustomerSetting from \"./Components/Config/route\";\r\n\r\nimport MailTemplateList from \"./Components/MailTemplate/route\";\r\nimport MailTemplateAdd from \"./Components/MailTemplate/routeadd\";\r\nimport MailTemplateEdit from \"./Components/MailTemplate/routeedit\";\r\n\r\nimport Page404 from \"./Components/Pages/PageNotFound\";\r\n\r\nimport Home from \"./Components/Home\";\r\nimport { BrowserRouter as Router, Switch, Route } from \"react-router-dom\";\r\n\r\nimport PrivateRoute from \"./PrivateRoute\";\r\nimport { AuthContext } from \"./context/auth\";\r\nimport Login from \"./Components/Pages/Login\";\r\nimport TermOfUse from \"./Components/Pages/TermsOfUse\";\r\nimport RecoverPassword from \"./Components/Pages/RecoverPassword\";\r\nimport Profile from \"./Components/User/Profile\";\r\n\r\nimport ReportCurrentInventoryBalance from \"./Components/Report/CurrentInventoryBalance\";\r\nimport ReportInventoryRolloverByDate from \"./Components/Report/InventoryRolloverByDate\";\r\nimport ReportInventoryRolloverByMonth from \"./Components/Report/InventoryRolloverByMonth\";\r\nimport MeridianGrowersRtt from \"./Components/Report/MeridianGrowersRtt\";\r\nimport MeridianGroweSummary from \"./Components/Report/MeridianGroweSummary\";\r\n\r\nimport CronJobList from \"./Components/CronJob/route\";\r\nimport CronJobAdd from \"./Components/CronJob/routeadd\";\r\nimport CronJobEdit from \"./Components/CronJob/routeedit\";\r\nimport CronJobHistory from \"./Components/CronJob/CronJobHistory/route\";\r\n\r\nimport MaintenancePage from \"./Components/Pages/Maintenance\";\r\n\r\nconst GlobalConfig = new window.globalConfig();\r\n\r\nconst store = createStore(\r\n rootReducer,\r\n window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()\r\n);\r\nfunction App(props) {\r\n const tokens = localStorage.getItem(\"tokens\");\r\n let existingTokens = null;\r\n if (tokens) {\r\n existingTokens = tokens;\r\n }\r\n const [authTokens, setAuthTokens] = useState(existingTokens);\r\n\r\n const setTokens = (data) => {\r\n if (data) localStorage.setItem(\"tokens\", data);\r\n else localStorage.clear();\r\n setAuthTokens(data);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n {GlobalConfig.REACT_APP_IN_MAINTENANCE ? (\r\n <>\r\n \r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\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 App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\nimport * as serviceWorker from \"./serviceWorker\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}