{"version":3,"sources":["serviceWorker.js","components/Common/Snackbar.js","constants/constants.js","helpers/ResetPasswordHelper.js","components/PasswordForget/index.js","constants/routes.js","components/Common/Copyright.js","components/Common/Styles.js","constants/roles.js","components/SignOut/index.js","helpers/UserHelper.js","components/Session/stateManagement.js","components/SignIn/index.js","components/Session/context.js","components/Session/withAuthentication.js","components/Session/withAuthorization.js","components/Common/InfoCard.js","components/Common/Title.js","helpers/DashboardHelper.js","components/Dashboard/UserList.js","components/Common/theme.js","components/Home/index.js","components/Common/ActiveToggle.js","components/Common/DeleteButton.js","components/AppUsers/InfoModal.js","components/AppUsers/TableEx.js","components/AppUsers/UserList.js","components/AppUsers/index.js","components/Common/EditModal.js","components/AdminList/TableEx.js","components/AdminList/UserList.js","components/AdminList/index.js","components/ChangePassword/index.js","components/Common/NewCertENG.png","components/Common/DownloadCert.js","components/Certificate/InfoModal.js","components/Certificate/Constants.js","components/Certificate/TableEx.js","components/Certificate/UserList.js","components/Certificate/index.js","components/Common/ViewImage.js","components/PostAssesmentQuestions/TableEx.js","components/PostAssesmentQuestions/UserList.js","components/PostAssesmentQuestions/index.js","components/ecocoaAbout/index.js","components/DashboardViewer/TableEx.js","components/DashboardViewer/UserList.js","components/DashboardViewer/index.js","components/Common/listItems.js","components/Dashboard/UserCard.js","components/Dashboard/index.js","components/App/index.js","index.js"],"names":["Boolean","window","location","hostname","match","Alert","props","elevation","variant","Snackbar","React","useState","open","setOpen","handleCloseAlert","event","reason","autoHideDuration","onClose","severity","message","defaultProps","undefined","BASE_URL","require","config","axios","payload","a","post","then","response","data","catch","error","SendResetPasswordMail","PasswordForgetPage","emailF","setEmail","eError","setEmailError","submitError","setSubmitError","sev","setSeverity","handleClose","isInvalidEmail","test","eHelper","body","Dialog","aria-labelledby","DialogTitle","id","DialogContent","DialogContentText","TextField","helperText","name","autoFocus","margin","label","type","fullWidth","value","placeholder","onChange","target","DialogActions","Button","onClick","color","ResetPasswordHelper","email","status","preventDefault","Fragment","size","style","textDecoration","PasswordForgetLink","SIGN_IN","HOME","APPUSERS","ADMIN","POSTASSESMENT","ECOCOAABOUT","DASHBOARDVIEWER","PASSWORD_CHANGE","CERTIFICATE","Copyright","Typography","align","Link","href","to","e","Date","getFullYear","useStyles","makeStyles","theme","listStyle","palette","primary","contrastText","drawerListSubheaderRoot","paper","padding","spacing","display","overflow","flexDirection","fixedHeightSmall","height","alignItems","width","flexGrow","fixedHeightExtraLarge","link","main","fixedHeight","fixedHeightLarge","infoCard","snack","chart","rootSignIn","image1","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","marginLeft","marginRight","image2","paddingTop","paperSignIn","avatarSignIn","backgroundColor","secondary","formSignIn","marginTop","submitSignIn","bgSignIn","paperForgotPassword","position","background","border","boxShadow","shadows","rootUserCard","getContrastText","rootUserAvatar","paperModal","viewImageModal","paperModal2","mediumBoldFont","fontSize","fontWeight","textTransform","fontStyle","lineHeight","SUPERADMIN","DoSignOut","LogoutWebUserKeycloak","localStorage","clear","authStateChange","SignOutButton","errorHandler","CheckForTimeOut","userTime","getTime","userTimeout","authUser","accessToken","refreshToken","next","fallback","authToken","userData","time","setItem","JSON","stringify","SetLocalStorage","reload","getItem","headers","console","log","RegisterWebUserDashboard","parse","userRole","indexOf","ROLES","success","GetAdminList","GetDashboardViewerList","DeleteUser","delete","DeleteWebUser","INITIAL_STATE","password","passwordHidden","showPassword","isSubmitted","historyProp","SignInUI","errorName","setState","onSubmit","IsSubmitHandler","state","DoLogin","uid","_id","roles","username","GotoLocation","ROUTES","testfunc","bind","history","push","val","this","TokenTest","isInvalid","classes","Grid","container","component","className","CssBaseline","item","xs","sm","md","Paper","square","direction","justify","Avatar","required","autoComplete","disabled","Box","mt","Component","SignInWithUI","AuthUserContext","createContext","withAuthentication","StateManagement","Provider","withAuthorization","condition","WithAuthorization","pathName","pathname","split","removeItem","Consumer","compose","withRouter","InfoCard","styleClass","Skeleton","animation","gutterBottom","title","toUpperCase","lg","male","female","type2Val","length","map","pro","i","count","Title","children","FetchDistinctProvince","FetchTopProvince","FetchUserMobileAPI","Error","userList","userCount","listOfUsers","Month","farmerCount","nonFarmerCount","completedPruning","farmerCompletedPruning","percentageCompletedPruning","farmerPercentageCompletedPruning","passedPruning","farmerPassedPruning","percentagePassedPruning","farmerPercentagePassedPruning","completedFertilizing","farmerCompletedFertilizing","percentageCompletedFertilizing","farmerPercentageCompletedFertilizing","male_farmerPercentageCompletedFertilizing","female_farmerPercentageCompletedFertilizing","passedFertilizing","farmerPassedFertilizing","percentagePassedFertilizing","farmerPercentagePassedFertilizing","male_farmerCount","male_nonFarmerCount","male_passedPruning","male_farmerPassedPruning","male_percentagePassedPruning","male_farmerPercentagePassedPruning","male_completedPruning","male_farmerCompletedPruning","male_percentageCompletedPruning","male_farmerPercentageCompletedPruning","male_completedFertilizing","male_farmerCompletedFertilizing","male_percentageCompletedFertilizing","male_passedFertilizing","male_farmerPassedFertilizing","male_percentagePassedFertilizing","male_farmerPercentagePassedFertilizing","female_farmerCount","female_nonFarmerCount","female_passedPruning","female_farmerPassedPruning","female_percentagePassedPruning","female_farmerPercentagePassedPruning","female_completedPruning","female_farmerCompletedPruning","female_percentageCompletedPruning","female_farmerPercentageCompletedPruning","female_completedFertilizing","female_farmerCompletedFertilizing","female_percentageCompletedFertilizing","female_passedFertilizing","female_farmerPassedFertilizing","female_percentagePassedFertilizing","female_farmerPercentagePassedFertilizing","currentSelectedProvince","NewUsersChart","_isMounted","useTheme","newUser","oldUser","newCounter","oldCounter","currentYear","setUserData","newData","oldData","chartData","setChartData","newChartData","setNewChartData","fixedHeightPaperLarge","clsx","fixedHeightPaper","infoCardClass","provinceList","selectedFilter","filterChanged","provinceListFetched","filterData","setFilterData","topProvinceList","topProvince","SetTopProvince","farmerCercentageCompletedFertilizing","male_farmerCercentageCompletedFertilizing","female_farmerCercentageCompletedFertilizing","appData","setAppData","ProcessData","result","CheckIsNaNAndDivide","max","isNaN","Math","floor","key","d","currYear","toString","newUserCounts","getMonth","oldUserCounts","newUserList","oldUserList","filteredList","filter","user","province","forEach","month","index","ncount","ocount","createdAt","userMonth","currentUserMonth","parseInt","lastLogin","currYearHeader","counters","temp","createData","createNewUserData","slice","createOldUserData","PutData","useEffect","FetchTopProvinceData","FetchFilterData","FetchData","InputLabel","htmlFor","NativeSelect","ResponsiveContainer","LineChart","top","right","bottom","left","options","maintainAspectRatio","XAxis","dataKey","stroke","text","Label","offset","YAxis","angle","textAnchor","fill","CartesianGrid","strokeDasharray","Tooltip","content","CustomTooltip","Line","dot","active","amount","UserList","firebase","responsiveFontSizes","createMuiTheme","typography","fontFamily","join","overrides","MuiAppBar","colorPrimary","MuiListSubheader","root","ActiveToggleFirebase","dbType","self","newStatus","ToggleWebUser","refreshHandler","ToggleMobilebUser","green","inactive","DeleteButtonFirebase","handleOpenModal","handleCloseModal","handleOpenModal2","reconfirm","handleCloseModal2","OnSubmitModal","same","deleteUser","startIcon","CheckUser","questionPruningJSON","questionFertilizingJSON","DatabaseMapCheck","GetOptionVal","GetPreQuestionAnswer","qID","aID","module","mapped","qNo","q","questionjson","questions","question","questionID","questionText","optionText","GetPostQuestionAnswer","num","getModalStyle","transform","CreatePreTableData","ans","ques","quesNo","createPreData","CreatePostTableData","po","res","tempt","attempt","iteratorMax","j","FirebaseInfoModal","landSize","ls","farmerAssociation","fa","farmerGroup","fg","dataMain","pre","preHar","postHar","preFetch","postFetch","TableStates","SetTableData","modalStyle","preQuesNo","preA","preQ","r","preAnsFertilizing","preQuesFertilizing","preQuesNoFertilizing","poHar","rHar","mod","preID","mapPreQues","pcount","poID","poR","mapPostQues","rID","tempPre","tempPost","tempPostHar","tempPreHar","preIDFertilizing","mapPreQuesFertilizing","poIDFertilizing","poRFertilizing","postFertilizing","mapPostQuesFertilizing","rIDFertilizing","columnsSec","sort","columnsTer","customToolbarSelect","filterType","print","viewColumns","selectableRows","MUIDataTableSelectCell","expandDisabled","visibility","IconButton","aria-label","columns","Modal","aria-describedby","moment","format","CreateTableData","userName","emailAddress","phoneNumber","lastLogOut","country","district","modulesPassed","modulesCompleted","averageProduction","averageHarvest","associateId","em","isFarmer","gender","CheckForNull","baseProduction","baseProductionPerLandSize","but","c","pv","ap","ah","bp","round","Number","EPSILON","bpl","loadingData","CircularProgress","download","CreateTable","passData","rowsExpanded","refresh","RefreshHandler","ref","tableData","componentDidMount","tmpData","tPassData","toDateString","_key","modID","l","login","lastLogout","FetchDataMobile","TableHeader","errorText","errorType","ErrorHandler","styleFixedHeightLarge","paperLarge","includes","fixedHeightPaperSmall","styleFixedHeight","FirebaseEditModal","startUsername","uname","startOrg","org","NameUpdater","useContext","NameUpdaterContext","saveBut","SetSaveStatus","SetUsername","SetOrg","onChangeModal","UpdateWebUser_Name_Org","createTableData","togAct","noData","isLoading","ll","adminList","adminListReceived","header","passwordOne","passwordTwo","isActive","crypto","msCrypto","CreatePassword","wishList","Array","from","getRandomValues","Uint32Array","x","validEmailRegEx","isValidEmail","usernameRegEx","isValidUsername","uHelper","formError","formErrorState","usernameForm","emailForm","orgForm","IsSubmitWorking","RefreshCall","totalAppUsers","passwordOneForm","passwordTwoForm","setTimeout","noValidate","hidden","readOnly","AdminPage","isValid","ChangePasswordUI","newPassword","codeString","token","passwordRepeat","strongRegex","RegExp","isInvalidPassword","pHelper","GoToSignIn","ChangePasswordWithUI","DownloadCert","shouldDownload","setShouldDownload","downloadImage","canvas","document","getElementById","ctx","getContext","img","onload","drawImage","font","fillStyle","fillText","fillRect","b64Code","toDataURL","createElement","click","src","certENG","lastSignIn","setData","setPassData","setRowsExpanded","setRefresh","fetchUserData","formatLastLogin","getModulesData","getDistrict","moduleResults","Object","values","results","score","updatedResponse","ViewImage","imageURL","alt","questionPruningJson","questionFertilizingJson","questionIsImage","questionImageURL","op1","op2","op3","op4","cA","currentQuestion","quesData","quesDataHar","tableDataHar","correctAnswer","EcocoaAboutView","divContainer","firstLogin","styles","NavBarList","List","subheader","ListSubheader","ListItem","button","ListItemIcon","ListItemText","Info","Assignment","Public","Visibility","PermMedia","SupervisorAccount","People","AdminListItems","UserListItems","ImgMediaCard","Card","CardActionArea","charAt","drawerWidth","appBar","zIndex","drawer","transition","transitions","create","easing","sharp","duration","leavingScreen","appBarShift","enteringScreen","menuButton","hide","flexShrink","whiteSpace","drawerClose","overflowX","breakpoints","up","toolbar","justifyContent","mixins","search","borderRadius","shape","fade","common","white","searchIcon","pointerEvents","inputRoot","inputInput","paddingLeft","DashboardView","innerWidth","setWidth","thisPage","retVal","loc","ReadHeader","handleWindowResize","addEventListener","handleDrawerClose","removeEventListener","SetError","AppBar","Toolbar","edge","noWrap","Breadcrumbs","separator","NavigateNext","SignOut","Drawer","ChevronLeft","nameUpdate","Divider","drawerList","pt","list","interceptors","use","originalRequest","url","Promise","reject","DirectionComp","dir","useReducer","action","ThemeProvider","path","exact","HomePage","AppUsers","PostAssesmentQuestions","Certificate","EcocoaAbout","DashboardViewer","ReactDOM","render","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.ad23bcd9.chunk.js","sourcesContent":["// 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 http://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.1/8 is 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 http://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 http://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 .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.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport PropTypes from 'prop-types'\r\nimport MuiAlert from \"@material-ui/lab/Alert\";\r\nimport SnackbarBase from '@material-ui/core/Snackbar';\r\n\r\nfunction Alert(props) {\r\n return ;\r\n}\r\n\r\nexport default function Snackbar(props) {\r\n const [open, setOpen] = React.useState(true);\r\n //const [messageInfo, setMessageInfo] = React.useState(undefined);\r\n\r\n const handleCloseAlert = (event, reason) => {\r\n // console.log(reason)\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n setOpen(false);\r\n };\r\n\r\n // const handleExited = () => {\r\n // setMessageInfo(undefined);\r\n // };\r\n\r\n return {\r\n handleCloseAlert(event, reason);\r\n if (props.onClose)\r\n props.onClose()\r\n }} {...props}>\r\n {\r\n handleCloseAlert(event, reason);\r\n if (props.onClose)\r\n props.onClose()\r\n }} severity={props.severity}>\r\n {props.message}\r\n \r\n \r\n}\r\n\r\nSnackbar.propTypes = {\r\n onClose: PropTypes.func,\r\n}\r\n\r\nSnackbar.defaultProps = {\r\n onClose: undefined\r\n}","// export const BASE_URL = 'https://e-cocoa-dashboard.azurewebsites.net/api';\r\n// export const BASE_URL ='http://localhost:3001/api';\r\nexport const BASE_URL = \"https://ecocoa.olamdigital.com/api\";\r\n// export const BASE_URL = \"http://10.102.16.4:3001/api\";","import { BASE_URL } from '../constants/constants';\r\nrequire('dotenv').config();\r\nconst axios = require('axios');\r\n\r\nexport async function CheckIfTokenIsValid(payload) {\r\n return await axios.post(BASE_URL + \"/checkiftokenisvalid\", payload)\r\n .then(function (response) {\r\n // console.log(response);\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n // console.log(error);\r\n });\r\n}\r\n\r\nexport async function UpdatePassword(payload) {\r\n return await axios.post(BASE_URL + \"/updatepassword\", payload)\r\n .then(function (response) {\r\n // console.log(response);\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n // console.log(error);\r\n });\r\n}\r\n\r\nexport async function SendResetPasswordMail(payload) {\r\n return await axios.post(BASE_URL + \"/resetpassword\", payload)\r\n .then(function (response) {\r\n // console.log(response);\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n // console.log(error);\r\n });\r\n}","import React from \"react\";\r\n//import { Link } from \"react-router-dom\";\r\n// import { withFirebase } from \"../Firebase\";\r\nimport { TextField, Button } from \"@material-ui/core\";\r\n//import Modal from \"@material-ui/core/Modal\";\r\nimport Snackbar from \"../Common/Snackbar\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport * as ResetPasswordHelper from \"../../helpers/ResetPasswordHelper\";\r\n\r\n\r\nfunction PasswordForgetPage(props) {\r\n const [open, setOpen] = React.useState(false);\r\n const [emailF, setEmail] = React.useState(\"\");\r\n const [eError, setEmailError] = React.useState(\"\");\r\n const [submitError, setSubmitError] = React.useState(null);\r\n const [sev, setSeverity] = React.useState(\"error\");\r\n\r\n const handleOpen = () => {\r\n setSubmitError(null);\r\n setEmail(\"\")\r\n setEmailError(\"\")\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const OnSubmitModal = (event) => {\r\n setEmailError(emailF === \"\" ? \"Please enter an Email.\" : \"\");\r\n if (!isInvalidEmail || eError !== \"\") {\r\n return;\r\n } else {\r\n let payload = {\r\n email: emailF\r\n };\r\n ResetPasswordHelper.SendResetPasswordMail(payload).then(response => {\r\n if (response) {\r\n if (response.status === 200) {\r\n setSeverity(\"success\");\r\n setSubmitError({\r\n message: \"Email successfully sent!\"\r\n });\r\n handleClose();\r\n }\r\n else {\r\n setSeverity(\"error\");\r\n setSubmitError(response);\r\n }\r\n }\r\n });\r\n \r\n }\r\n event.preventDefault();\r\n };\r\n\r\n const onChangeModal = (event) => {\r\n setEmail(event.target.value);\r\n };\r\n\r\n var validEmailRegEx = /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+([.][A-Z0-9_'%=+!`#~$*?^{}&|-]+)*@[A-Z0-9-]+(\\.[A-Z0-9-]+)+$/i;\r\n var isInvalidEmail = emailF === \"\" ? true : validEmailRegEx.test(emailF);\r\n var eHelper = !isInvalidEmail ? \"The Email format is invalid.\" : \"\";\r\n\r\n const body = (\r\n
\r\n \r\n Reset Password\r\n \r\n \r\n Please enter your registered email address and we will email you instructions on how to reset your password.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {submitError && (\r\n {\r\n setSubmitError(null);\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 Forgot Password?\r\n \r\n {body}\r\n \r\n );\r\n}\r\n\r\n// const PasswordForgetLink = withFirebase(PasswordForgetPage);\r\nconst PasswordForgetLink = (PasswordForgetPage);\r\n\r\nexport default PasswordForgetPage;\r\n\r\nexport { PasswordForgetLink };\r\n","export const SIGN_UP = '/signup';\r\nexport const SIGN_IN = '/signin';\r\nexport const LANDING = '/landing';\r\nexport const HOME = '/home';\r\nexport const APPUSERS = '/appusers';\r\nexport const ADMIN = '/admin';\r\nexport const PASSWORD_FORGET = '/pw-forget';\r\nexport const DASHBOARD = '/dashboard';\r\nexport const POSTASSESMENT ='/postassesmentquestions';\r\nexport const ECOCOAABOUT = '/ecocoaabout';\r\nexport const DASHBOARDVIEWER = '/dashboardviewer';\r\nexport const PASSWORD_CHANGE = '/changepassword';\r\nexport const CERTIFICATE = '/certificates';","\r\nimport React from \"react\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nexport default function Copyright() {\r\n function handleClick(e) {\r\n e.preventDefault();\r\n }\r\n\r\n return (\r\n \r\n {'Copyright © '}\r\n \r\n e-cocoa\r\n {' '}\r\n {new Date().getFullYear()}\r\n {'.'}\r\n \r\n );\r\n}","import { makeStyles } from \"@material-ui/core/styles\";\r\n//import theme from '../Common/theme';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n // drawerPaper: {\r\n // position: \"relative\",\r\n // whiteSpace: \"nowrap\",\r\n // width: drawerWidth,\r\n // transition: theme.transitions.create(\"width\", {\r\n // easing: theme.transitions.easing.sharp,\r\n // duration: theme.transitions.duration.enteringScreen,\r\n // }),\r\n // backgroundColor: theme.palette.primary.main\r\n // },\r\n listStyle: {\r\n textDecoration: \"none\",\r\n color: theme.palette.primary.contrastText,\r\n },\r\n drawerListSubheaderRoot: {\r\n color: theme.palette.primary.contrastText,\r\n },\r\n // container: {\r\n // //padding: theme.spacing(4),\r\n // // paddingBottom: theme.spacing(4),\r\n // //width: \"2000vh\",\r\n // },\r\n paper: {\r\n padding: theme.spacing(2),\r\n display: \"flex\",\r\n overflow: \"auto\",\r\n flexDirection: \"column\",\r\n },\r\n fixedHeightSmall: {\r\n //height: 200,\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"stretch\",\r\n width: \"100%\",\r\n flexGrow: 1,\r\n },\r\n fixedHeightExtraLarge: {\r\n //height: 650,\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"stretch\",\r\n width: \"100%\",\r\n flexGrow: 1,\r\n },\r\n link: {\r\n textDecoration: \"none\",\r\n color: theme.palette.primary.main,\r\n },\r\n fixedHeight: {\r\n //height: 240,\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"stretch\",\r\n width: \"100%\",\r\n flexGrow: 1,\r\n },\r\n fixedHeightLarge: {\r\n //height: 440,\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"stretch\",\r\n width: \"100%\",\r\n flexGrow: 1,\r\n },\r\n infoCard: {\r\n // flexGrow: 1,\r\n // backgroundColor: theme.palette.primary.main,\r\n // color: theme.palette.primary.contrastText\r\n },\r\n snack: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"stretch\",\r\n width: \"100%\",\r\n height: 50,\r\n },\r\n chart: {\r\n height: 240,\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"stretch\",\r\n width: \"100%\",\r\n flexGrow: 1,\r\n },\r\n rootSignIn: {\r\n height: \"100vh\",\r\n // flexGrow: 1,\r\n },\r\n image1: {\r\n // backgroundImage: 'URL(\"IFC-CMCO_Horizontal_RGB-high.jpg\")',\r\n backgroundImage: 'URL(\"olam-logo.png\")',\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundSize: \"contain\",\r\n backgroundPosition: \"right\",\r\n // backgroundColor:\r\n // theme.palette.type === \"light\"\r\n // ? theme.palette.grey[50]\r\n // : theme.palette.grey[900],\r\n // width: '100%',\r\n width: \"10vw\",\r\n height: \"10vh\",\r\n marginLeft: \"7vw\",\r\n marginRight: \"3vw\"\r\n\r\n },\r\n image2: {\r\n backgroundImage: 'URL(\"crowde-logo.png\")',\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundSize: \"contain\",\r\n backgroundPosition: \"left\",\r\n // backgroundColor:\r\n // theme.palette.type === \"light\"\r\n // ? theme.palette.grey[50]\r\n // : theme.palette.grey[900],\r\n width: \"11vw\",\r\n height: \"10vh\",\r\n paddingTop: \"1vh\",\r\n marginRight: \"7vw\",\r\n marginLeft:\"1vw\"\r\n\r\n },\r\n paperSignIn: {\r\n margin: theme.spacing(8, 4),\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n avatarSignIn: {\r\n margin: theme.spacing(1),\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n formSignIn: {\r\n width: \"100%\", // Fix IE 11 issue.\r\n marginTop: theme.spacing(1),\r\n },\r\n submitSignIn: {\r\n margin: theme.spacing(3, 0, 2),\r\n },\r\n bgSignIn: {\r\n backgroundImage: 'URL(\"WebCover.jpg\")',\r\n //idth: \"50%\",\r\n //height: \"100%\",\r\n //position: \"absolute\",\r\n //backgroundPosition: \"center\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"absolute\",\r\n backgroundSize: \"cover\",\r\n //display: \"flex\",\r\n },\r\n paperForgotPassword: {\r\n position: \"relative\",\r\n width: \"30%\",\r\n backgroundColor: theme.palette.background.paper,\r\n border: \"2px solid #000\",\r\n boxShadow: theme.shadows[5],\r\n padding: theme.spacing(2, 4, 3),\r\n },\r\n rootUserCard: {\r\n display: \"flex\",\r\n \"& > *\": {\r\n margin: theme.spacing(1),\r\n },\r\n color: theme.palette.getContrastText(theme.palette.primary.main),\r\n backgroundColor: theme.palette.primary.main,\r\n },\r\n rootUserAvatar: {\r\n backgroundColor: \"#00ADE4\",\r\n },\r\n paperModal: {\r\n position: \"relative\",\r\n width: \"30%\",\r\n backgroundColor: theme.palette.background.paper,\r\n border: \"2px solid #000\",\r\n boxShadow: theme.shadows[5],\r\n padding: theme.spacing(2, 4, 3),\r\n },\r\n viewImageModal: {\r\n position: \"relative\",\r\n width: \"40%\",\r\n backgroundColor: theme.palette.background.paper,\r\n border: \"2px solid #000\",\r\n boxShadow: theme.shadows[5],\r\n padding: theme.spacing(2, 4, 3),\r\n },\r\n paperModal2: {\r\n position: \"relative\",\r\n width: \"80%\",\r\n height: \"85%\",\r\n backgroundColor: theme.palette.background.paper,\r\n border: \"2px solid #000\",\r\n boxShadow: theme.shadows[5],\r\n padding: theme.spacing(2, 4, 3),\r\n overflow: \"auto\",\r\n },\r\n mediumBoldFont : {\r\n fontSize: \"8em\",\r\n fontWeight: \"bold\",\r\n textTransform: \"none\",\r\n fontStyle: \"normal\",\r\n textDecoration: \"none\",\r\n lineHeight: \"2em\",\r\n }\r\n}));\r\n\r\nexport { useStyles };\r\n","export const SUPERADMIN = 'SUPERADMIN';\r\nexport const ADMIN = 'ADMIN';","import React from 'react';\r\nimport Button from \"@material-ui/core/Button\";\r\nimport authStateChange from \"../Session/stateManagement\";\r\nimport { LogoutWebUserKeycloak } from \"../../helpers/UserHelper\";\r\n\r\nconst SignOutButton = ({ errorHandler }) => (\r\n\r\n \r\n);\r\n\r\nexport function SignOutHelper() {\r\n localStorage.clear();\r\n authStateChange(null, null, null, () => {\r\n ;\r\n }, () => {\r\n ;\r\n });\r\n}\r\n\r\nexport const DoSignOut = () => {\r\n // alert(\"Signing out\");\r\n LogoutWebUserKeycloak().then(response => {\r\n localStorage.clear();\r\n authStateChange(null, null, null, () => {\r\n ;\r\n }, () => {\r\n ;\r\n });\r\n });\r\n\r\n\r\n\r\n};\r\n\r\n// const SignOutButton = ({ errorHandler }) => (\r\n\r\n// \r\n// );\r\n\r\n// export function SignOutHelper (){\r\n// localStorage.clear();\r\n// authStateChange(null,null,null,() => {\r\n// ;\r\n// }, ()=>{\r\n// ;\r\n// });\r\n// }\r\n\r\n// export const DoSignOut = () => {\r\n// localStorage.clear();\r\n// authStateChange(null,null,null,() => {\r\n// ;\r\n// }, ()=>{\r\n// ;\r\n// });\r\n// };\r\n\r\nexport default (SignOutButton);\r\n","import { BASE_URL } from '../constants/constants';\r\nimport * as ROLES from \"../constants/roles\";\r\nimport { CheckForTimeOut } from \"../components/Session/stateManagement\";\r\nrequire('dotenv').config();\r\nconst axios = require('axios');\r\n\r\n\r\n\r\nexport async function DoLogin(payload) {\r\n\r\n return await axios.post(BASE_URL + \"/login\", payload)\r\n .then(response => {\r\n if (response.status === 200)\r\n return response.data;\r\n else\r\n return null;\r\n }).catch(error => {\r\n return error.response;\r\n });\r\n}\r\n\r\nexport async function LogoutWebUserKeycloak() {\r\n const refreshToken = localStorage.getItem(\"refreshToken\");\r\n const accessToken = localStorage.getItem('auth_token');\r\n let payload = {\r\n refreshToken: refreshToken\r\n };\r\n return await axios.post(BASE_URL + \"/logoutkeycloak\", payload, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(response => { \r\n return response;\r\n }).catch(error => {\r\n console.log(error);\r\n return error.response;\r\n });\r\n}\r\n\r\nexport async function RegisterWebUser(payload) {\r\n const accessToken = localStorage.getItem('auth_token');\r\n //console.log(accessToken);\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n return await axios.post(BASE_URL + \"/register\", payload, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(function (response) {\r\n //console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n}\r\n\r\nexport async function RegisterWebUserDashboard(payload) {\r\n const accessToken = localStorage.getItem('auth_token');\r\n //console.log(accessToken);\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n return await axios.post(BASE_URL + \"/register\", payload, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(function (response) {\r\n //console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n if (error.response.status === 406) {\r\n let res = {};\r\n let userRole = error.response.data.userRole;\r\n\r\n if (userRole.indexOf(ROLES.SUPERADMIN) > -1) {\r\n res = {\r\n data: {\r\n success: false,\r\n message: \"User Already SuperAdmin !\"\r\n }\r\n };\r\n return res;\r\n }\r\n\r\n if (userRole.indexOf(ROLES.ADMIN) > -1) {\r\n res = {\r\n data: {\r\n success: false,\r\n message: \"User Already Admin !\"\r\n }\r\n };\r\n return res;\r\n }\r\n\r\n if (userRole.indexOf(\"NULL\") > -1) {\r\n res = {\r\n data: {\r\n success: false,\r\n message: \"User Already Viewer !\"\r\n }\r\n };\r\n return res;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport async function ToggleWebUser(payload) {\r\n const accessToken = localStorage.getItem('auth_token');\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n return await axios.post(BASE_URL + \"/togglewebuser\", payload, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(function (response) {\r\n //console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n //console.log(error);\r\n });\r\n }\r\n\r\n}\r\n\r\nexport async function ToggleMobilebUser(payload) {\r\n const accessToken = localStorage.getItem('auth_token');\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n return await axios.post(BASE_URL + \"/togglemobileuser\", payload, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(function (response) {\r\n //console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n //console.log(error);\r\n });\r\n }\r\n}\r\n\r\nexport async function UpdateWebUser_Name_Org(payload) {\r\n const accessToken = localStorage.getItem('auth_token');\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n return await axios.post(BASE_URL + \"/updatewebuser_name_org\", payload, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(function (response) {\r\n //console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n //console.log(error);\r\n });\r\n }\r\n}\r\nexport async function GetAdminList() {\r\n const accessToken = localStorage.getItem(\"auth_token\");\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n if (accessToken) {\r\n return await axios.post(BASE_URL + \"/fetchadminusers\", {}, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`,\r\n 'Content-Type': 'application/json'\r\n }\r\n })\r\n .then(function (response) {\r\n //console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n //console.log(error);\r\n });\r\n }\r\n else {\r\n //console.log(\" No Access Token \");\r\n }\r\n }\r\n}\r\n\r\nexport async function GetDashboardViewerList() {\r\n const accessToken = localStorage.getItem(\"auth_token\");\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n if (accessToken) {\r\n return await axios.post(BASE_URL + \"/fetchdashboardviewerusers\", {}, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`,\r\n 'Content-Type': 'application/json'\r\n }\r\n })\r\n .then(function (response) {\r\n //console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n //console.log(error);\r\n });\r\n }\r\n else {\r\n //console.log(\" No Access Token \");\r\n }\r\n }\r\n}\r\n\r\nexport async function DeleteUser(payload) {\r\n const accessToken = localStorage.getItem('auth_token');\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n return await axios.delete(BASE_URL + \"/\" + payload, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(function (response) {\r\n //console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n //console.log(error);\r\n });\r\n }\r\n}\r\n\r\nexport async function DeleteWebUser(payload) {\r\n const accessToken = localStorage.getItem('auth_token');\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n return await axios.post(BASE_URL + \"/deletewebuser\", payload, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(function (response) {\r\n //console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n //console.log(error);\r\n });\r\n }\r\n}\r\n\r\nexport async function TokenTest() {\r\n const accessToken = localStorage.getItem('auth_token');\r\n //console.log(accessToken);\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n return await axios.post(BASE_URL + \"/tokentest\", {}, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(function (response) {\r\n //console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n //console.log(error);\r\n });\r\n }\r\n}","import { DoSignOut } from \"../SignOut\";\r\nconst userTimeout = 15; // in minutes\r\nconst userTimeoutInMiliseconds = userTimeout * 60 * 1000;\r\n\r\nexport function SetLocalStorage(authUser, authToken, refreshToken) {\r\n var now = new Date().getTime();\r\n const userData = {\r\n time: now,\r\n authUser: authUser,\r\n };\r\n localStorage.setItem(\"authUser\", JSON.stringify(userData));\r\n localStorage.setItem(\"auth_token\", authToken);\r\n localStorage.setItem(\"refreshToken\", refreshToken);\r\n}\r\n\r\nexport function CheckForTimeOut(userTime) {\r\n var now = new Date().getTime();\r\n if (now - userTime > userTimeoutInMiliseconds) {\r\n DoSignOut();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport default function authStateChange(authUser, accessToken, refreshToken, next, fallback) {\r\n if (authUser) {\r\n SetLocalStorage(authUser, accessToken, refreshToken);\r\n next();\r\n window.location.reload();\r\n } else {\r\n fallback();\r\n window.location.reload();\r\n }\r\n}\r\n\r\n\r\n\r\n","import React, { Component } from \"react\";\r\n\r\nimport { PasswordForgetLink } from \"../PasswordForget\";\r\nimport * as ROUTES from \"../../constants/routes\";\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Copyright from \"../Common/Copyright\";\r\nimport Snackbar from \"../Common/Snackbar\";\r\nimport { useStyles } from \"../Common/Styles\";\r\nimport { DoLogin, TokenTest } from \"../../helpers/UserHelper\";\r\nimport authStateChange from \"../Session/stateManagement\";\r\n\r\n\r\nfunction SignIn(props) {\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n {\r\n \r\n }\r\n
\r\n );\r\n}\r\n\r\n\r\nconst INITIAL_STATE = {\r\n email: \"\",\r\n password: \"\",\r\n error: null,\r\n\r\n passwordHidden: \"\",\r\n showPassword: false,\r\n isSubmitted: false,\r\n};\r\n\r\n\r\nlet historyProp = null;\r\n\r\nclass SignInUI extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { ...INITIAL_STATE };\r\n this.testfunc = this.testfunc.bind(this);\r\n // this.DoLogin = this.DoLogin.bind(this);\r\n historyProp = this.props.history;\r\n }\r\n\r\n GotoLocation(location) {\r\n historyProp.push(location);\r\n }\r\n\r\n IsSubmitHandler(val) {\r\n this.setState({ isSubmitted: val });\r\n }\r\n\r\n onChange = (event) => {\r\n var errorName = [event.target.name] + \"Form\";\r\n this.setState({\r\n [event.target.name]: event.target.value,\r\n [errorName]: \"\",\r\n });\r\n };\r\n\r\n onSubmit = (event) => {\r\n\r\n event.preventDefault();\r\n this.IsSubmitHandler(true);\r\n\r\n\r\n const { email, password } = this.state;\r\n let payload = {\r\n email: email,\r\n password: password\r\n };\r\n DoLogin(payload).then(response => {\r\n // alert(response);\r\n\r\n if (response) {\r\n // alert(response.message+ \" \" + response.status);\r\n if (response.status === 200) {\r\n // alert(\"done\");\r\n let authUser = {\r\n uid: response.userData._id,\r\n roles: response.userData.roles,\r\n username: response.userData.username,\r\n email: response.userData.email,\r\n }\r\n\r\n this.setState({ error: { message: \"Login Successful!\" } });\r\n // console.log(\"acc \"+response.accessToken+ \" ref : \"+response.refreshToken);\r\n\r\n // console.log(\"login response found\");\r\n // {}\r\n authStateChange(authUser, response.accessToken, response.refreshToken, (authUser) => {\r\n this.GotoLocation(ROUTES.HOME);\r\n }, () => {\r\n this.GotoLocation(ROUTES.SIGN_IN);\r\n });\r\n // localStorage.setItem(\"authUser\", authUser);\r\n // this.props.history.push(ROUTES.HOME);\r\n // authStateChange(authUser, this.GotoLocation, this.GotoLocation);\r\n }\r\n else if (response.status === 406) {\r\n // alert(JSON.stringify(response) + \" asdasddas \" + response.data.message);\r\n this.setState({ error: { message: (response.data.message === undefined ? \"Invalid Credentials\" : response.data.message) }, email: \"\", password: \"\" });\r\n this.IsSubmitHandler(false);\r\n }\r\n else {\r\n // alert(response.message);\r\n // alert(\"fail\");\r\n this.IsSubmitHandler(false);\r\n this.setState({ error: { message: \"Oops something went wrong\" }, email: \"\", password: \"\" });\r\n }\r\n }\r\n else {\r\n // alert(\"fail\");\r\n this.IsSubmitHandler(false);\r\n\r\n this.setState({ error: { message: \"Oops something went wrong\" }, email: \"\", password: \"\" });\r\n }\r\n\r\n });\r\n\r\n\r\n };\r\n handleCloseAlert = (event, reason) => {\r\n if (reason === \"clickaway\") {\r\n return;\r\n }\r\n\r\n this.setState({\r\n error: null,\r\n });\r\n };\r\n\r\n testfunc() {\r\n // console.log(\"testfunc\");\r\n TokenTest();\r\n }\r\n\r\n render() {\r\n const { email, password } = this.state;\r\n\r\n const isInvalid = password === \"\" || email === \"\";\r\n const classes = this.props.value;\r\n var validEmailRegEx = /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+([.][A-Z0-9_'%=+!`#~$*?^{}&|-]+)*@[A-Z0-9-]+(\\.[A-Z0-9-]+)+$/i;\r\n var isInvalidEmail = email === \"\" ? true : validEmailRegEx.test(email);\r\n var eHelper = !isInvalidEmail ? \"Email Address Invalid\" : \"\";\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\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 \r\n \r\n \r\n Sign In\r\n \r\n {/* */}\r\n {/* */}\r\n \r\n \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.error && (\r\n {\r\n this.setState({ error: null });\r\n }}\r\n />\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst SignInWithUI = (SignIn);\r\n\r\nexport default (SignInWithUI);","import React from 'react';\r\n\r\nconst AuthUserContext = React.createContext(null);\r\n\r\nexport default AuthUserContext;\r\n","import React from \"react\";\r\nimport AuthUserContext from \"./context\";\r\n\r\nimport * as StateManagement from \"../Session/stateManagement\";\r\n\r\n\r\nlet userData = null;\r\nconst withAuthentication = (Component) => {\r\n class WithAuthentication extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n authUser: null,\r\n };\r\n userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (userData != null) {\r\n if (StateManagement.CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n this.state = {\r\n authUser: userData.authUser,\r\n };\r\n }\r\n \r\n }\r\n else {\r\n\r\n this.state = { authUser: null };\r\n localStorage.clear();\r\n \r\n }\r\n }\r\n\r\n SetLocalStorage(authUser) {\r\n var now = new Date().getTime();\r\n const userData = {\r\n time: now,\r\n authUser: authUser,\r\n };\r\n localStorage.setItem(\"authUser\", JSON.stringify(userData));\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n\r\n\r\n componentWillUnmount() {\r\n\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 return (WithAuthentication);\r\n};\r\n\r\nexport default withAuthentication;\r\n","import React from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { compose } from \"recompose\";\r\n\r\nimport AuthUserContext from \"./context\";\r\n\r\nimport * as ROUTES from \"../../constants/routes\";\r\nimport * as StateManagement from \"../Session/stateManagement\";\r\n\r\nconst withAuthorization = (condition) => (Component) => {\r\n class WithAuthorization extends React.Component {\r\n\r\n\r\n componentDidMount() {\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (userData) {\r\n if (!condition(userData.authUser)) {\r\n this.props.history.push(ROUTES.SIGN_IN);\r\n }\r\n if (userData != null) {\r\n StateManagement.CheckForTimeOut(userData.time);\r\n }\r\n }\r\n else {\r\n let pathName = window.location.pathname.split(\"&\");\r\n if (pathName[0] === ROUTES.PASSWORD_CHANGE) {\r\n localStorage.setItem(\"resetPasswordToken\", pathName[1]);\r\n this.props.history.push(ROUTES.PASSWORD_CHANGE);\r\n }\r\n else {\r\n localStorage.removeItem(\"authUser\");\r\n this.props.history.push(ROUTES.SIGN_IN);\r\n }\r\n }\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {(authUser) =>\r\n condition(authUser) ? : null\r\n }\r\n \r\n );\r\n }\r\n }\r\n\r\n return compose(withRouter)(WithAuthorization);\r\n};\r\n\r\nexport default withAuthorization;\r\n","import React from 'react';\r\nimport { Typography, Paper, Grid } from '@material-ui/core';\r\nimport { Skeleton } from '@material-ui/lab';\r\n\r\n\r\n\r\n\r\nexport default function InfoCard(props) {\r\n return (\r\n \r\n \r\n
\r\n {(props.val === -1 || props.val === \"-1%\") ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n props.type === undefined ? (\r\n \r\n {props.val}\r\n \r\n \r\n {props.title.toUpperCase()}\r\n \r\n
\r\n \r\n \r\n \r\n Male : {props.male}\r\n \r\n \r\n \r\n \r\n Female : {props.female}\r\n \r\n \r\n \r\n
) : (\r\n \r\n \r\n {props.title.toUpperCase()}\r\n \r\n\r\n \r\n \r\n {props.type2Val.length > -1 ? (\r\n props.type2Val.map((pro, i) => {\r\n return (\r\n \r\n \r\n \r\n {pro.name}\r\n \r\n \r\n \r\n \r\n : {pro.count}\r\n \r\n \r\n \r\n )\r\n // console.log(pro.name)\r\n\r\n })\r\n\r\n ) : (\r\n \r\n \r\n \r\n Not sufficient data\r\n \r\n \r\n\r\n \r\n )\r\n }\r\n \r\n\r\n \r\n )\r\n\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n}","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nexport default function Title(props) {\r\n return (\r\n //\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nTitle.propTypes = {\r\n children: PropTypes.node,\r\n};","import { BASE_URL } from '../constants/constants';\r\nimport { CheckForTimeOut } from \"../components/Session/stateManagement\";\r\n\r\nrequire('dotenv').config();\r\nconst axios = require('axios');\r\n\r\nexport async function FetchUserAPI() {\r\n const accessToken = localStorage.getItem(\"auth_token\");\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n if (accessToken) {\r\n\r\n return await axios.post(BASE_URL + \"/fetchusers\", {}, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(function (response) {\r\n // console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n // console.log(error);\r\n });\r\n }\r\n else {\r\n // console.log(\" no userdata helper \");\r\n }\r\n }\r\n}\r\n\r\nexport async function FetchDistinctProvince() {\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n const accessToken = localStorage.getItem(\"auth_token\");\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n if (accessToken) {\r\n\r\n return await axios.post(BASE_URL + \"/fetchdistinctprovince\", {}, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`,\r\n 'Content-Type': 'application/json'\r\n }\r\n })\r\n .then(function (response) {\r\n // console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n // console.log(error);\r\n });\r\n }\r\n else {\r\n // console.log(\" no userdata helper \");\r\n }\r\n }\r\n}\r\n\r\nexport async function FetchTopProvince() {\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n const accessToken = localStorage.getItem(\"auth_token\");\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n if (accessToken) {\r\n\r\n return await axios.post(BASE_URL + \"/fetchtopprovince\", {}, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`,\r\n 'Content-Type': 'application/json'\r\n }\r\n })\r\n .then(function (response) {\r\n // console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n // console.log(error);\r\n });\r\n }\r\n else {\r\n // console.log(\" no userdata helper \");\r\n }\r\n }\r\n}\r\n\r\nexport async function GetUserByProvince(payload) {\r\n const accessToken = localStorage.getItem('auth_token');\r\n var userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (CheckForTimeOut(userData.time)) {\r\n ;\r\n }\r\n else {\r\n\r\n return await axios.post(BASE_URL + \"/fetchbyprovince\", payload, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(function (response) {\r\n //console.log(response);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n //console.log(error);\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\nexport async function FetchUserMobileAPI() {\r\n try {\r\n const userData = JSON.parse(localStorage.getItem(\"authUser\"));\r\n const accessToken = localStorage.getItem(\"auth_token\");\r\n\r\n if (CheckForTimeOut(userData?.time)) {\r\n throw new Error(\"User session timed out\");\r\n }\r\n\r\n if (!accessToken) {\r\n throw new Error(\"Access token not found\");\r\n }\r\n\r\n const response = await axios.post(BASE_URL + \"/fetchusersmobile\", {}, {\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`,\r\n 'Content-Type': 'application/json'\r\n }\r\n })\r\n\r\n console.log(response);\r\n const userList = JSON.parse(response.data.userList)\r\n // slice the array to get only 10 users\r\n\r\n\r\n return { ...response, userList };\r\n } catch (error) {\r\n console.log(error);\r\n // throw new Error(\"Failed to fetch user mobile API\");\r\n }\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport clsx from \"clsx\";\r\nimport {\r\n useTheme,\r\n Grid,\r\n Paper,\r\n Button,\r\n InputLabel,\r\n NativeSelect,\r\n} from \"@material-ui/core\";\r\nimport Skeleton from \"@material-ui/lab/Skeleton\";\r\nimport InfoCard from \"../Common/InfoCard\";\r\nimport { useStyles } from \"../Common/Styles\";\r\nimport Title from \"../Common/Title\";\r\nimport {\r\n FetchUserMobileAPI,\r\n FetchDistinctProvince,\r\n FetchTopProvince,\r\n} from \"../../helpers/DashboardHelper.js\";\r\nimport { withAuthorization } from \"../Session\";\r\n\r\nimport {\r\n LineChart,\r\n Line,\r\n XAxis,\r\n YAxis,\r\n Label,\r\n Tooltip,\r\n ResponsiveContainer,\r\n CartesianGrid,\r\n} from \"recharts\";\r\n\r\nlet userCount;\r\nlet listOfUsers = [];\r\nconst Month = [\r\n \"Jan\",\r\n \"Feb\",\r\n \"Mar\",\r\n \"Apr\",\r\n \"May\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Aug\",\r\n \"Sep\",\r\n \"Oct\",\r\n \"Nov\",\r\n \"Dec\",\r\n];\r\n\r\nlet farmerCount = -1;\r\nlet nonFarmerCount = -1;\r\n\r\nlet completedPruning = -1;\r\nlet farmerCompletedPruning = -1;\r\nlet percentageCompletedPruning = -1;\r\nlet farmerPercentageCompletedPruning = -1;\r\nlet passedPruning = -1;\r\nlet farmerPassedPruning = -1;\r\nlet percentagePassedPruning = -1;\r\nlet farmerPercentagePassedPruning = -1;\r\n\r\nlet completedFertilizing = -1;\r\nlet farmerCompletedFertilizing = -1;\r\nlet percentageCompletedFertilizing = -1;\r\nlet farmerPercentageCompletedFertilizing = -1;\r\nlet male_farmerPercentageCompletedFertilizing = -1;\r\nlet female_farmerPercentageCompletedFertilizing = -1;\r\nlet passedFertilizing = -1;\r\nlet farmerPassedFertilizing = -1;\r\nlet percentagePassedFertilizing = -1;\r\nlet farmerPercentagePassedFertilizing = -1;\r\n\r\nlet male_farmerCount = -1;\r\nlet male_nonFarmerCount = -1;\r\nlet male_passedPruning = -1;\r\nlet male_farmerPassedPruning = -1;\r\nlet male_percentagePassedPruning = -1;\r\nlet male_farmerPercentagePassedPruning = -1;\r\nlet male_completedPruning = -1;\r\nlet male_farmerCompletedPruning = -1;\r\nlet male_percentageCompletedPruning = -1;\r\nlet male_farmerPercentageCompletedPruning = -1;\r\nlet male_completedFertilizing = -1;\r\nlet male_farmerCompletedFertilizing = -1;\r\nlet male_percentageCompletedFertilizing = -1;\r\nlet male_passedFertilizing = -1;\r\nlet male_farmerPassedFertilizing = -1;\r\nlet male_percentagePassedFertilizing = -1;\r\nlet male_farmerPercentagePassedFertilizing = -1;\r\n\r\nlet female_farmerCount = -1;\r\nlet female_nonFarmerCount = -1;\r\nlet female_passedPruning = -1;\r\nlet female_farmerPassedPruning = -1;\r\nlet female_percentagePassedPruning = -1;\r\nlet female_farmerPercentagePassedPruning = -1;\r\nlet female_completedPruning = -1;\r\nlet female_farmerCompletedPruning = -1;\r\nlet female_percentageCompletedPruning = -1;\r\nlet female_farmerPercentageCompletedPruning = -1;\r\nlet female_completedFertilizing = -1;\r\nlet female_farmerCompletedFertilizing = -1;\r\nlet female_percentageCompletedFertilizing = -1;\r\nlet female_passedFertilizing = -1;\r\nlet female_farmerPassedFertilizing = -1;\r\nlet female_percentagePassedFertilizing = -1;\r\nlet female_farmerPercentagePassedFertilizing = -1;\r\n\r\nlet currentSelectedProvince = \"null\";\r\nlet provinceList = [];\r\n\r\nexport const NewUsersChart = () => {\r\n let _isMounted = false;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const [userData, setUserData] = useState({\r\n newUser: [],\r\n oldUser: [],\r\n newCounter: [],\r\n oldCounter: [],\r\n currentYear: \"\",\r\n });\r\n\r\n const [chartData, setChartData] = useState({\r\n newData: [],\r\n oldData: [],\r\n });\r\n\r\n const [newChartData, setNewChartData] = useState([]);\r\n\r\n const fixedHeightPaperLarge = clsx(classes.paper, classes.fixedHeightLarge);\r\n const fixedHeightPaper = clsx(classes.paper, classes.chart);\r\n const infoCardClass = clsx(classes.paper, classes.infoCard);\r\n const [filterData, setFilterData] = useState({\r\n provinceList: [],\r\n selectedFilter: \"null\",\r\n filterChanged: false,\r\n provinceListFetched: false,\r\n });\r\n\r\n const [topProvince, SetTopProvince] = useState({\r\n topProvinceList: [],\r\n });\r\n\r\n const [appData, setAppData] = useState({\r\n farmerCount: -1,\r\n nonFarmerCount: -1,\r\n\r\n passedPruning: -1,\r\n farmerPassedPruning: -1,\r\n percentagePassedPruning: -1,\r\n farmerPercentagePassedPruning: -1,\r\n completedPruning: -1,\r\n farmerCompletedPruning: -1,\r\n percentageCompletedPruning: -1,\r\n farmerPercentageCompletedPruning: -1,\r\n\r\n completedFertilizing: -1,\r\n farmerCompletedFertilizing: -1,\r\n percentageCompletedFertilizing: -1,\r\n farmerCercentageCompletedFertilizing: -1,\r\n passedFertilizing: -1,\r\n farmerPassedFertilizing: -1,\r\n percentagePassedFertilizing: -1,\r\n farmerPercentagePassedFertilizing: -1,\r\n\r\n male_farmerCount: -1,\r\n male_nonFarmerCount: -1,\r\n male_passedPruning: -1,\r\n male_farmerPassedPruning: -1,\r\n male_percentagePassedPruning: -1,\r\n male_farmerPercentagePassedPruning: -1,\r\n male_completedPruning: -1,\r\n male_farmerCompletedPruning: -1,\r\n male_percentageCompletedPruning: -1,\r\n male_farmerPercentageCompletedPruning: -1,\r\n male_completedFertilizing: -1,\r\n male_farmerCompletedFertilizing: -1,\r\n male_percentageCompletedFertilizing: -1,\r\n male_farmerCercentageCompletedFertilizing: -1,\r\n male_passedFertilizing: -1,\r\n male_farmerPassedFertilizing: -1,\r\n male_percentagePassedFertilizing: -1,\r\n male_farmerPercentagePassedFertilizing: -1,\r\n\r\n female_farmerCount: -1,\r\n female_nonFarmerCount: -1,\r\n female_passedPruning: -1,\r\n female_farmerPassedPruning: -1,\r\n female_percentagePassedPruning: -1,\r\n female_farmerPercentagePassedPruning: -1,\r\n female_completedPruning: -1,\r\n female_farmerCompletedPruning: -1,\r\n female_percentageCompletedPruning: -1,\r\n female_farmerPercentageCompletedPruning: -1,\r\n female_completedFertilizing: -1,\r\n female_farmerCompletedFertilizing: -1,\r\n female_percentageCompletedFertilizing: -1,\r\n female_farmerCercentageCompletedFertilizing: -1,\r\n female_passedFertilizing: -1,\r\n female_farmerPassedFertilizing: -1,\r\n female_percentagePassedFertilizing: -1,\r\n female_farmerPercentagePassedFertilizing: -1,\r\n });\r\n\r\n async function FetchFilterData() {\r\n const response = await FetchDistinctProvince();\r\n const provinceList = response.data.provinceList;\r\n\r\n if (_isMounted) {\r\n setFilterData({\r\n provinceList: provinceList,\r\n provinceListFetched: true,\r\n });\r\n }\r\n }\r\n\r\n async function FetchTopProvinceData() {\r\n const response = await FetchTopProvince();\r\n\r\n if (_isMounted) {\r\n SetTopProvince({\r\n topProvinceList: response.data.topProvince,\r\n });\r\n }\r\n }\r\n\r\n async function FetchData() {\r\n const response = await FetchUserMobileAPI();\r\n const result = JSON.parse(response.data.userList);\r\n ProcessData(result);\r\n }\r\n\r\n function ProcessData(result) {\r\n userCount = result.length;\r\n listOfUsers = result;\r\n if (_isMounted) {\r\n farmerCount =\r\n male_farmerCount =\r\n female_farmerCount =\r\n nonFarmerCount =\r\n male_nonFarmerCount =\r\n female_nonFarmerCount =\r\n completedPruning =\r\n male_completedPruning =\r\n female_completedPruning =\r\n passedPruning =\r\n male_passedPruning =\r\n female_passedPruning =\r\n completedFertilizing =\r\n male_completedFertilizing =\r\n female_completedFertilizing =\r\n passedFertilizing =\r\n male_passedFertilizing =\r\n female_passedFertilizing =\r\n farmerCompletedPruning =\r\n male_farmerCompletedPruning =\r\n female_farmerCompletedPruning =\r\n farmerCompletedFertilizing =\r\n male_farmerCompletedFertilizing =\r\n female_farmerCompletedFertilizing =\r\n farmerPassedPruning =\r\n male_farmerPassedPruning =\r\n female_farmerPassedPruning =\r\n farmerPassedFertilizing =\r\n male_farmerPassedFertilizing =\r\n female_farmerPassedFertilizing =\r\n 0;\r\n for (var key in listOfUsers) {\r\n if (\r\n result[key][\"userData\"][\"isFarmer\"] === \"Farmer\" &&\r\n (currentSelectedProvince !== \"null\"\r\n ? result[key][\"userData\"][\"province\"] === currentSelectedProvince\r\n : true)\r\n ) {\r\n // console.log(selectedFilter != \"null\" ? result[key][\"userData\"][\"province\"] === selectedFilter : true);\r\n farmerCount += 1;\r\n\r\n if (result[key][\"userData\"][\"gender\"] === \"Male\") {\r\n male_farmerCount++;\r\n } else {\r\n female_farmerCount++;\r\n }\r\n\r\n //PRUNING DATA\r\n if (\r\n result[key][\"moduleResults\"][0][\"finishPostAssessment\"] === true\r\n ) {\r\n farmerPassedPruning += 1;\r\n if (result[key][\"userData\"][\"gender\"] === \"Male\") {\r\n male_farmerPassedPruning += 1;\r\n } else {\r\n female_farmerPassedPruning += 1;\r\n }\r\n }\r\n if (result[key][\"moduleResults\"][0][\"completedModule\"] === true) {\r\n farmerCompletedPruning += 1;\r\n if (result[key][\"userData\"][\"gender\"] === \"Male\") {\r\n male_farmerCompletedPruning += 1;\r\n } else {\r\n female_farmerCompletedPruning += 1;\r\n }\r\n }\r\n if (result[key][\"moduleResults\"][1] != null) {\r\n if (\r\n result[key][\"moduleResults\"][1][\"finishPostAssessment\"] === true\r\n ) {\r\n farmerPassedFertilizing += 1;\r\n if (result[key][\"userData\"][\"gender\"] === \"Male\") {\r\n male_farmerPassedFertilizing += 1;\r\n } else {\r\n female_farmerPassedFertilizing += 1;\r\n }\r\n }\r\n if (result[key][\"moduleResults\"][1][\"completedModule\"] === true) {\r\n farmerCompletedFertilizing += 1;\r\n if (result[key][\"userData\"][\"gender\"] === \"Male\") {\r\n male_farmerCompletedFertilizing += 1;\r\n } else {\r\n female_farmerCompletedFertilizing += 1;\r\n }\r\n }\r\n }\r\n } else if (\r\n currentSelectedProvince !== \"null\"\r\n ? result[key][\"userData\"][\"province\"] === currentSelectedProvince\r\n : true\r\n ) {\r\n nonFarmerCount += 1;\r\n if (result[key][\"userData\"][\"gender\"] === \"Male\") {\r\n male_nonFarmerCount += 1;\r\n } else {\r\n female_nonFarmerCount += 1;\r\n }\r\n }\r\n\r\n if (\r\n result[key][\"moduleResults\"][0][\"finishPostAssessment\"] === true &&\r\n (currentSelectedProvince !== \"null\"\r\n ? result[key][\"userData\"][\"province\"] === currentSelectedProvince\r\n : true)\r\n ) {\r\n passedPruning += 1;\r\n if (result[key][\"userData\"][\"gender\"] === \"Male\") {\r\n male_passedPruning += 1;\r\n } else {\r\n female_passedPruning += 1;\r\n }\r\n }\r\n if (\r\n result[key][\"moduleResults\"][0][\"completedModule\"] === true &&\r\n (currentSelectedProvince !== \"null\"\r\n ? result[key][\"userData\"][\"province\"] === currentSelectedProvince\r\n : true)\r\n ) {\r\n completedPruning += 1;\r\n if (result[key][\"userData\"][\"gender\"] === \"Male\") {\r\n male_completedPruning += 1;\r\n } else {\r\n female_completedPruning += 1;\r\n }\r\n }\r\n\r\n //FERTILIZING DATA\r\n if (\r\n result[key][\"moduleResults\"][1] != null &&\r\n (currentSelectedProvince !== \"null\"\r\n ? result[key][\"userData\"][\"province\"] === currentSelectedProvince\r\n : true)\r\n ) {\r\n if (\r\n result[key][\"moduleResults\"][1][\"finishPostAssessment\"] === true\r\n ) {\r\n passedFertilizing += 1;\r\n if (result[key][\"userData\"][\"gender\"] === \"Male\") {\r\n male_passedFertilizing += 1;\r\n } else {\r\n female_passedFertilizing += 1;\r\n }\r\n }\r\n if (\r\n result[key][\"moduleResults\"][1][\"completedModule\"] === true &&\r\n (currentSelectedProvince !== \"null\"\r\n ? result[key][\"userData\"][\"province\"] === currentSelectedProvince\r\n : true)\r\n ) {\r\n completedFertilizing += 1;\r\n if (result[key][\"userData\"][\"gender\"] === \"Male\") {\r\n male_completedFertilizing += 1;\r\n } else {\r\n female_completedFertilizing += 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function CheckIsNaNAndDivide(count, max) {\r\n return isNaN(Math.floor((count / max) * 100))\r\n ? 0\r\n : Math.floor((count / max) * 100);\r\n }\r\n\r\n percentageCompletedPruning = CheckIsNaNAndDivide(\r\n completedPruning,\r\n userCount\r\n ); //isNaN((completedPruning / userCount) * 100) ? 0 : (completedPruning / userCount) * 100);\r\n male_percentageCompletedPruning = CheckIsNaNAndDivide(\r\n male_completedPruning,\r\n userCount\r\n ); // isNaN(Math.floor((male_completedPruning / userCount) * 100)) ? 0 : Math.floor((male_completedPruning / userCount) * 100);\r\n female_percentageCompletedPruning = CheckIsNaNAndDivide(\r\n female_completedPruning,\r\n userCount\r\n ); // isNaN(Math.floor((female_completedPruning / userCount) * 100)) ? 0 : ;\r\n\r\n percentagePassedPruning = CheckIsNaNAndDivide(passedPruning, userCount); // isNaN((passedPruning / userCount) * 100) ? 0 : ;\r\n male_percentagePassedPruning = CheckIsNaNAndDivide(\r\n male_passedPruning,\r\n userCount\r\n ); // isNaN(Math.floor((male_passedPruning / userCount) * 100)) ? 0 : ;\r\n female_percentagePassedPruning = CheckIsNaNAndDivide(\r\n female_passedPruning,\r\n userCount\r\n ); // isNaN(Math.floor((female_passedPruning / userCount) * 100)) ? 0 : ;\r\n\r\n farmerPercentageCompletedPruning = CheckIsNaNAndDivide(\r\n farmerCompletedPruning,\r\n farmerCount\r\n ); // isNaN((farmerCompletedPruning / farmerCount) * 100) ? 0 : ;\r\n male_farmerPercentageCompletedPruning = CheckIsNaNAndDivide(\r\n male_farmerCompletedPruning,\r\n farmerCount\r\n ); // isNaN(Math.floor((male_farmerCompletedPruning / farmerCount) * 100)) ? 0 : ;\r\n female_farmerPercentageCompletedPruning = CheckIsNaNAndDivide(\r\n female_farmerCompletedPruning,\r\n farmerCount\r\n ); // isNaN(Math.floor((female_farmerCompletedPruning / farmerCount) * 100)) ? 0 : ;\r\n\r\n farmerPercentagePassedPruning = CheckIsNaNAndDivide(\r\n farmerPassedPruning,\r\n farmerCount\r\n ); // isNaN((farmerPassedPruning / farmerCount) * 100) ? 0 : ;\r\n male_farmerPercentagePassedPruning = CheckIsNaNAndDivide(\r\n male_farmerPassedPruning,\r\n farmerCount\r\n ); // isNaN(Math.floor((male_farmerPassedPruning / farmerCount) * 100)) ? 0 : ;\r\n female_farmerPercentagePassedPruning = CheckIsNaNAndDivide(\r\n female_farmerPassedPruning,\r\n farmerCount\r\n ); //isNaN(Math.floor((female_farmerPassedPruning / farmerCount) * 100)) ? 0 : ;\r\n\r\n percentageCompletedFertilizing = CheckIsNaNAndDivide(\r\n completedFertilizing,\r\n userCount\r\n ); // isNaN((completedFertilizing / userCount) * 100) ? 0 : ;\r\n male_percentageCompletedFertilizing = CheckIsNaNAndDivide(\r\n male_completedFertilizing,\r\n userCount\r\n ); // isNaN(Math.floor((male_completedFertilizing / userCount) * 100)) ? 0 : ;\r\n female_percentageCompletedFertilizing = CheckIsNaNAndDivide(\r\n female_completedFertilizing,\r\n userCount\r\n ); // isNaN(Math.floor((female_completedFertilizing / userCount) * 100)) ? 0 : ;\r\n\r\n percentagePassedFertilizing = CheckIsNaNAndDivide(\r\n passedFertilizing,\r\n userCount\r\n ); // isNaN((passedFertilizing / userCount) * 100;\r\n male_percentagePassedFertilizing = CheckIsNaNAndDivide(\r\n male_passedFertilizing,\r\n userCount\r\n ); //isNaN(Math.floor((male_passedFertilizing / userCount) * 100)) ? 0 : ;\r\n female_percentagePassedFertilizing = CheckIsNaNAndDivide(\r\n female_passedFertilizing,\r\n userCount\r\n ); // isNaN(Math.floor((female_passedFertilizing / userCount) * 100)) ? 0 : ;\r\n\r\n farmerPercentageCompletedFertilizing = CheckIsNaNAndDivide(\r\n farmerCompletedFertilizing,\r\n userCount\r\n ); // isNaN((farmerCompletedFertilizing / userCount) * 100) ? 0 : ;\r\n male_farmerPercentageCompletedFertilizing = CheckIsNaNAndDivide(\r\n male_farmerCompletedFertilizing,\r\n userCount\r\n ); //isNaN(Math.floor((male_farmerCompletedFertilizing / userCount) * 100)) ? 0 : ;\r\n female_farmerPercentageCompletedFertilizing = CheckIsNaNAndDivide(\r\n female_farmerCompletedFertilizing,\r\n userCount\r\n ); // isNaN(Math.floor((female_farmerCompletedFertilizing / userCount) * 100)) ? 0 : ;\r\n\r\n farmerPercentagePassedFertilizing = CheckIsNaNAndDivide(\r\n farmerPassedFertilizing,\r\n userCount\r\n ); // isNaN((farmerPassedFertilizing / userCount) * 100;\r\n male_farmerPercentagePassedFertilizing = CheckIsNaNAndDivide(\r\n male_farmerPassedFertilizing,\r\n userCount\r\n ); // isNaN(Math.floor((male_farmerPassedFertilizing / userCount) * 100)) ? 0 : ;\r\n female_farmerPercentagePassedFertilizing = CheckIsNaNAndDivide(\r\n female_farmerPassedFertilizing,\r\n userCount\r\n ); // isNaN(Math.floor((female_farmerPassedFertilizing / userCount) * 100)) ? 0 : ;\r\n\r\n if (_isMounted) {\r\n setAppData({\r\n farmerCount: farmerCount,\r\n male_farmerCount: male_farmerCount,\r\n female_farmerCount: female_farmerCount,\r\n\r\n nonFarmerCount: nonFarmerCount,\r\n male_nonFarmerCount: male_nonFarmerCount,\r\n female_nonFarmerCount: female_nonFarmerCount,\r\n\r\n completedPruning: completedPruning,\r\n male_completedPruning: male_completedPruning,\r\n female_completedPruning: female_completedPruning,\r\n\r\n percentageCompletedPruning: percentageCompletedPruning,\r\n male_percentageCompletedPruning: male_percentageCompletedPruning,\r\n female_percentageCompletedPruning: female_percentageCompletedPruning,\r\n\r\n passedPruning: passedPruning,\r\n male_passedPruning: male_passedPruning,\r\n female_passedPruning: female_passedPruning,\r\n\r\n percentagePassedPruning: percentagePassedPruning,\r\n male_percentagePassedPruning: male_percentagePassedPruning,\r\n female_percentagePassedPruning: female_percentagePassedPruning,\r\n\r\n farmerCompletedPruning: farmerCompletedPruning,\r\n male_farmerCompletedPruning: male_farmerCompletedPruning,\r\n female_farmerCompletedPruning: female_farmerCompletedPruning,\r\n\r\n farmerPercentageCompletedPruning: farmerPercentageCompletedPruning,\r\n male_farmerPercentageCompletedPruning:\r\n male_farmerPercentageCompletedPruning,\r\n female_farmerPercentageCompletedPruning:\r\n female_farmerPercentageCompletedPruning,\r\n\r\n farmerPassedPruning: farmerPassedPruning,\r\n male_farmerPassedPruning: male_farmerPassedPruning,\r\n female_farmerPassedPruning: female_farmerPassedPruning,\r\n\r\n farmerPercentagePassedPruning: farmerPercentagePassedPruning,\r\n male_farmerPercentagePassedPruning:\r\n male_farmerPercentagePassedPruning,\r\n female_farmerPercentagePassedPruning:\r\n female_farmerPercentagePassedPruning,\r\n\r\n completedFertilizing: completedFertilizing,\r\n male_completedFertilizing: male_completedFertilizing,\r\n female_completedFertilizing: female_completedFertilizing,\r\n\r\n percentageCompletedFertilizing: percentageCompletedFertilizing,\r\n male_percentageCompletedFertilizing:\r\n male_percentageCompletedFertilizing,\r\n female_percentageCompletedFertilizing:\r\n female_percentageCompletedFertilizing,\r\n\r\n passedFertilizing: passedFertilizing,\r\n male_passedFertilizing: male_passedFertilizing,\r\n female_passedFertilizing: female_passedFertilizing,\r\n\r\n percentagePassedFertilizing: percentagePassedFertilizing,\r\n male_percentagePassedFertilizing: male_percentagePassedFertilizing,\r\n female_percentagePassedFertilizing:\r\n female_percentagePassedFertilizing,\r\n\r\n farmerCompletedFertilizing: farmerCompletedFertilizing,\r\n male_farmerCompletedFertilizing: male_farmerCompletedFertilizing,\r\n female_farmerCompletedFertilizing: female_farmerCompletedFertilizing,\r\n\r\n farmerPercentageCompletedFertilizing:\r\n farmerPercentageCompletedFertilizing,\r\n male_farmerPercentageCompletedFertilizing:\r\n male_farmerPercentageCompletedFertilizing,\r\n female_farmerPercentageCompletedFertilizing:\r\n female_farmerPercentageCompletedFertilizing,\r\n\r\n farmerPassedFertilizing: farmerPassedFertilizing,\r\n male_farmerPassedFertilizing: male_farmerPassedFertilizing,\r\n female_farmerPassedFertilizing: female_farmerPassedFertilizing,\r\n\r\n farmerPercentagePassedFertilizing: farmerPercentagePassedFertilizing,\r\n male_farmerPercentagePassedFertilizing:\r\n male_farmerPercentagePassedFertilizing,\r\n female_farmerPercentagePassedFertilizing:\r\n female_farmerPercentagePassedFertilizing,\r\n });\r\n }\r\n }\r\n PutData();\r\n }\r\n\r\n function PutData() {\r\n const d = new Date();\r\n const currYear = d.getFullYear().toString();\r\n const currMonth = Month[d.getMonth()];\r\n const newUserCounts = [];\r\n const oldUserCounts = [];\r\n const newUserList = [];\r\n const oldUserList = [];\r\n\r\n let filteredList = listOfUsers;\r\n\r\n if (currentSelectedProvince !== \"null\") {\r\n filteredList = listOfUsers.filter(\r\n (user) => user.userData.province === currentSelectedProvince\r\n );\r\n }\r\n\r\n Month.forEach((month, index) => {\r\n let ncount = 0;\r\n let ocount = 0;\r\n\r\n filteredList.forEach((user) => {\r\n if (user && user.createdAt) {\r\n const userMonth = user.createdAt.split(\"-\");\r\n const currentUserMonth = Month[parseInt(userMonth[1]) - 1];\r\n const currentUserYear = userMonth[0];\r\n\r\n if (currentUserYear === currYear && currentUserMonth === month) {\r\n ncount++;\r\n newUserList.push(user);\r\n }\r\n }\r\n\r\n if (user && user.lastLogin) {\r\n const userMonth = user.lastLogin.split(\"-\");\r\n const currentUserMonth = Month[parseInt(userMonth[1]) - 1];\r\n const currentUserYear = userMonth[0];\r\n\r\n if (currentUserYear === currYear && currentUserMonth === month) {\r\n ocount++;\r\n oldUserList.push(user);\r\n }\r\n }\r\n });\r\n\r\n // Add values only up to the current date\r\n if (index <= d.getMonth()) {\r\n newUserCounts.push(ncount);\r\n oldUserCounts.push(ocount);\r\n }\r\n });\r\n\r\n const currYearHeader = `Months (${currYear})`;\r\n\r\n if (_isMounted) {\r\n setUserData({\r\n newUser: newUserList,\r\n oldUser: oldUserList,\r\n newCounter: newUserCounts,\r\n oldCounter: oldUserCounts,\r\n currentYear: currYearHeader,\r\n });\r\n\r\n // Only update chart data for the months up to the current date\r\n createNewUserData(newUserCounts.slice(0, d.getMonth() + 1));\r\n createOldUserData(oldUserCounts.slice(0, d.getMonth() + 1));\r\n }\r\n }\r\n\r\n function createNewUserData(counters) {\r\n var temp = [];\r\n counters.map((count, i) => {\r\n temp.push(createData(Month[i], count));\r\n return null;\r\n });\r\n //setChartData({ newData: temp });\r\n if (_isMounted) {\r\n console.log(\"new data\", temp);\r\n setNewChartData(temp);\r\n }\r\n }\r\n\r\n function createOldUserData(counters) {\r\n var temp = [];\r\n counters.map((count, i) => {\r\n temp.push(createData(Month[i], count));\r\n return null;\r\n });\r\n if (_isMounted) {\r\n setChartData({ oldData: temp });\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n _isMounted = true;\r\n FetchTopProvinceData();\r\n FetchFilterData();\r\n FetchData();\r\n return () => {\r\n _isMounted = false;\r\n\r\n setFilterData({ provinceListFetched: false });\r\n farmerCount =\r\n nonFarmerCount =\r\n completedPruning =\r\n passedPruning =\r\n completedFertilizing =\r\n passedFertilizing =\r\n percentageCompletedFertilizing =\r\n percentagePassedFertilizing =\r\n percentageCompletedPruning =\r\n percentagePassedPruning =\r\n -1;\r\n };\r\n }, [filterData.filterChanged, currentSelectedProvince]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const applyProvinceFilter = (event) => {\r\n // alert(\"filter applying\");\r\n\r\n setFilterData({\r\n selectedFilter: \" : \" + event.target.value,\r\n filterChanged: true,\r\n });\r\n // alert(event.target.value);\r\n currentSelectedProvince = event.target.value;\r\n };\r\n\r\n const resetButton = () => {\r\n currentSelectedProvince = \"null\";\r\n // alert(\"reset\");\r\n setFilterData({\r\n filterChanged: false,\r\n selectedFilter: \"null\",\r\n });\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n Reports{\" \"}\r\n {currentSelectedProvince !== \"null\"\r\n ? \" : \" + currentSelectedProvince\r\n : null}\r\n \r\n {/* Reports {filterData.selectedFilter != \"null\" ? filterData.selectedFilter : null} */}\r\n \r\n \r\n Province Filter\r\n {\r\n applyProvinceFilter(e);\r\n }}\r\n >\r\n \r\n {filterData.provinceListFetched\r\n ? filterData.provinceList.length > 0\r\n ? filterData.provinceList.map((province) => (\r\n \r\n ))\r\n : null\r\n : null}\r\n \r\n
\r\n
\r\n\r\n {currentSelectedProvince !== \"null\" ? (\r\n
\r\n {\r\n resetButton();\r\n }}\r\n >\r\n Reset Filter\r\n \r\n
\r\n ) : null}\r\n
\r\n \r\n
Overview
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n // topProvince.topProvinceList > 0 ? (\r\n \r\n \r\n \r\n // ) : null\r\n }\r\n
\r\n
\r\n \r\n \r\n
Pruning of Cocoa
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
Fertilizing of Cocoa
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n Monthly New Farmers\r\n \r\n {userData.newCounter <= 0 ? (\r\n //
\r\n // {\" \"}\r\n //
\r\n //
\r\n // {\" \"}\r\n //
\r\n \r\n \r\n \r\n ) : (\r\n \r\n {/* Monthly New Farmers */}\r\n\r\n \r\n \r\n \r\n {/* \r\n Months\r\n */}\r\n \r\n \r\n \r\n \r\n Number of Farmers (#)\r\n \r\n \r\n \r\n } />\r\n {/* */}\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n Monthly Total Farmers\r\n \r\n {userData.oldCounter <= 0 ? (\r\n //
\r\n // {\" \"}\r\n //
\r\n //
\r\n // {\" \"}Z\r\n //
\r\n \r\n \r\n \r\n ) : (\r\n \r\n {/* Monthly Total Farmers */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Number of Farmers (#)\r\n \r\n \r\n \r\n } />\r\n {/* */}\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction CustomTooltip({ payload, label, active }) {\r\n if (active) {\r\n return (\r\n
\r\n

{`${label} : ${payload[0].value}`}

\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction createData(month, amount) {\r\n return { month, amount };\r\n}\r\n\r\nclass UserList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.props = props;\r\n this.type = this.props.type;\r\n }\r\n\r\n render() {\r\n if (this.type === \"dashboard\") {\r\n return ;\r\n }\r\n }\r\n}\r\n\r\nconst condition = (authUser) => authUser;\r\n\r\nexport default withAuthorization(condition)(UserList);\r\n// export default (UserList);\r\n","import { createMuiTheme, responsiveFontSizes } from \"@material-ui/core/styles\";\r\n\r\nconst theme = responsiveFontSizes(\r\n createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: \"#002E54\",\r\n },\r\n // secondary: {\r\n // main: \"#ffc72c\",\r\n // },\r\n },\r\n typography: {\r\n fontFamily: [\"Verdana\", \"Arial\", \"sans-serif\"].join(\",\"),\r\n },\r\n overrides: {\r\n MuiAppBar: {\r\n colorPrimary: {\r\n backgroundColor: \"#335876\",\r\n },\r\n },\r\n MuiListSubheader: {\r\n root: {\r\n color: \"grey\",\r\n },\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default theme;\r\n","import React from 'react';\r\n\r\nimport { withAuthorization } from '../Session';\r\n//import Navigation from '../Navigation';\r\nimport UserList from '../Dashboard/UserList';\r\nimport theme from '../Common/theme';\r\n\r\nconst HomePage = (props) => (\r\n // \r\n \r\n);\r\n\r\nconst condition = authUser => !!authUser;\r\nexport default withAuthorization(condition)(HomePage);\r\n// export default (HomePage);\r\n/*\r\n
\r\n \r\n

Home Page

\r\n

The Home Page is accessible by every signed in user.

\r\n
\r\n*/","import React from \"react\";\r\n// import { withFirebase } from \"../Firebase\";\r\nimport ToggleOnIcon from \"@material-ui/icons/ToggleOn\";\r\nimport ToggleOffIcon from \"@material-ui/icons/ToggleOff\";\r\nimport { green } from \"@material-ui/core/colors\";\r\nimport { ToggleWebUser, ToggleMobilebUser } from \"../../helpers/UserHelper\";\r\n\r\nclass ActiveToggle extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.errorHandler = this.props.errorHandler;\r\n this.refreshHandler = this.props.refreshHandler;\r\n }\r\n\r\n onSubmit = (uid, status, dbType) => {\r\n var self = this;\r\n var newStatus = status === \"true\" ? \"false\" : \"true\";\r\n let payload = {\r\n _id: uid,\r\n newStatus: newStatus\r\n };\r\n if (dbType === \"web_users/\") {\r\n ToggleWebUser(payload).then(response => {\r\n if (response.data.success) {\r\n self.errorHandler(\"success\", \"Updated!\");\r\n self.refreshHandler(true);\r\n }\r\n else {\r\n self.errorHandler(\"error\", response.data.message);\r\n }\r\n });\r\n }\r\n else {\r\n // console.log(uid);\r\n ToggleMobilebUser(payload).then(response => {\r\n // console.log(response);\r\n if (response.data.success) {\r\n self.errorHandler(\"success\", \"Updated!\");\r\n self.refreshHandler(true);\r\n }\r\n else {\r\n self.errorHandler(\"error\", response.data.message);\r\n }\r\n });\r\n }\r\n };\r\n\r\n render() {\r\n var active = (\r\n \r\n this.onSubmit(this.props.uid, this.props.status, this.props.dbType)\r\n }\r\n style={{ color: green[500] }}\r\n />\r\n );\r\n\r\n var inactive = (\r\n \r\n this.onSubmit(this.props.uid, this.props.status, this.props.dbType)\r\n }\r\n color=\"secondary\"\r\n />\r\n );\r\n return
{this.props.status === \"true\" ? active : inactive}
;\r\n }\r\n}\r\n\r\n// const ActiveToggleFirebase = withFirebase(ActiveToggle);\r\nconst ActiveToggleFirebase = (ActiveToggle);\r\n\r\nexport default ActiveToggleFirebase;\r\n","import React from \"react\";\r\n// import { withFirebase } from \"../Firebase\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\n//import { makeStyles } from \"@material-ui/core/styles\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport { DeleteUser, DeleteWebUser } from \"../../helpers/UserHelper\";\r\n\r\nclass DeleteButton extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n open: false,\r\n reconfirm: false,\r\n same: false,\r\n };\r\n this.refreshHandler = this.props.refreshHandler;\r\n this.errorHandler = this.props.errorHandler;\r\n }\r\n\r\n handleOpenModal = () => {\r\n this.setState({\r\n open: true,\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n open: false,\r\n });\r\n };\r\n\r\n handleOpenModal2 = () => {\r\n this.setState({\r\n reconfirm: true,\r\n });\r\n };\r\n\r\n handleCloseModal2 = () => {\r\n this.setState({\r\n reconfirm: false,\r\n });\r\n };\r\n\r\n OnSubmitModal = (event) => {\r\n event.preventDefault();\r\n };\r\n\r\n CheckUser(type, uid, email) {\r\n //var self = this;\r\n // console.log(\"type: \" + type);\r\n var user = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (user.authUser.uid === uid) {\r\n this.setState({\r\n open: false,\r\n reconfirm: true,\r\n same: true,\r\n });\r\n //self.props.firebase.doSignOut();\r\n } else {\r\n this.setState({\r\n reconfirm: false,\r\n open: false,\r\n same: false,\r\n });\r\n this.deleteUser(type, uid, email);\r\n }\r\n }\r\n\r\n async deleteUser(type, uid, email) {\r\n var self = this;\r\n if (type === \"Web\") {\r\n\r\n let payload = {\r\n uid: uid,\r\n email: email\r\n };\r\n\r\n DeleteWebUser(payload).then(response => {\r\n if (response.data.success) {\r\n self.handleCloseModal();\r\n self.errorHandler(\"success\", \"Account Deleted!\");\r\n self.refreshHandler(true);\r\n if (self.state.same === true) {\r\n }\r\n }\r\n else {\r\n self.errorHandler(\"error\", response.data.message);\r\n }\r\n })\r\n }\r\n\r\n else {\r\n DeleteUser(uid).then(response => {\r\n if (response.data.success) {\r\n self.handleCloseModal();\r\n self.errorHandler(\"success\", \"Account Deleted!\");\r\n self.refreshHandler(true);\r\n if (self.state.same === true) {\r\n\r\n }\r\n }\r\n else {\r\n self.errorHandler(\"error\", response.data.message);\r\n }\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n // const body = (\r\n //
\r\n // \r\n // \r\n // {\"Are you sure you want to delete this account?\"}\r\n // \r\n // \r\n // \r\n // Are you sure you want to delete this account?\r\n // \r\n // \r\n // \r\n // \r\n // this.deleteUser(this.props.type, this.props.uid)}\r\n // color=\"primary\"\r\n // autoFocus\r\n // >\r\n // Delete\r\n // \r\n // \r\n // \r\n //
\r\n // //
\r\n // // \r\n // // \r\n // // \r\n // //
Are you sure you want to delete this account?
\r\n // // \r\n // //
\r\n // // \r\n // //
\r\n // // }\r\n // // >\r\n // // Delete\r\n // // \r\n // //
\r\n // //
\r\n // // \r\n // //
\r\n // // \r\n // // Cancel\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 {body}\r\n */}\r\n \r\n {\"Are you sure you want to delete this account?\"}\r\n \r\n \r\n The selected user account {this.props.email} will be permanently deleted.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {\"Are you sure you want to delete this account?\"}\r\n \r\n You will be logged out. Are you sure?\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst DeleteButtonFirebase = (DeleteButton);\r\n// const DeleteButtonFirebase = compose(withFirebase)(DeleteButton);\r\n\r\nexport default DeleteButtonFirebase;\r\n","import React from \"react\";\r\nimport Modal from \"@material-ui/core/Modal\";\r\nimport { Grid } from \"@material-ui/core\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { useStyles } from \"../Common/Styles\";\r\nimport MUIDataTable from \"mui-datatables\";\r\n\r\nimport { MuiThemeProvider, createMuiTheme } from \"@material-ui/core/styles\";\r\nimport UnfoldMoreIcon from \"@material-ui/icons/UnfoldMore\";\r\nimport CancelIcon from \"@material-ui/icons/Cancel\";\r\nimport { FetchUserMobileAPI } from \"../../helpers/DashboardHelper.js\";\r\n\r\n\r\nvar questionPruningJSON = require(\"../Common/pruning_mod1.json\");\r\nvar questionFertilizingJSON = require(\"../Common/fertilizing_mod2.json\");\r\n\r\n\r\nfunction DatabaseMapCheck(val) {\r\n if (val === \"\" || val === \"-1\" || val === \" \" || val == null) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n}\r\n\r\n// fucntion CheckForNoAnswer(val){\r\n// if()\r\n// }\r\n\r\nfunction GetOptionVal(val) {\r\n switch (val) {\r\n case 0:\r\n return \"A\";\r\n case 1:\r\n return \"B\";\r\n case 2:\r\n return \"C\";\r\n case 3:\r\n return \"D\";\r\n default:\r\n return \"NA\";\r\n }\r\n}\r\n\r\nfunction GetPreQuestionAnswer(qID, aID, module = \"0\") {\r\n var mapped = {\r\n qNo: \"\",\r\n q: \"\",\r\n a: \"\",\r\n };\r\n var questionjson = module === \"0\" ? questionPruningJSON : questionFertilizingJSON;\r\n if (DatabaseMapCheck(qID) && DatabaseMapCheck(aID)) {\r\n questionjson.questions.map((question) => {\r\n var id = question.questionID.toString();\r\n if (id === qID) {\r\n mapped.q = question.questionText.toString();\r\n mapped.a = question.options[aID]\r\n ? question.options[aID].optionText.toString()\r\n : \"NA\";\r\n mapped.qNo = qID;\r\n }\r\n return null;\r\n });\r\n return mapped;\r\n } else return null;\r\n}\r\n\r\nfunction GetPostQuestionAnswer(num, qID, aID, module = \"0\") {\r\n var mapped = {\r\n id: null,\r\n q: \"\",\r\n a: \"\",\r\n };\r\n var questionjson = module === \"0\" ? questionPruningJSON : questionFertilizingJSON;\r\n if (DatabaseMapCheck(qID) && DatabaseMapCheck(aID)) {\r\n questionjson.questions.map((question) => {\r\n var id = question.questionID.toString();\r\n if (id === qID) {\r\n mapped.id = num;\r\n mapped.q = question.questionText.toString();\r\n mapped.a = GetOptionVal(aID);\r\n }\r\n return null;\r\n });\r\n return mapped;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n\r\nfunction getModalStyle() {\r\n const top = 50;\r\n const left = 50;\r\n\r\n return {\r\n top: `${top}%`,\r\n left: `${left}%`,\r\n transform: `translate(-${top}%, -${left}%)`,\r\n };\r\n}\r\n\r\nfunction CreatePreTableData(ans, ques, quesNo) {\r\n var temp = [];\r\n for (var i = 0; i < ans.length; i++) {\r\n temp.push(createPreData(quesNo[i], ans[i], ques[i]));\r\n }\r\n return temp;\r\n}\r\n\r\nfunction createPreData(i, a, q) {\r\n var temp = [];\r\n var ques = \"\";\r\n ques = \"Q\" + i + \": \" + q;\r\n temp.push(ques);\r\n temp.push(a);\r\n return temp;\r\n}\r\n\r\nfunction CreatePostTableData(uid, po, res) {\r\n var temp = [];\r\n var tempt = [];\r\n var attempt = 0;\r\n var max = po.length / 10;\r\n for (var i = 0; i < max; i++) {\r\n tempt = [];\r\n tempt.push(i + 1);\r\n var iteratorMax = 10 + attempt <= po.length ? 10 : po.length - attempt;\r\n for (var j = 0; j < iteratorMax; j++) {\r\n tempt.push(po[j + attempt].a);\r\n }\r\n tempt.push(res[i]);\r\n attempt += 10;\r\n temp.push(tempt);\r\n }\r\n return temp;\r\n}\r\n\r\nfunction InfoModal(props) {\r\n // const c = props.c;\r\n // const pv = props.pv;\r\n const landSize = props.ls;\r\n // const averageProduction = props.ap;\r\n // const averageHarvest = props.ah;\r\n // const baseProduction = props.bp;\r\n // const baseProductionPerLandSize = props.bpl;\r\n const farmerAssociation = props.fa;\r\n const farmerGroup = props.fg;\r\n\r\n const uid = props.uid;\r\n // let errorHandler = props.errorHandler;\r\n\r\n // const dataMain = [[landSize, averageHarvest, averageProduction, baseProduction, baseProductionPerLandSize, farmerAssociation, farmerGroup]];\r\n const dataMain = [[landSize, farmerAssociation, farmerGroup]];\r\n\r\n const [TableStates, SetTableData] = React.useState({\r\n pre: [],\r\n post: [],\r\n preHar: [],\r\n postHar: [],\r\n preFetch: false,\r\n postFetch: false,\r\n });\r\n\r\n const classes = useStyles();\r\n\r\n const [modalStyle] = React.useState(getModalStyle);\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const result = props.result;\r\n\r\n React.useEffect(() => {\r\n var preQuesNo = [];\r\n var preA = [];\r\n var preQ = [];\r\n var po = [];\r\n var r = [];\r\n\r\n var preAnsFertilizing = [];\r\n var preQuesFertilizing = [];\r\n var preQuesNoFertilizing = [];\r\n var poHar = [];\r\n var rHar = [];\r\n // let listOfUsers = [];\r\n // FetchUserMobileAPI()\r\n // .then(response => {\r\n // let result = JSON.parse(response.data.userList);\r\n // console.log(\"result \" + JSON.stringify(result));\r\n // listOfUsers = result;\r\n for (var key in result) {\r\n if (result[key][\"_id\"] === uid) {\r\n\r\n var mod = result[key][\"moduleResults\"][\"0\"];\r\n\r\n //pre Ass mapping\r\n for (var preID in mod[\"preResult\"]) {\r\n var pre = mod[\"preResult\"][preID];\r\n var mapPreQues = GetPreQuestionAnswer(\r\n pre[\"questionID\"],\r\n pre[\"answer\"]\r\n );\r\n if (mapPreQues != null) {\r\n preQ.push(mapPreQues.q);\r\n preA.push(mapPreQues.a);\r\n preQuesNo.push(mapPreQues.qNo);\r\n }\r\n }\r\n\r\n //post ass mapping\r\n var pcount = 0;\r\n //postCount = mod[\"postResults\"].length;\r\n for (var poID in mod[\"postResults\"]) {\r\n pcount++;\r\n for (var poR in mod[\"postResults\"][poID][\"postResult\"]) {\r\n var post = mod[\"postResults\"][poID][\"postResult\"][poR];\r\n var mapPostQues = GetPostQuestionAnswer(\r\n pcount,\r\n post[\"questionID\"],\r\n post[\"answer\"]\r\n );\r\n if (mapPostQues != null) {\r\n po.push(mapPostQues);\r\n }\r\n }\r\n }\r\n\r\n //result\r\n var count = 0; // to ignore first result - Bin Wei structure ( result[0] is pre which is not to be stored or display anymore)\r\n for (var rID in mod[\"results\"]) {\r\n count++;\r\n\r\n if (count !== 1) {\r\n r.push(mod[\"results\"][rID][\"score\"]);\r\n }\r\n }\r\n\r\n var tempPre = [];\r\n tempPre = CreatePreTableData(preA, preQ, preQuesNo);\r\n var tempPost = [];\r\n tempPost = CreatePostTableData(uid, po, r);\r\n\r\n //============================================Fertilizing Module==========================================================\r\n\r\n var tempPostHar = [];\r\n var tempPreHar = [];\r\n\r\n if (result[key][\"moduleResults\"][\"1\"] != null) {\r\n mod = result[key][\"moduleResults\"][\"1\"];\r\n\r\n //pre Ass mapping\r\n for (var preIDFertilizing in mod[\"preResult\"]) {\r\n pre = mod[\"preResult\"][preIDFertilizing];\r\n var mapPreQuesFertilizing = GetPreQuestionAnswer(\r\n pre[\"questionID\"],\r\n pre[\"answer\"],\r\n \"1\"\r\n );\r\n if (mapPreQuesFertilizing != null) {\r\n preQuesFertilizing.push(mapPreQuesFertilizing.q);\r\n preAnsFertilizing.push(mapPreQuesFertilizing.a);\r\n preQuesNoFertilizing.push(mapPreQuesFertilizing.qNo);\r\n }\r\n }\r\n\r\n //post ass mapping\r\n pcount = 0;\r\n for (var poIDFertilizing in mod[\"postResults\"]) {\r\n pcount++;\r\n for (var poRFertilizing in mod[\"postResults\"][poIDFertilizing][\"postResult\"]) {\r\n var postFertilizing = mod[\"postResults\"][poIDFertilizing][\"postResult\"][poRFertilizing];\r\n var mapPostQuesFertilizing = GetPostQuestionAnswer(\r\n pcount,\r\n postFertilizing[\"questionID\"],\r\n postFertilizing[\"answer\"],\r\n \"1\"\r\n );\r\n if (mapPostQuesFertilizing != null) {\r\n poHar.push(mapPostQuesFertilizing);\r\n }\r\n }\r\n }\r\n\r\n //result\r\n count = 0; // to ignore first result - Bin Wei structure ( result[0] is pre which is not to be stored or display anymore)\r\n for (var rIDFertilizing in mod[\"results\"]) {\r\n count++;\r\n\r\n if (count !== 1) {\r\n rHar.push(mod[\"results\"][rIDFertilizing][\"score\"]);\r\n }\r\n }\r\n\r\n\r\n tempPreHar = CreatePreTableData(preAnsFertilizing, preQuesFertilizing, preQuesNoFertilizing);\r\n tempPostHar = CreatePostTableData(uid, poHar, rHar);\r\n }\r\n\r\n\r\n\r\n // if (tempPost.length > 0) {\r\n SetTableData({\r\n post: tempPost,\r\n pre: tempPre,\r\n postHar: tempPostHar,\r\n preHar: tempPreHar,\r\n // postFetch: true,\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n // });\r\n\r\n\r\n return () => {\r\n SetTableData({\r\n post: [],\r\n pre: [],\r\n });\r\n };\r\n }, [open]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const columnsMain = [\r\n\r\n {\r\n name: \"Land size (ha)\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Farmer Association\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Farmer Group\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n ];\r\n\r\n const columnsSec = [\r\n {\r\n name: \"Question\",\r\n options: {\r\n filter: true,\r\n },\r\n },\r\n {\r\n name: \"Answer\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n ];\r\n\r\n const columnsTer = [\r\n {\r\n name: \"Attempt\",\r\n options: {\r\n filter: true,\r\n },\r\n },\r\n {\r\n name: \"Q1\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q2\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q3\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q4\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q5\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q6\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q7\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q8\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q9\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q10\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Result\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n ];\r\n\r\n const options = {\r\n customToolbarSelect: () => { },\r\n filter: true,\r\n filterType: \"dropdown\",\r\n // responsive: \"scrollMaxHeight\",\r\n // responsive: \"stacked\",\r\n print: false,\r\n viewColumns: false,\r\n selectableRows: false\r\n\r\n };\r\n\r\n const theme = createMuiTheme({\r\n overrides: {\r\n MUIDataTableSelectCell: {\r\n expandDisabled: {\r\n visibility: \"show\",\r\n },\r\n },\r\n },\r\n });\r\n\r\n\r\n\r\n const handleOpen = () => {\r\n // console.log(\"opening\");\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n //const defData = [[\"Loading\", ]];\r\n\r\n const body = (\r\n
\r\n \r\n \r\n
\r\n \r\n User Statistics\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {/* fontSize=\"large\"\r\n color=\"secondary\"\r\n type=\"button\"\r\n onClick={handleClose} */}\r\n \r\n \r\n \r\n \r\n {/* {dataMain.length > 0 ? ( */}\r\n \r\n \r\n \r\n {/* ) : (\r\n \r\n \r\n \r\n )} */}\r\n \r\n \r\n {/* {TableStates.preFetch === true ? ( */}\r\n \r\n \r\n \r\n {/* ) : (\r\n \r\n \r\n \r\n )} */}\r\n \r\n \r\n {/* {TableStates.postFetch === 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 {/* {TableStates.preFetch === true ? ( */}\r\n \r\n \r\n \r\n {/* ) : (\r\n \r\n \r\n \r\n )} */}\r\n \r\n \r\n {/* {TableStates.postFetch === 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 );\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {body}\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\n// const FirebaseInfoModal = withFirebase(InfoModal);\r\nconst FirebaseInfoModal = (InfoModal);\r\nexport default FirebaseInfoModal;\r\n","import React from \"react\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { MuiThemeProvider, createMuiTheme } from \"@material-ui/core/styles\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\nimport ActiveToggleFirebase from \"../Common/ActiveToggle\";\r\nimport DeleteButtonFirebase from \"../Common/DeleteButton\";\r\nimport FirebaseInfoModal from \"./InfoModal\";\r\nimport { Grid } from \"@material-ui/core\";\r\nimport { FetchUserMobileAPI } from \"../../helpers/DashboardHelper.js\";\r\nvar moment = require('moment'); // require\r\n moment().format(\"R\")\r\n\r\nlet _isMounted = false;\r\n\r\nfunction CreateTableData(\r\n result,\r\n uid,\r\n userName,\r\n emailAddress,\r\n phoneNumber,\r\n lastLogin,\r\n lastLogOut,\r\n status,\r\n country,\r\n province,\r\n district,\r\n modulesPassed,\r\n modulesCompleted,\r\n landSize,\r\n averageProduction,\r\n averageHarvest,\r\n associateId,\r\n farmerGroup,\r\n errorHandler,\r\n refreshHandler,\r\n em,\r\n isFarmer,\r\n gender\r\n) {\r\n let temp = [];\r\n temp.push(CheckForNull(uid));\r\n temp.push(CheckForNull(userName));\r\n temp.push(CheckForNull(emailAddress));\r\n temp.push(CheckForNull(phoneNumber));\r\n\r\n temp.push(CheckForNull(moment(lastLogin).format('YYYY/MM/DD')));\r\n temp.push(CheckForNull(moment(lastLogOut).format('YYYY/MM/DD')));\r\n temp.push(CheckForNull(country));\r\n temp.push(CheckForNull(province));\r\n temp.push(CheckForNull(district));\r\n temp.push(CheckForNull(isFarmer));\r\n temp.push(CheckForNull(farmerGroup));\r\n temp.push(CheckForNull(landSize));\r\n temp.push(CheckForNull(gender));\r\n\r\n // moment().format(\"R\")\r\n // console.log(lastLogin + \" \" + moment(lastLogin).format('YYYY/MM/DD'));\r\n\r\n //phase2 edit, interchange these 2 values\r\n\r\n temp.push(CheckForNull(modulesCompleted));\r\n temp.push(CheckForNull(modulesPassed));\r\n\r\n var baseProduction = (parseInt(averageProduction) / parseInt(averageHarvest)) * 365;\r\n var baseProductionPerLandSize = baseProduction / parseInt(landSize);\r\n\r\n var but = (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n temp.push(but);\r\n\r\n but = (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n temp.push(but);\r\n\r\n but = (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n temp.push(but);\r\n return temp;\r\n}\r\n\r\n\r\nfunction CheckForNull(val) {\r\n if (val === \"\" || val == null || val === \"NaN\" || val === \"undefined\") return \"Nil\";\r\n else return val;\r\n}\r\n\r\nconst loadingData = [\r\n [\r\n \"\",\r\n \"Loading Data\",\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ],\r\n];\r\n\r\n// phase2 - add logout gender group landsize\r\n\r\nconst columns = [\r\n {\r\n name: \"UID\",\r\n options: {\r\n filter: false,\r\n display: false,\r\n sort: false,\r\n },\r\n },\r\n {\r\n name: \"Name\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n },\r\n },\r\n {\r\n name: \"Email\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n },\r\n },\r\n {\r\n name: \"Phone number\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n },\r\n },\r\n\r\n {\r\n name: \"Last Login\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Last LogOut\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Country\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Province\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n //adding here extra details\r\n {\r\n name: \"District\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Farmer/Non-Farmer\",\r\n options: {\r\n filter: false,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"Farmer Group\",\r\n options: {\r\n filter: false,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"Land Size\",\r\n options: {\r\n filter: false,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"Gender\",\r\n options: {\r\n filter: false,\r\n display: false,\r\n },\r\n },\r\n // 4 elements added\r\n {\r\n name: \"Modules Completed\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Modules Passed\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"More Details\",\r\n options: {\r\n sort: false,\r\n filter: false,\r\n },\r\n },\r\n {\r\n name: \"Status\",\r\n options: {\r\n sort: false,\r\n filter: false,\r\n },\r\n },\r\n {\r\n name: \"Delete\",\r\n options: {\r\n sort: false,\r\n filter: false,\r\n },\r\n },\r\n];\r\n\r\nconst options = {\r\n customToolbarSelect: () => { },\r\n filterType: \"dropdown\",\r\n print: false,\r\n download: true,\r\n viewColumns: false,\r\n selectableRows: false\r\n};\r\n\r\nconst theme = createMuiTheme({\r\n overrides: {\r\n MUIDataTableSelectCell: {\r\n expandDisabled: {\r\n // Soft hide the button.\r\n visibility: \"show\",\r\n },\r\n },\r\n },\r\n});\r\n\r\nlet listOfUsers = [];\r\nclass CreateTable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.props = props;\r\n this.state = {\r\n data: [],\r\n passData: [],\r\n rowsExpanded: [],\r\n refresh: false,\r\n };\r\n this.errorHandler = this.props.errorHandler;\r\n this.refreshHandler = this.RefreshHandler.bind(this);\r\n\r\n }\r\n _isMounted = false;\r\n\r\n RefreshHandler(ref) {\r\n if (ref) {\r\n this.setState({\r\n refresh: false,\r\n tableData: [],\r\n });\r\n this.componentDidMount();\r\n }\r\n }\r\n\r\n async FetchDataMobile() {\r\n let tmpData = [];\r\n let tPassData = [];\r\n let result = null;\r\n if (_isMounted) {\r\n FetchUserMobileAPI().then(response => {\r\n listOfUsers = [];\r\n listOfUsers = JSON.parse(response.data.userList); \r\n result = listOfUsers;\r\n if (_isMounted) {\r\n for (var key in result) {\r\n let lastLogin = \"\";\r\n if (result[key][\"lastLogin\"]) {\r\n lastLogin = new Date(result[key][\"lastLogin\"]).toDateString();\r\n }\r\n let _key = key;\r\n\r\n var count = 0; // to ignore first result - Bin Wei structure ( result[0] is pre which is not to be stored or display anymore)\r\n var r = [];\r\n for (var modID in result[_key][\"moduleResults\"]) {\r\n var mod = result[_key][\"moduleResults\"][modID];\r\n for (var rID in mod[\"results\"]) {\r\n count++;\r\n\r\n if (count !== 1) {\r\n r.push(mod[\"results\"][rID][\"score\"]);\r\n }\r\n }\r\n }\r\n var max = parseInt(r[0]);\r\n for (var l = 1; l < r.length; l++) {\r\n if (parseInt(r[l]) > max) {\r\n max = parseInt(r[l]);\r\n }\r\n }\r\n\r\n let modulesPassed = 0;\r\n let modulesCompleted = 0;\r\n if (\r\n result[_key][\"moduleResults\"][0][\"finishPostAssessment\"] === true\r\n ) {\r\n modulesPassed += 1;\r\n }\r\n if (result[_key][\"moduleResults\"][0][\"completedModule\"] === true) {\r\n modulesCompleted += 1;\r\n }\r\n\r\n if (result[_key][\"moduleResults\"][1] != null) {\r\n if (\r\n result[_key][\"moduleResults\"][1][\"finishPostAssessment\"] ===\r\n true\r\n ) {\r\n modulesPassed += 1;\r\n }\r\n if (\r\n result[_key][\"moduleResults\"][1][\"completedModule\"] === true\r\n ) {\r\n modulesCompleted += 1;\r\n }\r\n }\r\n \r\n\r\n // phase2 - login split, remove beofre 2021\r\n\r\n\r\n var login = lastLogin.split(' ');\r\n var lastLogout = (CheckForNull(result[key][\"userData\"][\"lastLogout\"]) === \"Nil\") ? lastLogin : result[key][\"userData\"][\"lastLogout\"];\r\n var province = result[key][\"userData\"][\"province\"];\r\n var district = (CheckForNull(result[key][\"userData\"][\"district\"]) === \"Nil\") ? province : result[key][\"userData\"][\"district\"];\r\n if(login[3] === \"2021\" || login[3]=== \"2020\")\r\n {\r\n ;\r\n }\r\n else\r\n {\r\n tmpData.push(\r\n CreateTableData(\r\n result,\r\n result[key][\"_id\"],\r\n result[key][\"userData\"][\"userName\"],\r\n result[key][\"userData\"][\"emailAddress\"],\r\n result[key][\"userData\"][\"phoneNumber\"],\r\n lastLogin,\r\n lastLogout,\r\n result[key][\"isActive\"],\r\n result[key][\"userData\"][\"country\"],\r\n province,\r\n district,\r\n modulesPassed,\r\n modulesCompleted,\r\n result[key][\"userData\"][\"landSize\"],\r\n result[key][\"userData\"][\"averageProduction\"],\r\n result[key][\"userData\"][\"averageHarvest\"],\r\n result[key][\"userData\"][\"associateId\"],\r\n result[key][\"userData\"][\"farmerGroup\"],\r\n this.errorHandler,\r\n this.refreshHandler,\r\n result[key][\"userData\"][\"emailAddress\"],\r\n result[key][\"userData\"][\"isFarmer\"],\r\n result[key][\"userData\"][\"gender\"],\r\n\r\n )\r\n );\r\n }\r\n }\r\n if (_isMounted) {\r\n this.setState({\r\n data: tmpData,\r\n passData: tPassData,\r\n });\r\n }\r\n }\r\n else {\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n async componentDidMount() {\r\n // console.log(\"mounted\");\r\n _isMounted = true;\r\n if (_isMounted) this.FetchDataMobile();\r\n }\r\n\r\n componentWillUnmount() {\r\n _isMounted = false;\r\n this.setState({\r\n data: [],\r\n passData: [],\r\n });\r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n \r\n {this.state.data.length <= 0 ? (\r\n
\r\n \r\n \r\n \r\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 (CreateTable);","import React from \"react\";\r\nimport { withAuthorization } from \"../Session\";\r\nimport * as ROLES from \"../../constants/roles\";\r\nimport {\r\n Grid,\r\n} from \"@material-ui/core\";\r\nimport CreateTable from \"./TableEx\";\r\nimport Snackbar from \"../Common/Snackbar\";\r\n\r\nclass UserList extends (React.Component) {\r\n constructor(props) {\r\n super(props);\r\n this.props = props;\r\n this.state = {\r\n errorText: \"\",\r\n errorType: \"\",\r\n };\r\n\r\n this.errorHandler = this.ErrorHandler.bind(this);\r\n }\r\n _isMounted = false;\r\n\r\n ErrorHandler(type, text) {\r\n this.setState({\r\n errorText: text,\r\n errorType: type,\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n render() {\r\n const fixedHeightPaperLarge = this.props.styleFixedHeightLarge;\r\n\r\n return (\r\n \r\n\r\n \r\n \r\n \r\n\r\n {this.state.errorText !== \"\" ? (\r\n {\r\n this.setState({ errorText: \"\" });\r\n }}\r\n />\r\n ) : (\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst condition = (authUser) =>\r\n authUser &&\r\n (authUser.roles.includes(ROLES.ADMIN) ||\r\n authUser.roles.includes(ROLES.SUPERADMIN));\r\nexport default withAuthorization(condition)(UserList);","import React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport UserList from \"./UserList\";\r\nimport { useStyles } from '../Common/Styles';\r\n// import { compose } from \"recompose\";\r\n// import { withFirebase } from \"../Firebase\";\r\nimport { withAuthorization } from \"../Session\";\r\nimport * as ROLES from \"../../constants/roles\";\r\n\r\nfunction APPUSERS() {\r\n const classes = useStyles();\r\n const fixedHeightPaperSmall = clsx(classes.paper, classes.fixedHeightSmall);\r\n const fixedHeightPaperLarge = clsx(classes.paper, classes.fixedHeightLarge);\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst condition = (authUser) =>\r\n authUser &&\r\n (authUser.roles.includes(ROLES.ADMIN) ||\r\n authUser.roles.includes(ROLES.SUPERADMIN));\r\nexport default withAuthorization(condition)(APPUSERS);\r\n\r\n\r\n// export default APPUSERS;","import React from \"react\";\r\nimport Modal from \"@material-ui/core/Modal\";\r\n// import { withFirebase } from \"../Firebase\";\r\nimport { Button, TextField, Grid } from \"@material-ui/core\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { useStyles } from \"../Common/Styles\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport { NameUpdaterContext } from \"../App\";\r\nimport { UpdateWebUser_Name_Org } from \"../../helpers/UserHelper\";\r\n\r\nfunction getModalStyle() {\r\n const top = 50;\r\n const left = 50;\r\n\r\n return {\r\n top: `${top}%`,\r\n left: `${left}%`,\r\n transform: `translate(-${top}%, -${left}%)`,\r\n };\r\n}\r\n\r\nfunction EditModal(props) {\r\n const startUsername = props.uname;\r\n const startOrg = props.org;\r\n const uid = props.uid;\r\n const NameUpdater = React.useContext(NameUpdaterContext);\r\n // const [formState, formUpdate] = React.useState({\r\n // username: \"\",\r\n // org: \"\",\r\n // });\r\n let errorHandler = props.errorHandler;\r\n let refreshHandler = props.refreshHandler;\r\n\r\n const [saveBut, SetSaveStatus] = React.useState(false);\r\n const [username, SetUsername] = React.useState(null);\r\n const [org, SetOrg] = React.useState(null);\r\n const classes = useStyles();\r\n\r\n const [modalStyle] = React.useState(getModalStyle);\r\n const [open, setOpen] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n SetSaveStatus(username === startUsername && org === startOrg);\r\n }, [username, org]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const handleOpen = () => {\r\n SetUsername(startUsername);\r\n SetOrg(startOrg);\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const OnSubmitModal = (event) => {\r\n event.preventDefault();\r\n let payload = {\r\n _id: uid,\r\n userName: username,\r\n org: org\r\n };\r\n\r\n UpdateWebUser_Name_Org(payload).then(response => {\r\n if (response.data.success) {\r\n handleClose();\r\n errorHandler(\"success\", \"Updated Information!\");\r\n var user = JSON.parse(localStorage.getItem(\"authUser\"));\r\n if (user.authUser.uid === uid) {\r\n NameUpdater(username);\r\n }\r\n refreshHandler(true);\r\n }\r\n else {\r\n errorHandler(\"error\", response.data.message);\r\n }\r\n });\r\n };\r\n\r\n const onChangeModal = (event) => {\r\n event.target.name === \"username\"\r\n ? SetUsername(event.target.value)\r\n : SetOrg(event.target.value);\r\n };\r\n\r\n const body = (\r\n
\r\n
\r\n \r\n \r\n \r\n
Edit Fields
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n Cancel\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 Edit\r\n \r\n \r\n {body}\r\n \r\n
\r\n );\r\n}\r\n\r\n//const FirebaseEditModal = withFirebase(EditModal);\r\nconst FirebaseEditModal = (EditModal);\r\nexport default FirebaseEditModal;\r\n","import React from \"react\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { MuiThemeProvider, createMuiTheme } from \"@material-ui/core/styles\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport FirebaseEditModal from \"../Common/EditModal\";\r\nimport DeleteButtonFirebase from \"../Common/DeleteButton\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\nimport ActiveToggleFirebase from \"../Common/ActiveToggle\";\r\nimport { GetAdminList } from \"../../helpers/UserHelper\";\r\n\r\n\r\nfunction createTableData(\r\n _id,\r\n email,\r\n org,\r\n lastLogin,\r\n status,\r\n userName,\r\n roles,\r\n errorHandler,\r\n refreshHandler\r\n) {\r\n var temp = [];\r\n temp.push(_id);\r\n temp.push(userName);\r\n temp.push(email);\r\n temp.push(org);\r\n temp.push(lastLogin);\r\n var togAct = (\r\n \r\n );\r\n temp.push(togAct);\r\n var but = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n temp.push(but);\r\n return temp;\r\n}\r\n\r\nconst loadingData = [\r\n [\r\n \"\",\r\n \"Loading Data\",\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ],\r\n];\r\nconst noData = [[\"\", \"No User Found\"]];\r\n\r\nconst columns = [\r\n {\r\n name: \"UID\",\r\n options: {\r\n display: false,\r\n sort: false,\r\n filter: false,\r\n },\r\n },\r\n {\r\n name: \"Username\",\r\n options: {\r\n display: true,\r\n sort: false,\r\n filter: false,\r\n },\r\n },\r\n {\r\n name: \"Email\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Organization Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Last Login\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Actions\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n\r\n },\r\n },\r\n];\r\n\r\nconst options = {\r\n customToolbarSelect: () => { },\r\n filterType: \"dropdown\",\r\n print: false,\r\n download: true,\r\n viewColumns: false,\r\n selectableRows: false\r\n};\r\n\r\nconst theme = createMuiTheme({\r\n overrides: {\r\n MUIDataTableSelectCell: {\r\n expandDisabled: {\r\n // Soft hide the button.\r\n visibility: \"show\",\r\n },\r\n },\r\n },\r\n});\r\n\r\nclass CreateTable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.props = props;\r\n this.state = {\r\n tableData: [],\r\n refresh: false,\r\n isLoading: false,\r\n };\r\n this.errorHandler = this.props.errorHandler;\r\n this.refreshHandler = this.RefreshHandler.bind(this);\r\n }\r\n\r\n _isMounted = false;\r\n\r\n RefreshHandler(ref) {\r\n if (ref) {\r\n this.setState({\r\n refresh: false,\r\n tableData: [],\r\n });\r\n this.componentDidMount();\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this._isMounted = true;\r\n let tmpData = [];\r\n let ll = \"\";\r\n let adminList = [];\r\n GetAdminList().then(adminListReceived => {\r\n adminList = JSON.parse(adminListReceived.data.userList);\r\n if (this._isMounted) {\r\n for (var key in adminList) {\r\n this.setState({ isLoading: true });\r\n if (adminList[key][\"lastLogin\"]) {\r\n // console.log(adminList[key][\"lastLogin\"]);\r\n ll = new Date(adminList[key][\"lastLogin\"]).toDateString();\r\n }\r\n tmpData.push(\r\n createTableData(\r\n adminList[key][\"_id\"],\r\n adminList[key][\"email\"],\r\n adminList[key][\"org\"],\r\n ll,\r\n adminList[key][\"isActive\"],\r\n adminList[key][\"username\"],\r\n adminList[key][\"roles\"],\r\n this.errorHandler,\r\n this.refreshHandler\r\n )\r\n );\r\n }\r\n if (tmpData.length > 0) {\r\n this.setState({\r\n tableData: tmpData,\r\n });\r\n } else {\r\n this.setState({\r\n isLoading: false,\r\n });\r\n }\r\n }\r\n })\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n this.setState({\r\n tableData: [],\r\n isLoading: false,\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.state.tableData.length <= 0 ? (\r\n \r\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 CreateTable;\r\n","import React from \"react\";\r\nimport { Grid, TextField, Paper, Button, Typography } from \"@material-ui/core\";\r\nimport CreateTable from \"./TableEx\";\r\nimport Snackbar from \"../Common/Snackbar\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\nimport { RegisterWebUserDashboard } from \"../../helpers/UserHelper\";\r\n\r\nimport * as ROLES from \"../../constants/roles\";\r\nimport { withAuthorization } from \"../Session\";\r\nimport { compose } from \"recompose\";\r\n\r\nimport * as ResetPasswordHelper from \"../../helpers/ResetPasswordHelper\";\r\n\r\n\r\n//let users;\r\n//let userCount;\r\n//var viewCount = 0;\r\n\r\nconst INITIAL_STATE = {\r\n username: \"\",\r\n email: \"\",\r\n passwordOne: \"\",\r\n passwordTwo: \"\",\r\n isActive: \"true\",\r\n org: \"\",\r\n passwordHidden: \"\",\r\n showPassword: false,\r\n};\r\n\r\nconst crypto = window.crypto || window.msCrypto;\r\n\r\nfunction CreatePassword() {\r\n let length = 14;\r\n let wishList = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@-#$\";\r\n var pass = Array.from(crypto.getRandomValues(new Uint32Array(length)))\r\n .map((x) => wishList[x % wishList.length])\r\n .join(\"\");\r\n return pass;\r\n}\r\n\r\nclass UserList extends (React.Component) {\r\n constructor(props) {\r\n super(props);\r\n this.props = props;\r\n this.state = {\r\n ...INITIAL_STATE,\r\n totalAppUsers: (\r\n \r\n ),\r\n formErrorState: \"\",\r\n emailForm: \"\",\r\n passwordOneForm: \"\",\r\n orgForm: \"\",\r\n passwordTwoForm: \"\",\r\n usernameForm: \"\",\r\n tableData: [],\r\n errorText: \"\",\r\n errorType: \"\",\r\n refresh: false,\r\n isSubmitted: false,\r\n };\r\n //viewCount = 0;\r\n this.errorHandler = this.ErrorHandler.bind(this);\r\n }\r\n _isMounted = false;\r\n\r\n ErrorHandler(type, text) {\r\n this.setState({\r\n errorText: text,\r\n errorType: type,\r\n });\r\n }\r\n\r\n RefreshCall() {\r\n var self = this;\r\n setTimeout(function () {\r\n self.setState({\r\n refresh: false,\r\n });\r\n }, 1000);\r\n }\r\n\r\n IsSubmitWorking(val) {\r\n this.setState({\r\n isSubmitted: val,\r\n });\r\n }\r\n\r\n async componentDidMount() {\r\n this._isMounted = true;\r\n // this.props.firebase.db\r\n // .ref(\"/web_users/\")\r\n // .once(\"value\")\r\n // .then(function (snapshot) {\r\n // //users = snapshot.val();\r\n // for (var key in snapshot.val()) {\r\n // if (ROLES.ADMIN.localeCompare(snapshot.val()[key][\"roles\"]) === 0) {\r\n // viewCount = viewCount + 1;\r\n // }\r\n // }\r\n // // self.setState({\r\n // // totalAppUsers: (\r\n // // \r\n // // ),\r\n // // });\r\n // });\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n onSubmit = async (event) => {\r\n event.preventDefault();\r\n const {\r\n username,\r\n email,\r\n org,\r\n } = this.state;\r\n\r\n let isActive = \"true\";\r\n var self = this;\r\n\r\n var validEmailRegEx = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])+([.][a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/i;\r\n var isValidEmail = email === \"\" ? true : validEmailRegEx.test(email);\r\n var eHelper = !isValidEmail ? \"The Email format is invalid.\" : \"\";\r\n\r\n var usernameRegEx = /^[^\\s][a-zA-Z0-9\\s]+$/i;\r\n var isValidUsername = username === \"\" ? true : usernameRegEx.test(username);\r\n var uHelper = !isValidUsername\r\n ? \"The Username you entered is invalid.\"\r\n : \"\";\r\n\r\n const formError =\r\n email === \"\" ||\r\n org === \"\" ||\r\n username === \"\" ||\r\n !isValidUsername ||\r\n !isValidEmail;\r\n\r\n this.setState({\r\n formErrorState: formError ? \"Please fill in this field.\" : \"\",\r\n usernameForm:\r\n uHelper === \"\"\r\n ? username === \"\"\r\n ? \"Please enter a Username.\"\r\n : \"\"\r\n : \"The Username you entered is invalid.\",\r\n emailForm:\r\n eHelper === \"\"\r\n ? email === \"\"\r\n ? \"Please enter an Email.\"\r\n : \"\"\r\n : \"The Email format is invalid.\",\r\n orgForm: org === \"\" ? \"Please enter an Organization.\" : \"\",\r\n });\r\n\r\n if (formError === false) {\r\n this.IsSubmitWorking(true);\r\n let password = \"\";\r\n password = CreatePassword();\r\n // password = \"1234\";\r\n // console.log(password);\r\n let payload = {\r\n \"email\": email,\r\n \"isActive\": isActive,\r\n \"password\": password,\r\n \"org\": org,\r\n \"roles\": [\"ADMIN\"],\r\n \"username\": username\r\n };\r\n\r\n // console.log(payload);\r\n\r\n RegisterWebUserDashboard(payload).then(response => {\r\n if (response.data.success) {\r\n self.ErrorHandler(\"success\", response.data.message);\r\n self.setState({\r\n username: \"\",\r\n email: \"\",\r\n passwordOne: \"\",\r\n passwordTwo: \"\",\r\n isActive: \"true\",\r\n org: \"\",\r\n refresh: true,\r\n });\r\n let payloadNext = {\r\n email: email\r\n };\r\n ResetPasswordHelper.SendResetPasswordMail(payloadNext).then(response => {\r\n if (response) {\r\n if (response.status === 200) {\r\n self.ErrorHandler(\"success\", \"Email with login details sent!\");\r\n }\r\n else {\r\n self.ErrorHandler(\"error\",response.data.message);\r\n\r\n }\r\n }\r\n });\r\n self.RefreshCall();\r\n self.IsSubmitWorking(false);\r\n }\r\n else {\r\n self.ErrorHandler(\"error\", response.data.message);\r\n self.IsSubmitWorking(false);\r\n }\r\n });\r\n } else {\r\n self.IsSubmitWorking(false);\r\n }\r\n };\r\n\r\n onChange = (event) => {\r\n var errorName = [event.target.name] + \"Form\";\r\n\r\n this.setState({\r\n [event.target.name]: event.target.value,\r\n [errorName]: \"\",\r\n });\r\n };\r\n\r\n render() {\r\n //const classes = this.props.styleClass;\r\n const fixedHeightPaper = this.props.styleFixedHeight;\r\n const { username, email, org } = this.state;\r\n\r\n // const pError = passwordOne !== passwordTwo;\r\n // const pLenError = passwordOne.length <= 6 || passwordTwo.length <= 6;\r\n // const pHelper = pError\r\n // ? \"Those passwords didn't match. Try again.\"\r\n // : pLenError\r\n // ? \"Use 6 or more characters with a mix of letters, numbers & symbols\"\r\n // : \"\";\r\n //var validEmailRegEx = /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+([\\.][A-Z0-9_'%=+!`#~$*?^{}&|-]+)*@[A-Z0-9-]+(\\.[A-Z0-9-]+)+$/i;\r\n\r\n // var passwordRegEx = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{6,16}$/i;\r\n // var isInvalidPassword =\r\n // passwordOne === \"\" ? true : passwordRegEx.test(passwordOne);\r\n // var pRegexHelper = !isInvalidPassword\r\n // ? \"Password should at least contain a number and a special character, it should also be at least 6 characters in length.\"\r\n // : \"\";\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Admins\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n Create New Admin\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n
\r\n \r\n Submit\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {this.state.refresh === true ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n {this.state.errorText !== \"\" ? (\r\n {\r\n this.setState({ errorText: \"\" });\r\n }}\r\n />\r\n ) : (\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\n// export default UserList;\r\nconst condition = (authUser) =>\r\n authUser && authUser.roles.includes(ROLES.SUPERADMIN);\r\nexport default compose(withAuthorization(condition))(UserList);","import React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport UserList from \"./UserList\";\r\nimport { useStyles } from '../Common/Styles';\r\n\r\nfunction AdminPage() {\r\n const classes = useStyles();\r\n const fixedHeightPaperLarge = clsx(classes.paper, classes.fixedHeightLarge);\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default AdminPage;","import React, { Component } from \"react\";\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Copyright from \"../Common/Copyright\";\r\nimport Snackbar from \"../Common/Snackbar\";\r\nimport { useStyles } from \"../Common/Styles\";\r\n\r\nimport * as ResetPasswordHelper from \"../../helpers/ResetPasswordHelper\";\r\n\r\nfunction ChangePassword(props) {\r\n const classes = useStyles();\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nlet isValid = false;\r\n\r\nclass ChangePasswordUI extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.codeString = localStorage.getItem(\"resetPasswordToken\") ? localStorage.getItem(\"resetPasswordToken\") : null;\r\n this.state = { \r\n email: null,\r\n error: null,\r\n severity : \"error\",\r\n };\r\n // this.state = ({\r\n // email: null,\r\n // error: null,\r\n // severity: \"error\"\r\n // });\r\n }\r\n\r\n componentDidMount() {\r\n if (this.codeString != null) {\r\n\r\n let payload = {\r\n token: this.codeString\r\n };\r\n ResetPasswordHelper.CheckIfTokenIsValid(payload).then(response => {\r\n if (response) {\r\n // console.log(response);\r\n\r\n\r\n if (response.status === 200) {\r\n isValid = true;\r\n var error = {\r\n message: \"Account found. Continue to reset password\",\r\n };\r\n this.setState({\r\n email: response.userData.email,\r\n error: error,\r\n severity: \"success\"\r\n });\r\n }\r\n else {\r\n error = {\r\n message: \"Account not found or token has expired / used previously.\",\r\n };\r\n isValid = false;\r\n this.setState({\r\n email: \"Please Try Again.\",\r\n severity: \"error\",\r\n error: error,\r\n });\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n // alert(\"nocode\");\r\n var error = {\r\n message: \"Code not valid / found\",\r\n };\r\n isValid = false;\r\n this.setState({\r\n email: \"Please Try Again.\",\r\n severity: \"error\",\r\n error: error,\r\n });\r\n }\r\n }\r\n\r\n IsSubmitHandler(val) {\r\n this.setState({ isSubmitted: val });\r\n }\r\n\r\n onChange = (event) => {\r\n var errorName = [event.target.name] + \"Form\";\r\n this.setState({\r\n [event.target.name]: event.target.value,\r\n [errorName]: \"\",\r\n });\r\n };\r\n\r\n onSubmit = (event) => {\r\n // var self = this;\r\n this.IsSubmitHandler(true);\r\n const { email, password } = this.state;\r\n let payload = {\r\n email: email,\r\n newPassword: password,\r\n };\r\n ResetPasswordHelper.UpdatePassword(payload).then(response => {\r\n if (response) {\r\n if (response.status === 200) {\r\n var error = {\r\n message: \"Password updated!\",\r\n };\r\n this.setState({\r\n email: email,\r\n severity: \"success\",\r\n error: error,\r\n password: \"\",\r\n \r\n });\r\n }\r\n else {\r\n error = {\r\n message: \"Password updation failed.\",\r\n };\r\n this.setState({\r\n email: email,\r\n severity: \"error\",\r\n error: error,\r\n password: \"\",\r\n\r\n });\r\n }\r\n }\r\n });\r\n\r\n event.preventDefault();\r\n };\r\n\r\n GoToSignIn() {\r\n window.location.href = \"https://ecocoa.olamdigital.com/signin\";\r\n }\r\n\r\n handleCloseAlert = (event, reason) => { };\r\n\r\n render() {\r\n const { password, passwordRepeat, error } = this.state;\r\n\r\n const isInvalid =\r\n password === \"\" || password !== passwordRepeat || isValid === false;\r\n const classes = this.props.value;\r\n var strongRegex = new RegExp(\r\n \"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{14,})\"\r\n );\r\n\r\n var isInvalidPassword = password === \"\" ? true : strongRegex.test(password);\r\n var pHelper = !isInvalidPassword\r\n ? \"Password is invalid, please read and follow all rules mentioned below!\"\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\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 Change Password\r\n \r\n \r\n Go to SignIn\r\n \r\n \r\n \r\n Password must contain:\r\n
    \r\n
  1. Minimun length - 14 Characters
  2. \r\n
  3. 1 Uppercase alphabet
  4. \r\n
  5. 1 Lowercase alphabet
  6. \r\n
  7. 1 Digit
  8. \r\n
  9. 1 Special Character !@#$%^&*
  10. \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\r\n {error && (\r\n {\r\n this.setState({ error: null });\r\n }}\r\n />\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\n// const INITIAL_STATE = {\r\n// email: \"\",\r\n// password: \"\",\r\n// passwordRepeat: \"\",\r\n// error: null,\r\n// severity: \"error\",\r\n\r\n// isSubmitted: false,\r\n// };\r\n\r\nconst ChangePasswordWithUI = (ChangePassword);\r\n\r\nexport default ChangePasswordWithUI;\r\n\r\nexport { ChangePasswordWithUI };\r\n","export default __webpack_public_path__ + \"static/media/NewCertENG.d94f9c3c.png\";","import React, { useEffect } from \"react\";\r\nimport certENG from \"./NewCertENG.png\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport { useState } from \"react\";\r\n\r\nconst DownloadCert = ({ name, module }) => {\r\n const [shouldDownload, setShouldDownload] = useState(false);\r\n const downloadImage = async () => {\r\n\r\n const canvas = document.getElementById(\"imgCanvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n\r\n const img = document.getElementById(\"mainImage\");\r\n img.onload = async () => {\r\n ctx.drawImage(img, 0, 0);\r\n ctx.font = \"40px Courier Bold\";\r\n ctx.fillStyle = \"BLACK\";\r\n ctx.fillText(name, 350, 280); // THIS IS THE PLACE TEXT IS EMBEDDED INTO THE PICTURE\r\n ctx.fillText(module, 560, 375, 250);\r\n\r\n // add a rectangle to make sure the canvas is being drawn to\r\n ctx.fillStyle = \"red\";\r\n ctx.fillRect(10, 10, 100, 100);\r\n\r\n const b64Code = canvas.toDataURL();\r\n \r\n\r\n const a = document.createElement(\"a\");\r\n a.href = b64Code;\r\n a.download = \"cert.png\";\r\n a.click();\r\n };\r\n\r\n // set the src of the img element after defining its onload callback\r\n img.src = certENG;\r\n };\r\n\r\n useEffect(() => {\r\n if (shouldDownload)\r\n downloadImage();\r\n }, [name, module, shouldDownload]);\r\n\r\n return (\r\n <>\r\n \r\n {\r\n setShouldDownload(true);\r\n await downloadImage();\r\n setShouldDownload(false);\r\n }}\r\n >\r\n Download\r\n \r\n \r\n );\r\n};\r\n\r\nexport default DownloadCert;\r\n","import React from \"react\";\r\nimport Modal from \"@material-ui/core/Modal\";\r\nimport { Grid } from \"@material-ui/core\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { useStyles } from \"../Common/Styles\";\r\nimport MUIDataTable from \"mui-datatables\";\r\n\r\nimport { MuiThemeProvider, createMuiTheme } from \"@material-ui/core/styles\";\r\nimport UnfoldMoreIcon from \"@material-ui/icons/UnfoldMore\";\r\nimport CancelIcon from \"@material-ui/icons/Cancel\";\r\nimport { FetchUserMobileAPI } from \"../../helpers/DashboardHelper.js\";\r\n\r\n\r\nvar questionPruningJSON = require(\"../Common/pruning_mod1.json\");\r\nvar questionFertilizingJSON = require(\"../Common/fertilizing_mod2.json\");\r\n\r\n\r\nfunction DatabaseMapCheck(val) {\r\n if (val === \"\" || val === \"-1\" || val === \" \" || val == null) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n}\r\n\r\n// fucntion CheckForNoAnswer(val){\r\n// if()\r\n// }\r\n\r\nfunction GetOptionVal(val) {\r\n switch (val) {\r\n case 0:\r\n return \"A\";\r\n case 1:\r\n return \"B\";\r\n case 2:\r\n return \"C\";\r\n case 3:\r\n return \"D\";\r\n default:\r\n return \"NA\";\r\n }\r\n}\r\n\r\nfunction GetPreQuestionAnswer(qID, aID, module = \"0\") {\r\n var mapped = {\r\n qNo: \"\",\r\n q: \"\",\r\n a: \"\",\r\n };\r\n var questionjson = module === \"0\" ? questionPruningJSON : questionFertilizingJSON;\r\n if (DatabaseMapCheck(qID) && DatabaseMapCheck(aID)) {\r\n questionjson.questions.map((question) => {\r\n var id = question.questionID.toString();\r\n if (id === qID) {\r\n mapped.q = question.questionText.toString();\r\n mapped.a = question.options[aID]\r\n ? question.options[aID].optionText.toString()\r\n : \"NA\";\r\n mapped.qNo = qID;\r\n }\r\n return null;\r\n });\r\n return mapped;\r\n } else return null;\r\n}\r\n\r\nfunction GetPostQuestionAnswer(num, qID, aID, module = \"0\") {\r\n var mapped = {\r\n id: null,\r\n q: \"\",\r\n a: \"\",\r\n };\r\n var questionjson = module === \"0\" ? questionPruningJSON : questionFertilizingJSON;\r\n if (DatabaseMapCheck(qID) && DatabaseMapCheck(aID)) {\r\n questionjson.questions.map((question) => {\r\n var id = question.questionID.toString();\r\n if (id === qID) {\r\n mapped.id = num;\r\n mapped.q = question.questionText.toString();\r\n mapped.a = GetOptionVal(aID);\r\n }\r\n return null;\r\n });\r\n return mapped;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n\r\nfunction getModalStyle() {\r\n const top = 50;\r\n const left = 50;\r\n\r\n return {\r\n top: `${top}%`,\r\n left: `${left}%`,\r\n transform: `translate(-${top}%, -${left}%)`,\r\n };\r\n}\r\n\r\nfunction CreatePreTableData(ans, ques, quesNo) {\r\n var temp = [];\r\n for (var i = 0; i < ans.length; i++) {\r\n temp.push(createPreData(quesNo[i], ans[i], ques[i]));\r\n }\r\n return temp;\r\n}\r\n\r\nfunction createPreData(i, a, q) {\r\n var temp = [];\r\n var ques = \"\";\r\n ques = \"Q\" + i + \": \" + q;\r\n temp.push(ques);\r\n temp.push(a);\r\n return temp;\r\n}\r\n\r\nfunction CreatePostTableData(uid, po, res) {\r\n var temp = [];\r\n var tempt = [];\r\n var attempt = 0;\r\n var max = po.length / 10;\r\n for (var i = 0; i < max; i++) {\r\n tempt = [];\r\n tempt.push(i + 1);\r\n var iteratorMax = 10 + attempt <= po.length ? 10 : po.length - attempt;\r\n for (var j = 0; j < iteratorMax; j++) {\r\n tempt.push(po[j + attempt].a);\r\n }\r\n tempt.push(res[i]);\r\n attempt += 10;\r\n temp.push(tempt);\r\n }\r\n return temp;\r\n}\r\n\r\nfunction InfoModal(props) {\r\n // const c = props.c;\r\n // const pv = props.pv;\r\n const landSize = props.ls;\r\n // const averageProduction = props.ap;\r\n // const averageHarvest = props.ah;\r\n // const baseProduction = props.bp;\r\n // const baseProductionPerLandSize = props.bpl;\r\n const farmerAssociation = props.fa;\r\n const farmerGroup = props.fg;\r\n\r\n const uid = props.uid;\r\n // let errorHandler = props.errorHandler;\r\n\r\n // const dataMain = [[landSize, averageHarvest, averageProduction, baseProduction, baseProductionPerLandSize, farmerAssociation, farmerGroup]];\r\n const dataMain = [[landSize, farmerAssociation, farmerGroup]];\r\n\r\n const [TableStates, SetTableData] = React.useState({\r\n pre: [],\r\n post: [],\r\n preHar: [],\r\n postHar: [],\r\n preFetch: false,\r\n postFetch: false,\r\n });\r\n\r\n const classes = useStyles();\r\n\r\n const [modalStyle] = React.useState(getModalStyle);\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const result = props.result;\r\n\r\n React.useEffect(() => {\r\n var preQuesNo = [];\r\n var preA = [];\r\n var preQ = [];\r\n var po = [];\r\n var r = [];\r\n\r\n var preAnsFertilizing = [];\r\n var preQuesFertilizing = [];\r\n var preQuesNoFertilizing = [];\r\n var poHar = [];\r\n var rHar = [];\r\n // let listOfUsers = [];\r\n // FetchUserMobileAPI()\r\n // .then(response => {\r\n // let result = JSON.parse(response.data.userList);\r\n // console.log(\"result \" + JSON.stringify(result));\r\n // listOfUsers = result;\r\n for (var key in result) {\r\n if (result[key][\"_id\"] === uid) {\r\n\r\n var mod = result[key][\"moduleResults\"][\"0\"];\r\n\r\n //pre Ass mapping\r\n for (var preID in mod[\"preResult\"]) {\r\n var pre = mod[\"preResult\"][preID];\r\n var mapPreQues = GetPreQuestionAnswer(\r\n pre[\"questionID\"],\r\n pre[\"answer\"]\r\n );\r\n if (mapPreQues != null) {\r\n preQ.push(mapPreQues.q);\r\n preA.push(mapPreQues.a);\r\n preQuesNo.push(mapPreQues.qNo);\r\n }\r\n }\r\n\r\n //post ass mapping\r\n var pcount = 0;\r\n //postCount = mod[\"postResults\"].length;\r\n for (var poID in mod[\"postResults\"]) {\r\n pcount++;\r\n for (var poR in mod[\"postResults\"][poID][\"postResult\"]) {\r\n var post = mod[\"postResults\"][poID][\"postResult\"][poR];\r\n var mapPostQues = GetPostQuestionAnswer(\r\n pcount,\r\n post[\"questionID\"],\r\n post[\"answer\"]\r\n );\r\n if (mapPostQues != null) {\r\n po.push(mapPostQues);\r\n }\r\n }\r\n }\r\n\r\n //result\r\n var count = 0; // to ignore first result - Bin Wei structure ( result[0] is pre which is not to be stored or display anymore)\r\n for (var rID in mod[\"results\"]) {\r\n count++;\r\n\r\n if (count !== 1) {\r\n r.push(mod[\"results\"][rID][\"score\"]);\r\n }\r\n }\r\n\r\n var tempPre = [];\r\n tempPre = CreatePreTableData(preA, preQ, preQuesNo);\r\n var tempPost = [];\r\n tempPost = CreatePostTableData(uid, po, r);\r\n\r\n //============================================Fertilizing Module==========================================================\r\n\r\n var tempPostHar = [];\r\n var tempPreHar = [];\r\n\r\n if (result[key][\"moduleResults\"][\"1\"] != null) {\r\n mod = result[key][\"moduleResults\"][\"1\"];\r\n\r\n //pre Ass mapping\r\n for (var preIDFertilizing in mod[\"preResult\"]) {\r\n pre = mod[\"preResult\"][preIDFertilizing];\r\n var mapPreQuesFertilizing = GetPreQuestionAnswer(\r\n pre[\"questionID\"],\r\n pre[\"answer\"],\r\n \"1\"\r\n );\r\n if (mapPreQuesFertilizing != null) {\r\n preQuesFertilizing.push(mapPreQuesFertilizing.q);\r\n preAnsFertilizing.push(mapPreQuesFertilizing.a);\r\n preQuesNoFertilizing.push(mapPreQuesFertilizing.qNo);\r\n }\r\n }\r\n\r\n //post ass mapping\r\n pcount = 0;\r\n for (var poIDFertilizing in mod[\"postResults\"]) {\r\n pcount++;\r\n for (var poRFertilizing in mod[\"postResults\"][poIDFertilizing][\"postResult\"]) {\r\n var postFertilizing = mod[\"postResults\"][poIDFertilizing][\"postResult\"][poRFertilizing];\r\n var mapPostQuesFertilizing = GetPostQuestionAnswer(\r\n pcount,\r\n postFertilizing[\"questionID\"],\r\n postFertilizing[\"answer\"],\r\n \"1\"\r\n );\r\n if (mapPostQuesFertilizing != null) {\r\n poHar.push(mapPostQuesFertilizing);\r\n }\r\n }\r\n }\r\n\r\n //result\r\n count = 0; // to ignore first result - Bin Wei structure ( result[0] is pre which is not to be stored or display anymore)\r\n for (var rIDFertilizing in mod[\"results\"]) {\r\n count++;\r\n\r\n if (count !== 1) {\r\n rHar.push(mod[\"results\"][rIDFertilizing][\"score\"]);\r\n }\r\n }\r\n\r\n\r\n tempPreHar = CreatePreTableData(preAnsFertilizing, preQuesFertilizing, preQuesNoFertilizing);\r\n tempPostHar = CreatePostTableData(uid, poHar, rHar);\r\n }\r\n\r\n\r\n\r\n // if (tempPost.length > 0) {\r\n SetTableData({\r\n post: tempPost,\r\n pre: tempPre,\r\n postHar: tempPostHar,\r\n preHar: tempPreHar,\r\n // postFetch: true,\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n // });\r\n\r\n\r\n return () => {\r\n SetTableData({\r\n post: [],\r\n pre: [],\r\n });\r\n };\r\n }, [open]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const columnsMain = [\r\n\r\n {\r\n name: \"Land size (ha)\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Farmer Association\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Farmer Group\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n ];\r\n\r\n const columnsSec = [\r\n {\r\n name: \"Question\",\r\n options: {\r\n filter: true,\r\n },\r\n },\r\n {\r\n name: \"Answer\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n ];\r\n\r\n const columnsTer = [\r\n {\r\n name: \"Attempt\",\r\n options: {\r\n filter: true,\r\n },\r\n },\r\n {\r\n name: \"Q1\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q2\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q3\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q4\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q5\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q6\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q7\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q8\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q9\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Q10\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Result\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n ];\r\n\r\n const options = {\r\n customToolbarSelect: () => { },\r\n filter: true,\r\n filterType: \"dropdown\",\r\n // responsive: \"scrollMaxHeight\",\r\n // responsive: \"stacked\",\r\n print: false,\r\n viewColumns: false,\r\n selectableRows: false\r\n\r\n };\r\n\r\n const theme = createMuiTheme({\r\n overrides: {\r\n MUIDataTableSelectCell: {\r\n expandDisabled: {\r\n visibility: \"show\",\r\n },\r\n },\r\n },\r\n });\r\n\r\n\r\n\r\n const handleOpen = () => {\r\n // console.log(\"opening\");\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n //const defData = [[\"Loading\", ]];\r\n\r\n const body = (\r\n
\r\n \r\n \r\n
\r\n \r\n User Statistics\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {/* fontSize=\"large\"\r\n color=\"secondary\"\r\n type=\"button\"\r\n onClick={handleClose} */}\r\n \r\n \r\n \r\n \r\n {/* {dataMain.length > 0 ? ( */}\r\n \r\n \r\n \r\n {/* ) : (\r\n \r\n \r\n \r\n )} */}\r\n \r\n \r\n {/* {TableStates.preFetch === true ? ( */}\r\n \r\n \r\n \r\n {/* ) : (\r\n \r\n \r\n \r\n )} */}\r\n \r\n \r\n {/* {TableStates.postFetch === 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 {/* {TableStates.preFetch === true ? ( */}\r\n \r\n \r\n \r\n {/* ) : (\r\n \r\n \r\n \r\n )} */}\r\n \r\n \r\n {/* {TableStates.postFetch === 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 );\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {body}\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\n// const FirebaseInfoModal = withFirebase(InfoModal);\r\nconst FirebaseInfoModal = (InfoModal);\r\nexport default FirebaseInfoModal;\r\n","import { createMuiTheme } from \"@material-ui/core/styles\";\r\n\r\nconst columns = [\r\n {\r\n name: \"UID\",\r\n options: {\r\n filter: false,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"Name\",\r\n options: {\r\n filter: true,\r\n },\r\n },\r\n {\r\n name: \"Modules Completed\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Modules Passed\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n\r\n\r\n \r\n // //adding here extra details\r\n // 4 elements added\r\n \r\n // {\r\n // name: \"Download Certificates\",\r\n // options: {\r\n // filter: false,\r\n // sort: false,\r\n // },\r\n // },\r\n {\r\n name: \"More Details\",\r\n options: {\r\n sort: false,\r\n filter: false,\r\n },\r\n },\r\n {\r\n name: \"Status\",\r\n options: {\r\n sort: false,\r\n filter: false,\r\n },\r\n },\r\n {\r\n name: \"Delete\",\r\n options: {\r\n sort: false,\r\n filter: false,\r\n },\r\n },\r\n {\r\n name: \"Download Certificates\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n];\r\n\r\nconst theme = createMuiTheme({\r\n overrides: {\r\n MUIDataTableSelectCell: {\r\n expandDisabled: {\r\n // Soft hide the button.\r\n visibility: \"show\",\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst options = {\r\n customToolbarSelect: () => { },\r\n filterType: \"dropdown\",\r\n print: false,\r\n download: true,\r\n viewColumns: false,\r\n selectableRows: false\r\n};\r\n\r\nexport { columns, theme, options };","import ActiveToggleFirebase from \"../Common/ActiveToggle\";\r\nimport DeleteButtonFirebase from \"../Common/DeleteButton\";\r\nimport DownloadCert from \"../Common/DownloadCert\";\r\nimport FirebaseInfoModal from \"./InfoModal\";\r\nimport { columns, theme, options } from \"./Constants\";\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { CircularProgress, MuiThemeProvider } from \"@material-ui/core\";\r\nimport { FetchUserMobileAPI } from \"../../helpers/DashboardHelper\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport moment from \"moment/moment\";\r\n\r\n\r\n\r\nfunction CreateTableData(\r\n result,\r\n uid,\r\n userName,\r\n emailAddress,\r\n phoneNumber,\r\n lastSignIn,\r\n lastLogOut,\r\n status,\r\n country,\r\n province,\r\n district,\r\n modulesPassed,\r\n modulesCompleted,\r\n landSize,\r\n averageProduction,\r\n averageHarvest,\r\n associateId,\r\n farmerGroup,\r\n errorHandler,\r\n refreshHandler,\r\n em,\r\n isFarmer,\r\n gender\r\n) {\r\n let temp = [];\r\n temp.push(CheckForNull(uid));\r\n temp.push(CheckForNull(userName));\r\n\r\n var baseProduction, baseProductionPerLandSize; // Define variables here\r\n\r\n if (!isNaN(parseInt(averageProduction)) && !isNaN(parseInt(averageHarvest))) {\r\n baseProduction = (parseInt(averageProduction) / parseInt(averageHarvest)) * 365;\r\n baseProductionPerLandSize = baseProduction / parseInt(landSize);\r\n } else {\r\n baseProduction = \"Nil\";\r\n baseProductionPerLandSize = \"Nil\";\r\n }\r\n\r\n const createInfoModal = () => (\r\n \r\n );\r\n\r\n const createActiveToggle = () => (\r\n \r\n );\r\n\r\n const createDeleteButton = () => (\r\n \r\n );\r\n\r\n const createDownloadCert = () => (\r\n \r\n );\r\n\r\n temp.push(CheckForNull(modulesCompleted));\r\n temp.push(CheckForNull(modulesPassed));\r\n temp.push(createInfoModal());\r\n temp.push(createActiveToggle());\r\n temp.push(createDeleteButton());\r\n temp.push(createDownloadCert());\r\n\r\n return temp;\r\n}\r\n\r\n\r\nfunction CheckForNull(val) {\r\n if (val === \"\" || val == null || val === \"NaN\" || val === \"undefined\") return \"Nil\";\r\n else return val;\r\n}\r\n\r\nconst loadingData = [\r\n [\r\n \"\",\r\n \"Loading Data\",\r\n ,\r\n ,\r\n ,\r\n\r\n ],\r\n];\r\n\r\nexport default function CreateTable(props) {\r\n const { errorHandler } = props;\r\n const [data, setData] = useState([]);\r\n const [passData, setPassData] = useState([]);\r\n const [rowsExpanded, setRowsExpanded] = useState([]);\r\n const [refresh, setRefresh] = useState(false);\r\n\r\n\r\n\r\n const RefreshHandler = (ref) => {\r\n if (ref) {\r\n setRefresh(false);\r\n setData([]);\r\n setRowsExpanded([]);\r\n setPassData([]);\r\n FetchDataMobile();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n FetchDataMobile();\r\n }, []);\r\n\r\n async function FetchDataMobile() {\r\n let tmpData = [];\r\n let tPassData = [];\r\n let result = null;\r\n\r\n async function fetchUserData() {\r\n \r\n const updatedResponse = await FetchUserMobileAPI();\r\n return updatedResponse.userList;\r\n }\r\n\r\n function formatLastLogin(lastLogin) {\r\n\r\n return lastLogin ? moment(lastLogin).format(\"ddd MMM DD YYYY\") : \"\";\r\n }\r\n\r\n\r\n function getModulesData(key, result) {\r\n let r = [];\r\n try {\r\n const moduleResults = result[key].moduleResults;\r\n\r\n for (const mod of Object.values(moduleResults)) {\r\n for (const res of mod.results) {\r\n if (res.score !== '') {\r\n r.push(parseInt(res.score));\r\n }\r\n }\r\n }\r\n\r\n const modulesPassed = r.filter(score => score > 0).length;\r\n const modulesCompleted = r.filter(score => score === 100).length;\r\n\r\n return { modulesPassed, modulesCompleted };\r\n } catch (e) {\r\n return { modulesPassed: 0, modulesCompleted: 0 };\r\n }\r\n }\r\n\r\n function getDistrict(province, district) {\r\n return CheckForNull(district) === \"Nil\" ? province : district;\r\n }\r\n\r\n async function createTableData(result, key) {\r\n\r\n let { modulesPassed, modulesCompleted } = getModulesData(key, result);\r\n\r\n let lastLogin = formatLastLogin(result[key][\"lastLogin\"]);\r\n let province = result[key][\"userData\"][\"province\"];\r\n let district = getDistrict(province, result[key][\"userData\"][\"district\"]);\r\n let lastLogout =\r\n CheckForNull(result[key][\"userData\"][\"lastLogout\"]) === \"Nil\"\r\n ? lastLogin\r\n : result[key][\"userData\"][\"lastLogout\"];\r\n\r\n if (\r\n lastLogin.split(\" \")[3] !== \"2021\" &&\r\n lastLogin.split(\" \")[3] !== \"2022\" &&\r\n\r\n modulesPassed >= 1\r\n ) {\r\n let tableData = CreateTableData(\r\n result,\r\n result[key][\"_id\"],\r\n result[key][\"userData\"][\"userName\"],\r\n result[key][\"userData\"][\"emailAddress\"],\r\n result[key][\"userData\"][\"phoneNumber\"],\r\n lastLogin,\r\n lastLogout,\r\n result[key][\"isActive\"],\r\n result[key][\"userData\"][\"country\"],\r\n province,\r\n district,\r\n modulesPassed,\r\n modulesCompleted,\r\n result[key][\"userData\"][\"landSize\"],\r\n result[key][\"userData\"][\"averageProduction\"],\r\n result[key][\"userData\"][\"averageHarvest\"],\r\n result[key][\"userData\"][\"associateId\"],\r\n result[key][\"userData\"][\"farmerGroup\"],\r\n errorHandler,\r\n RefreshHandler,\r\n result[key][\"userData\"][\"emailAddress\"],\r\n result[key][\"userData\"][\"isFarmer\"],\r\n result[key][\"userData\"][\"gender\"]\r\n );\r\n tmpData.push(tableData);\r\n }\r\n }\r\n\r\n let listOfUsers = await fetchUserData();\r\n result = listOfUsers;\r\n for (var key in result) {\r\n await createTableData(result, key);\r\n }\r\n setData(tmpData);\r\n setPassData(tmpData);\r\n\r\n }\r\n\r\n return (\r\n \r\n {data.length <= 0 ? (\r\n
\r\n \r\n \r\n \r\n
\r\n ) : (\r\n \r\n\r\n \r\n \r\n )}\r\n
\r\n );\r\n\r\n}","import React from \"react\";\r\nimport { withAuthorization } from \"../Session\";\r\nimport * as ROLES from \"../../constants/roles\";\r\nimport {\r\n Grid,\r\n} from \"@material-ui/core\";\r\nimport CreateTable from \"./TableEx\";\r\nimport Snackbar from \"../Common/Snackbar\";\r\n\r\nclass UserList extends (React.Component) {\r\n constructor(props) {\r\n super(props);\r\n this.props = props;\r\n this.state = {\r\n errorText: \"\",\r\n errorType: \"\",\r\n };\r\n\r\n this.errorHandler = this.ErrorHandler.bind(this);\r\n }\r\n _isMounted = false;\r\n\r\n ErrorHandler(type, text) {\r\n this.setState({\r\n errorText: text,\r\n errorType: type,\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n render() {\r\n const fixedHeightPaperLarge = this.props.styleFixedHeightLarge;\r\n\r\n return (\r\n \r\n\r\n \r\n \r\n \r\n\r\n {this.state.errorText !== \"\" ? (\r\n {\r\n this.setState({ errorText: \"\" });\r\n }}\r\n />\r\n ) : (\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst condition = (authUser) =>\r\n authUser &&\r\n (authUser.roles.includes(ROLES.ADMIN) ||\r\n authUser.roles.includes(ROLES.SUPERADMIN));\r\nexport default withAuthorization(condition)(UserList);","import React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport UserList from \"./UserList\";\r\nimport { useStyles } from '../Common/Styles';\r\n// import { compose } from \"recompose\";\r\n// import { withFirebase } from \"../Firebase\";\r\nimport { withAuthorization } from \"../Session\";\r\nimport * as ROLES from \"../../constants/roles\";\r\n\r\nfunction Certificate() {\r\n const classes = useStyles();\r\n const fixedHeightPaperSmall = clsx(classes.paper, classes.fixedHeightSmall);\r\n const fixedHeightPaperLarge = clsx(classes.paper, classes.fixedHeightLarge);\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst condition = (authUser) =>\r\n authUser &&\r\n (authUser.roles.includes(ROLES.ADMIN) ||\r\n authUser.roles.includes(ROLES.SUPERADMIN));\r\nexport default withAuthorization(condition)(Certificate);\r\n\r\n\r\n// export default APPUSERS;","import React from \"react\";\r\nimport Modal from \"@material-ui/core/Modal\";\r\n// import { withFirebase } from \"../Firebase\";\r\nimport { Button, Grid } from \"@material-ui/core\";\r\n// import Typography from \"@material-ui/core/Typography\";\r\nimport { useStyles } from \"./Styles\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\n// import { NameUpdaterContext } from \"../App\";\r\n// import { UpdateWebUser_Name_Org } from \"../../helpers/UserHelper\";\r\n\r\nfunction getModalStyle() {\r\n const top = 50;\r\n const left = 50;\r\n\r\n return {\r\n top: `${top}%`,\r\n left: `${left}%`,\r\n transform: `translate(-${top}%, -${left}%)`,\r\n };\r\n}\r\n\r\nfunction ViewImage(props) {\r\n const imageURL = props.imageURL;\r\n const classes = useStyles();\r\n\r\n const [modalStyle] = React.useState(getModalStyle);\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const body = (\r\n
\r\n \r\n \r\n
\r\n \"questionImage\"\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 View Question Image\r\n \r\n \r\n {body}\r\n \r\n
\r\n );\r\n}\r\n\r\n\r\nexport default ViewImage;\r\n","import React from \"react\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { MuiThemeProvider, createMuiTheme } from \"@material-ui/core/styles\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport ViewImage from \"../Common/ViewImage\";\r\n\r\nvar questionPruningJson = require(\"../Common/pruning_mod1.json\");\r\nvar questionFertilizingJson = require(\"../Common/fertilizing_mod2.json\");\r\n//var questionMap = require(\"../Common/questions.json\");\r\n\r\nfunction createTableData(questionIsImage, questionImageURL, question, op1, op2, op3, op4, cA) {\r\n //console.log({question, op1, op2, op3, op4, cA});\r\n var temp = [];\r\n var currentQuestion = questionIsImage === true ? {question} : question;\r\n // temp.push(questionIsImage);\r\n // temp.push(questionImageURL);\r\n temp.push(currentQuestion);\r\n temp.push(op1);\r\n temp.push(op2);\r\n temp.push(op3);\r\n temp.push(op4);\r\n temp.push(cA);\r\n\r\n return temp;\r\n}\r\n\r\n// function MapQuestion(qID) {\r\n// questionMap.questions.map((question) => {\r\n// var id = question.questionID.toString();\r\n// if (id.localCompare(qID) === 0) {\r\n// return question.questionText.toString();\r\n// }\r\n// });\r\n// }\r\n\r\nlet quesData = [];\r\nlet quesDataHar = [];\r\n\r\nclass CreateTable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.props = props;\r\n this.state = { tableData: [], tableDataHar: [] };\r\n }\r\n\r\n componentDidMount() {\r\n questionPruningJson.questions.map((q) => {\r\n // console.log(q);\r\n quesData.push(\r\n createTableData(\r\n q.questionIsImage,\r\n q.questionImageURL,\r\n q.questionText,\r\n q.options[0].optionText,\r\n q.options[1].optionText,\r\n q.options[2] != null ? q.options[2].optionText : \"NA\",\r\n q.options[3] != null ? q.options[3].optionText : \"NA\",\r\n q.options[q.correctAnswer].optionText\r\n )\r\n );\r\n return null;\r\n });\r\n questionFertilizingJson.questions.map((q) => {\r\n quesDataHar.push(\r\n createTableData(\r\n q.questionIsImage,\r\n q.questionImageURL,\r\n q.questionText,\r\n q.options[0].optionText,\r\n q.options[1].optionText,\r\n q.options[2] != null ? q.options[2].optionText : \"NA\",\r\n q.options[3] != null ? q.options[3].optionText : \"NA\",\r\n q.options[q.correctAnswer].optionText\r\n )\r\n );\r\n return null;\r\n });\r\n this.setState({\r\n tableData: quesData,\r\n tableDataHar: quesDataHar,\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n quesData = [];\r\n quesDataHar = [];\r\n this.setState({\r\n tableData: [],\r\n tableDataHar: [],\r\n });\r\n }\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"Question\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Option A\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Option B\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Option C\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Option D\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Correct Answer\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n ];\r\n\r\n const options = {\r\n customToolbarSelect: () => { },\r\n filterType: \"dropdown\",\r\n \r\n print: false,\r\n download: true,\r\n viewColumns: false,\r\n selectableRows: false\r\n };\r\n\r\n const theme = createMuiTheme({\r\n overrides: {\r\n MUIDataTableSelectCell: {\r\n expandDisabled: {\r\n // Soft hide the button.\r\n visibility: \"show\",\r\n },\r\n },\r\n },\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n {this.state.tableData.length <= 0 ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n {this.state.tableDataHar.length <= 0 ? (\r\n
\r\n \r\n
\r\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 CreateTable;\r\n","import React from \"react\";\r\n\r\nimport { withAuthorization } from \"../Session\";\r\nimport * as ROLES from \"../../constants/roles\";\r\n\r\nimport { Grid, Button } from \"@material-ui/core\";\r\n\r\nimport CreateTable from \"./TableEx\";\r\n\r\n\r\nlet userCount;\r\n\r\n\r\n class UserList extends ( React.Component) {\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.props = props;\r\n this.state = {\r\n totalAppUsers: (\r\n \r\n ),\r\n };\r\n\r\n if (this._isMounted) {\r\n this.setState({\r\n totalAppUsers: (\r\n \r\n ),\r\n });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n render() {\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\n// const condition = (authUser) => authUser;\r\nconst condition = (authUser) => authUser && (authUser.roles.includes(ROLES.ADMIN) || authUser.roles.includes(ROLES.SUPERADMIN));\r\nexport default withAuthorization(condition)(UserList);\r\n// export default (UserList);","import React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport UserList from \"./UserList\";\r\nimport { useStyles } from '../Common/Styles';\r\nimport { withAuthorization } from \"../Session\";\r\nimport * as ROLES from \"../../constants/roles\";\r\n\r\n\r\nfunction PostAssesmentQuestions() {\r\n const classes = useStyles();\r\n const fixedHeightPaperLarge = clsx(classes.paper, classes.fixedHeightExtraLarge);\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst condition = (authUser) => authUser && (authUser.roles.includes(ROLES.ADMIN) || authUser.roles.includes(ROLES.SUPERADMIN));\r\n export default withAuthorization(condition)(PostAssesmentQuestions);\r\n// export default PostAssesmentQuestions;\r\n","import React from \"react\";\r\nimport { Grid, Paper, Typography } from \"@material-ui/core\";\r\nimport { useStyles } from \"../Common/Styles\";\r\n\r\n\r\nimport { withAuthorization } from \"../Session\";\r\nconst EcocoaAbout = () => ;\r\n\r\nfunction EcocoaAboutView() {\r\n let classes = useStyles();\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n What is e-cocoa?\r\n \r\n
    \r\n
  • \r\n \r\n e-cocoa is an APP to support Olam’s e-learning platform on promotion of sustainable cocoa production by smallholders.\r\n \r\n
  • \r\n
  • \r\n \r\n e-cocoa enables farmers to access training on best management practices for sustainable cocoa production such as fertilizing, pruning, harvesting etc. through the use of mobile phones.\r\n \r\n
  • \r\n
\r\n \r\n Who is e-cocoa for?\r\n \r\n
    \r\n
  • \r\n \r\n e-cocoa is designed for use by farmers independently on their own mobile devices with minimal face-to-face support from Olam trainer or extension personnel.\r\n \r\n
  • \r\n
  • \r\n \r\n e-cocoa can be used by companies or organizations that are interested to embark on large scale training of smallholders in their supply base.\r\n \r\n
  • \r\n
  • \r\n \r\n e-cocoa is useful for training-of-trainers/extension personnel who have direct interactions with smallholders.\r\n \r\n
  • \r\n
\r\n \r\n What are the features of e-cocoa?\r\n \r\n
    \r\n
  • \r\n \r\n e-cocoa merges interactive e-learning content with engaging videos and images with immersive Augmented Reality using 3D models to enhance the learning experience. It incorporates an interactive quiz to gauge learners’ understanding of the e-content.\r\n \r\n
  • \r\n
  • \r\n \r\n e-cocoa is initially designed for Android mobile devices and the APP can be downloaded from Google Play Store.\r\n \r\n
  • \r\n
\r\n\r\n \r\n What are the benefits of using e-cocoa?\r\n \r\n
    \r\n
  • \r\n \r\n Higher quality of learning due to higher levels of engagement at the individual level.\r\n \r\n
  • \r\n
  • \r\n \r\n Greater access to quality learning content on a large scale through mobile penetration.\r\n \r\n
  • \r\n
  • \r\n \r\n Users can access content anywhere, anytime with an Offline Mode available\r\n \r\n
  • \r\n
  • \r\n \r\n Ability of APP administrator (Olam) to track the learning effectiveness (Quiz & Data Collection) Lowers the dependency on face-to-face teaching resources significantly, especially in remote areas\r\n \r\n
  • \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \"Plant\"
\r\n \"Plant\"
\r\n \"Plant\"
\r\n \"Farmer
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nconst condition = (authUser) => !!authUser;\r\nexport default withAuthorization(condition)(EcocoaAbout);\r\n// export default EcocoaAbout;","import React from \"react\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { MuiThemeProvider, createMuiTheme } from \"@material-ui/core/styles\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\n// import * as ROLES from \"../../constants/roles\";\r\nimport FirebaseEditModal from \"../Common/EditModal\";\r\nimport ActiveToggleFirebase from \"../Common/ActiveToggle\";\r\nimport DeleteButtonFirebase from \"../Common/DeleteButton\";\r\nimport { GetDashboardViewerList } from \"../../helpers/UserHelper\";\r\n\r\nfunction createTableData(\r\n _id,\r\n email,\r\n org,\r\n lastLogin,\r\n status,\r\n userName,\r\n roles,\r\n errorHandler,\r\n refreshHandler\r\n) {\r\n var temp = [];\r\n temp.push(_id);\r\n temp.push(userName);\r\n temp.push(email);\r\n temp.push(org);\r\n temp.push(lastLogin);\r\n var togAct = (\r\n \r\n );\r\n temp.push(togAct);\r\n var but = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n temp.push(but);\r\n return temp;\r\n}\r\n\r\n//let users = null;\r\n\r\nconst loadingData = [\r\n [\r\n \"\",\r\n \"Loading Data\",\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ],\r\n];\r\nconst noData = [[\"\", \"No User Found\"]];\r\n\r\nconst columns = [\r\n {\r\n name: \"UID\",\r\n options: {\r\n display: false,\r\n sort: false,\r\n filter: false,\r\n },\r\n },\r\n {\r\n name: \"Username\",\r\n options: {\r\n display: true,\r\n sort: false,\r\n filter: false,\r\n },\r\n },\r\n {\r\n name: \"Email\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Organization Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Last Login\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"Actions\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n];\r\n\r\nconst options = {\r\n customToolbarSelect: () => { },\r\n filterType: \"dropdown\",\r\n print: false,\r\n download: true,\r\n viewColumns: false,\r\n selectableRows: false\r\n};\r\n\r\nconst theme = createMuiTheme({\r\n overrides: {\r\n MUIDataTableSelectCell: {\r\n expandDisabled: {\r\n // Soft hide the button.\r\n visibility: \"show\",\r\n },\r\n },\r\n },\r\n});\r\n\r\nclass CreateTable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.props = props;\r\n this.state = {\r\n tableData: [],\r\n refresh: false,\r\n isLoading: false,\r\n };\r\n this.errorHandler = this.props.errorHandler;\r\n this.refreshHandler = this.RefreshHandler.bind(this);\r\n }\r\n\r\n _isMounted = false;\r\n\r\n RefreshHandler(ref) {\r\n if (ref) {\r\n this.setState({\r\n refresh: false,\r\n tableData: [],\r\n });\r\n this.componentDidMount();\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this._isMounted = true;\r\n let tmpData = [];\r\n let ll = \"\"; \r\n let adminList = [];\r\n GetDashboardViewerList().then(adminListReceived => {\r\n adminList = JSON.parse(adminListReceived.data.userList);\r\n if (this._isMounted) {\r\n for (var key in adminList) {\r\n this.setState({ isLoading: true });\r\n if (adminList[key][\"lastLogin\"]) {\r\n // console.log(adminList[key][\"lastLogin\"]);\r\n ll = new Date(adminList[key][\"lastLogin\"]).toDateString();\r\n }\r\n tmpData.push(\r\n createTableData(\r\n adminList[key][\"_id\"],\r\n adminList[key][\"email\"],\r\n adminList[key][\"org\"],\r\n ll,\r\n adminList[key][\"isActive\"],\r\n adminList[key][\"username\"],\r\n adminList[key][\"roles\"],\r\n this.errorHandler,\r\n this.refreshHandler\r\n )\r\n );\r\n }\r\n if (tmpData.length > 0) {\r\n this.setState({\r\n tableData: tmpData,\r\n });\r\n } else {\r\n this.setState({\r\n isLoading: false,\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n\r\n this.setState({\r\n tableData: [],\r\n isLoading: false,\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.state.tableData.length <= 0 ? (\r\n
\r\n \r\n \r\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 CreateTable;\r\n","import React from \"react\";\r\nimport { Grid, TextField, Paper, Button, Typography } from \"@material-ui/core\";\r\nimport CreateTable from \"./TableEx\";\r\nimport Snackbar from \"../Common/Snackbar\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\nimport { RegisterWebUserDashboard } from \"../../helpers/UserHelper\";\r\n\r\nimport * as ROLES from \"../../constants/roles\";\r\nimport { withAuthorization } from \"../Session\";\r\n\r\nimport * as ResetPasswordHelper from \"../../helpers/ResetPasswordHelper\";\r\n\r\n\r\n//let users;\r\n//let userCount;\r\n//var viewCount = 0;\r\n\r\nconst INITIAL_STATE = {\r\n username: \"\",\r\n email: \"\",\r\n passwordOne: \"\",\r\n passwordTwo: \"\",\r\n isActive: \"true\",\r\n org: \"\",\r\n firstLogin: false,\r\n passwordHidden: \"\",\r\n showPassword: false,\r\n};\r\n\r\nconst crypto = window.crypto || window.msCrypto;\r\n\r\nfunction CreatePassword() {\r\n let length = 14;\r\n let wishList = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@-#$\";\r\n var pass = Array.from(crypto.getRandomValues(new Uint32Array(length)))\r\n .map((x) => wishList[x % wishList.length])\r\n .join(\"\");\r\n return pass;\r\n}\r\n\r\nclass UserList extends (React.Component) {\r\n constructor(props) {\r\n super(props);\r\n this.props = props;\r\n this.state = {\r\n ...INITIAL_STATE,\r\n\r\n formErrorState: \"\",\r\n emailForm: \"\",\r\n passwordOneForm: \"\",\r\n orgForm: \"\",\r\n passwordTwoForm: \"\",\r\n usernameForm: \"\",\r\n errorText: \"\",\r\n errorType: \"\",\r\n refresh: false,\r\n isSubmitted: false,\r\n };\r\n //viewCount = 0;\r\n this.errorHandler = this.ErrorHandler.bind(this);\r\n }\r\n\r\n ErrorHandler(type, text) {\r\n this.setState({\r\n errorText: text,\r\n errorType: type,\r\n });\r\n }\r\n\r\n RefreshCall() {\r\n var self = this;\r\n setTimeout(function () {\r\n self.setState({\r\n refresh: false,\r\n });\r\n }, 1000);\r\n }\r\n\r\n IsSubmitWorking(val) {\r\n this.setState({\r\n isSubmitted: val,\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n\r\n }\r\n\r\n componentWillUnmount() { }\r\n\r\n onSubmit = async (event) => {\r\n event.preventDefault();\r\n const {\r\n username,\r\n email,\r\n org,\r\n } = this.state;\r\n\r\n let isActive = \"true\";\r\n var self = this;\r\n\r\n var validEmailRegEx = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])+([.][a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/i;\r\n var isValidEmail = email === \"\" ? true : validEmailRegEx.test(email);\r\n var eHelper = !isValidEmail ? \"The Email format is invalid.\" : \"\";\r\n\r\n var usernameRegEx = /^[^\\s][a-zA-Z0-9\\s]+$/i;\r\n var isValidUsername = username === \"\" ? true : usernameRegEx.test(username);\r\n var uHelper = !isValidUsername\r\n ? \"The Username you entered is invalid.\"\r\n : \"\";\r\n\r\n const formError =\r\n email === \"\" ||\r\n org === \"\" ||\r\n username === \"\" ||\r\n !isValidUsername ||\r\n !isValidEmail;\r\n\r\n this.setState({\r\n formErrorState: formError ? \"Please fill in this field.\" : \"\",\r\n usernameForm:\r\n uHelper === \"\"\r\n ? username === \"\"\r\n ? \"Please enter a Username.\"\r\n : \"\"\r\n : \"The Username you entered is invalid.\",\r\n emailForm:\r\n eHelper === \"\"\r\n ? email === \"\"\r\n ? \"Please enter an Email.\"\r\n : \"\"\r\n : \"The Email format is invalid.\",\r\n orgForm: org === \"\" ? \"Please enter an Organization.\" : \"\",\r\n });\r\n\r\n if (formError === false) {\r\n this.IsSubmitWorking(true);\r\n let password = CreatePassword();\r\n // password = \"1234\";\r\n // console.log(password);\r\n let payload = {\r\n \"email\": email,\r\n \"isActive\": isActive,\r\n \"password\": password,\r\n \"org\": org,\r\n \"roles\": [\"NULL\"],\r\n \"username\": username\r\n };\r\n\r\n // console.log(payload);\r\n\r\n RegisterWebUserDashboard(payload).then(response => {\r\n if (response.data.success) {\r\n self.ErrorHandler(\"success\", response.data.message);\r\n self.setState({\r\n username: \"\",\r\n email: \"\",\r\n passwordOne: \"\",\r\n passwordTwo: \"\",\r\n isActive: \"true\",\r\n org: \"\",\r\n refresh: true,\r\n });\r\n\r\n let payloadNext = {\r\n email: email\r\n };\r\n ResetPasswordHelper.SendResetPasswordMail(payloadNext).then(response => {\r\n if (response) {\r\n if (response.status === 200) {\r\n self.ErrorHandler(\"success\", \"Email with login details sent!\");\r\n }\r\n else {\r\n self.ErrorHandler(\"error\", response.data.message);\r\n\r\n }\r\n }\r\n });\r\n\r\n self.RefreshCall();\r\n self.IsSubmitWorking(false);\r\n }\r\n else {\r\n self.ErrorHandler(\"error\", response.data.message);\r\n self.IsSubmitWorking(false);\r\n }\r\n });\r\n } else {\r\n self.IsSubmitWorking(false);\r\n }\r\n };\r\n\r\n onChange = (event) => {\r\n let name = event.target.name;\r\n let val = event.target.value;\r\n var errorName = name + \"Form\";\r\n this.setState({\r\n [name]: val,\r\n [errorName]: \"\",\r\n });\r\n };\r\n\r\n render() {\r\n const fixedHeightPaper = this.props.styleFixedHeight;\r\n let { username, email, org } = this.state;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Dashboard Viewers\r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n Create New Viewer\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n Submit\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {this.state.refresh === true ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n {this.state.errorText !== \"\" ? (\r\n {\r\n this.setState({ errorText: \"\" });\r\n }}\r\n />\r\n ) : (\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst condition = (authUser) =>\r\n authUser &&\r\n (authUser.roles.includes(ROLES.ADMIN) ||\r\n authUser.roles.includes(ROLES.SUPERADMIN));\r\nexport default withAuthorization(condition)(UserList);\r\n","import React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { useStyles } from '../Common/Styles';\r\nimport UserList from \"./UserList\";\r\n// import { compose } from \"recompose\";\r\nimport { withAuthorization } from \"../Session\";\r\nimport * as ROLES from \"../../constants/roles\";\r\n\r\nfunction DashboardViewer() {\r\n const classes = useStyles();\r\n const fixedHeightPaperLarge = clsx(classes.paper, classes.fixedHeightLarge);\r\n return (\r\n \r\n );\r\n}\r\n\r\n\r\nconst condition = (authUser) =>\r\n authUser &&\r\n (authUser.roles.includes(ROLES.ADMIN) ||\r\n authUser.roles.includes(ROLES.SUPERADMIN));\r\nexport default withAuthorization(condition)(DashboardViewer);\r\n// export default DashboardViewer;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport {\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n ListSubheader,\r\n} from \"@material-ui/core\";\r\nimport {\r\n Dashboard,\r\n Info,\r\n People,\r\n SupervisorAccount,\r\n Visibility,\r\n Assignment,\r\n PermMedia,\r\n Public,\r\n} from \"@material-ui/icons\";\r\nimport theme from \"./theme\";\r\nimport * as ROUTES from \"../../constants/routes\";\r\n\r\nconst styles = {\r\n listStyle: {\r\n textDecoration: \"none\",\r\n color: theme.palette.primary.contrastText,\r\n },\r\n};\r\n\r\nexport function NavBarList(props) {\r\n if (props.type === \"superadmin\") {\r\n return (\r\n
\r\n \r\n {props.open ? \"Reports\" : \"\"}\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {props.open ? \"Getting Started\" : \"\"}\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {props.open ? \"Management\" : \"\"}\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n
\r\n );\r\n }\r\n else if (props.type === \"admin\") {\r\n return (\r\n
\r\n \r\n {props.open ? \"Reports\" : \"\"}\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {props.open ? \"Getting Started\" : \"\"}\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {props.open ? \"Management\" : \"\"}\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n \r\n {props.open ? \"Reports\" : \"\"}\r\n\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {props.open ? \"Getting Started\" : \"\"}\r\n \r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const AdminListItems = (\r\n
\r\n Reports\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n Getting Started}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n Management}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n);\r\n\r\nexport const UserListItems = (\r\n
\r\n Reports}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n Getting Started}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n);\r\n","import React, { useEffect } from \"react\";\r\nimport Card from \"@material-ui/core/Card\";\r\nimport CardActionArea from \"@material-ui/core/CardActionArea\";\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport { useStyles } from \"../Common/Styles\";\r\n// import { withFirebase } from \"../Firebase\";\r\n\r\n// const capitalize = (s) => {\r\n// if (typeof s !== 'string') return ''\r\n// return s.charAt(0).toUpperCase() + s.slice(1)\r\n// }\r\n\r\nfunction ImgMedia(props) {\r\n const classes = useStyles();\r\n var userName = props.user;\r\n // var drawerOpen = props.open;\r\n const [open, setOpen] = React.useState(true);\r\n\r\n useEffect(() => {\r\n setOpen(props.open);\r\n }, [props.open]);\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {userName === \"\" ? \"\" :userName.charAt(0).toUpperCase()}\r\n \r\n {open === true ?

{userName}

: null}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\n// const ImgMediaCard = withFirebase(ImgMedia);\r\nconst ImgMediaCard = (ImgMedia);\r\nexport default ImgMediaCard;\r\n","import React, { useEffect, useState } from \"react\";\r\n\r\nimport clsx from \"clsx\";\r\nimport { makeStyles, fade } from \"@material-ui/core/styles\";\r\nimport {\r\n CssBaseline,\r\n Drawer,\r\n Box,\r\n AppBar,\r\n Toolbar,\r\n List,\r\n Typography,\r\n Divider,\r\n IconButton,\r\n Grid,\r\n Breadcrumbs,\r\n Link,\r\n\r\n} from \"@material-ui/core\";\r\nimport {\r\n NavigateNext,\r\n ChevronLeft,\r\n \r\n} from \"@material-ui/icons\";\r\nimport MenuIcon from \"@material-ui/icons/Menu\";\r\nimport { AuthUserContext, withAuthorization, withAuthentication } from \"../Session\";\r\nimport { AdminListItems, UserListItems, NavBarList } from \"../Common/listItems\";\r\nimport Copyright from \"../Common/Copyright\";\r\nimport SignOutButton from \"../SignOut\";\r\nimport * as ROLES from \"../../constants/roles\";\r\nimport * as ROUTES from \"../../constants/routes\";\r\n//import { useStyles } from \"../Common/Styles\";\r\nimport ImgMediaCard from \"./UserCard\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport Snackbar from \"../Common/Snackbar\";\r\nimport { compose } from \"recompose\";\r\n\r\n\r\n//import theme from \"../Common/theme\";\r\n\r\nconst drawerWidth = 240;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: \"flex\",\r\n },\r\n appBar: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n },\r\n appBarShift: {\r\n marginLeft: drawerWidth,\r\n width: `calc(100% - ${drawerWidth}px)`,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n menuButton: {\r\n marginRight: 36,\r\n },\r\n hide: {\r\n display: \"none\",\r\n },\r\n drawer: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n whiteSpace: \"nowrap\",\r\n },\r\n open: {\r\n width: drawerWidth,\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n backgroundColor: theme.palette.primary.main,\r\n },\r\n drawerClose: {\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n overflowX: \"hidden\",\r\n width: theme.spacing(7) + 1,\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: theme.spacing(9) + 1,\r\n },\r\n backgroundColor: theme.palette.primary.main,\r\n },\r\n toolbar: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(3),\r\n },\r\n title: {\r\n flexGrow: 1,\r\n },\r\n search: {\r\n position: \"relative\",\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.common.white, 0.15),\r\n \"&:hover\": {\r\n backgroundColor: fade(theme.palette.common.white, 0.25),\r\n },\r\n marginLeft: 0,\r\n marginRight: theme.spacing(2),\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n marginLeft: theme.spacing(1),\r\n width: \"auto\",\r\n },\r\n },\r\n searchIcon: {\r\n padding: theme.spacing(0, 2),\r\n height: \"100%\",\r\n position: \"absolute\",\r\n pointerEvents: \"none\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n inputRoot: {\r\n color: \"inherit\",\r\n },\r\n inputInput: {\r\n padding: theme.spacing(1, 1, 1, 0),\r\n // vertical padding + font size from searchIcon\r\n paddingLeft: `calc(1em + ${theme.spacing(4)}px)`,\r\n transition: theme.transitions.create(\"width\"),\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: \"12ch\",\r\n \"&:focus\": {\r\n width: \"20ch\",\r\n },\r\n },\r\n },\r\n}));\r\n\r\nconst Dashboard = (props) => (\r\n \r\n \r\n {(authUser) =>\r\n // console.log(\"dashboard reached\" + JSON.stringify(authUser))\r\n authUser.roles != null || authUser.roles === \"undefined\" ? (\r\n authUser.roles.includes(ROLES.SUPERADMIN) ? (\r\n\r\n \r\n \r\n\r\n\r\n \r\n ) : authUser.roles.includes(ROLES.ADMIN) ? (\r\n \r\n \r\n\r\n\r\n \r\n ) : (\r\n \r\n \r\n \r\n )\r\n ) : (\r\n \r\n )\r\n }\r\n \r\n \r\n);\r\n\r\nfunction ReadHeader() {\r\n var retVal = {\r\n loc: \"\",\r\n href: null,\r\n };\r\n switch (window.location.pathname) {\r\n case \"/home\":\r\n retVal.loc = \"Home\";\r\n retVal.href = ROUTES.HOME;\r\n break;\r\n case \"/ecocoaabout\":\r\n retVal.loc = \"About e-cocoa\";\r\n retVal.href = ROUTES.ECOCOAABOUT;\r\n break;\r\n case \"/postassesmentquestions\":\r\n retVal.loc = \"Post-Assesment Questions\";\r\n retVal.href = ROUTES.POSTASSESMENT;\r\n break;\r\n case \"/appusers\":\r\n retVal.loc = \"e-cocoa Application Users\";\r\n retVal.href = ROUTES.APPUSERS;\r\n break;\r\n case \"/dashboardviewer\":\r\n retVal.loc = \" Dashboard Viewers\";\r\n retVal.href = ROUTES.DASHBOARDVIEWER;\r\n break;\r\n case \"/admin\":\r\n retVal.loc = \"Admin Users\";\r\n retVal.href = ROUTES.ADMIN;\r\n break;\r\n case \"/changepassword\":\r\n retVal.loc = \"Change Password\";\r\n retVal.href = ROUTES.PASSWORD_CHANGE;\r\n break;\r\n case \"/certificates\":\r\n retVal.loc = \"User Certificates\";\r\n retVal.href = ROUTES.CERTIFICATE;\r\n break;\r\n default:\r\n break;\r\n }\r\n return retVal;\r\n}\r\n\r\nfunction DashboardView(props) {\r\n const classes = useStyles();\r\n //const theme = useTheme();\r\n const [open, setOpen] = useState(true);\r\n const [width, setWidth] = useState(window.innerWidth);\r\n const minScreenSize = 768;\r\n\r\n const thisPage = ReadHeader();\r\n\r\n useEffect(() => {\r\n const handleWindowResize = () => setWidth(window.innerWidth);\r\n window.addEventListener(\"resize\", handleWindowResize);\r\n if (width < minScreenSize) {\r\n handleDrawerClose();\r\n }\r\n return () => window.removeEventListener(\"resize\", handleWindowResize);\r\n });\r\n\r\n const [errorHandler, SetError] = useState({\r\n errorType: \"\",\r\n errorText: \"\",\r\n });\r\n\r\n const handleopen = () => {\r\n setOpen(true);\r\n };\r\n const handleDrawerClose = () => {\r\n setOpen(false); \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 aria-label=\"breadcrumb\"\r\n style={{ color: \"white\" }}\r\n >\r\n \r\n Dashboard\r\n \r\n {thisPage.loc}\r\n \r\n \r\n\r\n {/*
\r\n
\r\n \r\n
\r\n \r\n
*/}\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {/* {props.list} */}\r\n \r\n \r\n \r\n \r\n
\r\n {/*
*/}\r\n
\r\n
\r\n \r\n {props.children}\r\n \r\n
\r\n {errorHandler.errorText !== \"\" ? (\r\n {\r\n SetError({ errorText: \"\" });\r\n }}\r\n />\r\n ) : (\r\n
\r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n //
\r\n );\r\n}\r\n\r\nconst condition = (authUser) => authUser;\r\nexport default compose(withAuthentication, withAuthorization(condition))(Dashboard);\r\n// export default compose(withAuthentication)(Dashboard);\r\n// export default Dashboard;\r\n","import React, { Component } from \"react\";\r\nimport { BrowserRouter as Router, Route, Redirect } from \"react-router-dom\";\r\nimport axios from \"axios\";\r\n\r\nimport SignInWithUI from \"../SignIn\";\r\nimport PasswordForgetPage from \"../PasswordForget\";\r\nimport HomePage from \"../Home\";\r\nimport AppUsers from \"../AppUsers\";\r\nimport AdminPage from \"../AdminList\";\r\nimport ChangePasswordWithUI from \"../ChangePassword\";\r\nimport Certificate from \"../Certificate\";\r\n\r\nimport * as ROUTES from \"../../constants/routes\";\r\nimport { withAuthentication } from \"../Session\";\r\nimport PostAssesmentQuestions from \"../PostAssesmentQuestions\";\r\nimport EcocoaAbout from \"../ecocoaAbout\";\r\nimport DashboardViewer from \"../DashboardViewer\";\r\nimport Dashboard from \"../Dashboard\";\r\nimport { BASE_URL } from \"../../constants/constants\";\r\n\r\nimport theme from \"../Common/theme\";\r\nimport { ThemeProvider } from \"@material-ui/core\";\r\n\r\n\r\n\r\naxios.interceptors.response.use((response) => {\r\n return response\r\n},\r\n function (error) {\r\n const originalRequest = error.config;\r\n // console.log(\"ERROR CAUGHT \" + error);\r\n // console.log(originalRequest.url);\r\n\r\n if (error.response.status === 401 && originalRequest.url === BASE_URL + '/refreshtoken') {\r\n // console.log(\"Unable to refresh token - Back to Login\");\r\n localStorage.clear();\r\n window.location = \"/signin\";\r\n return Promise.reject(error);\r\n }\r\n\r\n if (error.response.status === 401 || error.response.status === 403) {\r\n // originalRequest._retry = true;\r\n // const refreshToken = localStorage.getItem('refreshToken');\r\n // return axios.post(BASE_URL + '/refreshtoken',\r\n // {\r\n // \"refreshToken\": refreshToken\r\n // })\r\n // .then(res => {\r\n // if (res.status === 201) {\r\n // localStorage.setItem(\"auth_token\", res.data.token);\r\n // originalRequest.headers.Authorization = 'Bearer ' + localStorage.getItem(\"auth_token\");\r\n // return axios(originalRequest);\r\n // }\r\n // else {\r\n // // console.log(\"Unable to refresh token - Back to Login\");\r\n // localStorage.clear();\r\n // window.location = \"/signin\";\r\n // return Promise.reject(error);\r\n // }\r\n // })\r\n return Promise.reject(error);\r\n }\r\n return Promise.reject(error);\r\n });\r\n\r\nfunction ReadHeader() {\r\n var retVal = {\r\n loc: \"\",\r\n href: null,\r\n };\r\n // alert(\"1\" + window.location.pathname);\r\n switch (window.location.pathname) {\r\n case \"/home\":\r\n retVal.loc = \"Home\";\r\n retVal.href = ROUTES.HOME;\r\n break;\r\n\r\n case \"/ecocoaabout\":\r\n retVal.loc = \"About e-cocoa\";\r\n retVal.href = ROUTES.ECOCOAABOUT;\r\n break;\r\n\r\n case \"/postassesmentquestions\":\r\n retVal.loc = \"Post Assesment Questions\";\r\n retVal.href = ROUTES.POSTASSESMENT;\r\n break;\r\n\r\n case \"/appusers\":\r\n retVal.loc = \"e-cocoa Application Users\";\r\n retVal.href = ROUTES.APPUSERS;\r\n break;\r\n\r\n case \"/dashboardviewer\":\r\n retVal.loc = \" Dashboard Users\";\r\n retVal.href = ROUTES.DASHBOARDVIEWER;\r\n break;\r\n\r\n case \"/admin\":\r\n retVal.loc = \"Admin Users\";\r\n retVal.href = ROUTES.ADMIN;\r\n break;\r\n\r\n case \"/certificates\":\r\n retVal.loc = \"Certificates\";\r\n retVal.href = ROUTES.CERTIFICATE;\r\n break;\r\n\r\n // case \"/changepassword\":\r\n // retVal.loc = \"Change Password\";\r\n // retVal.href = ROUTES.PASSWORD_CHANGE;\r\n // break;\r\n\r\n // case \"/signin\":\r\n // retVal.loc = \"Sign In\";\r\n // retVal.href = ROUTES.SIGN_IN;\r\n // break;\r\n\r\n case \"/\":\r\n retVal.loc = \"None\";\r\n retVal.href = ROUTES.HOME;\r\n break;\r\n default:\r\n retVal.loc = \"None\";\r\n retVal.href = ROUTES.HOME;\r\n break;\r\n }\r\n return retVal;\r\n}\r\n\r\nclass DirectionComp extends Component {\r\n render() {\r\n var header = ReadHeader();\r\n var dir = header.href;\r\n // alert(\"2\" + dir);\r\n return ;\r\n }\r\n}\r\n\r\nexport const NameUpdaterContext = React.createContext(null);\r\n\r\nfunction App() {\r\n const nameReducer = (name, action) => {\r\n return action;\r\n };\r\n\r\n const [nameUpdate, NameUpdater] = React.useReducer(nameReducer, \"\");\r\n // let header = ReadHeader();\r\n // alert(header.href);\r\n // let loader = header.href === ROUTES.SIGN_IN ? SignInWithUI : ChangePasswordWithUI;\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\n \r\n \r\n \r\n \r\n \r\n \r\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 withAuthentication(App);\r\n// export default App;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport App from './components/App';\r\n\r\n\r\nReactDOM.render(, document.getElementById('root'),);\r\n\r\n\r\nserviceWorker.unregister();"],"sourceRoot":""}